summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIcecream95 <ixn@disroot.org>2022-05-24 16:09:42 +1200
committerMarge Bot <emma+marge@anholt.net>2022-05-24 16:13:33 +0000
commit9f9ed959bd0110135ffdd4b98719d734e9c27c2f (patch)
tree611d98363872408490a4e8c492a9eb21c0eeea2a
parent743f4b995df72ca46252e4cd83bb5d40dc8e6681 (diff)
nir: Add store_combined_output_pan BASE back
It's meaningful for this intrinsic and so does not add noise to the lowering pass. (Although dual-source writes must be to RT 0, depth and stencil writes, which store_combined_output_pan is also used for, can still be done with MRT enabled.) Fixes: 5c168f09eb9 ("nir: Eliminate store_combined_output_pan BASE") Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16685>
-rw-r--r--src/compiler/nir/nir_intrinsics.py2
-rw-r--r--src/panfrost/util/pan_lower_writeout.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py
index 2b8a6c6ab6e..b4247efd44b 100644
--- a/src/compiler/nir/nir_intrinsics.py
+++ b/src/compiler/nir/nir_intrinsics.py
@@ -1222,7 +1222,7 @@ intrinsic("shared_atomic_comp_swap_dxil", src_comp=[1, 1, 1], dest_comp=1)
# src[] = { value }
store("raw_output_pan", [], [])
-store("combined_output_pan", [1, 1, 1, 4], [COMPONENT, SRC_TYPE, DEST_TYPE])
+store("combined_output_pan", [1, 1, 1, 4], [BASE, COMPONENT, SRC_TYPE, DEST_TYPE])
load("raw_output_pan", [1], [BASE], [CAN_ELIMINATE, CAN_REORDER])
# Loads the sampler paramaters <min_lod, max_lod, lod_bias>
diff --git a/src/panfrost/util/pan_lower_writeout.c b/src/panfrost/util/pan_lower_writeout.c
index bce8e3e71c6..ea8fb5f1a55 100644
--- a/src/panfrost/util/pan_lower_writeout.c
+++ b/src/panfrost/util/pan_lower_writeout.c
@@ -55,6 +55,8 @@ pan_nir_emit_combined_store(nir_builder *b,
intr->num_components = rt0_store ? rt0_store->src[0].ssa->num_components : 4;
+ if (rt0_store)
+ nir_intrinsic_set_base(intr, nir_intrinsic_base(rt0_store));
nir_intrinsic_set_src_type(intr, pan_nir_rt_store_type(rt0_store));
nir_intrinsic_set_dest_type(intr, pan_nir_rt_store_type(stores[2]));
nir_intrinsic_set_component(intr, writeout);