graphics: count DCC/CMASK metadata readbacks in the performance overlay

This commit is contained in:
nmzik
2026-10-22 09:17:40 +02:00
parent c5016d9455
commit 5f5d6effa4
4 changed files with 17 additions and 0 deletions
+9
View File
@@ -1,6 +1,7 @@
#define SPV_ENABLE_UTILITY_CODE
#include "common/assert.h"
#include "common/debugCounters.h"
#include "common/emulatorConfig.h"
#include "common/file.h"
#include "common/hostException.h"
@@ -12266,7 +12267,15 @@ public:
Require(name, "already GPU-owned metadata stays ordered",
resources.GetBufferCache().HasGpuDirtyBytes(dcc_address, metadata_size),
"a fill discarded pending native writes to its metadata pages");
Common::DebugCounters::SetEnabled(true);
const auto readbacks =
Common::DebugCounters::Get(Common::DebugCounters::Counter::ColorMetadataReadbacks);
bind();
Common::DebugCounters::SetEnabled(false);
Require(name, "metadata readback counter",
Common::DebugCounters::Get(
Common::DebugCounters::Counter::ColorMetadataReadbacks) == readbacks + 1,
"binding GPU-written metadata did not count exactly one readback");
Require(name, "same-value raw native re-clear",
read_texel() == expected,
"a repeated metadata fill did not clear an already drawn target");