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.
This commit is contained in:
parent
5c0a31e29f
commit
ea89cf8639
|
@ -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:
|
case Regs::QuerySelect::Payload:
|
||||||
return 0;
|
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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Reference in New Issue