Name

    EXT_texture_sRGB_RG8

Name Strings

    GL_EXT_texture_sRGB_RG8

Contributors

    Sam Holmes
    Maurice Ribble
    Tobias Hector
    Jan-Harald Fredriksen
    Contributors to EXT_texture_sRGB_R8, on which this is based.

Contact

    Tobias Hector (tobias.hector 'at' imgtec.com)

Status

    Complete.

Version

    Last Modified Date: February 05, 2015
    Revision: 3.0

Number

    OpenGL ES Extension #223

Dependencies

    OpenGL ES 3.0 is required.

    This extension is written against the OpenGL ES 3.1 specification.

Overview

    This extension introduces SRG8_EXT as an acceptable internal format.
    This allows efficient sRGB sampling for source images stored with 2
    channels.

New Procedures and Functions

    None

New Tokens

    Accepted by the <internalformat> parameters of TexImage2D, TexImage3D,
    TexStorage2D and TexStorage3D:

        SRG8_EXT    0x8FBE

Additions to Chapter 8 of the OpenGL ES 3.1 Specification (Textures and
Samplers)

    The following table entry is added to Table 8.2 (Valid combinations of
    format, type and sized internalformat):

        Format    Type             External Bytes per Pixel    Internal Format
        ------    ----             ------------------------    ---------------
        RG        UNSIGNED_BYTE    2                           SRG8_EXT

    The following table entry is added to Table 8.13 (Correspondence of sized
    internal color formats to base internal formats):

        Sized Internal Format    Base Internal Format    R    G    B    A    S    CR    TF    Req. rend.    Req. tex.
        ---------------------    --------------------    -    -    -    -    -    --    --    ----------    ---------
        SRG8_EXT                 RG                      8    8                         X                   X

    The following table entry is added to Table 8.24 (sRGB texture internal
    formats):

        Internal Format
        ---------------
        SRG8_EXT


Errors

    None

New State

    None

Revision History

    #01    2/5/2015    Tobias Hector      Initial revision.
    #02    2/5/2015    Tobias Hector      Fixed Table 8.13 entry and whitespace issues.
    #03    2/17/2015   Tobias Hector      Fixed Table 8.2 entry to correctly say 2 bytes.
