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
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to