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:
+1
-1
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user