1 /*
2  * Copyright © 2013 Intel Corporation
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the "Software"),
6  * to deal in the Software without restriction, including without limitation
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  * and/or sell copies of the Software, and to permit persons to whom the
9  * Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice (including the next
12  * paragraph) shall be included in all copies or substantial portions of the
13  * Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21  * IN THE SOFTWARE.
22  */
23 
24 #include <stdio.h>
25 
26 #include "wgl_common.h"
27 #include <epoxy/gl.h>
28 
29 static int
test_function(HDC hdc)30 test_function(HDC hdc)
31 {
32     bool pass = true;
33     int val;
34     HGLRC ctx;
35 
36     ctx = wglCreateContext(hdc);
37     if (!ctx) {
38         fputs("Failed to create wgl context\n", stderr);
39         return 1;
40     }
41     if (!wglMakeCurrent(hdc, ctx)) {
42         fputs("Failed to make context current\n", stderr);
43         return 1;
44     }
45 
46     /* GL 1.0 APIs are available as symbols in opengl32.dll. */
47     glEnable(GL_LIGHTING);
48     val = 0;
49     glGetIntegerv(GL_LIGHTING, &val);
50     if (!val) {
51         fputs("Enabling GL_LIGHTING didn't stick.\n", stderr);
52         pass = false;
53     }
54 
55     if (epoxy_gl_version() >= 15 ||
56         epoxy_has_gl_extension("GL_ARB_vertex_buffer_object")) {
57         glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 1234);
58 
59         val = 0;
60         glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &val);
61         if (val != 1234) {
62             printf("GL_ELEMENT_ARRAY_BUFFER_BINDING didn't stick: %d\n", val);
63             pass = false;
64         }
65     }
66 
67     wglMakeCurrent(NULL, NULL);
68     wglDeleteContext(ctx);
69 
70     return !pass;
71 }
72 
73 int
main(int argc,char ** argv)74 main(int argc, char **argv)
75 {
76     make_window_and_test(test_function);
77 
78     /* UNREACHED */
79     return 1;
80 }
81