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:
@@ -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;
|
||||
|
Reference in New Issue
Block a user