summaryrefslogtreecommitdiff
path: root/src/intel/vulkan/anv_pipeline.c
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2019-02-27 16:08:20 -0600
committerJason Ekstrand <jason@jlekstrand.net>2019-04-19 19:56:42 +0000
commit6e230d7607f9b3e082d00859bd7725c4dc87e5cf (patch)
treeb16be9b8611f6700676a6637c7544991d8e884e3 /src/intel/vulkan/anv_pipeline.c
parentd6c9bd6e01b4d593f362a3b5518a71acf2e83ca1 (diff)
anv: Implement VK_EXT_descriptor_indexing
Now that everything is in place to do bindless for all resource types except input attachments and UBOs, VK_EXT_descriptor_indexing is "trivial". Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Diffstat (limited to 'src/intel/vulkan/anv_pipeline.c')
-rw-r--r--src/intel/vulkan/anv_pipeline.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
index 09abf4e85fd..64d4d93803c 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -138,6 +138,7 @@ anv_shader_compile_to_nir(struct anv_device *device,
.lower_workgroup_access_to_offsets = true,
.caps = {
.derivative_group = true,
+ .descriptor_array_dynamic_indexing = true,
.device_group = true,
.draw_parameters = true,
.float16 = pdevice->info.gen >= 8,
@@ -152,6 +153,7 @@ anv_shader_compile_to_nir(struct anv_device *device,
.multiview = true,
.physical_storage_buffer_address = pdevice->has_a64_buffer_access,
.post_depth_coverage = pdevice->info.gen >= 9,
+ .runtime_descriptor_array = true,
.shader_viewport_index_layer = true,
.stencil_export = pdevice->info.gen >= 9,
.storage_8bit = pdevice->info.gen >= 8,
@@ -638,6 +640,13 @@ anv_pipeline_lower_nir(struct anv_pipeline *pipeline,
ssbo_address_format);
NIR_PASS_V(nir, nir_opt_constant_folding);
+
+ /* We don't support non-uniform UBOs and non-uniform SSBO access is
+ * handled naturally by falling back to A64 messages.
+ */
+ NIR_PASS_V(nir, nir_lower_non_uniform_access,
+ nir_lower_non_uniform_texture_access |
+ nir_lower_non_uniform_image_access);
}
if (nir->info.stage != MESA_SHADER_COMPUTE)