diff options
| author | 2018-06-08 16:40:49 -0400 | |
|---|---|---|
| committer | 2018-06-08 16:40:49 -0400 | |
| commit | a931cf9e8b852f28d64e964c0a7d622544197f91 (patch) | |
| tree | 7a950c716fcfc22563b4d986a9825dea8ef824fc /src | |
| parent | Merge pull request #546 from Subv/flush_ubo_buffer (diff) | |
| parent | GLCache: Align compressed texture sizes to their compression ratio, and then ... (diff) | |
| download | yuzu-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.cpp | 9 |
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())); |