diff --git a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp index 7f4327174e..74b5769dfe 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp @@ -601,18 +601,14 @@ static D3D12_STENCIL_OP getStencilOp(u32 op) { switch (op) { - case GL_KEEP: - return D3D12_STENCIL_OP_KEEP; - case GL_ZERO: - return D3D12_STENCIL_OP_ZERO; - case GL_REPLACE: - return D3D12_STENCIL_OP_REPLACE; - case GL_INCR: - return D3D12_STENCIL_OP_INCR; - case GL_DECR: - return D3D12_STENCIL_OP_DECR; - case GL_INVERT: - return D3D12_STENCIL_OP_INVERT; + case CELL_GCM_KEEP: return D3D12_STENCIL_OP_KEEP; + case CELL_GCM_ZERO: return D3D12_STENCIL_OP_ZERO; + case CELL_GCM_REPLACE: return D3D12_STENCIL_OP_REPLACE; + case CELL_GCM_INCR: return D3D12_STENCIL_OP_INCR; + case CELL_GCM_DECR: return D3D12_STENCIL_OP_DECR; + case CELL_GCM_INCR_WRAP: + case CELL_GCM_DECR_WRAP: + LOG_WARNING(RSX, "Unsupported Stencil Op %d", op); } } @@ -620,22 +616,14 @@ static D3D12_COMPARISON_FUNC getStencilFunc(u32 op) { switch (op) { - case GL_NEVER: - return D3D12_COMPARISON_FUNC_NEVER; - case GL_LESS: - return D3D12_COMPARISON_FUNC_LESS; - case GL_LEQUAL: - return D3D12_COMPARISON_FUNC_LESS_EQUAL; - case GL_GREATER: - return D3D12_COMPARISON_FUNC_GREATER; - case GL_GEQUAL: - return D3D12_COMPARISON_FUNC_GREATER_EQUAL; - case GL_EQUAL: - return D3D12_COMPARISON_FUNC_EQUAL; - case GL_NOTEQUAL: - return D3D12_COMPARISON_FUNC_NOT_EQUAL; - case GL_ALWAYS: - return D3D12_COMPARISON_FUNC_ALWAYS; + case CELL_GCM_NEVER: return D3D12_COMPARISON_FUNC_NEVER; + case CELL_GCM_LESS: return D3D12_COMPARISON_FUNC_LESS; + case CELL_GCM_EQUAL: return D3D12_COMPARISON_FUNC_EQUAL; + case CELL_GCM_LEQUAL: return D3D12_COMPARISON_FUNC_LESS_EQUAL; + case CELL_GCM_GREATER: return D3D12_COMPARISON_FUNC_GREATER; + case CELL_GCM_NOTEQUAL: return D3D12_COMPARISON_FUNC_NOT_EQUAL; + case CELL_GCM_GEQUAL: return D3D12_COMPARISON_FUNC_GREATER_EQUAL; + case CELL_GCM_ALWAYS: return D3D12_COMPARISON_FUNC_ALWAYS; } } @@ -643,22 +631,14 @@ static D3D12_COMPARISON_FUNC getDepthFunc(u32 op) { switch (op) { - case GL_NEVER: - return D3D12_COMPARISON_FUNC_NEVER; - case GL_LESS: - return D3D12_COMPARISON_FUNC_LESS; - case GL_LEQUAL: - return D3D12_COMPARISON_FUNC_LESS_EQUAL; - case GL_GREATER: - return D3D12_COMPARISON_FUNC_GREATER; - case GL_GEQUAL: - return D3D12_COMPARISON_FUNC_GREATER_EQUAL; - case GL_EQUAL: - return D3D12_COMPARISON_FUNC_EQUAL; - case GL_NOTEQUAL: - return D3D12_COMPARISON_FUNC_NOT_EQUAL; - case GL_ALWAYS: - return D3D12_COMPARISON_FUNC_ALWAYS; + case CELL_GCM_NEVER: return D3D12_COMPARISON_FUNC_NEVER; + case CELL_GCM_LESS: return D3D12_COMPARISON_FUNC_LESS; + case CELL_GCM_EQUAL: return D3D12_COMPARISON_FUNC_EQUAL; + case CELL_GCM_LEQUAL: return D3D12_COMPARISON_FUNC_LESS_EQUAL; + case CELL_GCM_GREATER: return D3D12_COMPARISON_FUNC_GREATER; + case CELL_GCM_NOTEQUAL: return D3D12_COMPARISON_FUNC_NOT_EQUAL; + case CELL_GCM_GEQUAL: return D3D12_COMPARISON_FUNC_GREATER_EQUAL; + case CELL_GCM_ALWAYS: return D3D12_COMPARISON_FUNC_ALWAYS; } } @@ -826,10 +806,10 @@ bool D3D12GSRender::LoadProgram() prop.Rasterization = CD3D12_RASTERIZER_DESC; switch (m_set_cull_face) { - case GL_FRONT: + case CELL_GCM_FRONT: prop.Rasterization.CullMode = D3D12_CULL_MODE_FRONT; break; - case GL_BACK: + case CELL_GCM_BACK: prop.Rasterization.CullMode = D3D12_CULL_MODE_BACK; break; default: @@ -839,10 +819,10 @@ bool D3D12GSRender::LoadProgram() switch (m_front_face) { - case GL_CW: + case CELL_GCM_CW: prop.Rasterization.FrontCounterClockwise = FALSE; break; - case GL_CCW: + case CELL_GCM_CCW: prop.Rasterization.FrontCounterClockwise = TRUE; break; } diff --git a/rpcs3/Emu/RSX/GCM.h b/rpcs3/Emu/RSX/GCM.h index 8772f27374..0c9e1cff24 100644 --- a/rpcs3/Emu/RSX/GCM.h +++ b/rpcs3/Emu/RSX/GCM.h @@ -179,6 +179,33 @@ enum CELL_GCM_ONE_MINUS_CONSTANT_COLOR = 0x8002, CELL_GCM_CONSTANT_ALPHA = 0x8003, CELL_GCM_ONE_MINUS_CONSTANT_ALPHA = 0x8004, + + // Stencil/Depth Compare Function + CELL_GCM_NEVER = 0x0200, + CELL_GCM_LESS = 0x0201, + CELL_GCM_EQUAL = 0x0202, + CELL_GCM_LEQUAL = 0x0203, + CELL_GCM_GREATER = 0x0204, + CELL_GCM_NOTEQUAL = 0x0205, + CELL_GCM_GEQUAL = 0x0206, + CELL_GCM_ALWAYS = 0x0207, + + // Stencil Op + CELL_GCM_KEEP = 0x1E00, + CELL_GCM_REPLACE = 0x1E01, + CELL_GCM_INCR = 0x1E02, + CELL_GCM_DECR = 0x1E03, + CELL_GCM_INCR_WRAP = 0x8507, + CELL_GCM_DECR_WRAP = 0x8508, + + // Front Face + CELL_GCM_FRONT = 0x0404, + CELL_GCM_BACK = 0x0405, + CELL_GCM_FRONT_AND_BACK = 0x0408, + + // Cull Face + CELL_GCM_CW = 0x0900, + CELL_GCM_CCW = 0x0901, }; // GCM Surface