summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2019-01-30 04:27:08 +0100
committerGitHub <noreply@github.com>2019-01-30 04:27:08 +0100
commit3c3d9afd61f7f8b699befc6c6c50e51a28a7a4de (patch)
tree070717665992f33e27d9f6531bb01c0a24569e60 /src/video_core/renderer_opengl
parentMerge pull request #2069 from lioncash/vi (diff)
parentgl_shader_cache: Fix texture view for cubemaps as cubemap arrays (diff)
downloadyuzu-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 '')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer_cache.cpp8
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer_cache.h3
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();