From: Marek Olšák <marek.ol...@amd.com> --- src/xdemos/glxinfo.c | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-)
diff --git a/src/xdemos/glxinfo.c b/src/xdemos/glxinfo.c index c9edc6a..a008ea8 100644 --- a/src/xdemos/glxinfo.c +++ b/src/xdemos/glxinfo.c @@ -760,7 +760,7 @@ create_context_flags(Display *dpy, GLXFBConfig fbconfig, int major, int minor, */ static GLXContext create_context_with_config(Display *dpy, GLXFBConfig config, - Bool coreProfile, Bool direct) + Bool coreProfile, Bool es2Profile, Bool direct) { GLXContext ctx = 0; @@ -787,6 +787,21 @@ create_context_with_config(Display *dpy, GLXFBConfig config, return 0; } + if (es2Profile) { +#ifdef GLX_CONTEXT_ES2_PROFILE_BIT_EXT + if (extension_supported("GLX_EXT_create_context_es2_profile", + glXQueryExtensionsString(dpy, 0))) { + ctx = create_context_flags(dpy, config, 2, 0, 0x0, + GLX_CONTEXT_ES2_PROFILE_BIT_EXT, + direct); + return ctx; + } + return 0; +#else + return 0; +#endif + } + /* GLX should return a context of the latest GL version that supports * the full profile. */ @@ -832,8 +847,8 @@ choose_xvisinfo(Display *dpy, int scrnum) static Bool print_screen_info(Display *dpy, int scrnum, Bool allowDirect, - Bool coreProfile, Bool limits, Bool singleLine, - Bool coreWorked) + Bool coreProfile, Bool es2Profile, Bool limits, + Bool singleLine, Bool coreWorked) { Window win; XSetWindowAttributes attr; @@ -843,7 +858,8 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect, XVisualInfo *visinfo; int width = 100, height = 100; GLXFBConfig *fbconfigs; - const char *oglstring = coreProfile ? "OpenGL core profile" : "OpenGL"; + const char *oglstring = coreProfile ? "OpenGL core profile" : + es2Profile ? "OpenGL ES profile" : "OpenGL"; root = RootWindow(dpy, scrnum); @@ -853,30 +869,30 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect, fbconfigs = choose_fb_config(dpy, scrnum); if (fbconfigs) { ctx = create_context_with_config(dpy, fbconfigs[0], - coreProfile, allowDirect); + coreProfile, es2Profile, allowDirect); if (!ctx && allowDirect && !coreProfile) { /* try indirect */ ctx = create_context_with_config(dpy, fbconfigs[0], - coreProfile, False); + coreProfile, es2Profile, False); } visinfo = glXGetVisualFromFBConfig(dpy, fbconfigs[0]); XFree(fbconfigs); } - else if (!coreProfile) { + else if (!coreProfile && !es2Profile) { visinfo = choose_xvisinfo(dpy, scrnum); if (visinfo) ctx = glXCreateContext(dpy, visinfo, NULL, allowDirect); } else visinfo = NULL; - if (!visinfo && !coreProfile) { + if (!visinfo && !coreProfile && !es2Profile) { fprintf(stderr, "Error: couldn't find RGB GLX visual or fbconfig\n"); return False; } if (!ctx) { - if (!coreProfile) + if (!coreProfile && !es2Profile) fprintf(stderr, "Error: glXCreateContext failed\n"); XFree(visinfo); return False; @@ -990,7 +1006,7 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect, #endif CheckError(__LINE__); #ifdef GL_VERSION_3_0 - if (version >= 30) { + if (version >= 30 && !es2Profile) { GLint flags; glGetIntegerv(GL_CONTEXT_FLAGS, &flags); printf("%s context flags: %s\n", oglstring, context_flags_string(flags)); @@ -998,7 +1014,7 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect, #endif CheckError(__LINE__); #ifdef GL_VERSION_3_2 - if (version >= 32) { + if (version >= 32 && !es2Profile) { GLint mask; glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &mask); printf("%s profile mask: %s\n", oglstring, profile_mask_string(mask)); @@ -1730,8 +1746,9 @@ main(int argc, char *argv[]) print_display_info(dpy); for (scrnum = 0; scrnum < numScreens; scrnum++) { mesa_hack(dpy, scrnum); - coreWorked = print_screen_info(dpy, scrnum, allowDirect, True, limits, singleLine, False); - print_screen_info(dpy, scrnum, allowDirect, False, limits, singleLine, coreWorked); + coreWorked = print_screen_info(dpy, scrnum, allowDirect, True, False, limits, singleLine, False); + print_screen_info(dpy, scrnum, allowDirect, False, False, limits, singleLine, coreWorked); + print_screen_info(dpy, scrnum, allowDirect, False, True, False, singleLine, True); printf("\n"); print_visual_info(dpy, scrnum, mode); -- 1.8.3.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev