From 35e08b90b3b7b7fcd06ff37cec8ded5cda3e4245 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Wed, 12 Jan 2022 18:40:49 -0600 Subject: [PATCH] wined3d: Do not iterate over multiple layers when clearing 3D UAVs. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52390 Signed-off-by: Zebediah Figura Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/wined3d/view.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c index d6f58309b32..efa98ea13eb 100644 --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -1504,11 +1504,20 @@ void wined3d_unordered_access_view_gl_clear(struct wined3d_unordered_access_view format_gl = wined3d_format_gl(resource->format); texture_gl = wined3d_texture_gl(texture_from_resource(resource)); - layer_count = view_gl->v.desc.u.texture.layer_count; level_count = view_gl->v.desc.u.texture.level_count; - base_layer = view_gl->v.desc.u.texture.layer_idx; base_level = view_gl->v.desc.u.texture.level_idx; + if (resource->type == WINED3D_RTYPE_TEXTURE_3D) + { + layer_count = 1; + base_layer = 0; + } + else + { + layer_count = view_gl->v.desc.u.texture.layer_count; + base_layer = view_gl->v.desc.u.texture.layer_idx; + } + if (format_gl->f.byte_count <= 4 && !fp) { gl_format = format_gl->format;