summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2021-10-03 22:42:29 +0200
committerFernando Sahmkow <fsahmkow27@gmail.com>2021-11-16 22:11:30 +0100
commit237a43004fb27a273495a0b44515cf7389dea553 (patch)
tree10eb6f87cc587f9a440212685f2234f75600505d
parentgl_texture_cache: Fix BGR pbo size for scaled textures (diff)
downloadyuzu-237a43004fb27a273495a0b44515cf7389dea553.tar
yuzu-237a43004fb27a273495a0b44515cf7389dea553.tar.gz
yuzu-237a43004fb27a273495a0b44515cf7389dea553.tar.bz2
yuzu-237a43004fb27a273495a0b44515cf7389dea553.tar.lz
yuzu-237a43004fb27a273495a0b44515cf7389dea553.tar.xz
yuzu-237a43004fb27a273495a0b44515cf7389dea553.tar.zst
yuzu-237a43004fb27a273495a0b44515cf7389dea553.zip
-rw-r--r--src/video_core/texture_cache/texture_cache.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index b60f840c1..691198853 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -858,6 +858,12 @@ bool TextureCache<P>::ScaleUp(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<u64>(
+ 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;
InvalidateScale(image);
return true;
}
@@ -868,6 +874,12 @@ bool TextureCache<P>::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<u64>(
+ 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;
InvalidateScale(image);
return true;
}