Mesa (main): radv: use SMEM for a few load_global
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri May 6 15:35:33 UTC 2022
Module: Mesa
Branch: main
Commit: 594fa0572246ec1280e12fec52c30f96760bd30f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=594fa0572246ec1280e12fec52c30f96760bd30f
Author: Rhys Perry <pendingchaos02 at gmail.com>
Date: Fri Apr 15 13:30:41 2022 +0100
radv: use SMEM for a few load_global
Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Konstantin Seurer <konstantin.seurer at gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16203>
---
src/amd/vulkan/radv_acceleration_structure.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/src/amd/vulkan/radv_acceleration_structure.c b/src/amd/vulkan/radv_acceleration_structure.c
index 3f9b34f5f4a..1da40682947 100644
--- a/src/amd/vulkan/radv_acceleration_structure.c
+++ b/src/amd/vulkan/radv_acceleration_structure.c
@@ -1103,7 +1103,8 @@ atomic_fminmax(struct radv_device *dev, nir_builder *b, nir_ssa_def *addr, bool
static nir_ssa_def *
read_fminmax_atomic(struct radv_device *dev, nir_builder *b, unsigned channels, nir_ssa_def *addr)
{
- nir_ssa_def *val = nir_build_load_global(b, channels, 32, addr);
+ nir_ssa_def *val = nir_build_load_global(b, channels, 32, addr,
+ .access = ACCESS_NON_WRITEABLE | ACCESS_CAN_REORDER);
if (radv_has_shader_buffer_float_minmax(dev->physical_device))
return val;
@@ -1189,11 +1190,17 @@ build_leaf_shader(struct radv_device *dev)
nir_push_if(&b, nir_ine_imm(&b, transform_addr, 0));
nir_store_var(&b, transform[0],
- nir_build_load_global(&b, 4, 32, nir_iadd_imm(&b, transform_addr, 0)), 0xf);
+ nir_build_load_global(&b, 4, 32, nir_iadd_imm(&b, transform_addr, 0),
+ .access = ACCESS_NON_WRITEABLE | ACCESS_CAN_REORDER),
+ 0xf);
nir_store_var(&b, transform[1],
- nir_build_load_global(&b, 4, 32, nir_iadd_imm(&b, transform_addr, 16)), 0xf);
+ nir_build_load_global(&b, 4, 32, nir_iadd_imm(&b, transform_addr, 16),
+ .access = ACCESS_NON_WRITEABLE | ACCESS_CAN_REORDER),
+ 0xf);
nir_store_var(&b, transform[2],
- nir_build_load_global(&b, 4, 32, nir_iadd_imm(&b, transform_addr, 32)), 0xf);
+ nir_build_load_global(&b, 4, 32, nir_iadd_imm(&b, transform_addr, 32),
+ .access = ACCESS_NON_WRITEABLE | ACCESS_CAN_REORDER),
+ 0xf);
nir_pop_if(&b, NULL);
for (unsigned i = 0; i < 3; ++i)
@@ -1245,8 +1252,12 @@ build_leaf_shader(struct radv_device *dev)
aabb_addr = nir_iadd(&b, aabb_addr, nir_u2u64(&b, nir_imul(&b, aabb_stride, global_id)));
- nir_ssa_def *min_bound = nir_build_load_global(&b, 3, 32, nir_iadd_imm(&b, aabb_addr, 0));
- nir_ssa_def *max_bound = nir_build_load_global(&b, 3, 32, nir_iadd_imm(&b, aabb_addr, 12));
+ nir_ssa_def *min_bound =
+ nir_build_load_global(&b, 3, 32, nir_iadd_imm(&b, aabb_addr, 0),
+ .access = ACCESS_NON_WRITEABLE | ACCESS_CAN_REORDER);
+ nir_ssa_def *max_bound =
+ nir_build_load_global(&b, 3, 32, nir_iadd_imm(&b, aabb_addr, 12),
+ .access = ACCESS_NON_WRITEABLE | ACCESS_CAN_REORDER);
nir_store_var(&b, bounds[0], min_bound, 7);
nir_store_var(&b, bounds[1], max_bound, 7);
More information about the mesa-commit
mailing list