I have recently added multisampling to my deferred engine by creating a new set of FrameBuffers with multisampling renderbuffers. Instead of my engine rendering the GBuffer to FBO set A, I now render into set B (the multisample FBO set). At the end, I resolve the multisample buffers back to FBO set A via glBlitFrameBuffer.
This is where I’m seeing a differnce between GeForce 8 and Radeon 4850. On the GeForce, I blit the depth and stencil in one operation using:
glBindFrameBuffer (GL_READ_FRAMEBUFFER, FBid1)
glReadBuffer (GL_NONE)
glBindFrameBuffer (GL_DRAW_FRAMEBUFFER, FBid2)
glDrawBuffer (GL_NONE)
glBlitFrameBuffer (0,0,w,h, 0,0,w,h, GL_DEPTH_BUFFER_BIT OR GL_STENCIL_BUFFER_BIT, GL_NEAREST)
but on the Radeon this does not copy the stencil values (took me ages to discover that was the reason).
So, I now have to do the following:
glBlitFrameBuffer (0,0,w,h, 0,0,w,h, GL_DEPTH_BUFFER_BIT, GL_NEAREST)
glBlitFrameBuffer (0,0,w,h, 0,0,w,h, GL_STENCIL_BUFFER_BIT, GL_NEAREST)
My undertstanding of the GL spec is that the bit mask can be combined, so I should only be performing one blit operation.
My question is: Is this the correct behaviour - ie having to perform two separate Blit operations, or is this a bug in the AMD drivers? (Cat 10.7, Open GL 3.3 compatibility profile)
How do I submit this a a bug to AMD?