From bae420d83f98bdd1ea3ac02b2a4fa3b3bb323225 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 15 May 2019 11:31:08 +0100 Subject: [PATCH] Fix querying for texture view mip/array size --- renderdoc/driver/gl/gl_replay.cpp | 9 ++++++++- renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/gl/gl_replay.cpp b/renderdoc/driver/gl/gl_replay.cpp index fd3f3c4a3..9acc971f8 100644 --- a/renderdoc/driver/gl/gl_replay.cpp +++ b/renderdoc/driver/gl/gl_replay.cpp @@ -602,7 +602,14 @@ void GLReplay::CacheTexture(ResourceId id) return; } - tex.mips = GetNumMips(target, res.resource.name, tex.width, tex.height, tex.depth); + if(res.view) + { + tex.mips = Log2Floor(res.mipsValid + 1); + } + else + { + tex.mips = GetNumMips(target, res.resource.name, tex.width, tex.height, tex.depth); + } GLint compressed = 0; drv.glGetTextureLevelParameterivEXT(res.resource.name, levelQueryType, 0, eGL_TEXTURE_COMPRESSED, diff --git a/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp index fd06dfb7d..c25c9640f 100644 --- a/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp @@ -702,7 +702,7 @@ bool WrappedOpenGL::Serialise_glTextureView(SerialiserType &ser, GLuint textureH m_Textures[liveTexId].view = true; m_Textures[liveTexId].width = m_Textures[liveOrigId].width; m_Textures[liveTexId].height = m_Textures[liveOrigId].height; - m_Textures[liveTexId].depth = m_Textures[liveOrigId].depth; + m_Textures[liveTexId].depth = numlayers; m_Textures[liveTexId].mipsValid = (1 << numlevels) - 1; m_Textures[liveTexId].emulated = emulated; @@ -759,7 +759,7 @@ void WrappedOpenGL::glTextureView(GLuint texture, GLenum target, GLuint origtext m_Textures[texId].dimension = m_Textures[viewedId].dimension; m_Textures[texId].width = m_Textures[viewedId].width; m_Textures[texId].height = m_Textures[viewedId].height; - m_Textures[texId].depth = m_Textures[viewedId].depth; + m_Textures[texId].depth = numlayers; m_Textures[texId].curType = TextureTarget(target); m_Textures[texId].mipsValid = (1 << numlevels) - 1; }