Mesa (master): glx: Provide glvnd wrapper for glXSwapIntervalEXT

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Jan 23 11:04:51 UTC 2021


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

Author: Keith Packard <keithp at keithp.com>
Date:   Thu Jan 21 12:19:12 2021 -0800

glx: Provide glvnd wrapper for glXSwapIntervalEXT

When using glvnd, this function needs to be exposed through
getDispatchAddress or libglvnd will not find it.

Signed-off-by: Keith Packard <keithp at keithp.com>
Reviewed-by: Adam Jackson <ajax at redhat.com>
Fixes: 60ebeb4608a8 "glx: Implement GLX_EXT_swap_control for DRI2 and DRI3"
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8621>

---

 src/glx/g_glxglvnddispatchfuncs.c   | 20 ++++++++++++++++++++
 src/glx/g_glxglvnddispatchindices.h |  1 +
 2 files changed, 21 insertions(+)

diff --git a/src/glx/g_glxglvnddispatchfuncs.c b/src/glx/g_glxglvnddispatchfuncs.c
index 0f02ed2d321..e0ea27c0b18 100644
--- a/src/glx/g_glxglvnddispatchfuncs.c
+++ b/src/glx/g_glxglvnddispatchfuncs.c
@@ -87,6 +87,7 @@ const char * const __glXDispatchTableStrings[DI_LAST_INDEX] = {
     __ATTRIB(SelectEventSGIX),
     // glXSwapBuffers implemented by libglvnd
     __ATTRIB(SwapBuffersMscOML),
+    __ATTRIB(SwapIntervalEXT),
     __ATTRIB(SwapIntervalMESA),
     __ATTRIB(SwapIntervalSGI),
     // glXUseXFont implemented by libglvnd
@@ -893,6 +894,24 @@ static int dispatch_SwapIntervalMESA(unsigned int interval)
 
 
 
+static void dispatch_SwapIntervalEXT(Display *dpy, GLXDrawable drawable, int interval)
+{
+    PFNGLXSWAPINTERVALEXTPROC pSwapIntervalEXT;
+    __GLXvendorInfo *dd;
+
+    dd = GetDispatchFromDrawable(dpy, drawable);
+    if (dd == NULL)
+        return;
+
+    __FETCH_FUNCTION_PTR(SwapIntervalEXT);
+    if (pSwapIntervalEXT == NULL)
+        return;
+
+    pSwapIntervalEXT(dpy, drawable, interval);
+}
+
+
+
 static Bool dispatch_WaitForMscOML(Display *dpy, GLXDrawable drawable,
                                       int64_t target_msc, int64_t divisor,
                                       int64_t remainder, int64_t *ust,
@@ -974,6 +993,7 @@ const void * const __glXDispatchFunctions[DI_LAST_INDEX + 1] = {
     __ATTRIB(ReleaseTexImageEXT),
     __ATTRIB(SelectEventSGIX),
     __ATTRIB(SwapBuffersMscOML),
+    __ATTRIB(SwapIntervalEXT),
     __ATTRIB(SwapIntervalMESA),
     __ATTRIB(SwapIntervalSGI),
     __ATTRIB(WaitForMscOML),
diff --git a/src/glx/g_glxglvnddispatchindices.h b/src/glx/g_glxglvnddispatchindices.h
index 3ba50a74abb..b65d078098f 100644
--- a/src/glx/g_glxglvnddispatchindices.h
+++ b/src/glx/g_glxglvnddispatchindices.h
@@ -79,6 +79,7 @@ typedef enum __GLXdispatchIndex {
     DI_SelectEventSGIX,
     // SwapBuffers implemented by libglvnd
     DI_SwapBuffersMscOML,
+    DI_SwapIntervalEXT,
     DI_SwapIntervalMESA,
     DI_SwapIntervalSGI,
     // UseXFont implemented by libglvnd



More information about the mesa-commit mailing list