From 5d1e2165f793807decbe51f239341fb1983e8cb4 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Tue, 12 Oct 2010 13:39:03 -0400 Subject: android: Fix depth/stencil with i915c/i965c. --- src/mesa/drivers/dri/intel/intel_context.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index a5334f8367..7c422c4c3a 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -420,6 +420,32 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable) } } +#ifdef ANDROID + depth_rb = intel_get_renderbuffer(fb, BUFFER_DEPTH); + stencil_rb = intel_get_renderbuffer(fb, BUFFER_STENCIL); + rb = NULL; + if (depth_rb && !depth_rb->region) + rb = depth_rb; + else if (stencil_rb && !stencil_rb->region) + rb = stencil_rb; + if (rb) { + uint32_t tiling = I915_TILING_NONE; + + /* Gen6 requires depth must be tiling */ + if (intel->gen >= 6 && rb->Base.Format == MESA_FORMAT_S8_Z24) + tiling = I915_TILING_Y; + + region = intel_region_alloc(intel->intelScreen, tiling, + _mesa_get_format_bytes(rb->Base.Format), + drawable->w, drawable->h, GL_TRUE); + intel_renderbuffer_set_region(intel, rb, region); + intel_region_release(®ion); + } + + if (stencil_rb && !stencil_rb->region) + intel_renderbuffer_set_region(intel, stencil_rb, depth_rb->region); +#endif + driUpdateFramebufferSize(&intel->ctx, drawable); } -- cgit v1.2.3