From 8a61e3a0c0704dcc81fcccb17b815f5f5475b7e0 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 15 Jan 2021 17:20:22 -0600 Subject: [PATCH] anv: Zero out the last dword of UBO/SSBO descriptors in the shader This way, NIR can constant fold it. Reviewed-by: Kenneth Graunke Reviewed-by: Caio Marcelo de Oliveira Filho Part-of: --- src/intel/vulkan/anv_nir_apply_pipeline_layout.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/intel/vulkan/anv_nir_apply_pipeline_layout.c b/src/intel/vulkan/anv_nir_apply_pipeline_layout.c index b20733fcb29..02a44a27736 100644 --- a/src/intel/vulkan/anv_nir_apply_pipeline_layout.c +++ b/src/intel/vulkan/anv_nir_apply_pipeline_layout.c @@ -549,7 +549,14 @@ build_ssbo_descriptor_load(nir_builder *b, const VkDescriptorType desc_type, .range_base = 0, .range = ~0); - return desc_load; + /* The last element of the vec4 is always zero. + * + * See also struct anv_address_range_descriptor + */ + return nir_vec4(b, nir_channel(b, desc_load, 0), + nir_channel(b, desc_load, 1), + nir_channel(b, desc_load, 2), + nir_imm_int(b, 0)); } static bool