mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-23 12:26:56 +02:00
graphics: accept independent stencil mask writes
This commit is contained in:
@@ -1248,23 +1248,16 @@ KYTY_HW_CTX_PARSER(HwCtxSetStencilInfo) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
KYTY_HW_CTX_PARSER(HwCtxSetStencilMask) {
|
KYTY_HW_CTX_PARSER(HwCtxSetStencilMask) {
|
||||||
EXIT_NOT_IMPLEMENTED(cmd_id != 0xc0026900);
|
auto num_values = KYTY_PM4_LEN(cmd_id) - 2u;
|
||||||
EXIT_NOT_IMPLEMENTED(cmd_offset != Pm4::DB_STENCILREFMASK);
|
EXIT_NOT_IMPLEMENTED(num_values == 0);
|
||||||
|
EXIT_NOT_IMPLEMENTED(cmd_offset < Pm4::DB_STENCILREFMASK);
|
||||||
|
EXIT_NOT_IMPLEMENTED(cmd_offset + num_values - 1u > Pm4::DB_STENCILREFMASK_BF);
|
||||||
|
|
||||||
HW::StencilMask r;
|
for (uint32_t i = 0; i < num_values; i++) {
|
||||||
|
g_hw_ctx_indirect_func[(cmd_offset + i) & (Pm4::CX_NUM - 1)](cp, cmd_offset + i, buffer[i]);
|
||||||
|
}
|
||||||
|
|
||||||
r.stencil_testval = KYTY_PM4_GET(buffer[0], DB_STENCILREFMASK, STENCILTESTVAL);
|
return num_values;
|
||||||
r.stencil_mask = KYTY_PM4_GET(buffer[0], DB_STENCILREFMASK, STENCILMASK);
|
|
||||||
r.stencil_writemask = KYTY_PM4_GET(buffer[0], DB_STENCILREFMASK, STENCILWRITEMASK);
|
|
||||||
r.stencil_opval = KYTY_PM4_GET(buffer[0], DB_STENCILREFMASK, STENCILOPVAL);
|
|
||||||
r.stencil_testval_bf = KYTY_PM4_GET(buffer[1], DB_STENCILREFMASK_BF, STENCILTESTVAL_BF);
|
|
||||||
r.stencil_mask_bf = KYTY_PM4_GET(buffer[1], DB_STENCILREFMASK_BF, STENCILMASK_BF);
|
|
||||||
r.stencil_writemask_bf = KYTY_PM4_GET(buffer[1], DB_STENCILREFMASK_BF, STENCILWRITEMASK_BF);
|
|
||||||
r.stencil_opval_bf = KYTY_PM4_GET(buffer[1], DB_STENCILREFMASK_BF, STENCILOPVAL_BF);
|
|
||||||
|
|
||||||
cp.GetCtx().SetStencilMask(r);
|
|
||||||
|
|
||||||
return 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
KYTY_HW_CTX_PARSER(HwCtxSetViewportScaleOffset) {
|
KYTY_HW_CTX_PARSER(HwCtxSetViewportScaleOffset) {
|
||||||
|
|||||||
Reference in New Issue
Block a user