Browse Source

intel: Use depth buffer from ctx.DrawBuffer in copypix_src_region()

This function was using intel->depth_region, which is the static region
for the DRI1 depth buffer.  This code has always been broken with DRI2
but I suspect it doesn't get excersized much.
tags/7.8-rc1
Kristian Høgsberg 16 years ago
parent
commit
ee49ac8742
1 changed files with 12 additions and 7 deletions
  1. 12
    7
      src/mesa/drivers/dri/intel/intel_pixel_copy.c

+ 12
- 7
src/mesa/drivers/dri/intel/intel_pixel_copy.c View File

@@ -35,28 +35,33 @@
#include "intel_buffers.h"
#include "intel_regions.h"
#include "intel_pixel.h"
#include "intel_fbo.h"

#define FILE_DEBUG_FLAG DEBUG_PIXEL

static struct intel_region *
copypix_src_region(struct intel_context *intel, GLenum type)
{
struct intel_renderbuffer *depth;

depth = (struct intel_renderbuffer *)
&intel->ctx.DrawBuffer->Attachment[BUFFER_DEPTH].Renderbuffer;

switch (type) {
case GL_COLOR:
return intel_readbuf_region(intel);
case GL_DEPTH:
/* Don't think this is really possible execpt at 16bpp, when we have no stencil.
*/
if (intel->depth_region && intel->depth_region->cpp == 2)
return intel->depth_region;
/* Don't think this is really possible execpt at 16bpp, when we
* have no stencil. */
if (depth && depth->region->cpp == 2)
return depth->region;
case GL_STENCIL:
/* Don't think this is really possible.
*/
/* Don't think this is really possible. */
break;
case GL_DEPTH_STENCIL_EXT:
/* Does it matter whether it is stencil/depth or depth/stencil?
*/
return intel->depth_region;
return depth->region;
default:
break;
}

Loading…
Cancel
Save