summaryrefslogtreecommitdiffstats
path: root/src/panfrost/midgard
diff options
context:
space:
mode:
Diffstat (limited to 'src/panfrost/midgard')
-rw-r--r--src/panfrost/midgard/midgard_compile.c12
-rw-r--r--src/panfrost/midgard/midgard_compile.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c
index d5770b20e2d..c3752784b6b 100644
--- a/src/panfrost/midgard/midgard_compile.c
+++ b/src/panfrost/midgard/midgard_compile.c
@@ -306,6 +306,16 @@ midgard_nir_lower_fdot2_body(nir_builder *b, nir_alu_instr *alu)
}
static int
+midgard_sysval_for_ssbo(nir_intrinsic_instr *instr)
+{
+ nir_src index = instr->src[0];
+ assert(nir_src_is_const(index));
+ uint32_t uindex = nir_src_as_uint(index);
+
+ return PAN_SYSVAL(SSBO, uindex);
+}
+
+static int
midgard_nir_sysval_for_intrinsic(nir_intrinsic_instr *instr)
{
switch (instr->intrinsic) {
@@ -313,6 +323,8 @@ midgard_nir_sysval_for_intrinsic(nir_intrinsic_instr *instr)
return PAN_SYSVAL_VIEWPORT_SCALE;
case nir_intrinsic_load_viewport_offset:
return PAN_SYSVAL_VIEWPORT_OFFSET;
+ case nir_intrinsic_load_ssbo:
+ return midgard_sysval_for_ssbo(instr);
default:
return -1;
}
diff --git a/src/panfrost/midgard/midgard_compile.h b/src/panfrost/midgard/midgard_compile.h
index 389dd1e305f..a15d6c0cded 100644
--- a/src/panfrost/midgard/midgard_compile.h
+++ b/src/panfrost/midgard/midgard_compile.h
@@ -66,6 +66,7 @@ enum {
PAN_SYSVAL_VIEWPORT_SCALE = 1,
PAN_SYSVAL_VIEWPORT_OFFSET = 2,
PAN_SYSVAL_TEXTURE_SIZE = 3,
+ PAN_SYSVAL_SSBO = 4,
} pan_sysval;
#define PAN_TXS_SYSVAL_ID(texidx, dim, is_array) \