diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index c638d8b715..986630cd58 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -1641,7 +1641,7 @@ void BufferCache
::ChangeRegister(BufferId buffer_id) {
total_used_memory += Common::AlignUp(size, 1024);
buffer.setLRUID(lru_cache.Insert(buffer_id, frame_tick));
} else {
- total_used_memory -= (std::min)(total_used_memory, Common::AlignUp(size, 1024));
+ total_used_memory -= std::min ::ReclaimMemory(u64 target_bytes, bool allow_download) {
image.IsSafeDownload() && False(image.flags & ImageFlagBits::BadOverlap);
bool queued_download = false;
if (must_download) {
- if (!allow_download || !HAS_TIMELINE_SYNC_POINTS) {
+ if constexpr (HAS_TIMELINE_SYNC_POINTS) {
+ if (!allow_download) {
+ return false;
+ }
+ QueueEvictionDownload(image);
+ queued_download = true;
+ } else {
return false;
}
- QueueEvictionDownload(image);
- queued_download = true;
}
const u64 image_bytes = ImageSizeBytes(image);
if (True(image.flags & ImageFlagBits::Tracked)) {
@@ -2408,7 +2412,7 @@ void TextureCache ::UntrackImage(ImageBase& image, ImageId image_id) {
template ::DeleteImage(ImageId image_id, bool immediate_delete) {
ImageBase& image = slot_images[image_id];
- total_used_memory -= (std::min)(total_used_memory, ImageSizeBytes(image));
+ total_used_memory -= std::min