Name

    EXT_texture_format_sRGB_override

Name Strings

    GL_EXT_texture_format_sRGB_override

Contributors

    Jeff Leger, Qualcomm
    Jonathan Wicks, Qualcomm
    John Carmack, Oculus
    Cass Everitt, Oculus
    Graeme Leese, Broadcom
    Daniel Koch, NVidia

Contact

    Jeff Leger, Qualcomm  (jleger 'at' qti.qualcomm.com)

Status

    Complete.

Version

    Last Modified Date: Feb 21, 2018
    Revision: #1

Number

     OpenGL ES Extension #299

Dependencies

    OpenGL ES 3.0 or EXT_sRGB are required for OpenGL ES.

    This extension is written against OpenGL ES 3.2.

    EXT_texture_compression_s3tc interacts with this extension.

    EXT_texture_sRGB_decode interacts with this extension.

    EXT_texture_compression_bptc interacts with this extension.

    GL_NV_sRGB_formats interacts with this extension.

    EXT_texture_sRGB_R8 interacts with this extension.

    EXT_texture_sRGB_RG8 interacts with this extension.

    OES_EGL_image_external interacts with this extension.

    This extension is written against the wording of the OpenGL ES 3.2 specification
    (November 3, 2016).

Overview

    This extension provides a new texture parameter to override the internal
    format of a texture object; allowing a non-sRGB format to be overridden to
    a corresponding sRGB format.  For example, an RGB8 texture can be overridden
    to SRGB8.  Such an override will cause the RGB components to be "decoded" from
    sRGB color space to linear as part of texture filtering.  This can be useful for
    applications where a texture was written with sRGB data using EXT_sRGB_write_control
    or when sampling from an EGLImage that is known to contain sRGB color values.

IP Status

    No known IP claims.

New Procedures and Functions

    None.

New Tokens

    Accepted by the <pname> parameter of
    TexParameterf, TexParameterfv,
    TexParameteri, TexParameteriv,
    TexParameterIiv, TexParameterIuiv,
    TexParameterIivEXT, TexParameterIuivEXT,
    GetTexParameterfv, GetTexParameteriv,
    GetTexParameterIiv, GetTexParameterIuiv,
    GetTexParameterIivEXT, GetTexParameterIuivEXT:

        TEXTURE_FORMAT_SRGB_OVERRIDE_EXT     0x8FBF

Changes to Section 8.19 (Texture State) of the OpenGL ES 3.2 Specification

    Add to the end of the fifth paragraph describing texture properties, the
    following sentence:

        "In addition, each set includes the selected sRGB override setting."

    Add to the end of the sixth paragraph describing initial texture state, the
    following sentence:

        "The value of TEXTURE_FORMAT_SRGB_OVERRIDE_EXT is NONE."


Changes to Table 8.19 (Texture parameters and their values):

    Name                               | Type | Legal Values
    ------------------------------------------------------------
    TEXTURE_FORMAT_SRGB_OVERRIDE_EXT   | enum | SRGB,
                                                NONE

