i965: disallow separate depth/stencil renderbuffers

Take advantage of the GL_FRAMEBUFFER_UNSUPPORTED feature to disallow separate
depth and stencil renderbuffers; only allow combined depth/stencil buffers.

Next up: remove/simplify a bunch of the depth/stencil renderbuffer code.

Also: restore the previously disabled GL_DEPTH_COMPONENT16 case
This commit is contained in:
Brian Paul
2009-01-22 15:32:38 -07:00
parent d1eca7f558
commit 71b78149bd

View File

@@ -168,18 +168,11 @@ intel_alloc_renderbuffer_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
cpp = 4;
break;
case GL_DEPTH_COMPONENT16:
#if 0
rb->_ActualFormat = GL_DEPTH_COMPONENT16;
rb->DataType = GL_UNSIGNED_SHORT;
rb->DepthBits = 16;
cpp = 2;
break;
#else
/* fall-through.
* 16bpp depth renderbuffer can't be paired with a stencil buffer so
* always used combined depth/stencil format.
*/
#endif
case GL_DEPTH_COMPONENT:
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32:
@@ -636,10 +629,17 @@ intel_finish_render_texture(GLcontext * ctx,
static void
intel_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb)
{
/* no-op for now.
* Eventually: examine the renderbuffers/textures and make sure it's
* supported by the hw.
*/
const struct intel_renderbuffer *depthRb =
intel_get_renderbuffer(fb, BUFFER_DEPTH);
const struct intel_renderbuffer *stencilRb =
intel_get_renderbuffer(fb, BUFFER_STENCIL);
if (stencilRb && stencilRb != depthRb) {
/* we only support combined depth/stencil buffers, not separate
* stencil buffers.
*/
fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
}
}