EGL: Use EGL_EXT_present_opaque when available
This extensions allows GLFW to instruct the driver to ignore the alpha bits, even in formats which contain them. This makes it possible to use the alpha bits as extra storage, without it affecting the end result getting displayed to the user. Fixes #1434 Fixes #1803
This commit is contained in:
parent
68879081cb
commit
6281f498c8
@ -472,6 +472,8 @@ GLFWbool _glfwInitEGL(void)
|
|||||||
extensionSupportedEGL("EGL_KHR_get_all_proc_addresses");
|
extensionSupportedEGL("EGL_KHR_get_all_proc_addresses");
|
||||||
_glfw.egl.KHR_context_flush_control =
|
_glfw.egl.KHR_context_flush_control =
|
||||||
extensionSupportedEGL("EGL_KHR_context_flush_control");
|
extensionSupportedEGL("EGL_KHR_context_flush_control");
|
||||||
|
_glfw.egl.EXT_present_opaque =
|
||||||
|
extensionSupportedEGL("EGL_EXT_present_opaque");
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return GLFW_TRUE;
|
||||||
}
|
}
|
||||||
@ -646,6 +648,9 @@ GLFWbool _glfwCreateContextEGL(_GLFWwindow* window,
|
|||||||
if (!fbconfig->doublebuffer)
|
if (!fbconfig->doublebuffer)
|
||||||
setAttrib(EGL_RENDER_BUFFER, EGL_SINGLE_BUFFER);
|
setAttrib(EGL_RENDER_BUFFER, EGL_SINGLE_BUFFER);
|
||||||
|
|
||||||
|
if (_glfw.egl.EXT_present_opaque)
|
||||||
|
setAttrib(EGL_PRESENT_OPAQUE_EXT, !fbconfig->transparent);
|
||||||
|
|
||||||
setAttrib(EGL_NONE, EGL_NONE);
|
setAttrib(EGL_NONE, EGL_NONE);
|
||||||
|
|
||||||
native = _glfw.platform.getEGLNativeWindow(window);
|
native = _glfw.platform.getEGLNativeWindow(window);
|
||||||
|
@ -177,6 +177,7 @@ typedef const GLubyte* (APIENTRY * PFNGLGETSTRINGIPROC)(GLenum,GLuint);
|
|||||||
#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
|
#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
|
||||||
#define EGL_PLATFORM_X11_EXT 0x31d5
|
#define EGL_PLATFORM_X11_EXT 0x31d5
|
||||||
#define EGL_PLATFORM_WAYLAND_EXT 0x31d8
|
#define EGL_PLATFORM_WAYLAND_EXT 0x31d8
|
||||||
|
#define EGL_PRESENT_OPAQUE_EXT 0x31df
|
||||||
#define EGL_PLATFORM_ANGLE_ANGLE 0x3202
|
#define EGL_PLATFORM_ANGLE_ANGLE 0x3202
|
||||||
#define EGL_PLATFORM_ANGLE_TYPE_ANGLE 0x3203
|
#define EGL_PLATFORM_ANGLE_TYPE_ANGLE 0x3203
|
||||||
#define EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE 0x320d
|
#define EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE 0x320d
|
||||||
@ -803,6 +804,7 @@ struct _GLFWlibrary
|
|||||||
GLFWbool EXT_platform_base;
|
GLFWbool EXT_platform_base;
|
||||||
GLFWbool EXT_platform_x11;
|
GLFWbool EXT_platform_x11;
|
||||||
GLFWbool EXT_platform_wayland;
|
GLFWbool EXT_platform_wayland;
|
||||||
|
GLFWbool EXT_present_opaque;
|
||||||
GLFWbool ANGLE_platform_angle;
|
GLFWbool ANGLE_platform_angle;
|
||||||
GLFWbool ANGLE_platform_angle_opengl;
|
GLFWbool ANGLE_platform_angle_opengl;
|
||||||
GLFWbool ANGLE_platform_angle_d3d;
|
GLFWbool ANGLE_platform_angle_d3d;
|
||||||
|
Loading…
Reference in New Issue
Block a user