summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2018-06-08 16:40:49 -0400
committerGravatar GitHub2018-06-08 16:40:49 -0400
commita931cf9e8b852f28d64e964c0a7d622544197f91 (patch)
tree7a950c716fcfc22563b4d986a9825dea8ef824fc /src
parentMerge pull request #546 from Subv/flush_ubo_buffer (diff)
parentGLCache: Align compressed texture sizes to their compression ratio, and then ... (diff)
downloadyuzu-a931cf9e8b852f28d64e964c0a7d622544197f91.tar.gz
yuzu-a931cf9e8b852f28d64e964c0a7d622544197f91.tar.xz
yuzu-a931cf9e8b852f28d64e964c0a7d622544197f91.zip
Merge pull request #547 from Subv/compressed_alignment
GLCache: Align compressed texture sizes to their compression ratio, and then align that compressed size to the block height for tiled textures.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer_cache.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
index df2474ea2..ff48a2669 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
@@ -1033,8 +1033,11 @@ Surface RasterizerCacheOpenGL::GetTextureSurface(const Tegra::Texture::FullTextu
1033 params.addr = config.tic.Address(); 1033 params.addr = config.tic.Address();
1034 params.is_tiled = config.tic.IsTiled(); 1034 params.is_tiled = config.tic.IsTiled();
1035 params.pixel_format = SurfaceParams::PixelFormatFromTextureFormat(config.tic.format); 1035 params.pixel_format = SurfaceParams::PixelFormatFromTextureFormat(config.tic.format);
1036 params.width = config.tic.Width() / params.GetCompresssionFactor(); 1036
1037 params.height = config.tic.Height() / params.GetCompresssionFactor(); 1037 params.width = Common::AlignUp(config.tic.Width(), params.GetCompresssionFactor()) /
1038 params.GetCompresssionFactor();
1039 params.height = Common::AlignUp(config.tic.Height(), params.GetCompresssionFactor()) /
1040 params.GetCompresssionFactor();
1038 1041
1039 // TODO(Subv): Different types per component are not supported. 1042 // TODO(Subv): Different types per component are not supported.
1040 ASSERT(config.tic.r_type.Value() == config.tic.g_type.Value() && 1043 ASSERT(config.tic.r_type.Value() == config.tic.g_type.Value() &&
@@ -1045,6 +1048,8 @@ Surface RasterizerCacheOpenGL::GetTextureSurface(const Tegra::Texture::FullTextu
1045 1048
1046 if (config.tic.IsTiled()) { 1049 if (config.tic.IsTiled()) {
1047 params.block_height = config.tic.BlockHeight(); 1050 params.block_height = config.tic.BlockHeight();
1051 params.width = Common::AlignUp(params.width, params.block_height);
1052 params.height = Common::AlignUp(params.height, params.block_height);
1048 } else { 1053 } else {
1049 // Use the texture-provided stride value if the texture isn't tiled. 1054 // Use the texture-provided stride value if the texture isn't tiled.
1050 params.stride = static_cast<u32>(params.PixelsInBytes(config.tic.Pitch())); 1055 params.stride = static_cast<u32>(params.PixelsInBytes(config.tic.Pitch()));