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.
nce_cpp
Billy Laws 4 years ago
parent
commit
a1216cfeee
  1. 4
      src/video_core/engines/maxwell_3d.cpp
  2. 2
      src/video_core/engines/maxwell_3d.h

4
src/video_core/engines/maxwell_3d.cpp

@ -595,8 +595,8 @@ void Maxwell3D::DrawArrays() {
std::optional<u64> Maxwell3D::GetQueryResult() { std::optional<u64> Maxwell3D::GetQueryResult() {
switch (regs.query.query_get.select) { 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: case Regs::QuerySelect::SamplesPassed:
// Deferred. // Deferred.
rasterizer->Query(regs.query.QueryAddress(), QueryType::SamplesPassed, rasterizer->Query(regs.query.QueryAddress(), QueryType::SamplesPassed,

2
src/video_core/engines/maxwell_3d.h

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

Loading…
Cancel
Save