diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2019-05-11 04:12:35 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-06-21 02:36:12 +0200 |
commit | 94f2be5473182789ec3f6388b43fcd708a505500 (patch) | |
tree | 449c07c6f2ca05db69b720543bac5124e6ba7940 /src/video_core/texture_cache | |
parent | texture_cache: Implement L1_Inner_cache (diff) | |
download | yuzu-94f2be5473182789ec3f6388b43fcd708a505500.tar yuzu-94f2be5473182789ec3f6388b43fcd708a505500.tar.gz yuzu-94f2be5473182789ec3f6388b43fcd708a505500.tar.bz2 yuzu-94f2be5473182789ec3f6388b43fcd708a505500.tar.lz yuzu-94f2be5473182789ec3f6388b43fcd708a505500.tar.xz yuzu-94f2be5473182789ec3f6388b43fcd708a505500.tar.zst yuzu-94f2be5473182789ec3f6388b43fcd708a505500.zip |
Diffstat (limited to 'src/video_core/texture_cache')
-rw-r--r-- | src/video_core/texture_cache/surface_params.cpp | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/src/video_core/texture_cache/surface_params.cpp b/src/video_core/texture_cache/surface_params.cpp index 3a47f404d..e7e671d8c 100644 --- a/src/video_core/texture_cache/surface_params.cpp +++ b/src/video_core/texture_cache/surface_params.cpp @@ -5,6 +5,7 @@ #include <map> #include "common/alignment.h" +#include "common/bit_util.h" #include "common/cityhash.h" #include "core/core.h" #include "video_core/engines/shader_bytecode.h" @@ -190,11 +191,8 @@ u32 SurfaceParams::GetMipBlockHeight(u32 level) const { const u32 height{GetMipHeight(level)}; const u32 default_block_height{GetDefaultBlockHeight()}; const u32 blocks_in_y{(height + default_block_height - 1) / default_block_height}; - u32 block_height = 4; - while (block_height > 0 && blocks_in_y <= (1U << block_height) * 4) { - --block_height; - } - return block_height; + const u32 block_height = Common::Log2Ceil32(blocks_in_y); + return std::clamp(block_height, 3U, 8U) - 3U; } u32 SurfaceParams::GetMipBlockDepth(u32 level) const { @@ -206,15 +204,10 @@ u32 SurfaceParams::GetMipBlockDepth(u32 level) const { } const u32 depth{GetMipDepth(level)}; - u32 block_depth = 5; - while (block_depth > 0 && depth * 2 <= (1U << block_depth)) { - --block_depth; - } - - if (block_depth == 5 && GetMipBlockHeight(level) >= 2) { - return 4; + const u32 block_depth = Common::Log2Ceil32(depth); + if (block_depth > 4) { + return 5 - (GetMipBlockHeight(level) >= 2); } - return block_depth; } |