diff options
author | bunnei <bunneidev@gmail.com> | 2019-01-30 04:27:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-30 04:27:08 +0100 |
commit | 3c3d9afd61f7f8b699befc6c6c50e51a28a7a4de (patch) | |
tree | 070717665992f33e27d9f6531bb01c0a24569e60 /src/video_core/renderer_opengl | |
parent | Merge pull request #2069 from lioncash/vi (diff) | |
parent | gl_shader_cache: Fix texture view for cubemaps as cubemap arrays (diff) | |
download | yuzu-3c3d9afd61f7f8b699befc6c6c50e51a28a7a4de.tar yuzu-3c3d9afd61f7f8b699befc6c6c50e51a28a7a4de.tar.gz yuzu-3c3d9afd61f7f8b699befc6c6c50e51a28a7a4de.tar.bz2 yuzu-3c3d9afd61f7f8b699befc6c6c50e51a28a7a4de.tar.lz yuzu-3c3d9afd61f7f8b699befc6c6c50e51a28a7a4de.tar.xz yuzu-3c3d9afd61f7f8b699befc6c6c50e51a28a7a4de.tar.zst yuzu-3c3d9afd61f7f8b699befc6c6c50e51a28a7a4de.zip |
Diffstat (limited to 'src/video_core/renderer_opengl')
-rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | 8 | ||||
-rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer_cache.h | 3 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index a05b8b936..c44e2aca2 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp @@ -167,6 +167,7 @@ std::size_t SurfaceParams::InnerMemorySize(bool force_gl, bool layer_only, } params.is_layered = SurfaceTargetIsLayered(params.target); + params.is_array = SurfaceTargetIsArray(params.target); params.max_mip_level = config.tic.max_mip_level + 1; params.rt = {}; @@ -877,10 +878,13 @@ void CachedSurface::EnsureTextureView() { UNIMPLEMENTED_IF(gl_is_compressed); const GLenum target{TargetLayer()}; + const GLuint num_layers{target == GL_TEXTURE_CUBE_MAP_ARRAY ? 6u : 1u}; + constexpr GLuint min_layer = 0; + constexpr GLuint min_level = 0; texture_view.Create(); - glTextureView(texture_view.handle, target, texture.handle, gl_internal_format, 0, - params.max_mip_level, 0, 1); + glTextureView(texture_view.handle, target, texture.handle, gl_internal_format, min_level, + params.max_mip_level, min_layer, num_layers); OpenGLState cur_state = OpenGLState::GetCurState(); const auto& old_tex = cur_state.texture_units[0]; diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.h b/src/video_core/renderer_opengl/gl_rasterizer_cache.h index 37611c4fc..dae0feb20 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.h +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.h @@ -225,6 +225,7 @@ struct SurfaceParams { SurfaceTarget target; u32 max_mip_level; bool is_layered; + bool is_array; bool srgb_conversion; // Parameters used for caching VAddr addr; @@ -294,7 +295,7 @@ public: } const OGLTexture& TextureLayer() { - if (params.is_layered) { + if (params.is_array) { return Texture(); } EnsureTextureView(); |