From 2b8be077fa204a451b35804b4c1f0ae0de3870f6 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 12 Nov 2018 15:11:21 +0000 Subject: [PATCH] Don't fetch GL_DRAW_BUFFERn for values above GL_MAX_DRAW_BUFFERS --- renderdoc/driver/gl/gl_initstate.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/gl/gl_initstate.cpp b/renderdoc/driver/gl/gl_initstate.cpp index 16d8dbae5..9b9e8ab67 100644 --- a/renderdoc/driver/gl/gl_initstate.cpp +++ b/renderdoc/driver/gl/gl_initstate.cpp @@ -248,8 +248,16 @@ void GLResourceManager::ContextPrepare_InitialState(GLResource res) } } - for(int i = 0; i < (int)ARRAY_COUNT(data.DrawBuffers); i++) - GL.glGetIntegerv(GLenum(eGL_DRAW_BUFFER0 + i), (GLint *)&data.DrawBuffers[i]); + GLuint maxDraws = 0; + GL.glGetIntegerv(eGL_MAX_DRAW_BUFFERS, (GLint *)&maxDraws); + + for(GLuint i = 0; i < (GLuint)ARRAY_COUNT(data.DrawBuffers); i++) + { + if(i < maxDraws) + GL.glGetIntegerv(GLenum(eGL_DRAW_BUFFER0 + i), (GLint *)&data.DrawBuffers[i]); + else + data.DrawBuffers[i] = eGL_COLOR_ATTACHMENT0; + } GL.glGetIntegerv(eGL_READ_BUFFER, (GLint *)&data.ReadBuffer);