[Mesa-dev] [PATCH] intel: Set ctx's drawbuffer according to drawables visual
Brian Paul
brianp at vmware.com
Thu Aug 4 06:29:18 PDT 2011
On 08/04/2011 06:31 AM, Benjamin Franzke wrote:
> Fixes https://bugs.freedesktop.org/show_bug.cgi?id=39588
>
> egl_dri2 creates contexts with a doubleBufferConfig when PIXMAP and
> WINDOW bit is request, so _mesa_init_color sets DrawBuffer[0] to
> GL_BACK.
> If a pixmap surface is created egl_dri2 will use a single buffer config,
> so MakeCurrent has to adjust DrawBuffer[0] to the current drawable.
> ---
> src/mesa/drivers/dri/intel/intel_context.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
> index fe8be08..0eeffc0 100644
> --- a/src/mesa/drivers/dri/intel/intel_context.c
> +++ b/src/mesa/drivers/dri/intel/intel_context.c
> @@ -970,6 +970,12 @@ intelMakeCurrent(__DRIcontext * driContextPriv,
> readFb = driReadPriv->driverPrivate;
> driContextPriv->dri2.draw_stamp = driDrawPriv->dri2.stamp - 1;
> driContextPriv->dri2.read_stamp = driReadPriv->dri2.stamp - 1;
> +
> + if (fb->Visual.doubleBufferMode) {
> + intel->ctx.Color.DrawBuffer[0] = GL_BACK;
> + } else {
> + intel->ctx.Color.DrawBuffer[0] = GL_FRONT;
> + }
> }
>
> intel_prepare_render(intel);
This doesn't seem right to me. We shouldn't be changing context state
like that during a make-current() call.
During context initialization we call _mesa_init_color() where we set
ctx->Color.DrawBuffer[0] to either GL_BACK or GL_FRONT depending on
the visual's double-buffer flag. You might investigate why that's not
doing the job.
-Brian
More information about the mesa-dev
mailing list