From 969a9fe7f246954053f8d1fd1c144ab46c8d5318 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 15 May 2023 09:05:47 -0400 Subject: lavapipe: Lower legacy atomics sooner Signed-off-by: Alyssa Rosenzweig Reviewed-by: Mike Blumenkrantz Reviewed-by: Emma Anholt Reviewed-by: Jesse Natalie Part-of: --- .../frontends/lavapipe/lvp_lower_vulkan_resource.c | 30 +++------------------- src/gallium/frontends/lavapipe/lvp_pipeline.c | 30 ++++------------------ 2 files changed, 9 insertions(+), 51 deletions(-) diff --git a/src/gallium/frontends/lavapipe/lvp_lower_vulkan_resource.c b/src/gallium/frontends/lavapipe/lvp_lower_vulkan_resource.c index 16a1567a6ae..2d6662ae55e 100644 --- a/src/gallium/frontends/lavapipe/lvp_lower_vulkan_resource.c +++ b/src/gallium/frontends/lavapipe/lvp_lower_vulkan_resource.c @@ -39,19 +39,8 @@ lower_vulkan_resource_index(const nir_instr *instr, const void *data_cb) case nir_intrinsic_image_deref_sparse_load: case nir_intrinsic_image_deref_load: case nir_intrinsic_image_deref_store: - 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_fadd: - case nir_intrinsic_image_deref_atomic_fmin: - case nir_intrinsic_image_deref_atomic_fmax: + case nir_intrinsic_image_deref_atomic: + case nir_intrinsic_image_deref_atomic_swap: case nir_intrinsic_image_deref_size: case nir_intrinsic_image_deref_samples: return true; @@ -330,19 +319,8 @@ static nir_ssa_def *lower_vri_instr(struct nir_builder *b, case nir_intrinsic_image_deref_sparse_load: case nir_intrinsic_image_deref_load: case nir_intrinsic_image_deref_store: - 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_fadd: - case nir_intrinsic_image_deref_atomic_fmin: - case nir_intrinsic_image_deref_atomic_fmax: + case nir_intrinsic_image_deref_atomic: + case nir_intrinsic_image_deref_atomic_swap: case nir_intrinsic_image_deref_size: case nir_intrinsic_image_deref_samples: lower_image_intrinsic(b, intrin, data_cb); diff --git a/src/gallium/frontends/lavapipe/lvp_pipeline.c b/src/gallium/frontends/lavapipe/lvp_pipeline.c index ffd71244912..95e301663c8 100644 --- a/src/gallium/frontends/lavapipe/lvp_pipeline.c +++ b/src/gallium/frontends/lavapipe/lvp_pipeline.c @@ -185,33 +185,12 @@ scan_intrinsic(struct lvp_shader *shader, struct lvp_pipeline_layout *layout, ni case nir_intrinsic_image_deref_store: set_image_access(shader, layout, nir, instr, false, true); 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_fadd: + case nir_intrinsic_image_deref_atomic: + case nir_intrinsic_image_deref_atomic_swap: set_image_access(shader, layout, nir, instr, true, true); break; - case nir_intrinsic_deref_atomic_add: - case nir_intrinsic_deref_atomic_and: - case nir_intrinsic_deref_atomic_comp_swap: - case nir_intrinsic_deref_atomic_exchange: - case nir_intrinsic_deref_atomic_fadd: - case nir_intrinsic_deref_atomic_fcomp_swap: - case nir_intrinsic_deref_atomic_fmax: - case nir_intrinsic_deref_atomic_fmin: - case nir_intrinsic_deref_atomic_imax: - case nir_intrinsic_deref_atomic_imin: - case nir_intrinsic_deref_atomic_or: - case nir_intrinsic_deref_atomic_umax: - case nir_intrinsic_deref_atomic_umin: - case nir_intrinsic_deref_atomic_xor: + case nir_intrinsic_deref_atomic: + case nir_intrinsic_deref_atomic_swap: case nir_intrinsic_store_deref: set_buffer_access(shader, layout, nir, instr); break; @@ -485,6 +464,7 @@ lvp_shader_lower(struct lvp_device *pdevice, nir_shader *nir, struct lvp_shader NIR_PASS_V(nir, nir_remove_dead_variables, nir_var_uniform | nir_var_image, NULL); + NIR_PASS_V(nir, nir_lower_legacy_atomics); scan_pipeline_info(shader, layout, nir); optimize(nir); -- cgit v1.2.1