Module: wine Branch: master Commit: 18a6d9ab0e356855a9b73da4ea350877f0d3d251 URL: https://source.winehq.org/git/wine.git/?a=commit;h=18a6d9ab0e356855a9b73da4e...
Author: Jan Sikorski jsikorski@codeweavers.com Date: Mon Jan 24 13:59:02 2022 +0100
wined3d: Acquire references to cleared render-target views for command lists by inspecting CS packets.
Signed-off-by: Jan Sikorski jsikorski@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/cs.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index ae120b1790d..9f7421e865f 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -3616,6 +3616,20 @@ static void wined3d_cs_packet_decref_objects(const struct wined3d_cs_packet *pac break; }
+ case WINED3D_CS_OP_CLEAR: + { + struct wined3d_cs_clear *op = (struct wined3d_cs_clear *)packet->data; + + for (i = 0; i < op->rt_count; ++i) + { + if (op->fb.render_targets[i]) + wined3d_rendertarget_view_decref(op->fb.render_targets[i]); + } + if (op->fb.depth_stencil) + wined3d_rendertarget_view_decref(op->fb.depth_stencil); + break; + } + default: break; } @@ -3750,6 +3764,20 @@ static void wined3d_cs_packet_incref_objects(struct wined3d_cs_packet *packet) break; }
+ case WINED3D_CS_OP_CLEAR: + { + struct wined3d_cs_clear *op = (struct wined3d_cs_clear *)packet->data; + + for (i = 0; i < op->rt_count; ++i) + { + if (op->fb.render_targets[i]) + wined3d_rendertarget_view_incref(op->fb.render_targets[i]); + } + if (op->fb.depth_stencil) + wined3d_rendertarget_view_incref(op->fb.depth_stencil); + break; + } + default: break; }