summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>2023-05-15 09:05:47 -0400
committerMarge Bot <emma+marge@anholt.net>2023-05-16 22:36:21 +0000
commit969a9fe7f246954053f8d1fd1c144ab46c8d5318 (patch)
treecea1362e207aa78179e305b480fd0234def3d6a1
parent43b9dc3c53f9ec334a009e0b489b2a2cae3afa82 (diff)
downloadmesa-969a9fe7f246954053f8d1fd1c144ab46c8d5318.tar.gz
lavapipe: Lower legacy atomics sooner
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Reviewed-by: Emma Anholt <emma@anholt.net> Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23036>
-rw-r--r--src/gallium/frontends/lavapipe/lvp_lower_vulkan_resource.c30
-rw-r--r--src/gallium/frontends/lavapipe/lvp_pipeline.c30
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);