GPU: Track video frames in GPUCommon, so they expire for the blit cost too

The blit cost remembered only the last buffer a decoder wrote into, forever.
Move the texture cache's video list (with its ageing out a few flips after
the last write) into GPUCommon, so the texture cache, the blit cost and
SoftGPU all share one. That also counts both of a double-buffered player's
frames, which exposed that a clear drawn with texturing still enabled was
being charged as a blit - skip clears and draws without texture coordinates.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-09-25 17:00:11 -06:00
1 parent 8f70003cce
commit 242ef0a984
7 files changed
+80 -82

No files matched your search

+2 -2
View File
@@ -243,9 +243,9 @@ void DrawTexturesWindow(ImConfig &cfg, TextureCacheCommon *textureCache) {
replacementStateCounts[(int)ReplacementState::ACTIVE],
replacementStateCounts[(int)ReplacementState::CANCEL_INIT]);
}
if (textureCache->Videos().size()) {
if (gpu->Videos().size()) {
if (ImGui::CollapsingHeader("Tracked video playback memory")) {
for (auto &video : textureCache->Videos()) {
for (auto &video : gpu->Videos()) {
ImGui::Text("%08x: %d flips, size = %d", video.addr, video.flips, video.size);
}
}