diff --git a/renderdoc/driver/gl/gl_manager.cpp b/renderdoc/driver/gl/gl_manager.cpp index 46f639302..07f4d987e 100644 --- a/renderdoc/driver/gl/gl_manager.cpp +++ b/renderdoc/driver/gl/gl_manager.cpp @@ -368,9 +368,14 @@ bool GLResourceManager::Serialise_InitialState(GLResource res) gl.glGetTexParameteriv(details.curType, eGL_TEXTURE_IMMUTABLE_FORMAT, &immut); if(immut) + { gl.glGetTexParameteriv(details.curType, eGL_TEXTURE_IMMUTABLE_LEVELS, (GLint *)&imgmips); + } else + { gl.glGetTexParameteriv(details.curType, eGL_TEXTURE_MAX_LEVEL, (GLint *)&imgmips); + imgmips++; + } TextureStateInitialData *state = (TextureStateInitialData *)GetInitialContents(Id).blob; diff --git a/renderdoc/driver/gl/gl_replay.cpp b/renderdoc/driver/gl/gl_replay.cpp index 0ab635071..48a09fdce 100644 --- a/renderdoc/driver/gl/gl_replay.cpp +++ b/renderdoc/driver/gl/gl_replay.cpp @@ -511,9 +511,9 @@ void GLReplay::CacheTexture(ResourceId id) else { // assuming complete texture - GLint mips = 1; + GLint mips = 0; gl.glGetTexParameteriv(target, eGL_TEXTURE_MAX_LEVEL, &mips); - tex.mips = (uint32_t)mips; + tex.mips = (uint32_t)mips + 1; } tex.numSubresources = tex.mips*tex.arraysize;