turnip: Implement VK_EXT_mutable_descriptor_type
authorDanylo Piliaiev <dpiliaiev@igalia.com>
Tue, 20 Sep 2022 17:20:00 +0000 (20:20 +0300)
committerDanylo Piliaiev <dpiliaiev@igalia.com>
Wed, 21 Sep 2022 08:30:31 +0000 (11:30 +0300)
Trivial promotion from VALVE, just rename enums and types.

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18710>

docs/features.txt
src/freedreno/vulkan/tu_descriptor_set.c
src/freedreno/vulkan/tu_device.c
src/freedreno/vulkan/tu_pipeline.c

index 1b5845b..b47bf4d 100644 (file)
@@ -615,7 +615,7 @@ Khronos extensions that are not part of any Vulkan version:
   VK_AMD_shader_trinary_minmax                          DONE (radv)
   VK_AMD_texture_gather_bias_lod                        DONE (radv)
   VK_ARM_rasterization_order_attachment_access          DONE (lvp, tu)
-  VK_EXT_mutable_descriptor_type                        DONE (radv)
+  VK_EXT_mutable_descriptor_type                        DONE (radv, tu)
 
 
 OpenCL 1.0 -- all DONE:
index ce6b9eb..d9d4a05 100644 (file)
@@ -82,7 +82,7 @@ is_dynamic(VkDescriptorType type)
 
 static uint32_t
 mutable_descriptor_size(struct tu_device *dev,
-                        const VkMutableDescriptorTypeListVALVE *list)
+                        const VkMutableDescriptorTypeListEXT *list)
 {
    uint32_t max_size = 0;
 
@@ -110,10 +110,10 @@ tu_CreateDescriptorSetLayout(
       vk_find_struct_const(
          pCreateInfo->pNext,
          DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO);
-   const VkMutableDescriptorTypeCreateInfoVALVE *mutable_info =
+   const VkMutableDescriptorTypeCreateInfoEXT *mutable_info =
       vk_find_struct_const(
          pCreateInfo->pNext,
-         MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE);
+         MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT);
 
    uint32_t num_bindings = 0;
    uint32_t immutable_sampler_count = 0;
@@ -184,7 +184,7 @@ tu_CreateDescriptorSetLayout(
       set_layout->binding[b].dynamic_offset_offset = dynamic_offset_size;
       set_layout->binding[b].shader_stages = binding->stageFlags;
 
-      if (binding->descriptorType == VK_DESCRIPTOR_TYPE_MUTABLE_VALVE) {
+      if (binding->descriptorType == VK_DESCRIPTOR_TYPE_MUTABLE_EXT) {
          /* For mutable descriptor types we must allocate a size that fits the
           * largest descriptor type that the binding can mutate to.
           */
@@ -286,10 +286,10 @@ tu_GetDescriptorSetLayoutSupport(
       vk_find_struct(
          (void *) pCreateInfo->pNext,
          DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT);
-   const VkMutableDescriptorTypeCreateInfoVALVE *mutable_info =
+   const VkMutableDescriptorTypeCreateInfoEXT *mutable_info =
       vk_find_struct_const(
          pCreateInfo->pNext,
-         MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE);
+         MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT);
 
    if (variable_count) {
       variable_count->maxVariableDescriptorCount = 0;
@@ -304,8 +304,8 @@ tu_GetDescriptorSetLayoutSupport(
 
       if (is_dynamic(binding->descriptorType)) {
          descriptor_sz = 0;
-      } else if (binding->descriptorType == VK_DESCRIPTOR_TYPE_MUTABLE_VALVE) {
-         const VkMutableDescriptorTypeListVALVE *list =
+      } else if (binding->descriptorType == VK_DESCRIPTOR_TYPE_MUTABLE_EXT) {
+         const VkMutableDescriptorTypeListEXT *list =
             &mutable_info->pMutableDescriptorTypeLists[i];
 
          for (uint32_t j = 0; j < list->descriptorTypeCount; j++) {
@@ -669,9 +669,9 @@ tu_CreateDescriptorPool(VkDevice _device,
    uint64_t bo_size = 0, dynamic_size = 0;
    VkResult ret;
 
-   const VkMutableDescriptorTypeCreateInfoVALVE *mutable_info =
+   const VkMutableDescriptorTypeCreateInfoEXT *mutable_info =
       vk_find_struct_const( pCreateInfo->pNext,
-         MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE);
+         MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT);
 
    const VkDescriptorPoolInlineUniformBlockCreateInfo *inline_info =
       vk_find_struct_const(pCreateInfo->pNext,
@@ -696,7 +696,7 @@ tu_CreateDescriptorPool(VkDevice _device,
          dynamic_size += descriptor_size(device, NULL, pool_size->type) *
             pool_size->descriptorCount;
          break;
-      case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE:
+      case VK_DESCRIPTOR_TYPE_MUTABLE_EXT:
          if (mutable_info && i < mutable_info->mutableDescriptorTypeListCount &&
              mutable_info->pMutableDescriptorTypeLists[i].descriptorTypeCount > 0) {
             bo_size +=
@@ -738,7 +738,7 @@ tu_CreateDescriptorPool(VkDevice _device,
    }
 
    if (bo_size) {
-      if (!(pCreateInfo->flags & VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE)) {
+      if (!(pCreateInfo->flags & VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT)) {
          ret = tu_bo_init_new(device, &pool->bo, bo_size, TU_BO_ALLOC_ALLOW_DUMP, "descriptor pool");
          if (ret)
             goto fail_alloc;
index 38e0b23..ef7c026 100644 (file)
@@ -236,6 +236,7 @@ get_device_extensions(const struct tu_physical_device *device,
       .EXT_non_seamless_cube_map = true,
       .EXT_tooling_info = true,
       .EXT_inline_uniform_block = true,
+      .EXT_mutable_descriptor_type = true,
    };
 }
 
@@ -797,9 +798,9 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
          features->transformFeedbackPreservesProvokingVertex = true;
          break;
       }
-      case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE: {
-         VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE *features =
-            (VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE *)ext;
+      case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT: {
+         VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *features =
+            (VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)ext;
          features->mutableDescriptorType = true;
          break;
       }
index 2dcf193..72f5d79 100644 (file)
@@ -97,7 +97,7 @@ tu6_load_state_size(struct tu_pipeline *pipeline,
             count = stage_count * binding->array_size * 2;
             break;
          case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
-         case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE:
+         case VK_DESCRIPTOR_TYPE_MUTABLE_EXT:
             break;
          default:
             unreachable("bad descriptor type");
@@ -184,7 +184,7 @@ tu6_emit_load_state(struct tu_pipeline *pipeline,
             break;
          }
          case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
-         case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE:
+         case VK_DESCRIPTOR_TYPE_MUTABLE_EXT:
             /* nothing - input attachment doesn't use bindless */
             break;
          case VK_DESCRIPTOR_TYPE_SAMPLER: