From fcebdfb255d462f4573372ac70b6b7c77ac22f7b Mon Sep 17 00:00:00 2001 From: "Herman S." <429230+has207@users.noreply.github.com> Date: Sun, 28 Dec 2025 00:54:06 +0900 Subject: [PATCH] [GPU] Fix scaled resolve tracking for blocks outside write range --- src/xenia/gpu/texture_cache.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/xenia/gpu/texture_cache.cc b/src/xenia/gpu/texture_cache.cc index c36484df1..15fa967ca 100644 --- a/src/xenia/gpu/texture_cache.cc +++ b/src/xenia/gpu/texture_cache.cc @@ -1052,6 +1052,13 @@ void TextureCache::ScaledResolveGlobalWatchCallback( uint32_t resolve_l2_block_last = resolve_block_last >> 6; for (uint32_t i = resolve_l2_block_first; i <= resolve_l2_block_last; ++i) { uint64_t resolve_l2_block = scaled_resolve_pages_l2_[i]; + // Pre-mask to only process blocks within the write range. + if (i == resolve_l2_block_first) { + resolve_l2_block &= ~((UINT64_C(1) << (resolve_block_first & 63)) - 1); + } + if (i == resolve_l2_block_last && (resolve_block_last & 63) != 63) { + resolve_l2_block &= (UINT64_C(1) << ((resolve_block_last & 63) + 1)) - 1; + } uint32_t resolve_block_relative_index; while ( xe::bit_scan_forward(resolve_l2_block, &resolve_block_relative_index)) {