diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index 691198853..b708e41b5 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -852,18 +852,23 @@ void TextureCache
::InvalidateScale(Image& image) {
has_deleted_images = true;
}
+template
+u64 TextureCache::GetScaledImageSizeBytes(Image& image) {
+ const f32 add_to_size = Settings::values.resolution_info.up_factor - 1.0f;
+ const bool sign = std::signbit(add_to_size);
+ const u32 image_size_bytes = std::max(image.guest_size_bytes, image.unswizzled_size_bytes);
+ const u64 tentative_size = static_cast(image_size_bytes * std::abs(add_to_size));
+ const u64 fitted_size = Common::AlignUp(tentative_size, 1024);
+ return sign ? -fitted_size : fitted_size;
+}
+
template
bool TextureCache::ScaleUp(Image& image) {
const bool rescaled = image.ScaleUp();
if (!rescaled) {
return false;
}
- const auto& add_to_size = Settings::values.resolution_info.up_factor - 1.0f;
- const auto sign = std::signbit(add_to_size);
- const u64 tentative_size = static_cast(
- std::max(image.guest_size_bytes, image.unswizzled_size_bytes) * std::abs(add_to_size));
- const u64 fitted_size = Common::AlignUp(tentative_size, 1024);
- total_used_memory += sign ? -fitted_size : fitted_size;
+ total_used_memory += GetScaledImageSizeBytes(image);
InvalidateScale(image);
return true;
}
@@ -874,12 +879,7 @@ bool TextureCache::ScaleDown(Image& image) {
if (!rescaled) {
return false;
}
- const auto& add_to_size = Settings::values.resolution_info.up_factor - 1.0f;
- const auto sign = std::signbit(add_to_size);
- const u64 tentative_size = static_cast(
- std::max(image.guest_size_bytes, image.unswizzled_size_bytes) * std::abs(add_to_size));
- const u64 fitted_size = Common::AlignUp(tentative_size, 1024);
- total_used_memory += sign ? fitted_size : -fitted_size;
+ total_used_memory += GetScaledImageSizeBytes(image);
InvalidateScale(image);
return true;
}
diff --git a/src/video_core/texture_cache/texture_cache_base.h b/src/video_core/texture_cache/texture_cache_base.h
index 517a4c224..40e003b60 100644
--- a/src/video_core/texture_cache/texture_cache_base.h
+++ b/src/video_core/texture_cache/texture_cache_base.h
@@ -339,6 +339,7 @@ private:
void InvalidateScale(Image& image);
bool ScaleUp(Image& image);
bool ScaleDown(Image& image);
+ u64 GetScaledImageSizeBytes(Image& image);
Runtime& runtime;
VideoCore::RasterizerInterface& rasterizer;