I like the idea. I haven't really looked at the code, so... Acked-by: Ian Romanick <ian.d.roman...@intel.com>
But there is one comment below... On 12/03/2013 09:58 AM, Marek Olšák wrote: > 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 This looks weird. Maybe just one "return 0" outside the #ifdef block? > + } > + > /* 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); > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev