Merge pull request #611 from Subv/enabled_depth_test

GPU: Don't try to parse the depth test function if the depth test is disabled and use only the least significant 3 bits in the depth test func
master
bunnei 2018-07-02 23:47:11 +07:00 committed by GitHub
commit ddb767f1b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 9 deletions

@ -281,14 +281,14 @@ public:
}; };
enum class ComparisonOp : u32 { enum class ComparisonOp : u32 {
Never = 0x200, Never = 0,
Less = 0x201, Less = 1,
Equal = 0x202, Equal = 2,
LessEqual = 0x203, LessEqual = 3,
Greater = 0x204, Greater = 4,
NotEqual = 0x205, NotEqual = 5,
GreaterEqual = 0x206, GreaterEqual = 6,
Always = 0x207, Always = 7,
}; };
struct Cull { struct Cull {
@ -475,7 +475,7 @@ public:
INSERT_PADDING_WORDS(0x8); INSERT_PADDING_WORDS(0x8);
ComparisonOp depth_test_func; BitField<0, 3, ComparisonOp> depth_test_func;
INSERT_PADDING_WORDS(0xB); INSERT_PADDING_WORDS(0xB);

@ -735,6 +735,10 @@ void RasterizerOpenGL::SyncDepthTestState() {
state.depth.test_enabled = regs.depth_test_enable != 0; state.depth.test_enabled = regs.depth_test_enable != 0;
state.depth.write_mask = regs.depth_write_enabled ? GL_TRUE : GL_FALSE; state.depth.write_mask = regs.depth_write_enabled ? GL_TRUE : GL_FALSE;
if (!state.depth.test_enabled)
return;
state.depth.test_func = MaxwellToGL::ComparisonOp(regs.depth_test_func); state.depth.test_func = MaxwellToGL::ComparisonOp(regs.depth_test_func);
} }