dzn: Handle opaque BC1
authorJesse Natalie <jenatali@microsoft.com>
Fri, 21 Apr 2023 15:44:03 +0000 (08:44 -0700)
committerMarge Bot <emma+marge@anholt.net>
Tue, 25 Apr 2023 15:36:01 +0000 (15:36 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22639>

src/microsoft/vulkan/dzn_image.c

index 1458e53..3f91fea 100644 (file)
@@ -1061,6 +1061,13 @@ dzn_image_view_prepare_srv_desc(struct dzn_image_view *iview)
          else if (swz[i] == D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1)
             swz[i] = D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0;
       }
+   } else if (iview->vk.view_format == VK_FORMAT_BC1_RGB_SRGB_BLOCK ||
+              iview->vk.view_format == VK_FORMAT_BC1_RGB_UNORM_BLOCK) {
+      /* D3D has no opaque version of these; force alpha to 1 */
+      for (uint32_t i = 0; i < ARRAY_SIZE(swz); i++) {
+         if (swz[i] == D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3)
+            swz[i] = D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1;
+      }
    }
 
    iview->srv_desc.Shader4ComponentMapping =