Mesa (master): radv: improve vectorization callback for small bit sizes
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Apr 21 20:48:26 UTC 2021
Module: Mesa
Branch: master
Commit: 8408d0312faa237d541062a80fef80bea49a4ab0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8408d0312faa237d541062a80fef80bea49a4ab0
Author: Rhys Perry <pendingchaos02 at gmail.com>
Date: Fri Oct 23 15:24:15 2020 +0100
radv: improve vectorization callback for small bit sizes
More accurately reflect the hardware's capabilities for byte and short
aligned VMEM operations.
fossil-db (GFX10.3):
Totals from 65 (0.05% of 139391) affected shaders:
SGPRs: 4296 -> 4200 (-2.23%)
CodeSize: 1000984 -> 1000368 (-0.06%); split: -0.13%, +0.07%
Instrs: 177504 -> 177380 (-0.07%); split: -0.17%, +0.10%
Cycles: 36820596 -> 36812792 (-0.02%); split: -0.15%, +0.13%
Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10384>
---
src/amd/vulkan/radv_pipeline.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 7db89b54d6e..cf62270f242 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -3035,8 +3035,16 @@ mem_vectorize_callback(unsigned align_mul, unsigned align_offset, unsigned bit_s
case nir_intrinsic_store_ssbo:
case nir_intrinsic_load_ssbo:
case nir_intrinsic_load_ubo:
- case nir_intrinsic_load_push_constant:
- return align % (bit_size == 8 ? 2 : 4) == 0;
+ case nir_intrinsic_load_push_constant: {
+ unsigned max_components;
+ if (align % 4 == 0)
+ max_components = NIR_MAX_VEC_COMPONENTS;
+ else if (align % 2 == 0)
+ max_components = 16u / bit_size;
+ else
+ max_components = 8u / bit_size;
+ return (align % (bit_size / 8u)) == 0 && num_components <= max_components;
+ }
case nir_intrinsic_load_deref:
case nir_intrinsic_store_deref:
assert(nir_deref_mode_is(nir_src_as_deref(low->src[0]), nir_var_mem_shared));
More information about the mesa-commit
mailing list