I’m being troubled by a crash in the ATI Windows OpenGL driver. I am using Windows XP SP2, Catalyst Driver 7.11, and a Radeon 9550.
To replicate the crash create a 2048 x 2048 renderbuffer and draw the whole buffer with RGBA pixels as follows :
const int BUFFER_SIZE = 2048; GLuint fb, rb; glGenFramebuffers(1, &fb); glGenRenderbuffers(1, &rb); glBindRenderbuffer(GL_RENDERBUFFER, rb); glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8, BUFFER_SIZE, BUFFER_SIZE); glBindFramebuffer(GL_FRAMEBUFFER, fb); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rb); GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); assert(status == GL_FRAMEBUFFER_COMPLETE); std::vector<unsigned long> svRgba(BUFFER_SIZE * BUFFER_SIZE, 0xFF0000FF); glRasterPos2f(-1.0f, -1.0f); glDrawPixels(BUFFER_SIZE, BUFFER_SIZE, GL_RGBA, GL_UNSIGNED_BYTE, &svRgba);
By varying the size of the glDrawPixels I have found the crash occurs when more than 12 MB of pixels are passed in one go. The crash doesn’t happen if drawing to the main window, or using my other NVidia card.
I am interested to hear if anyone can replicate this crash using other ATI hardware / drivers.