Mesa (mesa_7_4_branch): DRI2: Provide an interface for drivers to flush front-buffer rendering

Ian Romanick idr at kemper.freedesktop.org
Thu Apr 9 22:15:17 UTC 2009


Module: Mesa
Branch: mesa_7_4_branch
Commit: 98c2c9ef8c9da654fa3af95145c2f92b296bdb47
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=98c2c9ef8c9da654fa3af95145c2f92b296bdb47

Author: Ian Romanick <idr at freedesktop.org>
Date:   Mon Apr  6 12:44:18 2009 -0700

DRI2: Provide an interface for drivers to flush front-buffer rendering

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Kristian Høgsberg <krh at redhat.com>
(cherry picked from commit 82634ee8df7328b9235abd8352d33b0b3d953600)

---

 include/GL/internal/dri_interface.h |   15 ++++++++++++++-
 src/glx/x11/dri2_glx.c              |   10 ++++++++++
 2 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
index 27cc1be..09ae940 100644
--- a/include/GL/internal/dri_interface.h
+++ b/include/GL/internal/dri_interface.h
@@ -636,7 +636,7 @@ struct __DRIbufferRec {
 };
 
 #define __DRI_DRI2_LOADER "DRI_DRI2Loader"
-#define __DRI_DRI2_LOADER_VERSION 1
+#define __DRI_DRI2_LOADER_VERSION 2
 struct __DRIdri2LoaderExtensionRec {
     __DRIextension base;
 
@@ -644,6 +644,19 @@ struct __DRIdri2LoaderExtensionRec {
 			       int *width, int *height,
 			       unsigned int *attachments, int count,
 			       int *out_count, void *loaderPrivate);
+
+    /**
+     * Flush pending front-buffer rendering
+     *
+     * Any rendering that has been performed to the
+     * \c __DRI_BUFFER_FAKE_FRONT_LEFT will be flushed to the
+     * \c __DRI_BUFFER_FRONT_LEFT.
+     *
+     * \param driDrawable    Drawable whose front-buffer is to be flushed
+     * \param loaderPrivate  Loader's private data that was previously passed
+     *                       into __DRIdri2ExtensionRec::createNewDrawable
+     */
+    void (*flushFrontBuffer)(__DRIdrawable *driDrawable, void *loaderPrivate);
 };
 
 /**
diff --git a/src/glx/x11/dri2_glx.c b/src/glx/x11/dri2_glx.c
index 6a031d4..5acb3dd 100644
--- a/src/glx/x11/dri2_glx.c
+++ b/src/glx/x11/dri2_glx.c
@@ -257,6 +257,15 @@ static void dri2WaitGL(__GLXDRIdrawable *pdraw)
     XFixesDestroyRegion(pdraw->psc->dpy, region);
 }
 
+
+static void dri2FlushFrontBuffer(__DRIdrawable *driDrawable,
+				 void *loaderPrivate)
+{
+    (void) driDrawable;
+    dri2WaitGL((__GLXDRIdrawable *) loaderPrivate);
+}
+
+
 static void dri2DestroyScreen(__GLXscreenConfigs *psc)
 {
     /* Free the direct rendering per screen data */
@@ -311,6 +320,7 @@ dri2GetBuffers(__DRIdrawable *driDrawable,
 static const __DRIdri2LoaderExtension dri2LoaderExtension = {
     { __DRI_DRI2_LOADER, __DRI_DRI2_LOADER_VERSION },
     dri2GetBuffers,
+    dri2FlushFrontBuffer
 };
 
 static const __DRIextension *loader_extensions[] = {




More information about the mesa-commit mailing list