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 = {