X-Git-Url: https://git.ralfj.de/gltest.git/blobdiff_plain/520f5e8cbcbbe69da6fa878fac2200f7bf302d68..ce1b46da645fdcac80fc9c71082bb5cb40166576:/eglbackend.cpp diff --git a/eglbackend.cpp b/eglbackend.cpp index ef27997..0d765e9 100644 --- a/eglbackend.cpp +++ b/eglbackend.cpp @@ -54,13 +54,7 @@ static void exitEglError(const char *what) exit(1); } -static const EGLint context_attribs[] = { -#ifdef CON_GLES2 - EGL_CONTEXT_CLIENT_VERSION, 2, -#endif - EGL_NONE -}; -static const EGLint config_attribs[] = { +static const EGLint configAttribs[] = { EGL_RED_SIZE, 4, EGL_GREEN_SIZE, 4, EGL_BLUE_SIZE, 4, @@ -71,6 +65,12 @@ static const EGLint config_attribs[] = { #endif EGL_NONE, }; +static const EGLint contextAttribs[] = { +#ifdef CON_GLES2 + EGL_CONTEXT_CLIENT_VERSION, 2, +#endif + EGL_NONE +}; VisualID EGLBackend::initialize(Display *xDisplay) { @@ -84,6 +84,7 @@ VisualID EGLBackend::initialize(Display *xDisplay) exitEglError("Failed to initialize EGL"); printf("Using EGL version: %d.%d\n", eglMajor, eglMinor); if (eglMajor == 1 && eglMinor < 3) { + // Choosing the GL context version requires EGL 1.3 fprintf(stderr, "Need at least EGL 1.3 to function properly\n"); exit(1); } @@ -96,11 +97,11 @@ VisualID EGLBackend::initialize(Display *xDisplay) // get an appropriate config EGLConfig configs[1]; EGLint count; - if (eglChooseConfig(display, config_attribs, configs, 1, &count) == EGL_FALSE){ - exitEglError("Failed to choose config"); + if (eglChooseConfig(display, configAttribs, configs, 1, &count) == EGL_FALSE){ + exitEglError("Failed to choose framebuffer configuration"); } if (count == 0) { - fprintf(stderr, "Found no matching EGL configuration\n"); + fprintf(stderr, "Found no matching framebuffer configuration\n"); exit(1); } config = configs[0]; @@ -116,7 +117,7 @@ void EGLBackend::createContext(Window window) assert(display != EGL_NO_DISPLAY && context == EGL_NO_CONTEXT); surface = eglCreateWindowSurface(display, config, window, NULL); // create an EGL context and use it with the surface - context = eglCreateContext(display, config, EGL_NO_CONTEXT, context_attribs); + context = eglCreateContext(display, config, EGL_NO_CONTEXT, contextAttribs); if (context == EGL_NO_CONTEXT) exitEglError("Failed to create context"); if (eglMakeCurrent(display, surface, surface, context) == EGL_FALSE) @@ -150,12 +151,11 @@ void EGLBackend::setSwapInterval(int i) const { assert(context != EGL_NO_CONTEXT); // check if swap interval value is supported - EGLint val; - eglGetConfigAttrib(display, config, EGL_MIN_SWAP_INTERVAL, &val); - if (i < val) { - fprintf(stderr, "Cannot set swap interval to %d, minimum supported value is %d\n", i, val); + if (i < 0) { + fprintf(stderr, "Cannot set swap interval to %d, must not be negative\n", i); exit(1); } + EGLint val; eglGetConfigAttrib(display, config, EGL_MAX_SWAP_INTERVAL, &val); if (i > val) { fprintf(stderr, "Cannot set swap interval to %d, maximum supported value is %d\n", i, val);