Просмотр исходного кода

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
bunnei 8 лет назад
Родитель
Сommit
ddb767f1b6

+ 9 - 9
src/video_core/engines/maxwell_3d.h

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

+ 4 - 0
src/video_core/renderer_opengl/gl_rasterizer.cpp

@@ -735,6 +735,10 @@ void RasterizerOpenGL::SyncDepthTestState() {
 
     state.depth.test_enabled = regs.depth_test_enable != 0;
     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);
 }