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_timeline_semaphore DONE (anv, radv)
|
||||||
VK_KHR_uniform_buffer_standard_layout DONE (anv, lvp, radv)
|
VK_KHR_uniform_buffer_standard_layout DONE (anv, lvp, radv)
|
||||||
VK_KHR_vulkan_memory_model DONE (anv, 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_host_query_reset DONE (anv, lvp, radv, tu)
|
||||||
VK_EXT_sampler_filter_minmax DONE (anv/gen9+, lvp, radv, tu)
|
VK_EXT_sampler_filter_minmax DONE (anv/gen9+, lvp, radv, tu)
|
||||||
VK_EXT_scalar_block_layout DONE (anv, lvp, radv/gfx7+)
|
VK_EXT_scalar_block_layout DONE (anv, lvp, radv/gfx7+)
|
||||||
|
|
|
@ -424,27 +424,27 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
||||||
features->shaderFloat16 = false;
|
features->shaderFloat16 = false;
|
||||||
features->shaderInt8 = false;
|
features->shaderInt8 = false;
|
||||||
|
|
||||||
features->descriptorIndexing = false;
|
features->descriptorIndexing = true;
|
||||||
features->shaderInputAttachmentArrayDynamicIndexing = false;
|
features->shaderInputAttachmentArrayDynamicIndexing = false;
|
||||||
features->shaderUniformTexelBufferArrayDynamicIndexing = false;
|
features->shaderUniformTexelBufferArrayDynamicIndexing = true;
|
||||||
features->shaderStorageTexelBufferArrayDynamicIndexing = false;
|
features->shaderStorageTexelBufferArrayDynamicIndexing = true;
|
||||||
features->shaderUniformBufferArrayNonUniformIndexing = false;
|
features->shaderUniformBufferArrayNonUniformIndexing = true;
|
||||||
features->shaderSampledImageArrayNonUniformIndexing = false;
|
features->shaderSampledImageArrayNonUniformIndexing = true;
|
||||||
features->shaderStorageBufferArrayNonUniformIndexing = false;
|
features->shaderStorageBufferArrayNonUniformIndexing = true;
|
||||||
features->shaderStorageImageArrayNonUniformIndexing = false;
|
features->shaderStorageImageArrayNonUniformIndexing = true;
|
||||||
features->shaderInputAttachmentArrayNonUniformIndexing = false;
|
features->shaderInputAttachmentArrayNonUniformIndexing = false;
|
||||||
features->shaderUniformTexelBufferArrayNonUniformIndexing = false;
|
features->shaderUniformTexelBufferArrayNonUniformIndexing = true;
|
||||||
features->shaderStorageTexelBufferArrayNonUniformIndexing = false;
|
features->shaderStorageTexelBufferArrayNonUniformIndexing = true;
|
||||||
features->descriptorBindingUniformBufferUpdateAfterBind = false;
|
features->descriptorBindingUniformBufferUpdateAfterBind = false;
|
||||||
features->descriptorBindingSampledImageUpdateAfterBind = false;
|
features->descriptorBindingSampledImageUpdateAfterBind = true;
|
||||||
features->descriptorBindingStorageImageUpdateAfterBind = false;
|
features->descriptorBindingStorageImageUpdateAfterBind = true;
|
||||||
features->descriptorBindingStorageBufferUpdateAfterBind = false;
|
features->descriptorBindingStorageBufferUpdateAfterBind = true;
|
||||||
features->descriptorBindingUniformTexelBufferUpdateAfterBind = false;
|
features->descriptorBindingUniformTexelBufferUpdateAfterBind = true;
|
||||||
features->descriptorBindingStorageTexelBufferUpdateAfterBind = false;
|
features->descriptorBindingStorageTexelBufferUpdateAfterBind = true;
|
||||||
features->descriptorBindingUpdateUnusedWhilePending = false;
|
features->descriptorBindingUpdateUnusedWhilePending = true;
|
||||||
features->descriptorBindingPartiallyBound = false;
|
features->descriptorBindingPartiallyBound = true;
|
||||||
features->descriptorBindingVariableDescriptorCount = false;
|
features->descriptorBindingVariableDescriptorCount = true;
|
||||||
features->runtimeDescriptorArray = false;
|
features->runtimeDescriptorArray = true;
|
||||||
|
|
||||||
features->samplerFilterMinmax = true;
|
features->samplerFilterMinmax = true;
|
||||||
features->scalarBlockLayout = false;
|
features->scalarBlockLayout = false;
|
||||||
|
@ -510,25 +510,25 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
||||||
VkPhysicalDeviceDescriptorIndexingFeaturesEXT *features =
|
VkPhysicalDeviceDescriptorIndexingFeaturesEXT *features =
|
||||||
(VkPhysicalDeviceDescriptorIndexingFeaturesEXT *) ext;
|
(VkPhysicalDeviceDescriptorIndexingFeaturesEXT *) ext;
|
||||||
features->shaderInputAttachmentArrayDynamicIndexing = false;
|
features->shaderInputAttachmentArrayDynamicIndexing = false;
|
||||||
features->shaderUniformTexelBufferArrayDynamicIndexing = false;
|
features->shaderUniformTexelBufferArrayDynamicIndexing = true;
|
||||||
features->shaderStorageTexelBufferArrayDynamicIndexing = false;
|
features->shaderStorageTexelBufferArrayDynamicIndexing = true;
|
||||||
features->shaderUniformBufferArrayNonUniformIndexing = false;
|
features->shaderUniformBufferArrayNonUniformIndexing = true;
|
||||||
features->shaderSampledImageArrayNonUniformIndexing = false;
|
features->shaderSampledImageArrayNonUniformIndexing = true;
|
||||||
features->shaderStorageBufferArrayNonUniformIndexing = false;
|
features->shaderStorageBufferArrayNonUniformIndexing = true;
|
||||||
features->shaderStorageImageArrayNonUniformIndexing = false;
|
features->shaderStorageImageArrayNonUniformIndexing = true;
|
||||||
features->shaderInputAttachmentArrayNonUniformIndexing = false;
|
features->shaderInputAttachmentArrayNonUniformIndexing = false;
|
||||||
features->shaderUniformTexelBufferArrayNonUniformIndexing = false;
|
features->shaderUniformTexelBufferArrayNonUniformIndexing = true;
|
||||||
features->shaderStorageTexelBufferArrayNonUniformIndexing = false;
|
features->shaderStorageTexelBufferArrayNonUniformIndexing = true;
|
||||||
features->descriptorBindingUniformBufferUpdateAfterBind = false;
|
features->descriptorBindingUniformBufferUpdateAfterBind = false;
|
||||||
features->descriptorBindingSampledImageUpdateAfterBind = false;
|
features->descriptorBindingSampledImageUpdateAfterBind = true;
|
||||||
features->descriptorBindingStorageImageUpdateAfterBind = false;
|
features->descriptorBindingStorageImageUpdateAfterBind = true;
|
||||||
features->descriptorBindingStorageBufferUpdateAfterBind = false;
|
features->descriptorBindingStorageBufferUpdateAfterBind = true;
|
||||||
features->descriptorBindingUniformTexelBufferUpdateAfterBind = false;
|
features->descriptorBindingUniformTexelBufferUpdateAfterBind = true;
|
||||||
features->descriptorBindingStorageTexelBufferUpdateAfterBind = false;
|
features->descriptorBindingStorageTexelBufferUpdateAfterBind = true;
|
||||||
features->descriptorBindingUpdateUnusedWhilePending = false;
|
features->descriptorBindingUpdateUnusedWhilePending = true;
|
||||||
features->descriptorBindingPartiallyBound = false;
|
features->descriptorBindingPartiallyBound = true;
|
||||||
features->descriptorBindingVariableDescriptorCount = false;
|
features->descriptorBindingVariableDescriptorCount = true;
|
||||||
features->runtimeDescriptorArray = false;
|
features->runtimeDescriptorArray = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: {
|
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: {
|
||||||
|
@ -600,7 +600,6 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
||||||
feature->performanceCounterMultipleQueryPools = false;
|
feature->performanceCounterMultipleQueryPools = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -860,6 +859,36 @@ tu_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
|
||||||
properties->allowCommandBufferQueryCopies = false;
|
properties->allowCommandBufferQueryCopies = false;
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,6 +105,7 @@ EXTENSIONS = [
|
||||||
Extension('VK_EXT_memory_budget', 1, True),
|
Extension('VK_EXT_memory_budget', 1, True),
|
||||||
Extension('VK_KHR_device_group', 4, True),
|
Extension('VK_KHR_device_group', 4, True),
|
||||||
Extension('VK_KHR_device_group_creation', 1, True),
|
Extension('VK_KHR_device_group_creation', 1, True),
|
||||||
|
Extension('VK_EXT_descriptor_indexing', 2, True),
|
||||||
]
|
]
|
||||||
|
|
||||||
MAX_API_VERSION = VkVersion(MAX_API_VERSION)
|
MAX_API_VERSION = VkVersion(MAX_API_VERSION)
|
||||||
|
|
|
@ -69,6 +69,10 @@ tu_spirv_to_nir(struct tu_device *dev,
|
||||||
.shader_viewport_index_layer = true,
|
.shader_viewport_index_layer = true,
|
||||||
.geometry_streams = true,
|
.geometry_streams = true,
|
||||||
.device_group = 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 =
|
const nir_shader_compiler_options *nir_options =
|
||||||
|
|
Loading…
Reference in New Issue