diff options
| author | 2020-03-12 17:35:46 -0300 | |
|---|---|---|
| committer | 2020-03-12 18:11:42 -0300 | |
| commit | daae6a323be9d490c66dd27674fff521cceabe61 (patch) | |
| tree | 938d221636d5a7afc2a2305bb62fe76ae749b68d /src/video_core/texture_cache | |
| parent | Merge pull request #3494 from ReinUsesLisp/fix-cs-pipeline (diff) | |
| download | yuzu-daae6a323be9d490c66dd27674fff521cceabe61.tar.gz yuzu-daae6a323be9d490c66dd27674fff521cceabe61.tar.xz yuzu-daae6a323be9d490c66dd27674fff521cceabe61.zip | |
texture_cache/surface_params: Force depth=1 on 2D textures
Sometimes games will sample a 2D array TIC with a 2D access in the
shader. This causes bad interactions with the rest of the texture cache.
To emulate what the game wants to do, force a depth=1 on 2D textures
(not 2D arrays) and let the texture cache handle the rest.
Diffstat (limited to 'src/video_core/texture_cache')
| -rw-r--r-- | src/video_core/texture_cache/surface_params.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/video_core/texture_cache/surface_params.cpp b/src/video_core/texture_cache/surface_params.cpp index f00839313..9931c5ef7 100644 --- a/src/video_core/texture_cache/surface_params.cpp +++ b/src/video_core/texture_cache/surface_params.cpp | |||
| @@ -113,8 +113,10 @@ SurfaceParams SurfaceParams::CreateForTexture(const FormatLookupTable& lookup_ta | |||
| 113 | params.height = tic.Height(); | 113 | params.height = tic.Height(); |
| 114 | params.depth = tic.Depth(); | 114 | params.depth = tic.Depth(); |
| 115 | params.pitch = params.is_tiled ? 0 : tic.Pitch(); | 115 | params.pitch = params.is_tiled ? 0 : tic.Pitch(); |
| 116 | if (params.target == SurfaceTarget::TextureCubemap || | 116 | if (params.target == SurfaceTarget::Texture2D && params.depth > 1) { |
| 117 | params.target == SurfaceTarget::TextureCubeArray) { | 117 | params.depth = 1; |
| 118 | } else if (params.target == SurfaceTarget::TextureCubemap || | ||
| 119 | params.target == SurfaceTarget::TextureCubeArray) { | ||
| 118 | params.depth *= 6; | 120 | params.depth *= 6; |
| 119 | } | 121 | } |
| 120 | params.num_levels = tic.max_mip_level + 1; | 122 | params.num_levels = tic.max_mip_level + 1; |