diff options
author | Keith Packard <keithp@keithp.com> | 2021-01-21 12:19:12 -0800 |
---|---|---|
committer | Dylan Baker <dylan.c.baker@intel.com> | 2021-01-25 10:07:15 -0800 |
commit | f59b95c7b39a95da71b90065041d88fece811dcf (patch) | |
tree | d3fa5322c39eaaf434f3f9766eaa6304f7356fa0 | |
parent | 7a4e04f3f8b912a4cb6f559a6d33cf7e3f507e41 (diff) |
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@keithp.com>
Reviewed-by: Adam Jackson <ajax@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)
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | src/glx/g_glxglvnddispatchfuncs.c | 20 | ||||
-rw-r--r-- | src/glx/g_glxglvnddispatchindices.h | 1 |
3 files changed, 22 insertions, 1 deletions
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 |