diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-10-03 22:42:29 +0200 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2021-11-16 22:11:30 +0100 |
commit | 237a43004fb27a273495a0b44515cf7389dea553 (patch) | |
tree | 10eb6f87cc587f9a440212685f2234f75600505d /src/video_core | |
parent | gl_texture_cache: Fix BGR pbo size for scaled textures (diff) | |
download | yuzu-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 |
Diffstat (limited to 'src/video_core')
-rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 12 |
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; } |