radeonsi: don't lower UBO/SSBOs to descriptors if they are already lowered

The next change will depend on this.

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29313>
This commit is contained in:
Marek Olšák
2024-05-24 07:37:07 -04:00
committed by Marge Bot
parent e1c65ce680
commit f493d6fb6f

View File

@@ -269,6 +269,10 @@ static bool lower_resource_intrinsic(nir_builder *b, nir_intrinsic_instr *intrin
case nir_intrinsic_load_ubo: {
assert(!(nir_intrinsic_access(intrin) & ACCESS_NON_UNIFORM));
/* Check if the instruction already sources a descriptor and doesn't need to be lowered. */
if (intrin->src[0].ssa->num_components == 4 && intrin->src[0].ssa->bit_size == 32)
return false;
nir_def *desc = load_ubo_desc(b, intrin->src[0].ssa, s);
nir_src_rewrite(&intrin->src[0], desc);
break;
@@ -278,6 +282,10 @@ static bool lower_resource_intrinsic(nir_builder *b, nir_intrinsic_instr *intrin
case nir_intrinsic_ssbo_atomic_swap: {
assert(!(nir_intrinsic_access(intrin) & ACCESS_NON_UNIFORM));
/* Check if the instruction already sources a descriptor and doesn't need to be lowered. */
if (intrin->src[0].ssa->num_components == 4 && intrin->src[0].ssa->bit_size == 32)
return false;
nir_def *desc = load_ssbo_desc(b, &intrin->src[0], s);
nir_src_rewrite(&intrin->src[0], desc);
break;
@@ -285,6 +293,10 @@ static bool lower_resource_intrinsic(nir_builder *b, nir_intrinsic_instr *intrin
case nir_intrinsic_store_ssbo: {
assert(!(nir_intrinsic_access(intrin) & ACCESS_NON_UNIFORM));
/* Check if the instruction already sources a descriptor and doesn't need to be lowered. */
if (intrin->src[1].ssa->num_components == 4 && intrin->src[1].ssa->bit_size == 32)
return false;
nir_def *desc = load_ssbo_desc(b, &intrin->src[1], s);
nir_src_rewrite(&intrin->src[1], desc);
break;