icd:Consider DS when setting format bits
authorTobin Ehlis <tobine@google.com>
Fri, 25 Sep 2020 22:03:40 +0000 (16:03 -0600)
committerjeremyk-lunarg <jeremyk@lunarg.com>
Tue, 11 May 2021 22:46:00 +0000 (16:46 -0600)
When setting device format properties, don't set color attachment-
related bits for DS formats and don't set DS attachment bit for
color formats.

Fixes #445

icd/generated/mock_icd.cpp
scripts/mock_icd_generator.py

index 92c01cf..9db74bb 100644 (file)
@@ -242,8 +242,22 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties(
     if (VK_FORMAT_UNDEFINED == format) {
         *pFormatProperties = { 0x0, 0x0, 0x0 };
     } else {
-        // TODO: Just returning full support for everything initially
-        *pFormatProperties = { 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF };
+        // Default to a color format, skip DS bit
+        *pFormatProperties = { 0x00FFFDFF, 0x00FFFDFF, 0x00FFFDFF };
+        switch (format) {
+            case VK_FORMAT_D16_UNORM:
+            case VK_FORMAT_X8_D24_UNORM_PACK32:
+            case VK_FORMAT_D32_SFLOAT:
+            case VK_FORMAT_S8_UINT:
+            case VK_FORMAT_D16_UNORM_S8_UINT:
+            case VK_FORMAT_D24_UNORM_S8_UINT:
+            case VK_FORMAT_D32_SFLOAT_S8_UINT:
+                // Don't set color bits for DS formats
+                *pFormatProperties = { 0x00FFFE7F, 0x00FFFE7F, 0x00FFFE7F };
+                break;
+            default:
+                break;
+        }
     }
 }
 
index 79680a8..64ea7dc 100644 (file)
@@ -741,8 +741,22 @@ CUSTOM_C_INTERCEPTS = {
     if (VK_FORMAT_UNDEFINED == format) {
         *pFormatProperties = { 0x0, 0x0, 0x0 };
     } else {
-        // TODO: Just returning full support for everything initially
-        *pFormatProperties = { 0x00FFFFFF, 0x00FFFFFF, 0x00FFFFFF };
+        // Default to a color format, skip DS bit
+        *pFormatProperties = { 0x00FFFDFF, 0x00FFFDFF, 0x00FFFDFF };
+        switch (format) {
+            case VK_FORMAT_D16_UNORM:
+            case VK_FORMAT_X8_D24_UNORM_PACK32:
+            case VK_FORMAT_D32_SFLOAT:
+            case VK_FORMAT_S8_UINT:
+            case VK_FORMAT_D16_UNORM_S8_UINT:
+            case VK_FORMAT_D24_UNORM_S8_UINT:
+            case VK_FORMAT_D32_SFLOAT_S8_UINT:
+                // Don't set color bits for DS formats
+                *pFormatProperties = { 0x00FFFE7F, 0x00FFFE7F, 0x00FFFE7F };
+                break;
+            default:
+                break;
+        }
     }
 ''',
 'vkGetPhysicalDeviceFormatProperties2KHR': '''