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.
