Demos (master): glxinfo: add -s flag to print one extension per line

Brian Paul brianp at kemper.freedesktop.org
Fri Jan 21 01:36:52 UTC 2011


Module: Demos
Branch: master
Commit: 5624e128ad48ae785cd0274acdb9c177b6959c67
URL:    http://cgit.freedesktop.org/mesa/demos/commit/?id=5624e128ad48ae785cd0274acdb9c177b6959c67

Author: Alexandre Demers <alexandre.f.demers at gmail.com>
Date:   Thu Jan 20 18:36:32 2011 -0700

glxinfo: add -s flag to print one extension per line

Signed-off-by: Brian Paul <brianp at vmware.com>

---

 src/xdemos/glxinfo.c |   34 +++++++++++++++++++++++-----------
 1 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/src/xdemos/glxinfo.c b/src/xdemos/glxinfo.c
index e4ff3d5..c4e9861 100644
--- a/src/xdemos/glxinfo.c
+++ b/src/xdemos/glxinfo.c
@@ -110,7 +110,7 @@ struct visual_attribs
  * Print a list of extensions, with word-wrapping.
  */
 static void
-print_extension_list(const char *ext)
+print_extension_list(const char *ext, Bool singleLine)
 {
    const char *indentString = "    ";
    const int indent = 4;
@@ -127,7 +127,7 @@ print_extension_list(const char *ext)
       if (ext[j] == ' ' || ext[j] == 0) {
          /* found end of an extension name */
          const int len = j - i;
-         if (width + len > max) {
+         if ((!singleLine) && (width + len > max)) {
             /* start a new line */
             printf("\n");
             width = indent;
@@ -148,8 +148,15 @@ print_extension_list(const char *ext)
             j++;
             if (ext[j] == 0)
                break;
-            printf(", ");
-            width += 2;
+            if (singleLine) {
+               printf("\n");
+               width = indent;
+               printf("%s", indentString);
+            }
+            else {
+               printf(", ");
+               width += 2;
+            }
          }
       }
       j++;
@@ -412,7 +419,7 @@ print_limits(const char *extensions)
 
 
 static void
-print_screen_info(Display *dpy, int scrnum, Bool allowDirect, GLboolean limits)
+print_screen_info(Display *dpy, int scrnum, Bool allowDirect, GLboolean limits, Bool singleLine)
 {
    Window win;
    int attribSingle[] = {
@@ -555,14 +562,14 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect, GLboolean limits)
       printf("server glx vendor string: %s\n", serverVendor);
       printf("server glx version string: %s\n", serverVersion);
       printf("server glx extensions:\n");
-      print_extension_list(serverExtensions);
+      print_extension_list(serverExtensions, singleLine);
       printf("client glx vendor string: %s\n", clientVendor);
       printf("client glx version string: %s\n", clientVersion);
       printf("client glx extensions:\n");
-      print_extension_list(clientExtensions);
+      print_extension_list(clientExtensions, singleLine);
       printf("GLX version: %u.%u\n", glxVersionMajor, glxVersionMinor);
       printf("GLX extensions:\n");
-      print_extension_list(glxExtensions);
+      print_extension_list(glxExtensions, singleLine);
       printf("OpenGL vendor string: %s\n", glVendor);
       printf("OpenGL renderer string: %s\n", glRenderer);
       printf("OpenGL version string: %s\n", glVersion);
@@ -574,7 +581,7 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect, GLboolean limits)
 #endif
 
       printf("OpenGL extensions:\n");
-      print_extension_list(glExtensions);
+      print_extension_list(glExtensions, singleLine);
       if (limits)
          print_limits(glExtensions);
    }
@@ -1201,7 +1208,7 @@ find_best_visual(Display *dpy, int scrnum)
 static void
 usage(void)
 {
-   printf("Usage: glxinfo [-v] [-t] [-h] [-i] [-b] [-display <dname>]\n");
+   printf("Usage: glxinfo [-v] [-t] [-h] [-i] [-b] [-s] ][-display <dname>]\n");
    printf("\t-v: Print visuals info in verbose form.\n");
    printf("\t-t: Print verbose table.\n");
    printf("\t-display <dname>: Print GLX visuals on specified server.\n");
@@ -1209,6 +1216,7 @@ usage(void)
    printf("\t-i: Force an indirect rendering context.\n");
    printf("\t-b: Find the 'best' visual and print its number.\n");
    printf("\t-l: Print interesting OpenGL limits.\n");
+   printf("\t-s: Print a single extension per line.\n");
 }
 
 
@@ -1222,6 +1230,7 @@ main(int argc, char *argv[])
    GLboolean findBest = GL_FALSE;
    GLboolean limits = GL_FALSE;
    Bool allowDirect = True;
+   Bool singleLine = False;
    int i;
 
    for (i = 1; i < argc; i++) {
@@ -1248,6 +1257,9 @@ main(int argc, char *argv[])
          usage();
          return 0;
       }
+      else if(strcmp(argv[i], "-s") == 0) {
+         singleLine = True;
+      }
       else {
          printf("Unknown option `%s'\n", argv[i]);
          usage();
@@ -1272,7 +1284,7 @@ main(int argc, char *argv[])
       print_display_info(dpy);
       for (scrnum = 0; scrnum < numScreens; scrnum++) {
          mesa_hack(dpy, scrnum);
-         print_screen_info(dpy, scrnum, allowDirect, limits);
+         print_screen_info(dpy, scrnum, allowDirect, limits, singleLine);
          printf("\n");
          print_visual_info(dpy, scrnum, mode);
 #ifdef GLX_VERSION_1_3




More information about the mesa-commit mailing list