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>
This commit is contained in:
Alyssa Rosenzweig 2020-08-05 18:51:27 -04:00 committed by Tomeu Vizoso
parent d182a6057f
commit e9ca320461
5 changed files with 28 additions and 50 deletions

View File

@ -387,28 +387,28 @@ panfrost_translate_stencil_op(enum pipe_stencil_op in)
{ {
switch (in) { switch (in) {
case PIPE_STENCIL_OP_KEEP: case PIPE_STENCIL_OP_KEEP:
return MALI_STENCIL_KEEP; return MALI_STENCIL_OP_KEEP;
case PIPE_STENCIL_OP_ZERO: case PIPE_STENCIL_OP_ZERO:
return MALI_STENCIL_ZERO; return MALI_STENCIL_OP_ZERO;
case PIPE_STENCIL_OP_REPLACE: case PIPE_STENCIL_OP_REPLACE:
return MALI_STENCIL_REPLACE; return MALI_STENCIL_OP_REPLACE;
case PIPE_STENCIL_OP_INCR: case PIPE_STENCIL_OP_INCR:
return MALI_STENCIL_INCR; return MALI_STENCIL_OP_INCR_SAT;
case PIPE_STENCIL_OP_DECR: case PIPE_STENCIL_OP_DECR:
return MALI_STENCIL_DECR; return MALI_STENCIL_OP_DECR_SAT;
case PIPE_STENCIL_OP_INCR_WRAP: case PIPE_STENCIL_OP_INCR_WRAP:
return MALI_STENCIL_INCR_WRAP; return MALI_STENCIL_OP_INCR_WRAP;
case PIPE_STENCIL_OP_DECR_WRAP: case PIPE_STENCIL_OP_DECR_WRAP:
return MALI_STENCIL_DECR_WRAP; return MALI_STENCIL_OP_DECR_WRAP;
case PIPE_STENCIL_OP_INVERT: case PIPE_STENCIL_OP_INVERT:
return MALI_STENCIL_INVERT; return MALI_STENCIL_OP_INVERT;
default: default:
unreachable("Invalid stencil op"); unreachable("Invalid stencil op");
@ -585,9 +585,9 @@ panfrost_frag_meta_zsa_update(struct panfrost_context *ctx,
struct pipe_stencil_state default_stencil = { struct pipe_stencil_state default_stencil = {
.enabled = 0, .enabled = 0,
.func = PIPE_FUNC_ALWAYS, .func = PIPE_FUNC_ALWAYS,
.fail_op = MALI_STENCIL_KEEP, .fail_op = PIPE_STENCIL_OP_KEEP,
.zfail_op = MALI_STENCIL_KEEP, .zfail_op = PIPE_STENCIL_OP_KEEP,
.zpass_op = MALI_STENCIL_KEEP, .zpass_op = PIPE_STENCIL_OP_KEEP,
.writemask = 0xFF, .writemask = 0xFF,
.valuemask = 0xFF .valuemask = 0xFF
}; };

View File

@ -88,17 +88,6 @@ typedef uint64_t mali_ptr;
/* Stencil test state is all encoded in a single u32, just with a lot of /* Stencil test state is all encoded in a single u32, just with a lot of
* enums... */ * 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 { struct mali_stencil_test {
unsigned ref : 8; unsigned ref : 8;
unsigned mask : 8; unsigned mask : 8;

View File

@ -480,28 +480,6 @@ pandecode_msaa_mode(enum mali_msaa_mode mode)
} }
#undef DEFINE_CASE #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) static char *pandecode_attr_mode_short(enum mali_attr_mode mode)
{ {
switch(mode) { switch(mode) {
@ -1642,9 +1620,9 @@ pandecode_stencil(const char *name, const struct mali_stencil_test *stencil)
return; return;
const char *func = mali_func_as_str(stencil->func); const char *func = mali_func_as_str(stencil->func);
const char *sfail = pandecode_stencil_op(stencil->sfail); const char *sfail = mali_stencil_op_as_str(stencil->sfail);
const char *dpfail = pandecode_stencil_op(stencil->dpfail); const char *dpfail = mali_stencil_op_as_str(stencil->dpfail);
const char *dppass = pandecode_stencil_op(stencil->dppass); const char *dppass = mali_stencil_op_as_str(stencil->dppass);
if (stencil->zero) if (stencil->zero)
pandecode_msg("XXX: stencil zero tripped: %X\n", stencil->zero); pandecode_msg("XXX: stencil zero tripped: %X\n", stencil->zero);

View File

@ -38,4 +38,15 @@
<value name="Always" value="7"/> <value name="Always" value="7"/>
</enum> </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> </panxml>

View File

@ -214,9 +214,9 @@ panfrost_load_midg(
struct mali_stencil_test stencil = { struct mali_stencil_test stencil = {
.mask = 0xFF, .mask = 0xFF,
.func = MALI_FUNC_ALWAYS, .func = MALI_FUNC_ALWAYS,
.sfail = MALI_STENCIL_REPLACE, .sfail = MALI_STENCIL_OP_REPLACE,
.dpfail = MALI_STENCIL_REPLACE, .dpfail = MALI_STENCIL_OP_REPLACE,
.dppass = MALI_STENCIL_REPLACE, .dppass = MALI_STENCIL_OP_REPLACE,
}; };
union midgard_blend replace = { union midgard_blend replace = {