[PATCH] wined3d: Do not create Vulkan 2D (array) views for UAVs on 3D resources.

Henri Verbeet hverbeet at codeweavers.com
Wed Dec 16 07:35:36 CST 2020


We should simply create 3D views.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50123
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
 dlls/wined3d/view.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
index f2c8ceab461..c3128c9ed4c 100644
--- a/dlls/wined3d/view.c
+++ b/dlls/wined3d/view.c
@@ -688,7 +688,7 @@ static VkBufferView wined3d_view_vk_create_buffer_view(struct wined3d_context_vk
 
 static VkImageView wined3d_view_vk_create_texture_view(struct wined3d_context_vk *context_vk,
         const struct wined3d_view_desc *desc, struct wined3d_texture_vk *texture_vk,
-        const struct wined3d_format_vk *view_format_vk, struct color_fixup_desc fixup, bool srv)
+        const struct wined3d_format_vk *view_format_vk, struct color_fixup_desc fixup, bool rtv)
 {
     const struct wined3d_resource *resource = &texture_vk->t.resource;
     const struct wined3d_vk_info *vk_info = context_vk->vk_info;
@@ -730,7 +730,7 @@ static VkImageView wined3d_view_vk_create_texture_view(struct wined3d_context_vk
     create_info.flags = 0;
     create_info.image = texture_vk->vk_image;
     create_info.viewType = vk_image_view_type_from_wined3d(resource->type, desc->flags);
-    if (!srv && create_info.viewType == VK_IMAGE_VIEW_TYPE_3D)
+    if (rtv && create_info.viewType == VK_IMAGE_VIEW_TYPE_3D)
     {
         if (desc->u.texture.layer_count > 1)
             create_info.viewType = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
@@ -823,7 +823,7 @@ static void wined3d_render_target_view_vk_cs_init(void *object)
 
     context = context_acquire(resource->device, NULL, 0);
     view_vk->vk_image_view = wined3d_view_vk_create_texture_view(wined3d_context_vk(context),
-            desc, texture_vk, format_vk, COLOR_FIXUP_IDENTITY, false);
+            desc, texture_vk, format_vk, COLOR_FIXUP_IDENTITY, true);
     context_release(context);
 
     if (!view_vk->vk_image_view)
@@ -1098,7 +1098,7 @@ static void wined3d_shader_resource_view_vk_cs_init(void *object)
 
     context = context_acquire(resource->device, NULL, 0);
     vk_image_view = wined3d_view_vk_create_texture_view(wined3d_context_vk(context),
-            desc, texture_vk, wined3d_format_vk(format), format->color_fixup, true);
+            desc, texture_vk, wined3d_format_vk(format), format->color_fixup, false);
     context_release(context);
 
     if (!vk_image_view)
-- 
2.20.1




More information about the wine-devel mailing list