summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexManagerBase.cpp
diff options
context:
space:
mode:
authoriwubcode <iwubcode@users.noreply.github.com>2025-04-01 18:32:42 -0500
committeriwubcode <iwubcode@users.noreply.github.com>2025-04-01 18:32:42 -0500
commitec36fce7c6b1b3920a054b3da971b84459de6179 (patch)
tree75e6fe39953733c88806fd04bb6e717b7da6d4ca /Source/Core/VideoCommon/VertexManagerBase.cpp
parent1b85da9b85e72a555a08138aafcd2d75210ae078 (diff)
VideoCommon: fix a mali bug by moving the perf queries back to being close to the draw call, having them apart seems to cause errors on some devices
Diffstat (limited to 'Source/Core/VideoCommon/VertexManagerBase.cpp')
-rw-r--r--Source/Core/VideoCommon/VertexManagerBase.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/Source/Core/VideoCommon/VertexManagerBase.cpp b/Source/Core/VideoCommon/VertexManagerBase.cpp
index 7987887b86..64246df904 100644
--- a/Source/Core/VideoCommon/VertexManagerBase.cpp
+++ b/Source/Core/VideoCommon/VertexManagerBase.cpp
@@ -644,9 +644,6 @@ void VertexManagerBase::Flush()
// Same with GPU texture decoding, which uses compute shaders.
g_texture_cache->BindTextures(used_textures, samplers);
- if (PerfQueryBase::ShouldEmulate())
- g_perf_query->EnableQuery(bpmem.zcontrol.early_ztest ? PQG_ZCOMP_ZCOMPLOC : PQG_ZCOMP);
-
if (!skip)
{
UpdatePipelineConfig();
@@ -668,15 +665,9 @@ void VertexManagerBase::Flush()
}
}
- // Track the total emulated state draws
- INCSTAT(g_stats.this_frame.num_draw_calls);
-
// Even if we skip the draw, emulated state should still be impacted
OnDraw();
- if (PerfQueryBase::ShouldEmulate())
- g_perf_query->DisableQuery(bpmem.zcontrol.early_ztest ? PQG_ZCOMP_ZCOMPLOC : PQG_ZCOMP);
-
// The EFB cache is now potentially stale.
g_framebuffer_manager->FlagPeekCacheAsOutOfDate();
}
@@ -1098,7 +1089,16 @@ void VertexManagerBase::RenderDrawCall(
base_vertex <<= 2;
}
+ if (PerfQueryBase::ShouldEmulate())
+ g_perf_query->EnableQuery(bpmem.zcontrol.early_ztest ? PQG_ZCOMP_ZCOMPLOC : PQG_ZCOMP);
+
DrawCurrentBatch(base_index, m_index_generator.GetIndexLen(), base_vertex);
+
+ // Track the total emulated state draws
+ INCSTAT(g_stats.this_frame.num_draw_calls);
+
+ if (PerfQueryBase::ShouldEmulate())
+ g_perf_query->DisableQuery(bpmem.zcontrol.early_ztest ? PQG_ZCOMP_ZCOMPLOC : PQG_ZCOMP);
}
const AbstractPipeline* VertexManagerBase::GetCustomPipeline(