On 12/05/2017 02:22 PM, Adam Jackson wrote:
This more or less ports EGL_KHR_no_config_context to GLX.
v2: Enable the extension only for those backends that support it.
v3: Fix glvnd path and dri2_convert_glx_attribs()
v4: Screeching signedness correctness, and disable a now
inappropriate test.
diff --git a/src/glx/g_glxglvnddispatchfuncs.c
b/src/glx/g_glxglvnddispatchfuncs.c
index 56d894eda7..04f6d8263a 100644
--- a/src/glx/g_glxglvnddispatchfuncs.c
+++ b/src/glx/g_glxglvnddispatchfuncs.c
@@ -164,7 +164,19 @@ static GLXContext dispatch_CreateContextAttribsARB(Display
*dpy,
__GLXvendorInfo *dd;
GLXContext ret;
- dd = GetDispatchFromFBConfig(dpy, config);
+ if (config) {
+ dd = GetDispatchFromFBConfig(dpy, config);
+ } else if (attrib_list) {
+ int i, screen;
+
+ for (i = 0; attrib_list[i * 2] != None; i++) {
+ if (attrib_list[i * 2] == GLX_SCREEN) {
+ screen = attrib_list[i * 2 + 1];
+ dd = GetDispatchFromDrawable(dpy, RootWindow(dpy, screen));
+ break;
+ }
+ }
+ }
if (dd == NULL)
return None;
That should just look up the vendor by screen number, not based on the
root window. Calling GetDispatchFromDrawable instead of
(__VND->getDynDispatch(dpy, screen)) requires an extra round trip to the
server.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev