Mesa (master): glFlush before CopySubBuffer, fix coordinates and extension name typo.

Kristian Høgsberg krh at kemper.freedesktop.org
Wed Nov 12 20:28:50 UTC 2008


Module: Mesa
Branch: master
Commit: e1fbb30211549f2ee79d8ff9764f833e5317bebe
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e1fbb30211549f2ee79d8ff9764f833e5317bebe

Author: Kristian Høgsberg <krh at redhat.com>
Date:   Wed Nov 12 15:24:45 2008 -0500

glFlush before CopySubBuffer, fix coordinates and extension name typo.

---

 src/glx/x11/dri2_glx.c   |    7 ++++++-
 src/glx/x11/dri_common.c |    2 +-
 src/glx/x11/glxcmds.c    |    1 +
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/glx/x11/dri2_glx.c b/src/glx/x11/dri2_glx.c
index c16df6b..2bee677 100644
--- a/src/glx/x11/dri2_glx.c
+++ b/src/glx/x11/dri2_glx.c
@@ -186,11 +186,12 @@ static __GLXDRIdrawable *dri2CreateDrawable(__GLXscreenConfigs *psc,
 static void dri2CopySubBuffer(__GLXDRIdrawable *pdraw,
 			      int x, int y, int width, int height)
 {
+    __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
     XRectangle xrect;
     XserverRegion region;
 
     xrect.x = x;
-    xrect.y = y;
+    xrect.y = priv->height - y - height;
     xrect.width = width;
     xrect.height = height;
 
@@ -331,7 +332,11 @@ static __GLXDRIscreen *dri2CreateScreen(__GLXscreenConfigs *psc, int screen,
     psp->createContext = dri2CreateContext;
     psp->createDrawable = dri2CreateDrawable;
     psp->swapBuffers = dri2SwapBuffers;
+
+    /* DRI2 suports SubBuffer through DRI2CopyRegion, so it's always
+     * available.*/
     psp->copySubBuffer = dri2CopySubBuffer;
+    __glXEnableDirectExtension(psc, "GLX_MESA_copy_sub_buffer");
 
     Xfree(driverName);
     Xfree(deviceName);
diff --git a/src/glx/x11/dri_common.c b/src/glx/x11/dri_common.c
index fcb579f..4fda649 100644
--- a/src/glx/x11/dri_common.c
+++ b/src/glx/x11/dri_common.c
@@ -340,7 +340,7 @@ driBindExtensions(__GLXscreenConfigs *psc, int dri2)
 #ifdef __DRI_COPY_SUB_BUFFER
 	if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) {
 	    psc->driCopySubBuffer = (__DRIcopySubBufferExtension *) extensions[i];
-	    __glXEnableDirectExtension(psc, "GLX_MESA_copy_sub_buffer_bit");
+	    __glXEnableDirectExtension(psc, "GLX_MESA_copy_sub_buffer");
 	}
 #endif
 
diff --git a/src/glx/x11/glxcmds.c b/src/glx/x11/glxcmds.c
index 4e2641b..391e0be 100644
--- a/src/glx/x11/glxcmds.c
+++ b/src/glx/x11/glxcmds.c
@@ -2500,6 +2500,7 @@ static void __glXCopySubBufferMESA(Display *dpy, GLXDrawable drawable,
     if ( pdraw != NULL ) {
 	__GLXscreenConfigs * const psc = GetGLXScreenConfigs(dpy, screen);
 	if (psc->driScreen->copySubBuffer != NULL) {
+	    glFlush();	    
 	    (*psc->driScreen->copySubBuffer)(pdraw, x, y, width, height);
 	}
 




More information about the mesa-commit mailing list