Module: Mesa Branch: master Commit: d47c44add80cfde213a9d5763c1fb633fac914ff URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d47c44add80cfde213a9d5763c1fb633fac914ff
Author: Marek Olšák <[email protected]> Date: Sat Feb 13 11:00:58 2021 -0500 radeonsi: gather info about bindless images and memory stores with strstr(intr) This is only code simplification. Acked-by: Pierre-Eric Pelloux-Prayer <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9028> --- src/gallium/drivers/radeonsi/si_shader_nir.c | 67 ++++++---------------------- 1 file changed, 13 insertions(+), 54 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index 239a6b8f8b4..ceb2c3e35b7 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -184,6 +184,19 @@ static void scan_instruction(const struct nir_shader *nir, struct si_shader_info info->uses_bindless_samplers = true; } else if (instr->type == nir_instr_type_intrinsic) { nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr); + const char *intr_name = nir_intrinsic_infos[intr->intrinsic].name; + bool is_bindless_image = strstr(intr_name, "bindless_image"); + + if (is_bindless_image) + info->uses_bindless_images = true; + + if (strstr(intr_name, "image_atomic") || + strstr(intr_name, "image_store") || + strstr(intr_name, "image_deref_atomic") || + strstr(intr_name, "image_deref_store") || + strstr(intr_name, "ssbo_atomic") || + intr->intrinsic == nir_intrinsic_store_ssbo) + info->num_memory_stores++; switch (intr->intrinsic) { case nir_intrinsic_load_local_invocation_id: @@ -199,60 +212,6 @@ static void scan_instruction(const struct nir_shader *nir, struct si_shader_info } break; } - case nir_intrinsic_bindless_image_load: - case nir_intrinsic_bindless_image_size: - case nir_intrinsic_bindless_image_samples: - info->uses_bindless_images = true; - break; - case nir_intrinsic_bindless_image_store: - info->uses_bindless_images = true; - info->num_memory_stores++; - break; - case nir_intrinsic_image_deref_store: - info->num_memory_stores++; - break; - case nir_intrinsic_bindless_image_atomic_add: - case nir_intrinsic_bindless_image_atomic_imin: - case nir_intrinsic_bindless_image_atomic_umin: - case nir_intrinsic_bindless_image_atomic_imax: - case nir_intrinsic_bindless_image_atomic_umax: - case nir_intrinsic_bindless_image_atomic_and: - case nir_intrinsic_bindless_image_atomic_or: - case nir_intrinsic_bindless_image_atomic_xor: - case nir_intrinsic_bindless_image_atomic_exchange: - case nir_intrinsic_bindless_image_atomic_comp_swap: - case nir_intrinsic_bindless_image_atomic_inc_wrap: - case nir_intrinsic_bindless_image_atomic_dec_wrap: - info->uses_bindless_images = true; - info->num_memory_stores++; - break; - case nir_intrinsic_image_deref_atomic_add: - case nir_intrinsic_image_deref_atomic_imin: - case nir_intrinsic_image_deref_atomic_umin: - case nir_intrinsic_image_deref_atomic_imax: - case nir_intrinsic_image_deref_atomic_umax: - case nir_intrinsic_image_deref_atomic_and: - case nir_intrinsic_image_deref_atomic_or: - case nir_intrinsic_image_deref_atomic_xor: - case nir_intrinsic_image_deref_atomic_exchange: - case nir_intrinsic_image_deref_atomic_comp_swap: - case nir_intrinsic_image_deref_atomic_inc_wrap: - case nir_intrinsic_image_deref_atomic_dec_wrap: - info->num_memory_stores++; - break; - case nir_intrinsic_store_ssbo: - case nir_intrinsic_ssbo_atomic_add: - case nir_intrinsic_ssbo_atomic_imin: - case nir_intrinsic_ssbo_atomic_umin: - case nir_intrinsic_ssbo_atomic_imax: - case nir_intrinsic_ssbo_atomic_umax: - case nir_intrinsic_ssbo_atomic_and: - case nir_intrinsic_ssbo_atomic_or: - case nir_intrinsic_ssbo_atomic_xor: - case nir_intrinsic_ssbo_atomic_exchange: - case nir_intrinsic_ssbo_atomic_comp_swap: - info->num_memory_stores++; - break; case nir_intrinsic_load_color0: case nir_intrinsic_load_color1: { unsigned index = intr->intrinsic == nir_intrinsic_load_color1; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
