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:
parent
d182a6057f
commit
e9ca320461
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
Loading…
Reference in New Issue