panfrost: XMLify stencil op
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6195>
diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c
index f155f61..c1a5ebb 100644
--- a/src/gallium/drivers/panfrost/pan_cmdstream.c
+++ b/src/gallium/drivers/panfrost/pan_cmdstream.c
@@ -387,28 +387,28 @@
{
switch (in) {
case PIPE_STENCIL_OP_KEEP:
- return MALI_STENCIL_KEEP;
+ return MALI_STENCIL_OP_KEEP;
case PIPE_STENCIL_OP_ZERO:
- return MALI_STENCIL_ZERO;
+ return MALI_STENCIL_OP_ZERO;
case PIPE_STENCIL_OP_REPLACE:
- return MALI_STENCIL_REPLACE;
+ return MALI_STENCIL_OP_REPLACE;
case PIPE_STENCIL_OP_INCR:
- return MALI_STENCIL_INCR;
+ return MALI_STENCIL_OP_INCR_SAT;
case PIPE_STENCIL_OP_DECR:
- return MALI_STENCIL_DECR;
+ return MALI_STENCIL_OP_DECR_SAT;
case PIPE_STENCIL_OP_INCR_WRAP:
- return MALI_STENCIL_INCR_WRAP;
+ return MALI_STENCIL_OP_INCR_WRAP;
case PIPE_STENCIL_OP_DECR_WRAP:
- return MALI_STENCIL_DECR_WRAP;
+ return MALI_STENCIL_OP_DECR_WRAP;
case PIPE_STENCIL_OP_INVERT:
- return MALI_STENCIL_INVERT;
+ return MALI_STENCIL_OP_INVERT;
default:
unreachable("Invalid stencil op");
@@ -585,9 +585,9 @@
struct pipe_stencil_state default_stencil = {
.enabled = 0,
.func = PIPE_FUNC_ALWAYS,
- .fail_op = MALI_STENCIL_KEEP,
- .zfail_op = MALI_STENCIL_KEEP,
- .zpass_op = MALI_STENCIL_KEEP,
+ .fail_op = PIPE_STENCIL_OP_KEEP,
+ .zfail_op = PIPE_STENCIL_OP_KEEP,
+ .zpass_op = PIPE_STENCIL_OP_KEEP,
.writemask = 0xFF,
.valuemask = 0xFF
};
diff --git a/src/panfrost/include/panfrost-job.h b/src/panfrost/include/panfrost-job.h
index e8f7aaaa..99d3d85 100644
--- a/src/panfrost/include/panfrost-job.h
+++ b/src/panfrost/include/panfrost-job.h
@@ -88,17 +88,6 @@
/* Stencil test state is all encoded in a single u32, just with a lot of
* enums... */
-enum mali_stencil_op {
- MALI_STENCIL_KEEP = 0,
- MALI_STENCIL_REPLACE = 1,
- MALI_STENCIL_ZERO = 2,
- MALI_STENCIL_INVERT = 3,
- MALI_STENCIL_INCR_WRAP = 4,
- MALI_STENCIL_DECR_WRAP = 5,
- MALI_STENCIL_INCR = 6,
- MALI_STENCIL_DECR = 7
-};
-
struct mali_stencil_test {
unsigned ref : 8;
unsigned mask : 8;
diff --git a/src/panfrost/lib/decode.c b/src/panfrost/lib/decode.c
index 69f995a..66bd682 100644
--- a/src/panfrost/lib/decode.c
+++ b/src/panfrost/lib/decode.c
@@ -480,28 +480,6 @@
}
#undef DEFINE_CASE
-#define DEFINE_CASE(name) case MALI_STENCIL_ ## name: return "MALI_STENCIL_" #name
-static char *
-pandecode_stencil_op(enum mali_stencil_op op)
-{
- switch (op) {
- DEFINE_CASE(KEEP);
- DEFINE_CASE(REPLACE);
- DEFINE_CASE(ZERO);
- DEFINE_CASE(INVERT);
- DEFINE_CASE(INCR_WRAP);
- DEFINE_CASE(DECR_WRAP);
- DEFINE_CASE(INCR);
- DEFINE_CASE(DECR);
-
- default:
- pandecode_msg("XXX: invalid stencil op %X\n", op);
- return "";
- }
-}
-
-#undef DEFINE_CASE
-
static char *pandecode_attr_mode_short(enum mali_attr_mode mode)
{
switch(mode) {
@@ -1642,9 +1620,9 @@
return;
const char *func = mali_func_as_str(stencil->func);
- const char *sfail = pandecode_stencil_op(stencil->sfail);
- const char *dpfail = pandecode_stencil_op(stencil->dpfail);
- const char *dppass = pandecode_stencil_op(stencil->dppass);
+ const char *sfail = mali_stencil_op_as_str(stencil->sfail);
+ const char *dpfail = mali_stencil_op_as_str(stencil->dpfail);
+ const char *dppass = mali_stencil_op_as_str(stencil->dppass);
if (stencil->zero)
pandecode_msg("XXX: stencil zero tripped: %X\n", stencil->zero);
diff --git a/src/panfrost/lib/midgard.xml b/src/panfrost/lib/midgard.xml
index b755814..3a9351a 100644
--- a/src/panfrost/lib/midgard.xml
+++ b/src/panfrost/lib/midgard.xml
@@ -38,4 +38,15 @@
<value name="Always" value="7"/>
</enum>
+ <enum name="Stencil Op">
+ <value name="Keep" value="0"/>
+ <value name="Replace" value="1"/>
+ <value name="Zero" value="2"/>
+ <value name="Invert" value="3"/>
+ <value name="Incr Wrap" value="4"/>
+ <value name="Decr Wrap" value="5"/>
+ <value name="Incr Sat" value="6"/>
+ <value name="Decr Sat" value="7"/>
+ </enum>
+
</panxml>
diff --git a/src/panfrost/lib/pan_blit.c b/src/panfrost/lib/pan_blit.c
index a9289de..7d5b10d 100644
--- a/src/panfrost/lib/pan_blit.c
+++ b/src/panfrost/lib/pan_blit.c
@@ -214,9 +214,9 @@
struct mali_stencil_test stencil = {
.mask = 0xFF,
.func = MALI_FUNC_ALWAYS,
- .sfail = MALI_STENCIL_REPLACE,
- .dpfail = MALI_STENCIL_REPLACE,
- .dppass = MALI_STENCIL_REPLACE,
+ .sfail = MALI_STENCIL_OP_REPLACE,
+ .dpfail = MALI_STENCIL_OP_REPLACE,
+ .dppass = MALI_STENCIL_OP_REPLACE,
};
union midgard_blend replace = {