swrast: Fix fastpaths for glRead/WritePixels(GL_DEPTH_STENCIL)
authorChad Versace <chad@chad-versace.us>
Fri, 7 Oct 2011 23:22:56 +0000 (16:22 -0700)
committerChad Versace <chad@chad-versace.us>
Tue, 18 Oct 2011 18:42:53 +0000 (11:42 -0700)
commit4b6311978f6710cfb2e9d77a2ca7a30f709c1f37
tree49c399047383fe800f0ce05ea92af5f4bbb9ed6b
parentaa97ababfcd5ae4d4433bd5f672836f40f6595f2
swrast: Fix fastpaths for glRead/WritePixels(GL_DEPTH_STENCIL)

In some cases, Intel hardware requires that depth and stencil buffers be
separate. To accommodate swrast, i965 resorts to hackery that causes
a segfault in the fastpaths of draw_depth_stencil_pixels() and
read_depth_stencil_pixels().

The hack is that i965 sets framebuffer->Attachment[BUFFER_DEPTH].Renderbuffer
and framebuffer->Attachment[BUFFER_STENCIL].Renderbuffer to a dummy
renderbuffer for which the GetRow accessors and friends are null. The real
buffers are located at framebuffer->_DepthBuffer and framebuffer->_Stencilbuffer.

To fix the segault, this patch skips the fastpath if
framebuffer->Attachment[BUFFER_DEPTH].Renderbuffer->GetRow is null.

Note: This is a candidate for the 7.11 branch.
Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Chad Versace <chad@chad-versace.us>
src/mesa/swrast/s_drawpix.c
src/mesa/swrast/s_readpix.c