Changes to Section 8.21 (sRGB Texture Color Conversion) of the OpenGL ES 3.2 Specification:

    Add the following to the beginning of this section:

   "If the currently bound texture's internal format is one of the non-sRGB formats
    listed below, and if the texture has TEXTURE_FORMAT_SRGB_OVERRIDE_EXT
    set to the value SRGB, then the effective internal format is overridden
    to be the sRGB Override Format as listed below:

        Internal Format                           sRGB Override Format
        ==============================            ==============================
        RGB8                                      SRGB8
        RGBA8                                     SRGB8_ALPHA8
        COMPRESSED_RGB8_ETC2                      COMPRESSED_SRGB8_ETC2
        COMPRESSED_RGBA8_ETC2_EAC                 COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
        COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2  COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
        COMPRESSED_RGBA_ASTC_4x4                  COMPRESSED_SRGB8_ALPHA8_ASTC_4x4
        COMPRESSED_RGBA_ASTC_5x4                  COMPRESSED_SRGB8_ALPHA8_ASTC_5x4
        COMPRESSED_RGBA_ASTC_5x5                  COMPRESSED_SRGB8_ALPHA8_ASTC_5x5
        COMPRESSED_RGBA_ASTC_6x5                  COMPRESSED_SRGB8_ALPHA8_ASTC_6x5
        COMPRESSED_RGBA_ASTC_6x6                  COMPRESSED_SRGB8_ALPHA8_ASTC_6x6
        COMPRESSED_RGBA_ASTC_8x5                  COMPRESSED_SRGB8_ALPHA8_ASTC_8x5
        COMPRESSED_RGBA_ASTC_8x6                  COMPRESSED_SRGB8_ALPHA8_ASTC_8x6
        COMPRESSED_RGBA_ASTC_8x8                  COMPRESSED_SRGB8_ALPHA8_ASTC_8x8
        COMPRESSED_RGBA_ASTC_10x5                 COMPRESSED_SRGB8_ALPHA8_ASTC_10x5
        COMPRESSED_RGBA_ASTC_10x6                 COMPRESSED_SRGB8_ALPHA8_ASTC_10x6
        COMPRESSED_RGBA_ASTC_10x8                 COMPRESSED_SRGB8_ALPHA8_ASTC_10x8
        COMPRESSED_RGBA_ASTC_10x10                COMPRESSED_SRGB8_ALPHA8_ASTC_10x10
        COMPRESSED_RGBA_ASTC_12x10                COMPRESSED_SRGB8_ALPHA8_ASTC_12x10
        COMPRESSED_RGBA_ASTC_12x12                COMPRESSED_SRGB8_ALPHA8_ASTC_12x12

        [[ The following additional formats apply if EXT_texture_compression_s3tc_srgb is supported.]]

        COMPRESSED_RGB_S3TC_DXT1_EXT              COMPRESSED_SRGB_S3TC_DXT1_EXT
        COMPRESSED_RGBA_S3TC_DXT1_EXT             COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT
        COMPRESSED_RGBA_S3TC_DXT3_EXT             COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT
        COMPRESSED_RGBA_S3TC_DXT5_EXT             COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT

        [[ The following additional formats apply if EXT_texture_compression_s3tc_srgb is not supported,
           but EXT_texture_compression_s3tc and GL_NV_sRGB_formats are supported.]]

        COMPRESSED_RGB_S3TC_DXT1_EXT              COMPRESSED_SRGB_S3TC_DXT1_NV
        COMPRESSED_RGBA_S3TC_DXT1_EXT             COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV
        COMPRESSED_RGBA_S3TC_DXT3_EXT             COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV
        COMPRESSED_RGBA_S3TC_DXT5_EXT             COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV

        [[ The following additional format applies only if EXT_texture_sRGB_R8 is supported.]]

        R8                                        SR8_EXT

        [[ The following additional format applies only if EXT_texture_sRGB_RG8 is supported.]]

        RG8                                       SRG8_EXT

        [[ The following additional format applies if EXT_texture_compression_bptc is supported.]]

        COMPRESSED_RGBA_BPTC_UNORM_EXT            COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT


    If the internal format is not one of the above formats, then
    the value of TEXTURE_FORMAT_SRGB_OVERRIDE_EXT is ignored.

    If the value of TEXTURE_FORMAT_SRGB_OVERRIDE_EXT is NONE, then
    the internal format is not overridden.

    If the internal format is overridden, the effect of the override is limited
    to sRGB texture color conversion as described in this section.  For example,
    the override has no effect on per-fragment sRGB conversion described in section
    15.1.6 when when the texture is attached as a renderbuffer or framebuffer.

    It is invalid to modify the value of TEXTURE_FORMAT_SRGB_OVERRIDE_EXT
    for a immutable-format texture.

    [[ The following applies if OES_EGL_image_external is supported.]]

    If the texture target is an EGLImage, then the internal format may be unknown
    and not otherwise supported by OpenGL ES.  It is up to the implementation to
    determine whether specific EGLImage formats will support
    TEXTURE_FORMAT_SRGB_OVERRIDE_EXT."

Errors

    INVALID_ENUM is generated if the <pname> parameter of
    TexParameter[i,f,Ii,Iui][v][EXT], TextureParameter[i,f,Ii,Iui][v]EXT
    is TEXTURE_FORMAT_SRGB_OVERRIDE_EXT and the <param> parameter is not
    SRGB or NONE.

    INVALID_OPERATION is generated if the <pname> parameter of
    TexParameter[i,f,Ii,Iui][v][EXT], TextureParameter[i,f,Ii,Iui][v]EXT
    is TEXTURE_FORMAT_SRGB_OVERRIDE_EXT when TEXTURE_IMMUTABLE_FORMAT is TRUE.

New State

    In table 21.10, Textures ((state per texture object), p. 454, add the following:

    Get Value                         Type  Get Command           Initial Value  Description       Sec.
    --------------------------------  ----  --------------------  -------------  ----------------  -----
    TEXTURE_FORMAT_SRGB_OVERRIDE_EXT   E    GetTexParameter[if]v  NONE            Indicates the     8.21
                                                                                  sRBG internal
                                                                                  format override.

Issues

    1) Why is this parameter only added to texture state and not sampler state?

        RESOLVED: Hardware implementations typically treat sRGB handling as a
        texture state and not a sampler state.  Supporting this property for
        sampler state adds driver overhead that implementors would prefer to
        avoid.

     2) What is the interaction of this extension with EXT_texture_sRGB_decode

        RESOLVED: Both extensions can be used in combination.  This extension
        allows a non-sRGB format (e.g. RGB8) to be overridden so that it behaves
        as an sRGB format (e.g. SRGB8), with the corresponding texture sRGB-decode
        operation enabled by default.  Using EXT_texture_sRGB_decode extension with
        SKIP_DECODE_EXT value, it is possible to skip (disable) the decode operation.

Revision History

    Rev.    Date     Author    Changes
    ----  --------  --------  ----------------------------------------------
     1    02/21/18   jleger    Initial version.
