return VN_DESCRIPTOR_TYPE_INPUT_ATTACHMENT;
case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK:
return VN_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK;
- case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE:
- return VN_DESCRIPTOR_TYPE_MUTABLE_VALVE;
+ case VK_DESCRIPTOR_TYPE_MUTABLE_EXT:
+ return VN_DESCRIPTOR_TYPE_MUTABLE_EXT;
default:
break;
}
vk_find_struct_const(create_info->pNext,
DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO);
- const VkMutableDescriptorTypeCreateInfoVALVE *mutable_descriptor_info =
+ const VkMutableDescriptorTypeCreateInfoEXT *mutable_descriptor_info =
vk_find_struct_const(create_info->pNext,
- MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE);
+ MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT);
/* 14.2.1. Descriptor Set Layout
*
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
binding->has_immutable_samplers = binding_info->pImmutableSamplers;
break;
- case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE:
+ case VK_DESCRIPTOR_TYPE_MUTABLE_EXT:
assert(mutable_descriptor_info->mutableDescriptorTypeListCount &&
mutable_descriptor_info->pMutableDescriptorTypeLists[i]
.descriptorTypeCount);
- const VkMutableDescriptorTypeListVALVE *list =
+ const VkMutableDescriptorTypeListEXT *list =
&mutable_descriptor_info->pMutableDescriptorTypeLists[i];
for (uint32_t j = 0; j < list->descriptorTypeCount; j++) {
BITSET_SET(binding->mutable_descriptor_types,
uint32_t mutable_states_count = 0;
for (uint32_t i = 0; i < pCreateInfo->poolSizeCount; i++) {
const VkDescriptorPoolSize *pool_size = &pCreateInfo->pPoolSizes[i];
- if (pool_size->type == VK_DESCRIPTOR_TYPE_MUTABLE_VALVE)
+ if (pool_size->type == VK_DESCRIPTOR_TYPE_MUTABLE_EXT)
mutable_states_count++;
}
struct vn_descriptor_pool *pool;
pool->allocator = *alloc;
pool->mutable_states = mutable_states;
- const VkMutableDescriptorTypeCreateInfoVALVE *mutable_descriptor_info =
+ const VkMutableDescriptorTypeCreateInfoEXT *mutable_descriptor_info =
vk_find_struct_const(pCreateInfo->pNext,
- MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE);
+ MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT);
/* Without VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, the set
* allocation must not fail due to a fragmented pool per spec. In this
assert(type_index < VN_NUM_DESCRIPTOR_TYPES);
- if (type_index == VN_DESCRIPTOR_TYPE_MUTABLE_VALVE) {
+ if (type_index == VN_DESCRIPTOR_TYPE_MUTABLE_EXT) {
struct vn_descriptor_pool_state_mutable *mutable_state = NULL;
BITSET_DECLARE(mutable_types, VN_NUM_DESCRIPTOR_TYPES);
if (!mutable_descriptor_info ||
i >= mutable_descriptor_info->mutableDescriptorTypeListCount) {
BITSET_ONES(mutable_types);
} else {
- const VkMutableDescriptorTypeListVALVE *list =
+ const VkMutableDescriptorTypeListEXT *list =
&mutable_descriptor_info->pMutableDescriptorTypeLists[i];
for (uint32_t j = 0; j < list->descriptorTypeCount; j++) {
uint32_t last_binding_descriptor_count)
{
for (uint32_t i = 0; i <= max_binding_index; i++) {
- if (layout->bindings[i].type != VK_DESCRIPTOR_TYPE_MUTABLE_VALVE)
+ if (layout->bindings[i].type != VK_DESCRIPTOR_TYPE_MUTABLE_EXT)
continue;
const uint32_t count = i == layout->last_binding
goto fail;
}
- if (type == VK_DESCRIPTOR_TYPE_MUTABLE_VALVE) {
+ if (type == VK_DESCRIPTOR_TYPE_MUTABLE_EXT) {
/* A mutable descriptor can be allocated if below are satisfied:
* - vn_descriptor_pool_state_mutable::types is a superset
* - vn_descriptor_pool_state_mutable::{max - used} is enough
? last_binding_descriptor_count
: layout->bindings[i].count;
- if (layout->bindings[i].type != VK_DESCRIPTOR_TYPE_MUTABLE_VALVE) {
+ if (layout->bindings[i].type != VK_DESCRIPTOR_TYPE_MUTABLE_EXT) {
pool->used.descriptor_counts[vn_descriptor_type_index(
layout->bindings[i].type)] -= count;
write->pTexelBufferView = NULL;
break;
case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK:
- case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE:
+ case VK_DESCRIPTOR_TYPE_MUTABLE_EXT:
default:
write->pImageInfo = NULL;
write->pBufferInfo = NULL;
case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK:
iub_count += 1;
break;
- case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE:
+ case VK_DESCRIPTOR_TYPE_MUTABLE_EXT:
break;
default:
unreachable("unhandled descriptor type");
write->pNext, WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK);
iub_data->pData = pData + entry->offset;
break;
- case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE:
+ case VK_DESCRIPTOR_TYPE_MUTABLE_EXT:
break;
default:
unreachable("unhandled descriptor type");
VN_ADD_EXT_TO_PNEXT_OF(features2, VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, feats->vertex_attribute_divisor, EXT_vertex_attribute_divisor);
VN_ADD_EXT_TO_PNEXT_OF(features2, YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT, feats->ycbcr_2plane_444_formats, EXT_ycbcr_2plane_444_formats);
- /* Vendor */
- VN_ADD_EXT_TO_PNEXT_OF(features2, MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE, feats->mutable_descriptor_type, VALVE_mutable_descriptor_type);
+ if (exts->EXT_mutable_descriptor_type || exts->VALVE_mutable_descriptor_type) {
+ VN_ADD_TO_PNEXT_OF(features2, MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT, feats->mutable_descriptor_type);
+ }
/* clang-format on */
.EXT_conservative_rasterization = true,
.EXT_custom_border_color = true,
.EXT_depth_clip_enable = true,
+ .EXT_mutable_descriptor_type = true,
/* vendor */
.VALVE_mutable_descriptor_type = true,
CASE(INDEX_TYPE_UINT8_FEATURES_EXT, index_type_uint8);
CASE(LINE_RASTERIZATION_FEATURES_EXT, line_rasterization);
CASE(MULTI_DRAW_FEATURES_EXT, multi_draw);
+ CASE(MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT, mutable_descriptor_type);
CASE(PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT, primitive_topology_list_restart);
CASE(PROVOKING_VERTEX_FEATURES_EXT, provoking_vertex);
CASE(ROBUSTNESS_2_FEATURES_EXT, robustness_2);
CASE(TRANSFORM_FEEDBACK_FEATURES_EXT, transform_feedback);
CASE(VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, vertex_attribute_divisor);
- /* vendor */
- CASE(MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE, mutable_descriptor_type);
-
/* clang-format on */
default: