The following code crashes on a Radeon HD 4800 (Win7 64-bit, latest drivers)
GLuint fbo1 = 0;
// setup FBO 1
{
glGenFramebuffers(1, &fbo1);
glBindFramebuffer(GL_FRAMEBUFFER, fbo1);
GLuint rb1 = 0;
glGenRenderbuffers(1, &rb1);
glBindRenderbuffer(GL_RENDERBUFFER, rb1);
glRenderbufferStorageMultisample(GL_RENDERBUFFER, 4, GL_DEPTH24_STENCIL8, 1024, 1024);
//glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, 1024, 1024);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rb1);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rb1);
glReadBuffer(GL_NONE);
glDrawBuffer(GL_NONE);
GLenum fboStatus1 = glCheckFramebufferStatus(GL_FRAMEBUFFER);
assert(fboStatus1 == GL_FRAMEBUFFER_COMPLETE);
check_gl_error();
}
GLuint fbo2 = 0;
// setup FBO 2
{
glGenFramebuffers(1, &fbo2);
glBindFramebuffer(GL_FRAMEBUFFER, fbo2);
GLuint rb2 = 0;
glGenRenderbuffers(1, &rb2);
glBindRenderbuffer(GL_RENDERBUFFER, rb2);
glRenderbufferStorageMultisample(GL_RENDERBUFFER, 4, GL_DEPTH24_STENCIL8, 1024, 1024);
//glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, 1024, 1024);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rb2);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rb2);
glReadBuffer(GL_NONE);
glDrawBuffer(GL_NONE);
GLenum fboStatus2 = glCheckFramebufferStatus(GL_FRAMEBUFFER);
assert(fboStatus2 == GL_FRAMEBUFFER_COMPLETE);
check_gl_error();
}
glBindFramebuffer(GL_FRAMEBUFFER,0);
glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo1);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo2);
GLenum readStatus = glCheckFramebufferStatus(GL_READ_FRAMEBUFFER);
assert(readStatus == GL_FRAMEBUFFER_COMPLETE);
GLenum drawStatus = glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER);
assert(drawStatus == GL_FRAMEBUFFER_COMPLETE);
check_gl_error();
// crash here
glBlitFramebuffer(0, 0, 1024, 1024, 0, 0, 1024, 1024, GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT, GL_NEAREST);
Is this code somehow incorrect, or is this probably a bug in AMD’s drivers?