diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-04-06 15:21:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-06 15:21:11 +0200 |
commit | 588a20be3fca40746c965ea7831177f5c894ebee (patch) | |
tree | 42848be537f341aba483d13e44a637a01e3e4e09 /src/video_core/texture_cache/surface_params.cpp | |
parent | Merge pull request #3592 from ReinUsesLisp/ipa (diff) | |
parent | gl_texture_cache: Fix software ASTC fallback (diff) | |
download | yuzu-588a20be3fca40746c965ea7831177f5c894ebee.tar yuzu-588a20be3fca40746c965ea7831177f5c894ebee.tar.gz yuzu-588a20be3fca40746c965ea7831177f5c894ebee.tar.bz2 yuzu-588a20be3fca40746c965ea7831177f5c894ebee.tar.lz yuzu-588a20be3fca40746c965ea7831177f5c894ebee.tar.xz yuzu-588a20be3fca40746c965ea7831177f5c894ebee.tar.zst yuzu-588a20be3fca40746c965ea7831177f5c894ebee.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/texture_cache/surface_params.cpp | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/video_core/texture_cache/surface_params.cpp b/src/video_core/texture_cache/surface_params.cpp index 9931c5ef7..47b2aafbd 100644 --- a/src/video_core/texture_cache/surface_params.cpp +++ b/src/video_core/texture_cache/surface_params.cpp @@ -309,28 +309,26 @@ std::size_t SurfaceParams::GetGuestMipmapLevelOffset(u32 level) const { return offset; } -std::size_t SurfaceParams::GetHostMipmapLevelOffset(u32 level) const { +std::size_t SurfaceParams::GetHostMipmapLevelOffset(u32 level, bool is_converted) const { std::size_t offset = 0; - for (u32 i = 0; i < level; i++) { - offset += GetInnerMipmapMemorySize(i, true, false) * GetNumLayers(); - } - return offset; -} - -std::size_t SurfaceParams::GetConvertedMipmapOffset(u32 level) const { - std::size_t offset = 0; - for (u32 i = 0; i < level; i++) { - offset += GetConvertedMipmapSize(i); + if (is_converted) { + for (u32 i = 0; i < level; ++i) { + offset += GetConvertedMipmapSize(i) * GetNumLayers(); + } + } else { + for (u32 i = 0; i < level; ++i) { + offset += GetInnerMipmapMemorySize(i, true, false) * GetNumLayers(); + } } return offset; } std::size_t SurfaceParams::GetConvertedMipmapSize(u32 level) const { constexpr std::size_t rgba8_bpp = 4ULL; - const std::size_t width_t = GetMipWidth(level); - const std::size_t height_t = GetMipHeight(level); - const std::size_t depth_t = is_layered ? depth : GetMipDepth(level); - return width_t * height_t * depth_t * rgba8_bpp; + const std::size_t mip_width = GetMipWidth(level); + const std::size_t mip_height = GetMipHeight(level); + const std::size_t mip_depth = is_layered ? 1 : GetMipDepth(level); + return mip_width * mip_height * mip_depth * rgba8_bpp; } std::size_t SurfaceParams::GetLayerSize(bool as_host_size, bool uncompressed) const { |