| Index: client/deps/glbench/src/glx_stuff.cc
|
| diff --git a/client/deps/glbench/src/glx_stuff.cc b/client/deps/glbench/src/glx_stuff.cc
|
| index 57b481dd17814bd00ee044b3bad2d89d8fe23b07..758ea29346bb74206d75c94045c9bbb30654567b 100644
|
| --- a/client/deps/glbench/src/glx_stuff.cc
|
| +++ b/client/deps/glbench/src/glx_stuff.cc
|
| @@ -3,11 +3,12 @@
|
| // found in the LICENSE file.
|
|
|
| #include <string.h>
|
| +#include <GL/glx.h>
|
|
|
| #include "main.h"
|
| #include "xlib_window.h"
|
|
|
| -GLXContext glx_context = NULL;
|
| +static GLXContext glx_context = NULL;
|
|
|
| #define F(fun, type) type fun = NULL;
|
| LIST_PROC_FUNCTIONS(F)
|
| @@ -17,24 +18,33 @@ bool Init() {
|
| return XlibInit();
|
| }
|
|
|
| +VisualID GetVisualID() {
|
| + int screen = DefaultScreen(xlib_display);
|
| + int attrib[] = {
|
| + GLX_DOUBLEBUFFER, True,
|
| + GLX_RED_SIZE, 1,
|
| + GLX_GREEN_SIZE, 1,
|
| + GLX_BLUE_SIZE, 1,
|
| + GLX_DEPTH_SIZE, 1,
|
| + GLX_STENCIL_SIZE, 1,
|
| + GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
|
| + None
|
| + };
|
| + int nelements;
|
| + GLXFBConfig *fbconfigs = glXChooseFBConfig(xlib_display, screen,
|
| + attrib, &nelements);
|
| + CHECK(nelements >= 1);
|
| + int visual_id;
|
| + glXGetFBConfigAttrib(xlib_display, fbconfigs[0], GLX_VISUAL_ID, &visual_id);
|
| + XFree(fbconfigs);
|
| + return static_cast<VisualID>(visual_id);
|
| +}
|
| +
|
| bool InitContext() {
|
| - XWindowAttributes attributes;
|
| - XGetWindowAttributes(xlib_display, xlib_window, &attributes);
|
| - XVisualInfo visual_info_template;
|
| - visual_info_template.visualid = XVisualIDFromVisual(attributes.visual);
|
| - int visual_info_count = 0;
|
| - XVisualInfo *visual_info_list = XGetVisualInfo(xlib_display, VisualIDMask,
|
| - &visual_info_template,
|
| - &visual_info_count);
|
| - glx_context = 0;
|
| - for (int i = 0; i < visual_info_count; ++i) {
|
| - glx_context = glXCreateContext(xlib_display, visual_info_list + i, 0, True);
|
| - if (glx_context) break;
|
| - }
|
| - XFree(visual_info_list);
|
| - if (!glx_context) {
|
| + glx_context = glXCreateContext(xlib_display, xlib_visinfo, 0, True);
|
| + if (!glx_context)
|
| return false;
|
| - }
|
| +
|
| if (!glXMakeCurrent(xlib_display, xlib_window, glx_context)) {
|
| glXDestroyContext(xlib_display, glx_context);
|
| return false;
|
|
|