SWRasterizer: Implemented stencil ops 6 and 7.

IncrementWrap and DecrementWrap, verified with hwtests.
master
Subv 2015-08-21 11:01:42 +07:00
parent e43eb130d4
commit 7c1f84a92b
2 changed files with 14 additions and 6 deletions

@ -441,12 +441,14 @@ struct Regs {
}; };
enum class StencilAction : u32 { enum class StencilAction : u32 {
Keep = 0, Keep = 0,
Zero = 1, Zero = 1,
Replace = 2, Replace = 2,
Increment = 3, Increment = 3,
Decrement = 4, Decrement = 4,
Invert = 5 Invert = 5,
IncrementWrap = 6,
DecrementWrap = 7
}; };
struct { struct {

@ -237,6 +237,12 @@ static u8 PerformStencilAction(Regs::StencilAction action, u8 old_stencil, u8 re
case Regs::StencilAction::Invert: case Regs::StencilAction::Invert:
return ~old_stencil; return ~old_stencil;
case Regs::StencilAction::IncrementWrap:
return old_stencil + 1;
case Regs::StencilAction::DecrementWrap:
return old_stencil - 1;
default: default:
LOG_CRITICAL(HW_GPU, "Unknown stencil action %x", (int)action); LOG_CRITICAL(HW_GPU, "Unknown stencil action %x", (int)action);
UNIMPLEMENTED(); UNIMPLEMENTED();