From 3c9580356629598815cb8c0bc3caf148c2b94c3e Mon Sep 17 00:00:00 2001 From: baldurk Date: Sun, 16 Nov 2014 12:18:34 +0000 Subject: [PATCH] # mips should be calculated as GL_TEXTURE_MAX_LEVEL + 1 --- renderdoc/driver/gl/gl_manager.cpp | 5 +++++ renderdoc/driver/gl/gl_replay.cpp | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) 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;