turnip: Enable nonuniform descriptor indexing
Signed-off-by: Hyunjun Ko <zzoon@igalia.com> Reviewed-by: Danylo Piliaiev <dpiliaiev@igalia.com> Reviewed-by: Eric Anholt <eric@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9125>
This commit is contained in:
parent
e9fd2a2a58
commit
d9fcf5de55
|
@ -465,7 +465,7 @@ Vulkan 1.2 -- all DONE: anv
|
|||
VK_KHR_timeline_semaphore DONE (anv, radv)
|
||||
VK_KHR_uniform_buffer_standard_layout DONE (anv, lvp, radv)
|
||||
VK_KHR_vulkan_memory_model DONE (anv, radv)
|
||||
VK_EXT_descriptor_indexing DONE (anv/gen9+, radv)
|
||||
VK_EXT_descriptor_indexing DONE (anv/gen9+, radv, tu)
|
||||
VK_EXT_host_query_reset DONE (anv, lvp, radv, tu)
|
||||
VK_EXT_sampler_filter_minmax DONE (anv/gen9+, lvp, radv, tu)
|
||||
VK_EXT_scalar_block_layout DONE (anv, lvp, radv/gfx7+)
|
||||
|
|
|
@ -424,27 +424,27 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||
features->shaderFloat16 = false;
|
||||
features->shaderInt8 = false;
|
||||
|
||||
features->descriptorIndexing = false;
|
||||
features->descriptorIndexing = true;
|
||||
features->shaderInputAttachmentArrayDynamicIndexing = false;
|
||||
features->shaderUniformTexelBufferArrayDynamicIndexing = false;
|
||||
features->shaderStorageTexelBufferArrayDynamicIndexing = false;
|
||||
features->shaderUniformBufferArrayNonUniformIndexing = false;
|
||||
features->shaderSampledImageArrayNonUniformIndexing = false;
|
||||
features->shaderStorageBufferArrayNonUniformIndexing = false;
|
||||
features->shaderStorageImageArrayNonUniformIndexing = false;
|
||||
features->shaderUniformTexelBufferArrayDynamicIndexing = true;
|
||||
features->shaderStorageTexelBufferArrayDynamicIndexing = true;
|
||||
features->shaderUniformBufferArrayNonUniformIndexing = true;
|
||||
features->shaderSampledImageArrayNonUniformIndexing = true;
|
||||
features->shaderStorageBufferArrayNonUniformIndexing = true;
|
||||
features->shaderStorageImageArrayNonUniformIndexing = true;
|
||||
features->shaderInputAttachmentArrayNonUniformIndexing = false;
|
||||
features->shaderUniformTexelBufferArrayNonUniformIndexing = false;
|
||||
features->shaderStorageTexelBufferArrayNonUniformIndexing = false;
|
||||
features->shaderUniformTexelBufferArrayNonUniformIndexing = true;
|
||||
features->shaderStorageTexelBufferArrayNonUniformIndexing = true;
|
||||
features->descriptorBindingUniformBufferUpdateAfterBind = false;
|
||||
features->descriptorBindingSampledImageUpdateAfterBind = false;
|
||||
features->descriptorBindingStorageImageUpdateAfterBind = false;
|
||||
features->descriptorBindingStorageBufferUpdateAfterBind = false;
|
||||
features->descriptorBindingUniformTexelBufferUpdateAfterBind = false;
|
||||
features->descriptorBindingStorageTexelBufferUpdateAfterBind = false;
|
||||
features->descriptorBindingUpdateUnusedWhilePending = false;
|
||||
features->descriptorBindingPartiallyBound = false;
|
||||
features->descriptorBindingVariableDescriptorCount = false;
|
||||
features->runtimeDescriptorArray = false;
|
||||
features->descriptorBindingSampledImageUpdateAfterBind = true;
|
||||
features->descriptorBindingStorageImageUpdateAfterBind = true;
|
||||
features->descriptorBindingStorageBufferUpdateAfterBind = true;
|
||||
features->descriptorBindingUniformTexelBufferUpdateAfterBind = true;
|
||||
features->descriptorBindingStorageTexelBufferUpdateAfterBind = true;
|
||||
features->descriptorBindingUpdateUnusedWhilePending = true;
|
||||
features->descriptorBindingPartiallyBound = true;
|
||||
features->descriptorBindingVariableDescriptorCount = true;
|
||||
features->runtimeDescriptorArray = true;
|
||||
|
||||
features->samplerFilterMinmax = true;
|
||||
features->scalarBlockLayout = false;
|
||||
|
@ -510,25 +510,25 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||
VkPhysicalDeviceDescriptorIndexingFeaturesEXT *features =
|
||||
(VkPhysicalDeviceDescriptorIndexingFeaturesEXT *) ext;
|
||||
features->shaderInputAttachmentArrayDynamicIndexing = false;
|
||||
features->shaderUniformTexelBufferArrayDynamicIndexing = false;
|
||||
features->shaderStorageTexelBufferArrayDynamicIndexing = false;
|
||||
features->shaderUniformBufferArrayNonUniformIndexing = false;
|
||||
features->shaderSampledImageArrayNonUniformIndexing = false;
|
||||
features->shaderStorageBufferArrayNonUniformIndexing = false;
|
||||
features->shaderStorageImageArrayNonUniformIndexing = false;
|
||||
features->shaderUniformTexelBufferArrayDynamicIndexing = true;
|
||||
features->shaderStorageTexelBufferArrayDynamicIndexing = true;
|
||||
features->shaderUniformBufferArrayNonUniformIndexing = true;
|
||||
features->shaderSampledImageArrayNonUniformIndexing = true;
|
||||
features->shaderStorageBufferArrayNonUniformIndexing = true;
|
||||
features->shaderStorageImageArrayNonUniformIndexing = true;
|
||||
features->shaderInputAttachmentArrayNonUniformIndexing = false;
|
||||
features->shaderUniformTexelBufferArrayNonUniformIndexing = false;
|
||||
features->shaderStorageTexelBufferArrayNonUniformIndexing = false;
|
||||
features->shaderUniformTexelBufferArrayNonUniformIndexing = true;
|
||||
features->shaderStorageTexelBufferArrayNonUniformIndexing = true;
|
||||
features->descriptorBindingUniformBufferUpdateAfterBind = false;
|
||||
features->descriptorBindingSampledImageUpdateAfterBind = false;
|
||||
features->descriptorBindingStorageImageUpdateAfterBind = false;
|
||||
features->descriptorBindingStorageBufferUpdateAfterBind = false;
|
||||
features->descriptorBindingUniformTexelBufferUpdateAfterBind = false;
|
||||
features->descriptorBindingStorageTexelBufferUpdateAfterBind = false;
|
||||
features->descriptorBindingUpdateUnusedWhilePending = false;
|
||||
features->descriptorBindingPartiallyBound = false;
|
||||
features->descriptorBindingVariableDescriptorCount = false;
|
||||
features->runtimeDescriptorArray = false;
|
||||
features->descriptorBindingSampledImageUpdateAfterBind = true;
|
||||
features->descriptorBindingStorageImageUpdateAfterBind = true;
|
||||
features->descriptorBindingStorageBufferUpdateAfterBind = true;
|
||||
features->descriptorBindingUniformTexelBufferUpdateAfterBind = true;
|
||||
features->descriptorBindingStorageTexelBufferUpdateAfterBind = true;
|
||||
features->descriptorBindingUpdateUnusedWhilePending = true;
|
||||
features->descriptorBindingPartiallyBound = true;
|
||||
features->descriptorBindingVariableDescriptorCount = true;
|
||||
features->runtimeDescriptorArray = true;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: {
|
||||
|
@ -600,7 +600,6 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
|||
feature->performanceCounterMultipleQueryPools = false;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -860,6 +859,36 @@ tu_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
|
|||
properties->allowCommandBufferQueryCopies = false;
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT: {
|
||||
VkPhysicalDeviceDescriptorIndexingPropertiesEXT *props =
|
||||
(VkPhysicalDeviceDescriptorIndexingPropertiesEXT *)ext;
|
||||
props->shaderUniformBufferArrayNonUniformIndexingNative = true;
|
||||
props->shaderSampledImageArrayNonUniformIndexingNative = true;
|
||||
props->shaderStorageBufferArrayNonUniformIndexingNative = true;
|
||||
props->shaderStorageImageArrayNonUniformIndexingNative = true;
|
||||
props->shaderInputAttachmentArrayNonUniformIndexingNative = false;
|
||||
props->robustBufferAccessUpdateAfterBind = false;
|
||||
props->quadDivergentImplicitLod = false;
|
||||
|
||||
props->maxUpdateAfterBindDescriptorsInAllPools = max_descriptor_set_size;
|
||||
props->maxPerStageDescriptorUpdateAfterBindSamplers = max_descriptor_set_size;
|
||||
props->maxPerStageDescriptorUpdateAfterBindUniformBuffers = max_descriptor_set_size;
|
||||
props->maxPerStageDescriptorUpdateAfterBindStorageBuffers = max_descriptor_set_size;
|
||||
props->maxPerStageDescriptorUpdateAfterBindSampledImages = max_descriptor_set_size;
|
||||
props->maxPerStageDescriptorUpdateAfterBindStorageImages = max_descriptor_set_size;
|
||||
props->maxPerStageDescriptorUpdateAfterBindInputAttachments = max_descriptor_set_size;
|
||||
props->maxPerStageUpdateAfterBindResources = max_descriptor_set_size;
|
||||
props->maxDescriptorSetUpdateAfterBindSamplers = max_descriptor_set_size;
|
||||
props->maxDescriptorSetUpdateAfterBindUniformBuffers = max_descriptor_set_size;
|
||||
props->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = MAX_DYNAMIC_BUFFERS / 2;
|
||||
props->maxDescriptorSetUpdateAfterBindStorageBuffers = max_descriptor_set_size;
|
||||
props->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = MAX_DYNAMIC_BUFFERS / 2;
|
||||
props->maxDescriptorSetUpdateAfterBindSampledImages = max_descriptor_set_size;
|
||||
props->maxDescriptorSetUpdateAfterBindStorageImages = max_descriptor_set_size;
|
||||
props->maxDescriptorSetUpdateAfterBindInputAttachments = max_descriptor_set_size;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -105,6 +105,7 @@ EXTENSIONS = [
|
|||
Extension('VK_EXT_memory_budget', 1, True),
|
||||
Extension('VK_KHR_device_group', 4, True),
|
||||
Extension('VK_KHR_device_group_creation', 1, True),
|
||||
Extension('VK_EXT_descriptor_indexing', 2, True),
|
||||
]
|
||||
|
||||
MAX_API_VERSION = VkVersion(MAX_API_VERSION)
|
||||
|
|
|
@ -69,6 +69,10 @@ tu_spirv_to_nir(struct tu_device *dev,
|
|||
.shader_viewport_index_layer = true,
|
||||
.geometry_streams = true,
|
||||
.device_group = true,
|
||||
.descriptor_indexing = true,
|
||||
.descriptor_array_dynamic_indexing = true,
|
||||
.descriptor_array_non_uniform_indexing = true,
|
||||
.runtime_descriptor_array = true,
|
||||
},
|
||||
};
|
||||
const nir_shader_compiler_options *nir_options =
|
||||
|
|
Loading…
Reference in New Issue