diff options
author | Eric Anholt <[email protected]> | 2009-12-28 18:15:06 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2009-12-28 18:52:47 -0800 |
commit | 089144e4e525883995d609af5040b2355043945e (patch) | |
tree | 56c180a117509744ea0490f8798e7ff7285359cf | |
parent | e4df8d32b510a3f00c12477985818c9d42a0b178 (diff) |
intel: Allow binding a stencil but not a depth buffer.
Wine's d3d9 visual.c testcase tries this a lot, so I've added some
piglit tests (fbo-nodepth-test, fbo-nostencil-test, fbo-stencil-only)
and enabled it.
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_buffers.c | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_fbo.c | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/intel/intel_buffers.c b/src/mesa/drivers/dri/intel/intel_buffers.c index 05643189a21..97d56e4e67e 100644 --- a/src/mesa/drivers/dri/intel/intel_buffers.c +++ b/src/mesa/drivers/dri/intel/intel_buffers.c @@ -291,6 +291,12 @@ intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb) FALLBACK(intel, INTEL_FALLBACK_STENCIL_BUFFER, GL_FALSE); } + /* If we have a (packed) stencil buffer attached but no depth buffer, + * we still need to set up the shared depth/stencil state so we can use it. + */ + if (depthRegion == NULL && irbStencil && irbStencil->region) + depthRegion = irbStencil->region; + /* * Update depth and stencil test state */ diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c index dc96b36a15d..b5ca418b0b1 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.c +++ b/src/mesa/drivers/dri/intel/intel_fbo.c @@ -591,7 +591,7 @@ intel_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb) intel_get_renderbuffer(fb, BUFFER_STENCIL); int i; - if (stencilRb && stencilRb != depthRb) { + if (depthRb && stencilRb && stencilRb != depthRb) { /* we only support combined depth/stencil buffers, not separate * stencil buffers. */ |