turnip: Implement VK_EXT_mutable_descriptor_type

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>
This commit is contained in:
Danylo Piliaiev
2022-09-20 20:20:00 +03:00
parent 85fc1decf0
commit 9cc9b595f1
4 changed files with 19 additions and 18 deletions
+1 -1
View 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:
+12 -12
View 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;
+4 -3
View 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;
}
+2 -2
View 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: