mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-20 10:56:58 +02:00
renderer: simplify texture cache queries
Remove the duplicate texture page-overlap check and avoid shared-owner refcount traffic for already validated query candidates.
This commit is contained in:
+9
-9
@@ -1758,17 +1758,17 @@ bool TextureCache::InvalidateMemoryFromGPU(uint64_t address, uint64_t size,
|
|||||||
CacheLock lock(*this, m_lock);
|
CacheLock lock(*this, m_lock);
|
||||||
bool found = false;
|
bool found = false;
|
||||||
for (const auto id: FindImagesInRegion(address, size, true)) {
|
for (const auto id: FindImagesInRegion(address, size, true)) {
|
||||||
auto owner = ResolveOwner(id);
|
auto& image = ResolveImage(id);
|
||||||
if (owner == nullptr || owner->depth_id || !owner->Overlaps(address, size)) {
|
if (image.depth_id || !image.Overlaps(address, size)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (owner->IsGpuModified()) {
|
if (image.IsGpuModified()) {
|
||||||
if (!formatted_buffer_write) {
|
if (!formatted_buffer_write) {
|
||||||
EXIT("TextureCache: buffer write aliases GPU-modified image\n");
|
EXIT("TextureCache: buffer write aliases GPU-modified image\n");
|
||||||
}
|
}
|
||||||
ClearGpuModified(id);
|
image.ClearGpuModified();
|
||||||
}
|
}
|
||||||
owner->MarkBufferModified();
|
image.MarkBufferModified();
|
||||||
found = true;
|
found = true;
|
||||||
}
|
}
|
||||||
return found;
|
return found;
|
||||||
@@ -1781,13 +1781,13 @@ TextureCache::RegionInfo TextureCache::QueryRegion(uint64_t address, uint64_t si
|
|||||||
}
|
}
|
||||||
CacheLock lock(*this, m_lock);
|
CacheLock lock(*this, m_lock);
|
||||||
for (const auto id: FindImagesInRegion(address, size, true)) {
|
for (const auto id: FindImagesInRegion(address, size, true)) {
|
||||||
auto owner = ResolveOwner(id);
|
const auto& image = ResolveImage(id);
|
||||||
if (owner == nullptr || owner->depth_id || !owner->Overlaps(address, size, true)) {
|
if (image.depth_id) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
result.image_pages = true;
|
result.image_pages = true;
|
||||||
result.image_bytes |= owner->Overlaps(address, size);
|
result.image_bytes |= image.Overlaps(address, size);
|
||||||
result.gpu_image_bytes |= owner->GpuOverlaps(address, size);
|
result.gpu_image_bytes |= image.GpuOverlaps(address, size);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user