3 /* This demo modified by BrianP to accomodate Mesa and test
4 * the GLX 1.1 functions.
15 int visual_request0
[] = { None
}; /* don't need much of a visual */
16 int visual_request1
[] = { GLX_RGBA
, None
}; /* in case CI failed */
18 int main(int argc
, char **argv
)
20 char *display_name
= NULL
;
29 XSetWindowAttributes swa
;
34 if(!strcmp(argv
[1],"-display"))
35 display_name
= argv
[2];
37 fprintf(stderr
, "Usage: %s [-display <display>]\n",argv
[0]);
43 if (!(dpy
= XOpenDisplay(display_name
))) {
44 fprintf(stderr
,"Error: XOpenDisplay() failed.\n");
48 /* does the server know about OpenGL & GLX? */
50 if(!XQueryExtension(dpy
, "GLX", &dontcare
, &dontcare
, &dontcare
)) {
51 fprintf(stderr
,"This system doesn't appear to support OpenGL\n");
58 /* find the glx version */
59 if(glXQueryVersion(dpy
, &major
, &minor
))
60 printf("GLX Version: %d.%d\n", major
, minor
);
62 fprintf(stderr
, "Error: glXQueryVersion() failed.\n");
66 /* get screen number */
67 screen_num
= DefaultScreen(dpy
);
69 /* This #ifdef isn't redundant. It keeps the build from breaking
70 ** if you are building on a machine that has an old (1.0) version
73 ** This program could still be *run* on a machine that has an old
74 ** version of glx, even if it was *compiled* on a version that has
77 ** If compiled on a system with an old version of glx, then it will
78 ** never recognize glx extensions, since that code would have been
81 #ifdef GLX_VERSION_1_1
84 ** This test guarantees that glx, on the display you are inquiring,
85 ** suppports glXQueryExtensionsString().
87 if(minor
> 0 || major
> 1)
88 string
= (char *) glXQueryExtensionsString(dpy
, screen_num
);
93 printf("GLX Extensions (client & server): %s\n",
96 fprintf(stderr
, "Error: glXQueryExtensionsString() failed.\n");
100 if (minor
>0 || major
>1) {
101 printf("glXGetClientString(GLX_VENDOR): %s\n", glXGetClientString(dpy
,GLX_VENDOR
));
102 printf("glXGetClientString(GLX_VERSION): %s\n", glXGetClientString(dpy
,GLX_VERSION
));
103 printf("glXGetClientString(GLX_EXTENSIONS): %s\n", glXGetClientString(dpy
,GLX_EXTENSIONS
));
104 printf("glXQueryServerString(GLX_VENDOR): %s\n", glXQueryServerString(dpy
,screen_num
,GLX_VENDOR
));
105 printf("glXQueryServerString(GLX_VERSION): %s\n", glXQueryServerString(dpy
,screen_num
,GLX_VERSION
));
106 printf("glXQueryServerString(GLX_EXTENSIONS): %s\n", glXQueryServerString(dpy
,screen_num
,GLX_EXTENSIONS
));
112 /* get any valid OpenGL visual */
113 if (!(vis
= glXChooseVisual(dpy
, screen_num
, visual_request0
))) {
114 if (!(vis
= glXChooseVisual(dpy
, screen_num
, visual_request1
))) {
115 fprintf(stderr
,"Error: glXChooseVisual() failed.\n");
121 ctx
= glXCreateContext(dpy
,vis
,0,GL_TRUE
);
124 root
= RootWindow(dpy
,vis
->screen
);
126 /* get RGBA colormap */
127 cmap
= XCreateColormap(dpy
, root
, vis
->visual
, AllocNone
);
131 swa
.border_pixel
= 0;
132 swa
.event_mask
= StructureNotifyMask
;
133 win
= XCreateWindow(dpy
, root
, 0, 0, 1, 1, 0, vis
->depth
,
134 InputOutput
,vis
->visual
,
135 CWBorderPixel
|CWColormap
|CWEventMask
,
138 glXMakeCurrent(dpy
,win
,ctx
);
140 string
= (char *) glGetString(GL_VERSION
);
143 printf("Mesa Version: %s\n", string
);
145 printf("OpenGL Version: %s\n", string
);
148 fprintf(stderr
, "Error: glGetString(GL_VERSION) failed.\n");
152 string
= (char *) glGetString(GL_EXTENSIONS
);
156 printf("Mesa Extensions: %s\n", string
);
158 printf("OpenGL Extensions: %s\n", string
);
161 fprintf(stderr
, "Error: glGetString(GL_EXTENSIONS) failed.\n");
165 string
= (char *) glGetString(GL_RENDERER
);
169 printf("Mesa Renderer: %s\n", string
);
171 printf("OpenGL renderer: %s\n", string
);
174 fprintf(stderr
, "Error: glGetString(GL_RENDERER) failed.\n");
179 ** This #ifdef prevents a build failure if you compile on an a
180 ** machine with an old GLU library.
182 ** If you build on a pre GLU 1.1 machine, you will never be able
183 ** to get glu info, even if you run on a GLU 1.1 or latter machine,
184 ** since the code has been #ifdef'ed out.
186 #ifdef GLU_VERSION_1_1
189 ** If the glx version is 1.1 or latter, gluGetString() is guaranteed
192 if(minor
> 0 || major
> 1)
193 string
= (char *) gluGetString(GLU_VERSION
);
198 printf("GLU Version: %s\n", string
);
200 fprintf(stderr
, "Error: gluGetString(GLU_VERSION) failed.\n");
204 if(minor
> 0 || major
> 1)
205 string
= (char *) gluGetString(GLU_EXTENSIONS
);
210 printf("GLU Extensions: %s\n", string
);
212 fprintf(stderr
, "Error: gluGetString(GLU_EXTENSIONS) failed.\n");