|
|
|
@ -403,6 +403,8 @@ GLFWbool _glfwInitEGL(void) |
|
|
|
|
extensionSupportedEGL("EGL_KHR_gl_colorspace"); |
|
|
|
|
_glfw.egl.KHR_get_all_proc_addresses = |
|
|
|
|
extensionSupportedEGL("EGL_KHR_get_all_proc_addresses"); |
|
|
|
|
_glfw.egl.KHR_context_flush_control = |
|
|
|
|
extensionSupportedEGL("EGL_KHR_context_flush_control"); |
|
|
|
|
|
|
|
|
|
return GLFW_TRUE; |
|
|
|
|
} |
|
|
|
@ -440,6 +442,7 @@ GLFWbool _glfwCreateContextEGL(_GLFWwindow* window, |
|
|
|
|
EGLint attribs[40]; |
|
|
|
|
EGLConfig config; |
|
|
|
|
EGLContext share = NULL; |
|
|
|
|
int index = 0; |
|
|
|
|
|
|
|
|
|
if (!_glfw.egl.display) |
|
|
|
|
{ |
|
|
|
@ -480,7 +483,7 @@ GLFWbool _glfwCreateContextEGL(_GLFWwindow* window, |
|
|
|
|
|
|
|
|
|
if (_glfw.egl.KHR_create_context) |
|
|
|
|
{ |
|
|
|
|
int index = 0, mask = 0, flags = 0; |
|
|
|
|
int mask = 0, flags = 0; |
|
|
|
|
|
|
|
|
|
if (ctxconfig->client == GLFW_OPENGL_API) |
|
|
|
|
{ |
|
|
|
@ -529,21 +532,28 @@ GLFWbool _glfwCreateContextEGL(_GLFWwindow* window, |
|
|
|
|
|
|
|
|
|
if (flags) |
|
|
|
|
setEGLattrib(EGL_CONTEXT_FLAGS_KHR, flags); |
|
|
|
|
|
|
|
|
|
setEGLattrib(EGL_NONE, EGL_NONE); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
int index = 0; |
|
|
|
|
|
|
|
|
|
if (ctxconfig->client == GLFW_OPENGL_ES_API) |
|
|
|
|
setEGLattrib(EGL_CONTEXT_CLIENT_VERSION, ctxconfig->major); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
setEGLattrib(EGL_NONE, EGL_NONE); |
|
|
|
|
if (_glfw.egl.KHR_context_flush_control) |
|
|
|
|
{ |
|
|
|
|
if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_NONE) |
|
|
|
|
{ |
|
|
|
|
setEGLattrib(EGL_CONTEXT_RELEASE_BEHAVIOR_KHR, |
|
|
|
|
EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR); |
|
|
|
|
} |
|
|
|
|
else if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_FLUSH) |
|
|
|
|
{ |
|
|
|
|
setEGLattrib(EGL_CONTEXT_RELEASE_BEHAVIOR_KHR, |
|
|
|
|
EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Context release behaviors (GL_KHR_context_flush_control) are not yet
|
|
|
|
|
// supported on EGL but are not a hard constraint, so ignore and continue
|
|
|
|
|
setEGLattrib(EGL_NONE, EGL_NONE); |
|
|
|
|
|
|
|
|
|
window->context.egl.handle = eglCreateContext(_glfw.egl.display, |
|
|
|
|
config, share, attribs); |
|
|
|
|