mirror of
				https://github.com/glfw/glfw.git
				synced 2025-10-31 20:52:38 +00:00 
			
		
		
		
	Added support for EGL_KHR_create_context.
This commit is contained in:
		
							parent
							
								
									3b6ec4e775
								
							
						
					
					
						commit
						edd554c115
					
				| @ -260,8 +260,56 @@ static int createContext(_GLFWwindow* window, | |||||||
|         setEGLattrib(attribs, index, EGL_CONTEXT_CLIENT_VERSION, wndconfig->glMajor); |         setEGLattrib(attribs, index, EGL_CONTEXT_CLIENT_VERSION, wndconfig->glMajor); | ||||||
|     } |     } | ||||||
|     else |     else | ||||||
|  |     { | ||||||
|         eglBindAPI(EGL_OPENGL_API); |         eglBindAPI(EGL_OPENGL_API); | ||||||
| 
 | 
 | ||||||
|  |         if (_glfwLibrary.EGL.KHR_create_context) | ||||||
|  |         { | ||||||
|  |             setEGLattrib(attribs, index, EGL_CONTEXT_MAJOR_VERSION_KHR, wndconfig->glMajor); | ||||||
|  |             setEGLattrib(attribs, index, EGL_CONTEXT_MINOR_VERSION_KHR, wndconfig->glMinor); | ||||||
|  | 
 | ||||||
|  |             if (wndconfig->glForward || wndconfig->glDebug || wndconfig->glRobustness) | ||||||
|  |             { | ||||||
|  |                 int flags = 0; | ||||||
|  | 
 | ||||||
|  |                 if (wndconfig->glForward) | ||||||
|  |                     flags |= EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR; | ||||||
|  | 
 | ||||||
|  |                 if (wndconfig->glDebug) | ||||||
|  |                     flags |= EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR; | ||||||
|  | 
 | ||||||
|  |                 if (wndconfig->glRobustness) | ||||||
|  |                     flags |= EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR; | ||||||
|  | 
 | ||||||
|  |                 setEGLattrib(attribs, index, EGL_CONTEXT_FLAGS_KHR, flags); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             if (wndconfig->glProfile) | ||||||
|  |             { | ||||||
|  |                 int flags = 0; | ||||||
|  | 
 | ||||||
|  |                 if (wndconfig->glProfile == GLFW_OPENGL_CORE_PROFILE) | ||||||
|  |                     flags = EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR; | ||||||
|  |                 else if (wndconfig->glProfile == GLFW_OPENGL_COMPAT_PROFILE) | ||||||
|  |                     flags = EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR; | ||||||
|  | 
 | ||||||
|  |                 setEGLattrib(attribs, index, EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, flags); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             if (wndconfig->glRobustness) | ||||||
|  |             { | ||||||
|  |                 int strategy; | ||||||
|  | 
 | ||||||
|  |                 if (wndconfig->glRobustness == GLFW_OPENGL_NO_RESET_NOTIFICATION) | ||||||
|  |                     strategy = EGL_NO_RESET_NOTIFICATION_KHR; | ||||||
|  |                 else if (wndconfig->glRobustness == GLFW_OPENGL_LOSE_CONTEXT_ON_RESET) | ||||||
|  |                     strategy = EGL_LOSE_CONTEXT_ON_RESET_KHR; | ||||||
|  | 
 | ||||||
|  |                 setEGLattrib(attribs, index, EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR, strategy); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     setEGLattrib(attribs, index, EGL_NONE, EGL_NONE); |     setEGLattrib(attribs, index, EGL_NONE, EGL_NONE); | ||||||
| 
 | 
 | ||||||
|     window->EGL.context = eglCreateContext(_glfwLibrary.EGL.display, |     window->EGL.context = eglCreateContext(_glfwLibrary.EGL.display, | ||||||
| @ -337,6 +385,9 @@ int _glfwInitOpenGL(void) | |||||||
|         return GL_FALSE; |         return GL_FALSE; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     if (_glfwPlatformExtensionSupported("EGL_KHR_create_context")) | ||||||
|  |         _glfwLibrary.EGL.KHR_create_context = GL_TRUE; | ||||||
|  | 
 | ||||||
|     return GL_TRUE; |     return GL_TRUE; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -85,6 +85,8 @@ typedef struct _GLFWlibraryEGL | |||||||
|     EGLDisplay      display; |     EGLDisplay      display; | ||||||
|     EGLint          majorVersion, minorVersion; |     EGLint          majorVersion, minorVersion; | ||||||
| 
 | 
 | ||||||
|  |     GLboolean       KHR_create_context; | ||||||
|  | 
 | ||||||
| #if defined(_GLFW_DLOPEN_LIBEGL) | #if defined(_GLFW_DLOPEN_LIBEGL) | ||||||
|     void*           libEGL;  // dlopen handle for libEGL.so
 |     void*           libEGL;  // dlopen handle for libEGL.so
 | ||||||
| #endif | #endif | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user