X-Git-Url: https://git.ralfj.de/gltest.git/blobdiff_plain/aa4575e1aa768daff8ca10c7a8a06aa0603e998f..520f5e8cbcbbe69da6fa878fac2200f7bf302d68:/glxbackend.cpp diff --git a/glxbackend.cpp b/glxbackend.cpp index ff126eb..3ebc878 100644 --- a/glxbackend.cpp +++ b/glxbackend.cpp @@ -1,19 +1,42 @@ +/* gltest - small OpenGL tearing test program + * Copyright (C) 2012-2013 Ralf Jung + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + #include "glxbackend.h" +#include "glutil.h" #include #include +#include #include #include -/* attributes for a double buffered visual in RGBA format with at least -* 4 bits per color */ +#if !defined(CON_GL1) +#error "Valid GL contexts for GLX are: GL1" +#endif + +// attributes for a double buffered visual in RGBA format with at least 4 bits per color static int attrList[] = -{ +{ GLX_RGBA, GLX_DOUBLEBUFFER, - GLX_RED_SIZE, 4, - GLX_GREEN_SIZE, 4, + GLX_RED_SIZE, 4, + GLX_GREEN_SIZE, 4, GLX_BLUE_SIZE, 4, - None + None }; VisualID GLXBackend::initialize(Display *display) @@ -23,7 +46,7 @@ VisualID GLXBackend::initialize(Display *display) // debugging: show version information int glxMajor, glxMinor; glXQueryVersion(display, &glxMajor, &glxMinor); - printf("Using GLX version %d.%d\n", glxMajor, glxMinor); + printf("Using GLX version: %d.%d\n", glxMajor, glxMinor); // check for swap control functions const char *extensions = glXQueryExtensionsString(display, DefaultScreen(display)); if (std::string(extensions).find("GLX_MESA_swap_control") != std::string::npos) { @@ -54,6 +77,9 @@ void GLXBackend::createContext(Window window) context = glXCreateContext(display, vi, 0, GL_TRUE); glXMakeCurrent(display, window, context); assert(glXIsDirect(display, context)); + printf("Using GL version: %s\n", glGetString(GL_VERSION)); + // initialise GL utilities + resolveFunctionPointers((T_glGetProcAddress)glXGetProcAddress); } GLXBackend::~GLXBackend() @@ -80,6 +106,8 @@ void GLXBackend::setSwapInterval(int i) const funSwapIntervalExt(display, window, i); else if (funSwapIntervalMesa) funSwapIntervalMesa(i); - else - assert(false && "At least one of glXSwapIntervalMESA, glXSwapIntervalEXT must be provided by the system"); + else { + fprintf(stderr, "At least one of glXSwapIntervalMESA, glXSwapIntervalEXT must be provided by the system\n"); + abort(); + } }