I'm getting a driver crash (brings down video on the whole PC), and I expect it's probably a driver bug, but I thought I'd post it on the off chance that someone knows a workaround. The rough outline of events is as follows:

  • Create multisample FBO (4 samples, color + packed depth/stencil render buffers), bound to draw target
  • Create single-sample FBO (color + packed depth/stencil render buffers), bound to read draw target
  • render some stuff
  • resolve samples using glBlitFramebuffer from the multi-sampled FBO to the single-sampled FBO
  • read some pixel data using glReadPixels
  • delete render buffers and FBOs
  • Render in a previously-existing on-screen OpenGL context
  • crash

Since the driver dies after I cleaned up the FBOs, I thought I might be doing that wrong. But if I omit that step and just let stuff leak, the crash happens just the same.

On the other hand, if I omit the glBlitFramebuffer call, the crash doesn't happen. I was using the mask GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT. If I change that to GL_COLOR_BUFFER_BIT, it no longer crashes (but I may need the depth). If I change the mask to GL_DEPTH_BUFFER_BIT, or GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT, it does crash.

As indicated in the title, the problem is occurring on ATI FireGL V7700. On the other hand, on a PC with an ATI Radeon HD 4670, the same code works fine.