blob: 499293c36fdcf27bc6b95ac78524bc2f243de33c [file] [log] [blame]
Name
KHR_create_context_no_error
Name Strings
EGL_KHR_create_context_no_error
Contributors
Maurice Ribble
Dominik Witczak
Christophe Riccio
Piers Daniell
Jon Leech
James Jones
Daniel Kartch
Steve Hill
Jan-Harald Fredriksen
Contact
Maurice Ribble (mribble 'at' qti.qualcomm.com)
Status
Complete.
Approved by the Khronos Board of Promoters on May 8, 2015.
Version
Version 6, May 8, 2015
Number
EGL Extension #91
Dependencies
Requires EGL 1.4.
Written against the EGL 1.4 specification.
This spec interacts with GL_KHR_no_error (or equivalent) extension.
Overview
This extension allows the creation of an OpenGL or OpenGL ES context that
doesn't generate errors if the context supports a no error mode. The
implications of this feature are discussed in the GL_KHR_no_error
extension.
New Procedures and Functions
None
New Tokens
Accepted as an attribute name in the <*attrib_list> argument to
eglCreateContext:
EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
Additions to the EGL 1.4 Specification
Add the following to section 3.7.1 "Creating Rendering Contexts":
EGL_CONTEXT_OPENGL_NO_ERROR_KHR indicates whether a faster and lower power
mode should be enabled for the OpenGL ES context. In this mode instead of
GL errors occurring as defined in the OpenGL ES spec those errors will
result in undefined behavior. The default value of
EGL_CONTEXT_OPENGL_NO_ERROR_KHR is EGL_FALSE.
Errors
BAD_MATCH is generated if the value of EGL_CONTEXT_OPENGL_NO_ERROR_KHR
used to create <share_context> does not match the value of
EGL_CONTEXT_OPENGL_NO_ERROR_KHR for the context being created.
BAD_MATCH is generated if the EGL_CONTEXT_OPENGL_NO_ERROR_KHR is TRUE at
the same time as a debug or robustness context is specified.
New State
None
Conformance Tests
TBD
Issues
(1) How does this extension interact with debug and robust contexts?
RESOLVED: We decided it is an error in EGL if these bits were set at the same
time.
(2) Can a EGL_CONTEXT_OPENGL_NO_ERROR_KHR contexts share resources with
normal contexts?
RESOLVED: To join a share group all the contexts in that share group must
have this set the same or creation of the context fails.
(3) Can we also do this on GLX/WGL?
RESOLVED: This is an EGL extension. GLX/WGL should be handled with separate
extensions.
(4) Should this extension also expose a "no thread safety" mode? For example
to do the rendering on one thread but uploading data or compiling shaders
from others threads without having the cost of threaded safety kicking in
because none of these tasks overlap so we can handle with sync objects.
Compiling shaders, loading data and rendering are areas that removed
threading may help.
RESOLVED: No, this should be done as a separate extension.
(5) Should this be GL specific?
RESOLVED: Yes, because other context creation tokens have been API specific.
This is also the safer path since it's unknown if other APIs might want to do
this slightly differently.
(6) Should creating a context fail if the context created context does not
support a no error mode?
RESOLVED: No. Expect context creation to succeed even if the implementation
can't honor the request for a no error context. This reduces the number of
reasons creating a context can fail and seems to be a more forward looking
resolution considering context flags allow GL apps to query what context
flags are set.
Revision History
Rev. Date Author Changes
---- ------------ --------- ----------------------------------------
1 Jan 28, 2015 ribble Initial version
2 Jan 29, 2015 ribble Added issues list
3 Jan 30, 2015 ribble Split into separate GL and EGL extensions
4 Feb 18, 2015 ribble Resolved issues and cleanup
5 Feb 25, 2015 ribble Rename, better define errors and cleanup
6 May 8, 2015 Jon Leech Assign enum value and release.