diff --git a/src/amd/common/ac_nir_lower_global_access.c b/src/amd/common/ac_nir_lower_global_access.c index 50bd8161dd9..e82351fb3d0 100644 --- a/src/amd/common/ac_nir_lower_global_access.c +++ b/src/amd/common/ac_nir_lower_global_access.c @@ -70,9 +70,13 @@ static bool process_instr(nir_builder *b, nir_intrinsic_instr *intrin, void *_) { nir_intrinsic_op op; + unsigned access = 0; switch (intrin->intrinsic) { - case nir_intrinsic_load_global: case nir_intrinsic_load_global_constant: + access |= ACCESS_NON_WRITEABLE | + (nir_intrinsic_access(intrin) & ACCESS_VOLATILE ? 0 : ACCESS_CAN_REORDER); + FALLTHROUGH; + case nir_intrinsic_load_global: op = nir_intrinsic_load_global_amd; break; case nir_intrinsic_global_atomic: @@ -120,7 +124,7 @@ process_instr(nir_builder *b, nir_intrinsic_instr *intrin, void *_) new_intrin->src[addr_src_idx] = nir_src_for_ssa(addr); if (nir_intrinsic_has_access(intrin)) - nir_intrinsic_set_access(new_intrin, nir_intrinsic_access(intrin)); + nir_intrinsic_set_access(new_intrin, nir_intrinsic_access(intrin) | access); if (nir_intrinsic_has_align_mul(intrin)) nir_intrinsic_set_align_mul(new_intrin, nir_intrinsic_align_mul(intrin)); if (nir_intrinsic_has_align_offset(intrin))