mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 17:10:11 +01:00
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>
This commit is contained in:
parent
aa97ababfc
commit
4b6311978f
2 changed files with 4 additions and 0 deletions
|
|
@ -593,6 +593,8 @@ draw_depth_stencil_pixels(struct gl_context *ctx, GLint x, GLint y,
|
|||
depthRb->Format == MESA_FORMAT_Z24_S8 &&
|
||||
type == GL_UNSIGNED_INT_24_8 &&
|
||||
depthRb == stencilRb &&
|
||||
depthRb->GetRow && /* May be null if depthRb is a wrapper around
|
||||
* separate depth and stencil buffers. */
|
||||
!scaleOrBias &&
|
||||
!zoom &&
|
||||
ctx->Depth.Mask &&
|
||||
|
|
|
|||
|
|
@ -394,6 +394,8 @@ read_depth_stencil_pixels(struct gl_context *ctx,
|
|||
depthRb->Format == MESA_FORMAT_Z24_S8 &&
|
||||
type == GL_UNSIGNED_INT_24_8 &&
|
||||
depthRb == stencilRb &&
|
||||
depthRb->GetRow && /* May be null if depthRb is a wrapper around
|
||||
* separate depth and stencil buffers. */
|
||||
!scaleOrBias &&
|
||||
!stencilTransfer) {
|
||||
/* This is the ideal case.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue