turnip: fix VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES
authorJonathan Marek <jonathan@marek.ca>
Fri, 26 Jun 2020 03:32:20 +0000 (23:32 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 26 Jun 2020 11:11:29 +0000 (11:11 +0000)
My attempt to be clever here backfired, it overwrites the pNext and stops
the loop (causing deqp to fail to query extension features after that).

Fixes: 62de79ac4492ac9e ("turnip: implement VK_KHR_shader_draw_parameters")
Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5654>

src/freedreno/vulkan/tu_device.c

index 263c6576cf87223a2723d2157df790e915ed9cc6..0b4b888bb1b5e2ac53fb8317936206176df28e18 100644 (file)
@@ -636,22 +636,22 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
    vk_foreach_struct(ext, pFeatures->pNext)
    {
       switch (ext->sType) {
-      case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES:
-         *((VkPhysicalDeviceVulkan11Features*) ext) = (VkPhysicalDeviceVulkan11Features) {
-            .storageBuffer16BitAccess            = false,
-            .uniformAndStorageBuffer16BitAccess  = false,
-            .storagePushConstant16               = false,
-            .storageInputOutput16                = false,
-            .multiview                           = false,
-            .multiviewGeometryShader             = false,
-            .multiviewTessellationShader         = false,
-            .variablePointersStorageBuffer       = false,
-            .variablePointers                    = false,
-            .protectedMemory                     = false,
-            .samplerYcbcrConversion              = true,
-            .shaderDrawParameters                = true,
-         };
+      case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: {
+         VkPhysicalDeviceVulkan11Features *features = (void *) ext;
+         features->storageBuffer16BitAccess            = false;
+         features->uniformAndStorageBuffer16BitAccess  = false;
+         features->storagePushConstant16               = false;
+         features->storageInputOutput16                = false;
+         features->multiview                           = false;
+         features->multiviewGeometryShader             = false;
+         features->multiviewTessellationShader         = false;
+         features->variablePointersStorageBuffer       = false;
+         features->variablePointers                    = false;
+         features->protectedMemory                     = false;
+         features->samplerYcbcrConversion              = true;
+         features->shaderDrawParameters                = true;
          break;
+      }
       case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
          VkPhysicalDeviceVariablePointersFeatures *features = (void *) ext;
          features->variablePointersStorageBuffer = false;