| Name |
| |
| KHR_gl_colorspace |
| |
| Name Strings |
| |
| EGL_KHR_gl_colorspace |
| |
| Contact |
| |
| Jon Leech (jon 'at' alumni.caltech.edu) |
| |
| IP Status |
| |
| No known IP claims. |
| |
| Status |
| |
| Complete. |
| Version 3 approved by the EGL Working Group on September 13, 2013. |
| Ratified by the Khronos Board of Promoters on December 13, 2013. |
| |
| Version |
| |
| Version 5, 2014/07/15 |
| |
| Number |
| |
| EGL Extension #66 |
| |
| Dependencies |
| |
| EGL 1.4 is required. |
| |
| Some of the capabilities of these extensions are only available via |
| OpenGL or OpenGL ES contexts supporting sRGB default framebuffers, |
| as defined below. |
| |
| Overview |
| |
| Applications may wish to use sRGB format default framebuffers to |
| more easily achieve sRGB rendering to display devices. This |
| extension allows creating EGLSurfaces which will be rendered to in |
| sRGB by OpenGL contexts supporting that capability. |
| |
| New Procedures and Functions |
| |
| None. |
| |
| New Tokens |
| |
| Accepted as an attribute name by eglCreateWindowSurface, |
| eglCreatePbufferSurface and eglCreatePixmapSurface |
| |
| EGL_GL_COLORSPACE_KHR 0x309D |
| |
| Accepted as attribute values for EGL_GL_COLORSPACE_KHR by |
| eglCreateWindowSurface, eglCreatePbufferSurface and |
| eglCreatePixmapSurface |
| |
| EGL_GL_COLORSPACE_SRGB_KHR 0x3089 |
| EGL_GL_COLORSPACE_LINEAR_KHR 0x308A |
| |
| (these enums are aliases of the corresponding VG colorspace |
| attribute values from EGL 1.3) |
| |
| Additions to the EGL 1.4 Specification |
| |
| Modify the 2nd paragraph on page 29 in section 3.5.1 "Creating |
| On-Screen Rendering Surfaces: |
| |
| "Note that the EGL_GL_COLORSPACE_KHR 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.3 and OpenGL ES 3.0 |
| specifications for more information." |
| |
| |
| Add preceding the 4th paragraph on this page: |
| |
| "EGL_GL_COLORSPACE_KHR specifies the color space used by OpenGL and |
| OpenGL ES when rendering to the surface[fn1]. If its value is |
| EGL_GL_COLORSPACE_SRGB_KHR, then a non-linear, perceptually uniform |
| color space is assumed, with a corresponding |
| GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING value of GL_SRGB. If its value |
| is EGL_GL_COLORSPACE_LINEAR_KHR, then a linear color space is assumed, |
| with a corresponding GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING value of |
| GL_LINEAR. The default value of EGL_GL_COLORSPACE_KHR is |
| EGL_GL_COLORSPACE_LINEAR_KHR. |
| |
| [fn1] 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) |
| Older versions not supporting sRGB rendering will ignore this |
| surface attribute. Applications using OpenGL must additionally |
| enable GL_FRAMEBUFFER_SRGB to perform sRGB rendering, even when an |
| sRGB surface is bound; this enable is not required (or supported) |
| for OpenGL ES." |
| |
| |
| Modify the 4th paragraph on page 30 in section 3.5.2, |
| "Creating Off-Screen Rendering Surfaces": |
| |
| "... Attributes that can be specified in <attrib_list> include ... |
| EGL_GL_COLORSPACE_KHR, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT." |
| |
| |
| Add preceding the second paragraph on page 31 in section 3.5.2: |
| |
| "EGL_GL_COLORSPACE_KHR has the same meaning and default values as when |
| used with eglCreateWindowSurface." |
| |
| |
| Modify the next to last paragraph on page 34 in section 3.5.4, |
| "Creating Native Pixmap Rendering Surfaces": |
| |
| "... Attributes that can be specified in <attrib_list> include |
| EGL_GL_COLORSPACE_KHR, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT." |
| |
| |
| Add preceding the second paragraph on page 35 in section 3.5.4: |
| |
| "EGL_GL_COLORSPACE_KHR has the same meaning and default values as when |
| used with eglCreateWindowSurface." |
| |
| |
| Add to table 3.5 on page 37: |
| |
| "Attribute Type Description |
| -------------------- ---- ----------- |
| EGL_GL_COLORSPACE_KHR enum Color space for OpenGL and OpenGL ES" |
| |
| |
| Errors |
| |
| New EGL errors as described in the body of the specification (to be |
| enumerated here in a later draft). |
| |
| Conformance Tests |
| |
| TBD |
| |
| Sample Code |
| |
| TBD |
| |
| Issues |
| |
| 1) How about premultiplied alpha? |
| |
| DISCUSSION: OpenGL doesn't expose this a property of the API, so there's |
| no point in exposing it through EGL as a hint to GL. Shaders deal with |
| premultiplied alpha. |
| |
| 2) Do we need to determine EGL_GL_COLORSPACE_KHR from client buffer |
| attributes in section 3.5.3? |
| |
| DISCUSSION: probably. Not done yet. |
| |
| 3) How should EGL_GL_COLORSPACE_SRGB_KHR be capitalized? |
| |
| DISCUSSION: Daniel prefers SRGB. The VG token uses sRGB which is a |
| rare case of an enum name containing a lower case letter. Currently |
| the spec uses SRGB. |
| |
| 4) Explain differences in surface creation semantics vs. |
| EGL_VG_COLORSPACE. |
| |
| DISCUSSION: The EGL 1.4 spec allows surface creation to fail with a |
| BAD_MATCH error when requesting an unsupported VG sRGB format. This |
| is relatively easy to detect since all OpenVG implementations must |
| support sRGB rendering to specified formats. It is trickier with |
| OpenGL and OpenGL ES for two reasons: |
| |
| - Some GL/ES contexts may support sRGB rendering while other |
| contexts in the same runtime may not. |
| - Some contexts may support a broader range of sRGB formats than |
| others. |
| |
| Possibly we should add EGL_GL_COLORSPACE_SRGB_BIT_KHR to |
| EGL_SURFACE_TYPE, but we've been deemphasizing EGLConfigs going |
| forward, and hopefully we can get away without doing this. |
| |
| Revision History |
| |
| Version 1, 2013/04/26 |
| - Initial draft based on proposal in bug 9995. |
| Version 2, 2013/04/26 |
| - GL ES doesn't require GL_FRAMEBUFFER_SRGB enable. |
| Version 3, 2013/05/15 |
| - Capitalize SRGB in token name, change reference from VG to GL/ES |
| in section 3.5.1, note that ES does not require FRAMEBUFFER_SRGB |
| enable, add issue 4, and fix typos (bug 9995). |
| Version 4, 2013/09/16 |
| - Assign enum values. |
| Version 5, 2014/07/15 |
| - Fix New Tokens section to include all relevant commands (Bug 12457). |