From 163fa83fac1d6e9fcdca37917a40f00a968703eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Camilla=20L=C3=B6wy?= Date: Fri, 14 May 2021 17:22:26 +0200 Subject: [PATCH] EGL: Fix creation of single-buffered windows The EGL backend ignored the state of GLFW_DOUBLEBUFFER and always created a double-buffered EGL window. This sets the EGL_RENDER_BUFFER attribute at EGL window creation appropriately. Fixes #1843. (cherry picked from commit 114776a24605418e6d719d2f30141e351e93c6e0) --- src/egl_context.c | 5 ++++- src/egl_context.h | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/egl_context.c b/src/egl_context.c index 6288fb7c..8feb211d 100644 --- a/src/egl_context.c +++ b/src/egl_context.c @@ -173,7 +173,7 @@ static GLFWbool chooseEGLConfig(const _GLFWctxconfig* ctxconfig, u->stencilBits = getEGLConfigAttrib(n, EGL_STENCIL_SIZE); u->samples = getEGLConfigAttrib(n, EGL_SAMPLES); - u->doublebuffer = GLFW_TRUE; + u->doublebuffer = desired->doublebuffer; u->handle = (uintptr_t) n; usableCount++; @@ -596,6 +596,9 @@ GLFWbool _glfwCreateContextEGL(_GLFWwindow* window, setAttrib(EGL_GL_COLORSPACE_KHR, EGL_GL_COLORSPACE_SRGB_KHR); } + if (!fbconfig->doublebuffer) + setAttrib(EGL_RENDER_BUFFER, EGL_SINGLE_BUFFER); + setAttrib(EGL_NONE, EGL_NONE); window->context.egl.surface = diff --git a/src/egl_context.h b/src/egl_context.h index 6d42e11c..2a752e69 100644 --- a/src/egl_context.h +++ b/src/egl_context.h @@ -80,6 +80,8 @@ typedef struct wl_egl_window* EGLNativeWindowType; #define EGL_OPENGL_ES_API 0x30a0 #define EGL_OPENGL_API 0x30a2 #define EGL_NONE 0x3038 +#define EGL_RENDER_BUFFER 0x3086 +#define EGL_SINGLE_BUFFER 0x3085 #define EGL_EXTENSIONS 0x3055 #define EGL_CONTEXT_CLIENT_VERSION 0x3098 #define EGL_NATIVE_VISUAL_ID 0x302e