[Mesa-dev] [PATCH] glxinfo: print ES2 extension list

Ian Romanick idr at freedesktop.org
Tue Dec 3 12:42:22 PST 2013


I like the idea.  I haven't really looked at the code, so...

Acked-by: Ian Romanick <ian.d.romanick at intel.com>

But there is one comment below...

On 12/03/2013 09:58 AM, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at 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);
> 



More information about the mesa-dev mailing list