blob: 32e7ebc1f2682f32d9973700eac9131c8bc97b09 [file] [log] [blame]
Name
EXT_gl_colorspace_display_p3
Name Strings
EGL_EXT_gl_colorspace_display_p3_linear
EGL_EXT_gl_colorspace_display_p3
Contributors
Courtney Goeltzenleuchter
Jesse Hall
Contact
Courtney Goeltzenleuchter (courtneygo 'at' google.com)
IP Status
No known IP claims.
Status
Draft
Version
Version 2 - Oct 4, 2018
Number
EGL Extension #118
Extension Type
EGL display extension
Dependencies
These extensions are written against the wording of the EGL 1.5
specification (August 27, 2014).
These extensions require EGL_KHR_gl_colorspace.
Overview
Applications that want to use the Display-P3 color space (DCI-P3 primaries
and linear or sRGB-like transfer function) can use this extension to
communicate to the platform that framebuffer contents represent colors in
the Display-P3 color space.
The application is responsible for producing appropriate framebuffer
contents, but will typically use built-in sRGB encoding in OpenGL and OpenGL
ES to accomplish this.
New Procedures and Functions
None.
New Tokens
Accepted as attribute values for EGL_GL_COLORSPACE by
eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:
[[ If EGL_EXT_gl_colorspace_display_p3_linear is supported ]]
EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
[[ If EGL_EXT_gl_colorspace_display_p3 is supported ]]
EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
Modifications to the EGL 1.5 Specification
Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On-
Screen Rendering Surfaces, before "The default value of EGL_GL_COLORSPACE
is EGL_GL_COLORSPACE_LINEAR.":
[[ If EGL_EXT_gl_colorspace_display_p3_linear is supported ]]
If its value is EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT, then a linear
Display-P3 color space is assumed, with a corresponding
GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING value of GL_LINEAR.
[[ If EGL_EXT_gl_colorspace_display_p3 is supported ]]
If its value is EGL_GL_COLORSPACE_DISPLAY_P3_EXT, then a non-linear, sRGB
encoded Display-P3 color space is assumed, with a corresponding GL_FRAME-
BUFFER_ATTACHMENT_COLOR_ENCODING value of GL_SRGB.
Only OpenGL and OpenGL ES contexts which support sRGB rendering must
respect requests for EGL_GL_COLORSPACE_SRGB_KHR, and only to sRGB
formats supported by the context (normally just SRGB8).
Modify the 4th paragraph on the same page:
Note that the EGL_GL_COLORSPACE_SRGB attribute is used only by OpenGL and
OpenGL ES contexts supporting sRGB framebuffers. EGL itself does not
distinguish multiple colorspace models. Refer to the "sRGB Conversion"
sections of the OpenGL 4.4 and OpenGL ES 3.0 specifications for more
information.
Errors
Modify below error in the "Errors" section on page 34:
"If config does not support the OpenVG colorspace or alpha format at-
tributes specified in attrib list (as defined for eglCreatePlatformWindow-
Surface), an EGL_BAD_MATCH error is generated."
To include OpenGL colorspace as well:
"If config does not support the OpenGL colorspace, the OpenVG colorspace or
alpha format attributes specified in attrib list (as defined for eglCreate-
PlatformWindowSurface), an EGL_BAD_MATCH error is generated."
Issues
1. Removed section talking about HDR features, e.g. luminance > 80nits.
Do we want to keep that here in anticipation of HDR support in the future?
2. When creating an EGL surface, what happens when the specified colorspace
is not compatible with or supported by the EGLConfig?
RESOLVED: There is currently no way to query the compatibility of a
EGLConfig and colorspace pair. So the only option is to define an error
case similar to that of OpenVG colorspace, i.e. if config does not
support the colorspace specified in attrib list (as defined for egl-
CreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface),
an EGL_BAD_MATCH error is generated.
Revision History
Version 1, 2017/03/22
- Internal revisions
Version 2, 2018/10/04
- Fix typo to correct extension reference