mesa/progs/xdemos/pbinfo.c

108 lines
2.1 KiB
C

/*
* Print list of fbconfigs and test each to see if a pbuffer can be created
* for that config.
*
* Brian Paul
* April 1997
* Updated on 5 October 2002.
*/
#include <X11/Xlib.h>
#include <stdio.h>
#include <string.h>
#include "pbutil.h"
static void
PrintConfigs(Display *dpy, int screen, Bool horizFormat)
{
FBCONFIG *fbConfigs;
int nConfigs;
int i;
fbConfigs = GetAllFBConfigs(dpy, screen, &nConfigs);
if (!nConfigs || !fbConfigs) {
printf("Error: glxGetFBConfigs failed\n");
XFree(fbConfigs);
return;
}
printf("Number of fbconfigs: %d\n", nConfigs);
if (horizFormat) {
printf(" ID VisualType Depth Lvl RGB CI DB Stereo R G B A");
printf(" Z S AR AG AB AA MSbufs MSnum Pbuffer Float\n");
}
/* Print config info */
for (i = 0; i < nConfigs; i++) {
PrintFBConfigInfo(dpy, screen, fbConfigs[i], horizFormat);
}
/* free the list */
XFree(fbConfigs);
}
static void
PrintUsage(void)
{
printf("Options:\n");
printf(" -display <display-name> specify X display name\n");
printf(" -t print in tabular format\n");
printf(" -v print in verbose format\n");
printf(" -help print this information\n");
}
int
main(int argc, char *argv[])
{
Display *dpy;
int scrn;
char *dpyName = NULL;
Bool horizFormat = True;
int i;
for (i=1; i<argc; i++) {
if (strcmp(argv[i],"-display")==0) {
if (i+1<argc) {
dpyName = argv[i+1];
i++;
}
}
else if (strcmp(argv[i],"-t")==0) {
/* tabular format */
horizFormat = True;
}
else if (strcmp(argv[i],"-v")==0) {
/* verbose format */
horizFormat = False;
}
else if (strcmp(argv[i],"-help")==0) {
PrintUsage();
return 0;
}
else {
printf("Unknown option: %s\n", argv[i]);
}
}
dpy = XOpenDisplay(dpyName);
if (!dpy) {
printf("Error: couldn't open display %s\n", XDisplayName(dpyName));
return 1;
}
scrn = DefaultScreen(dpy);
PrintConfigs(dpy, scrn, horizFormat);
XCloseDisplay(dpy);
return 0;
}