=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: vkd3d-shader: Fix resinfo for multisample textures.

Alexandre Julliard julliard at winehq.org
Thu Oct 18 15:02:37 CDT 2018


Module: vkd3d
Branch: master
Commit: 123f3ed3870e8feebeef0d10af01caeb298e743e
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=123f3ed3870e8feebeef0d10af01caeb298e743e

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Thu Oct 18 14:59:45 2018 +0200

vkd3d-shader: Fix resinfo for multisample textures.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d-shader/spirv.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c
index 41c49ac..ac95bd3 100644
--- a/libs/vkd3d-shader/spirv.c
+++ b/libs/vkd3d-shader/spirv.c
@@ -6115,6 +6115,7 @@ static void vkd3d_dxbc_compiler_emit_resinfo(struct vkd3d_dxbc_compiler *compile
     uint32_t constituents[VKD3D_VEC4_SIZE];
     unsigned int i, size_component_count;
     struct vkd3d_shader_image image;
+    bool supports_mipmaps;
 
     vkd3d_spirv_enable_capability(builder, SpvCapabilityImageQuery);
 
@@ -6122,24 +6123,20 @@ static void vkd3d_dxbc_compiler_emit_resinfo(struct vkd3d_dxbc_compiler *compile
     size_component_count = image.resource_type_info->coordinate_component_count;
     type_id = vkd3d_spirv_get_type_id(builder, VKD3D_TYPE_UINT, size_component_count);
 
-    if (src[1].reg.type == VKD3DSPR_RESOURCE)
+    supports_mipmaps = src[1].reg.type != VKD3DSPR_UAV && !image.resource_type_info->ms;
+    if (supports_mipmaps)
     {
         lod_id = vkd3d_dxbc_compiler_emit_load_src(compiler, &src[0], VKD3DSP_WRITEMASK_0);
         val_id = vkd3d_spirv_build_op_image_query_size_lod(builder, type_id, image.image_id, lod_id);
         type_id = vkd3d_spirv_get_type_id(builder, VKD3D_TYPE_UINT, 1);
         miplevel_count_id = vkd3d_spirv_build_op_image_query_levels(builder, type_id, image.image_id);
     }
-    else if (src[1].reg.type == VKD3DSPR_UAV)
+    else
     {
         val_id = vkd3d_spirv_build_op_image_query_size(builder, type_id, image.image_id);
         /* For UAVs the returned miplevel count is always 1. */
         miplevel_count_id = vkd3d_dxbc_compiler_get_constant_uint(compiler, 1);
     }
-    else
-    {
-        ERR("Unexpected register type %#x.\n", src[1].reg.type);
-        return;
-    }
 
     constituents[0] = val_id;
     for (i = 0; i < 3 - size_component_count; ++i)




More information about the wine-cvs mailing list