path: root/include
diff options
authorFrancisco Jerez <>2010-02-08 19:27:56 +0100
committerKristian Høgsberg <>2010-02-16 10:38:50 -0500
commit61d26bc82e7c4100acfb551cbb0ba9d84bbc4ba5 (patch)
treecf096e387a6683a976e152586c355339de3c133e /include
parent925b901ba313a3ddd7567eca088951be39414430 (diff)
dri2: Event driven buffer validation.
When a buffer invalidation event is received from the X server, the "invalidate" hook of the DRI2 flush extension is executed: A generic implementation (dri2InvalidateDrawable) is provided that just bumps the "pStamp" sequence number in __DRIdrawableRec. For old servers not supporting buffer invalidation events, the invalidate hook will be called before flushing the fake front/back buffer (that's typically once per frame -- not a lot worse than the situation we were in before). No effort has been made on preserving backwards compatibility with version 2 of the flush extension, but I think it's acceptable because AFAIK no released stack is making use of it. Signed-off-by: Kristian Høgsberg <>
Diffstat (limited to 'include')
1 files changed, 6 insertions, 8 deletions
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
index 58540d60057..cb99c270f52 100644
--- a/include/GL/internal/dri_interface.h
+++ b/include/GL/internal/dri_interface.h
@@ -269,22 +269,20 @@ struct __DRItexBufferExtensionRec {
* Used by drivers that implement DRI2
#define __DRI2_FLUSH "DRI2_Flush"
-#define __DRI2_FLUSH_VERSION 2
+#define __DRI2_FLUSH_VERSION 3
struct __DRI2flushExtensionRec {
__DRIextension base;
void (*flush)(__DRIdrawable *drawable);
- * Flush all rendering queue in the driver to the drm and
- * invalidate all buffers. The driver will call out to
- * getBuffers/getBuffersWithFormat before it starts rendering
- * again.
+ * Ask the driver to call getBuffers/getBuffersWithFormat before
+ * it starts rendering again.
- * \param drawable the drawable to flush and invalidate
+ * \param drawable the drawable to invalidate
- * \since 2
+ * \since 3
- void (*flushInvalidate)(__DRIdrawable *drawable);
+ void (*invalidate)(__DRIdrawable *drawable);