From fae5aabcce8be7c67a9c164d256374e4e2d6b6ba Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 25 Feb 2015 22:22:32 +0000 Subject: [PATCH] Handle missing/unsized formats on replay * This can happen if someone binds an uncreated texture (!). --- renderdoc/driver/gl/gl_debug.cpp | 3 +++ renderdoc/driver/gl/gl_replay.cpp | 1 + 2 files changed, 4 insertions(+) diff --git a/renderdoc/driver/gl/gl_debug.cpp b/renderdoc/driver/gl/gl_debug.cpp index b3b9aad58..ad47470c1 100644 --- a/renderdoc/driver/gl/gl_debug.cpp +++ b/renderdoc/driver/gl/gl_debug.cpp @@ -1035,6 +1035,9 @@ bool GLReplay::RenderTextureInternal(TextureDisplay cfg, bool blendAlpha) auto &texDetails = m_pDriver->m_Textures[cfg.texid]; + if(texDetails.internalFormat == eGL_NONE) + return false; + bool renderbuffer = false; int intIdx = 0; diff --git a/renderdoc/driver/gl/gl_replay.cpp b/renderdoc/driver/gl/gl_replay.cpp index 67844ce9f..d705e6500 100644 --- a/renderdoc/driver/gl/gl_replay.cpp +++ b/renderdoc/driver/gl/gl_replay.cpp @@ -1454,6 +1454,7 @@ void GLReplay::SavePipelineState() GLenum levelQueryType = target == eGL_TEXTURE_CUBE_MAP ? eGL_TEXTURE_CUBE_MAP_POSITIVE_X : target; GLenum fmt = eGL_NONE; gl.glGetTexLevelParameteriv(levelQueryType, 0, eGL_TEXTURE_INTERNAL_FORMAT, (GLint *)&fmt); + fmt = GetSizedFormat(gl.GetHookset(), target, fmt); if(IsDepthStencilFormat(fmt)) { GLint depthMode;