Browse Source

Maxwell3D: Fix 3D semaphore counter type 0 handling

Counter type 0 actually releases the semaphore payload rather than a constant zero as was previously thought. This is required by Skyrim.
Billy Laws 4 years ago
parent
commit
ea89cf8639
2 changed files with 3 additions and 3 deletions
  1. 2 2
      src/video_core/engines/maxwell_3d.cpp
  2. 1 1
      src/video_core/engines/maxwell_3d.h

+ 2 - 2
src/video_core/engines/maxwell_3d.cpp

@@ -595,8 +595,8 @@ void Maxwell3D::DrawArrays() {
 
 std::optional<u64> Maxwell3D::GetQueryResult() {
     switch (regs.query.query_get.select) {
-    case Regs::QuerySelect::Zero:
-        return 0;
+    case Regs::QuerySelect::Payload:
+        return regs.query.query_sequence;
     case Regs::QuerySelect::SamplesPassed:
         // Deferred.
         rasterizer->Query(regs.query.QueryAddress(), QueryType::SamplesPassed,

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

@@ -93,7 +93,7 @@ public:
         };
 
         enum class QuerySelect : u32 {
-            Zero = 0,
+            Payload = 0,
             TimeElapsed = 2,
             TransformFeedbackPrimitivesGenerated = 11,
             PrimitivesGenerated = 18,