[Mesa-dev] [PATCH] fix regression caused by b4bb6680200b5a898583392f4c831c02f41e63f7

Xiang, Haihao haihao.xiang at intel.com
Sun Nov 7 21:15:33 PST 2010


Oleksiy Krivoshey <oleksiyk at gmail.com> reported commit
b4bb6680200b5a898583392f4c831c02f41e63f7(dri: Unset current context and
dispatch table when unbinding) causes a regression when he used vaapi
with OpenGL render output on Ironlake. 

See: http://lists.freedesktop.org/archive...er/000380.html 

The root cause is that all pending commands to the previous context aren't
flushed when switching contexts after applying this commit.

The following patch can fix this issue, I am not sure whether
nouveau/radeon/swrast need a similar fix.

diff --git a/src/mesa/drivers/dri/intel/intel_context.c
b/src/mesa/drivers/dri/intel/intel_context.c
index de4bcde..9835540 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -891,6 +891,18 @@ intelDestroyContext(__DRIcontext * driContextPriv)
 GLboolean
 intelUnbindContext(__DRIcontext * driContextPriv)
 {
+   struct intel_context *intel;
+   GET_CURRENT_CONTEXT(curCtx);
+
+   if (driContextPriv)
+      intel = (struct intel_context *) driContextPriv->driverPrivate;
+   else
+      intel = NULL;
+
+   if (intel_context(curCtx) && intel_context(curCtx) == intel) {
+      _mesa_flush(curCtx);
+   }
+
    /* Unset current context and dispath table */
    _mesa_make_current(NULL, NULL, NULL);
 





More information about the mesa-dev mailing list