From 3701b466116ae5df1339642978e0693ffbac7df3 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 21 Apr 2015 20:37:00 +0200 Subject: [PATCH] Handle glGetIntermalformativ being missing * Fixes a reported crash. * This function was only core in 4.2 so it's perfectly valid for it to be missing - if so then we just skip using it to determine the size of a format and default to 8-bit colour or 32-bit depth/stencil formats. --- renderdoc/driver/gl/gl_resources.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/gl/gl_resources.cpp b/renderdoc/driver/gl/gl_resources.cpp index 6aca7a8a0..bb264490a 100644 --- a/renderdoc/driver/gl/gl_resources.cpp +++ b/renderdoc/driver/gl/gl_resources.cpp @@ -390,8 +390,17 @@ GLenum GetSizedFormat(const GLHookSet &gl, GLenum target, GLenum internalFormat) } GLint red, depth; - gl.glGetInternalformativ(target, internalFormat, eGL_INTERNALFORMAT_RED_SIZE, sizeof(GLint), &red); - gl.glGetInternalformativ(target, internalFormat, eGL_INTERNALFORMAT_DEPTH_SIZE, sizeof(GLint), &depth); + if(gl.glGetInternalformativ) + { + gl.glGetInternalformativ(target, internalFormat, eGL_INTERNALFORMAT_RED_SIZE, sizeof(GLint), &red); + gl.glGetInternalformativ(target, internalFormat, eGL_INTERNALFORMAT_DEPTH_SIZE, sizeof(GLint), &depth); + } + else + { + // without the query function, just default to sensible defaults + red = 8; + depth = 32; + } switch(internalFormat) {