Mesa (staging/21.0): glx: Provide glvnd wrapper for glXSwapIntervalEXT

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jan 25 18:08:54 UTC 2021


Module: Mesa
Branch: staging/21.0
Commit: f59b95c7b39a95da71b90065041d88fece811dcf
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f59b95c7b39a95da71b90065041d88fece811dcf

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>
(cherry picked from commit d548d781eee91842695cf54a3161348bf6a06a2e)

---

 .pick_status.json                   |  2 +-
 src/glx/g_glxglvnddispatchfuncs.c   | 20 ++++++++++++++++++++
 src/glx/g_glxglvnddispatchindices.h |  1 +
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/.pick_status.json b/.pick_status.json
index cdf797d4d1e..df27e3365f8 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -427,7 +427,7 @@
         "description": "glx: Provide glvnd wrapper for glXSwapIntervalEXT",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "master_sha": null,
         "because_sha": "60ebeb4608a871ba89ba081c1c6e7ebdd5efec9a"
     },
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