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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user