15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    NV_sRGB_formats
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_NV_sRGB_formats
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Contributors to ARB_framebuffer_sRGB and EXT_texture_sRGB
125bd8deadSopenharmony_ci    Mathias Heyer, NVIDIA
135bd8deadSopenharmony_ci    Jussi Rasanen, NVIDIA
145bd8deadSopenharmony_ci    Greg Roth, NVIDIA
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ciContact
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ci    Greg Roth, NVIDIA (groth 'at' nvidia.com)
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ciStatus
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ci    Complete
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ciVersion
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ci    Date: 17 Jan, 2013
275bd8deadSopenharmony_ci    Revision: 5
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ciNumber
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ci    OpenGL ES Extension #148
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ciDependencies
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ci    OpenGL ES 2.0 is required.
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ci    This extension is written against the OpenGL ES 2.0.25
385bd8deadSopenharmony_ci    specification.
395bd8deadSopenharmony_ci
405bd8deadSopenharmony_ci    Requires EXT_sRGB.
415bd8deadSopenharmony_ci
425bd8deadSopenharmony_ci    OES_compressed_ETC1_RGB8_texture affects the definition of this
435bd8deadSopenharmony_ci    extension.
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ci    EXT_texture_storage affects the definition of this extension.
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    NV_texture_array affects the definition of this extension.
485bd8deadSopenharmony_ci
495bd8deadSopenharmony_ci    NV_texture_compression_s3tc affects the definition of this
505bd8deadSopenharmony_ci    extension.
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci    NV_texture_compression_s3tc_update affects the definition of this
535bd8deadSopenharmony_ci    extension.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ciOverview
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ci    This extension adds new uncompressed and compressed color texture
585bd8deadSopenharmony_ci    formats with nonlinear sRGB color components.
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ci    Luminance and luminance alpha provide support for textures
615bd8deadSopenharmony_ci    containing sRGB values with identical red, green, and blue
625bd8deadSopenharmony_ci    components.
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ci    Compressed texture formats using S3TC and ETC1 compression
655bd8deadSopenharmony_ci    algorithms are also added to provide compressed sRGB texture
665bd8deadSopenharmony_ci    options.
675bd8deadSopenharmony_ci
685bd8deadSopenharmony_ci    Finally, sized variant of sRGB, sLuminace, and sLuminance_alpha are
695bd8deadSopenharmony_ci    provided for immutable textures defined using the EXT_texture_storage
705bd8deadSopenharmony_ci    extension.
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ciNew Procedures and Functions
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ci    None
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ciNew Tokens
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ci    Accepted by the <format> and <internalformat> parameter of
795bd8deadSopenharmony_ci    TexImage2D, and TexImage3DNV.  These are also accepted by <format>
805bd8deadSopenharmony_ci    parameter of TexSubImage2D and TexSubImage3DNV:
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ci        SLUMINANCE_NV                                  0x8C46
835bd8deadSopenharmony_ci        SLUMINANCE_ALPHA_NV                            0x8C44
845bd8deadSopenharmony_ci
855bd8deadSopenharmony_ci    Accepted by the <internalformat> parameter of RenderbufferStorage,
865bd8deadSopenharmony_ci    TexStorage2DEXT, and TexStorage3DEXT:
875bd8deadSopenharmony_ci        SRGB8_NV                                       0x8C41
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ci    Accepted by the <internalformat> parameter of TexStorage2DEXT and
905bd8deadSopenharmony_ci    TexStorage3DEXT:
915bd8deadSopenharmony_ci        SLUMINANCE8_NV                                 0x8C47
925bd8deadSopenharmony_ci        SLUMINANCE8_ALPHA8_NV                          0x8C45
935bd8deadSopenharmony_ci
945bd8deadSopenharmony_ci    Accepted by the <internalformat> parameters of TexImage2D,
955bd8deadSopenharmony_ci    TexImage3DNV, CompressedTexImage2D, and CompressedTexImage3DNV as
965bd8deadSopenharmony_ci    well as the <format> parameter of TexSubImage2D, TexSubImage3DNV,
975bd8deadSopenharmony_ci    CompressedTexSubImage2D, and CompressedTexSubImage3DNV:
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci        COMPRESSED_SRGB_S3TC_DXT1_NV                   0x8C4C
1005bd8deadSopenharmony_ci        COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV             0x8C4D
1015bd8deadSopenharmony_ci        COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV             0x8C4E
1025bd8deadSopenharmony_ci        COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV             0x8C4F
1035bd8deadSopenharmony_ci
1045bd8deadSopenharmony_ci    Accepted by the <internalformat> parameter of CompressedTexImage2D,
1055bd8deadSopenharmony_ci    and CompressedTexImage3DNV:
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ci        ETC1_SRGB8_NV                                  0x88EE
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL ES 2.0.25 Specification
1105bd8deadSopenharmony_ci(Rasterization)
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ciModify Section 3.7.1, "Texture Image Specification":
1135bd8deadSopenharmony_ci
1145bd8deadSopenharmony_ci    Add 2 new rows to Table 3.3, "TexImage2D and ReadPixels formats":
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ci                              Element Meaning
1175bd8deadSopenharmony_ci        Format Name           and Order        Target Buffer
1185bd8deadSopenharmony_ci        ----------------      ---------------  -------------
1195bd8deadSopenharmony_ci        SLUMINANCE_NV         Luminance        Color
1205bd8deadSopenharmony_ci        SLUMINANCE_ALPHA_NV   Luminance, A     Color
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci    Add 2 new rows to Table 3.4, "Valid pixel format and type
1235bd8deadSopenharmony_ci    combinations":
1245bd8deadSopenharmony_ci
1255bd8deadSopenharmony_ci        Format                Type             Bytes per Pixel
1265bd8deadSopenharmony_ci        ----------------      ---------------  ---------------
1275bd8deadSopenharmony_ci        SLUMINANCE_NV         UNSIGNED_BYTE    1
1285bd8deadSopenharmony_ci        SLUMINANCE_ALPHA_NV   UNSIGNED_BYTE    2
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ci    Add 2 new rows to "Valid combinations of format, type, and sized
1315bd8deadSopenharmony_ci    internal-format" Table:
1325bd8deadSopenharmony_ci
1335bd8deadSopenharmony_ci        Internal Format        Format              Type
1345bd8deadSopenharmony_ci        ----------------       --------            ------
1355bd8deadSopenharmony_ci        SLUMINANCE8_NV         SLUMINANCE_NV       UNSIGNED_BYTE
1365bd8deadSopenharmony_ci        SLUMINANCE8_ALPHA8_NV  SLUMINANCE_ALPHA_NV UNSIGNED_BYTE
1375bd8deadSopenharmony_ci
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ci    Add 5 new rows to "Specific Compressed Internal Formats" Table
1405bd8deadSopenharmony_ci
1415bd8deadSopenharmony_ci        Compressed Internal Format           Base Internal Format
1425bd8deadSopenharmony_ci        -----------------------------------  --------------------
1435bd8deadSopenharmony_ci        COMPRESSED_SRGB_S3TC_DXT1_NV         RGB
1445bd8deadSopenharmony_ci        COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV   RGBA
1455bd8deadSopenharmony_ci        COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV   RGBA
1465bd8deadSopenharmony_ci        COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV   RGBA
1475bd8deadSopenharmony_ci        ETC1_SRGB8_NV                        RGB
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci    Modify Section 3.7.2 "Alternate Texture Image Specification
1505bd8deadSopenharmony_ci    Commands"
1515bd8deadSopenharmony_ci
1525bd8deadSopenharmony_ci    Modify the first sentence of the last paragraph (added by
1535bd8deadSopenharmony_ci    NV_texture_compression_s3tc_update):
1545bd8deadSopenharmony_ci
1555bd8deadSopenharmony_ci    When the internal format of the texture object is
1565bd8deadSopenharmony_ci    COMPRESSED_RGB_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT1_EXT,
1575bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT3_EXT, COMPRESSED_RGBA_S3TC_DXT5_EXT,
1585bd8deadSopenharmony_ci    COMPRESSED_SRGB_S3TC_DXT1_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV
1595bd8deadSopenharmony_ci    COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV, or COMPRESSED_SRGB_ALPHA_-
1605bd8deadSopenharmony_ci    S3TC_DXT5_NV the update region specified in TexSubImage2D must be
1615bd8deadSopenharmony_ci    aligned to 4x4 pixel blocks. ...
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci    Modify Section 3.7.3 "Compressed Texture Images"
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ci    Add to the description of CompressedTexImage*
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ci    If <internalformat> is COMPRESSED_SRGB_S3TC_DXT1_NV,
1685bd8deadSopenharmony_ci    COMPRESSED_SRGBA_S3TC_DXT1_NV, COMPRESSED_SRGBA_S3TC_DXT3_NV, or
1695bd8deadSopenharmony_ci    COMPRESSED_SRGBA_S3TC_DXT5_NV, the compressed texture is stored
1705bd8deadSopenharmony_ci    using one of several S3TC compressed texture image formats.  The
1715bd8deadSopenharmony_ci    S3TC texture compression algorithm supports only 2D images.
1725bd8deadSopenharmony_ci    CompressedTexImage3DNV produce an INVALID_OPERATION error if
1735bd8deadSopenharmony_ci    <internalformat> is an S3TC format and <target> is not TEXTURE_-
1745bd8deadSopenharmony_ci    2D_ARRAY_NV.
1755bd8deadSopenharmony_ci
1765bd8deadSopenharmony_ci    If <internalformat> is ETC1_SRGB8_NV, the compressed texture is an
1775bd8deadSopenharmony_ci    ETC1 compressed texture.
1785bd8deadSopenharmony_ci
1795bd8deadSopenharmony_ci    Change the penultimate paragraph describing CompressedTexSubImage*
1805bd8deadSopenharmony_ci    (added by NV_texture_compression_s3tc):
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ci    If the internal format is one of COMPRESSED_RGB_S3TC_DXT1_NV,
1835bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT1_NV, COMPRESSED_RGBA_S3TC_DXT3_NV,
1845bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT5_NV, COMPRESSED_SRGBA_S3TC_DXT1_NV,
1855bd8deadSopenharmony_ci    COMPRESSED_SRGBA_S3TC_DXT3_NV, or COMPRESSED_SRGBA_S3TC_DXT5_NV
1865bd8deadSopenharmony_ci    the compressed texture is stored using one of several S3TC
1875bd8deadSopenharmony_ci    compressed texture image formats ...
1885bd8deadSopenharmony_ci
1895bd8deadSopenharmony_ci    Modify Section 3.7.14, "sRGB Texture Color Conversion":
1905bd8deadSopenharmony_ci
1915bd8deadSopenharmony_ci    Change the first sentence to:
1925bd8deadSopenharmony_ci
1935bd8deadSopenharmony_ci    "If the currently bound texture's internal format is one
1945bd8deadSopenharmony_ci    of SRGB_EXT, SRGB_ALPHA_EXT, SLUMINANCE_ALPHA_NV, SLUMINANCE_NV,
1955bd8deadSopenharmony_ci    COMPRESSED_SRGB_S3TC_DXT1_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV,
1965bd8deadSopenharmony_ci    COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV,
1975bd8deadSopenharmony_ci    or ETC1_SRGB8_NV the red, green, and blue components are converted
1985bd8deadSopenharmony_ci    from an sRGB color space to a linear color space as part of
1995bd8deadSopenharmony_ci    filtering described in sections 3.7.7 and 3.7.8. ..."
2005bd8deadSopenharmony_ci
2015bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL ES 2.0.25 Specification (Per-
2025bd8deadSopenharmony_ciFragment Operations and the Framebuffer)
2035bd8deadSopenharmony_ci
2045bd8deadSopenharmony_ci    The following should be added to table 4.5 "Renderbuffer Image
2055bd8deadSopenharmony_ci    formats":
2065bd8deadSopenharmony_ci
2075bd8deadSopenharmony_ci    SRGB8_NV              color_renderable 8  8  8  -  -  -
2085bd8deadSopenharmony_ci
2095bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL ES 2.0.25 Specification (State and
2105bd8deadSopenharmony_ciState Requests)
2115bd8deadSopenharmony_ci
2125bd8deadSopenharmony_ci    In section 6.1.3, modify the last sentence of the description of
2135bd8deadSopenharmony_ci    GetFramebufferAttachmentParameteriv:
2145bd8deadSopenharmony_ci
2155bd8deadSopenharmony_ci    "... For framebuffer objects, components are sRGB-encoded if the
2165bd8deadSopenharmony_ci    internal format of a color attachment is SRGB_EXT, SRGB8_NV,
2175bd8deadSopenharmony_ci    SRGB_ALPHA_EXT, SRGB8_ALPHA8_EXT, SLUMINANCE_NV, SLUMINANCE8_NV,
2185bd8deadSopenharmony_ci    SLUMINANCE_ALPHA_NV, SLUMINANCE8_ALPHA8_NV, COMPRESSED_SRGB_S3TC_-
2195bd8deadSopenharmony_ci    DXT1_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV, COMPRESSED_SRGB_ALPHA_-
2205bd8deadSopenharmony_ci    S3TC_DXT3_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV, or ETC1_SRGB8_NV."
2215bd8deadSopenharmony_ci
2225bd8deadSopenharmony_ciDependencies on OES_compressed_ETC1_RGB8_texture
2235bd8deadSopenharmony_ci
2245bd8deadSopenharmony_ci    If OES_compressed_ETC1_RGB8_texture is not supported, ignore all
2255bd8deadSopenharmony_ci    references to ETC1_SRGB8_NV.
2265bd8deadSopenharmony_ci
2275bd8deadSopenharmony_ciDependencies on EXT_texture_storage
2285bd8deadSopenharmony_ci
2295bd8deadSopenharmony_ci    If EXT_texture_storage is not supported, ignore all references to
2305bd8deadSopenharmony_ci    glTexStorage2DEXT and TexStorage3DEXT functions, additions to the
2315bd8deadSopenharmony_ci    "Valid combinations of format, type, and sized internal-format"
2325bd8deadSopenharmony_ci    Table, and LUMINANCE8_NV and LUMINANCE8_ALPHA8_NV tokens.
2335bd8deadSopenharmony_ci
2345bd8deadSopenharmony_ciDependencies on NV_texture_array
2355bd8deadSopenharmony_ci
2365bd8deadSopenharmony_ci    If NV_texture_array is not supported, ignore all references to
2375bd8deadSopenharmony_ci    TexImage3DNV, TexSubImage3DNV, CompressedTexImage3DNV, and
2385bd8deadSopenharmony_ci    CompressedTexSubImage3DNV.
2395bd8deadSopenharmony_ci
2405bd8deadSopenharmony_ciDependencies on NV_texture_compression_s3tc
2415bd8deadSopenharmony_ci
2425bd8deadSopenharmony_ci    If EXT_texture_compression_s3tc is not supported, ignore the new
2435bd8deadSopenharmony_ci    COMPRESSED_*_S3TC_DXT* tokens, the additions to the "Compressed
2445bd8deadSopenharmony_ci    Internal Format" table, errors related to the COMPRESSED_*_S3TC_DXT*
2455bd8deadSopenharmony_ci    tokens, and related discussion. Also ignore edits to decription
2465bd8deadSopenharmony_ci    of CompressedTexSubImage*.
2475bd8deadSopenharmony_ci
2485bd8deadSopenharmony_ciDependencies on NV_texture_compression_s3tc_update
2495bd8deadSopenharmony_ci
2505bd8deadSopenharmony_ci    If NV_texture_compression_s3tc_update is not supported, passing
2515bd8deadSopenharmony_ci    COMPRESSED_SRGB_NV, COMPRESSED_SRGB_ALPHA_NV,
2525bd8deadSopenharmony_ci    COMPRESSED_SLUMINANCE_NV, COMPRESSED_SLUMINANCE_ALPHA_NV,
2535bd8deadSopenharmony_ci    COMPRESSED_SRGB_S3TC_DXT1_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV,
2545bd8deadSopenharmony_ci    COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV, or COMPRESSED_SRGB_ALPHA_S3TC_-
2555bd8deadSopenharmony_ci    DXT5_NV to the <internalformat> parameter of TexImage2D,
2565bd8deadSopenharmony_ci    TexImage3DNV, is not supported and will produce an INVALID_VALUE
2575bd8deadSopenharmony_ci
2585bd8deadSopenharmony_ciErrors
2595bd8deadSopenharmony_ci
2605bd8deadSopenharmony_ci    INVALID_OPERATION is generated by CompressedTexSubImage* if
2615bd8deadSopenharmony_ci    <internalformat> is COMPRESSED_SRGB_S3TC_DXT1_NV,
2625bd8deadSopenharmony_ci    COMPRESSED_SRGBA_S3TC_DXT1_NV, COMPRESSED_SRGBA_S3TC_DXT3_NV, or
2635bd8deadSopenharmony_ci    COMPRESSED_SRGBA_S3TC_DXT5_NV and any of the following apply:
2645bd8deadSopenharmony_ci        * <width> is not a multiple of four, and <width> plus
2655bd8deadSopenharmony_ci          <xoffset> is not equal to the texture width;
2665bd8deadSopenharmony_ci        * <height> is not a multiple of four, and <height> plus
2675bd8deadSopenharmony_ci          <yoffset> is not equal to the texture height; or
2685bd8deadSopenharmony_ci        * <xoffset> or <yoffset> is not a multiple of four.
2695bd8deadSopenharmony_ci
2705bd8deadSopenharmony_ci    INVALID_OPERATION is generated by CompressedTexImage3DNV if
2715bd8deadSopenharmony_ci    <internalformat> is COMPRESSED_SRGB_S3TC_DXT1_NV, COMPRESSED_SRGB_-
2725bd8deadSopenharmony_ci    ALPHA_S3TC_DXT1_NV, COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV,
2735bd8deadSopenharmony_ci    COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV, or ETC1_SRGB8_NV and <target> is
2745bd8deadSopenharmony_ci    not TEXTURE_IMAGE_2D_ARRAY_NV.
2755bd8deadSopenharmony_ci
2765bd8deadSopenharmony_ci    INVALID_OPERATION is generated by CompressedTexSubImage2D,
2775bd8deadSopenharmony_ci    TexSubImage2D, CompressedTexSubImage3DNV, or TexSubImage3DNV, if the
2785bd8deadSopenharmony_ci    texture image <level> bound to <target> has internal format
2795bd8deadSopenharmony_ci    ETC1_SRGB8_NV.
2805bd8deadSopenharmony_ci
2815bd8deadSopenharmony_ciNew State
2825bd8deadSopenharmony_ci
2835bd8deadSopenharmony_ci    None
2845bd8deadSopenharmony_ci
2855bd8deadSopenharmony_ciNew Implementation Dependent State
2865bd8deadSopenharmony_ci
2875bd8deadSopenharmony_ci    None
2885bd8deadSopenharmony_ci
2895bd8deadSopenharmony_ciIssues
2905bd8deadSopenharmony_ci
2915bd8deadSopenharmony_ci    1)  Should this be one extension or two?
2925bd8deadSopenharmony_ci
2935bd8deadSopenharmony_ci        RESOLVED: one. Desktop GL divided this functionality between
2945bd8deadSopenharmony_ci        texture_sRGB and framebuffer_sRGB, but the ES extension EXT_sRGB
2955bd8deadSopenharmony_ci        which took some features from each of those was only one. For
2965bd8deadSopenharmony_ci        consistency with EXT_sRGB, this is a single extension.
2975bd8deadSopenharmony_ci
2985bd8deadSopenharmony_ci    2)  Should inherently incomplete compressed sRGB texture attachments
2995bd8deadSopenharmony_ci        still return sRGB for FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT
3005bd8deadSopenharmony_ci        queries?
3015bd8deadSopenharmony_ci
3025bd8deadSopenharmony_ci        RESOLVED: Yes. Just because they are incomplete doesn't mean they
3035bd8deadSopenharmony_ci        aren't attached. Such a query might be performed to determine
3045bd8deadSopenharmony_ci        why an FBO is incomplete.
3055bd8deadSopenharmony_ci
3065bd8deadSopenharmony_ci    3)  Should formats for sRGB luminance values be supported?
3075bd8deadSopenharmony_ci
3085bd8deadSopenharmony_ci        RESOLVED:  Yes.  Implementations can always support luminance
3095bd8deadSopenharmony_ci        and luminance-alpha sRGB formats as an RGB8 or RGBA8 format with
3105bd8deadSopenharmony_ci        replicated R, G, and B values.
3115bd8deadSopenharmony_ci
3125bd8deadSopenharmony_ci        For lack of a better term, "SLUMINANCE" will be used within
3135bd8deadSopenharmony_ci        token names to indicate sRGB values with identical red, green,
3145bd8deadSopenharmony_ci        and blue components.
3155bd8deadSopenharmony_ci
3165bd8deadSopenharmony_ci    4)  Should all component sizes be supported for sRGB components or
3175bd8deadSopenharmony_ci        just 8-bit?
3185bd8deadSopenharmony_ci
3195bd8deadSopenharmony_ci        RESOLVED:  Just 8-bit.  For sRGB values with more than 8 bit of
3205bd8deadSopenharmony_ci        precision, a linear representation may be easier to work with
3215bd8deadSopenharmony_ci        and adequately represent dim values.  Storing 5-bit and 6-bit
3225bd8deadSopenharmony_ci        values in sRGB form is unnecessary because applications
3235bd8deadSopenharmony_ci        sophisticated enough to sRGB to maintain color precision will
3245bd8deadSopenharmony_ci        demand at least 8-bit precision for sRGB values.
3255bd8deadSopenharmony_ci
3265bd8deadSopenharmony_ci        Because hardware tables are required sRGB conversions, it doesn't
3275bd8deadSopenharmony_ci        make sense to burden hardware with conversions that are unlikely
3285bd8deadSopenharmony_ci        when 8-bit is the norm for sRGB values.
3295bd8deadSopenharmony_ci
3305bd8deadSopenharmony_ci    5)  Should generic compressed sRGB formats be supported?
3315bd8deadSopenharmony_ci
3325bd8deadSopenharmony_ci        RESOLVED:  Yes.  Implementations are free simply to use
3335bd8deadSopenharmony_ci        uncompressed sRGB formats to implement the GL_COMPRESSED_SRGB_*
3345bd8deadSopenharmony_ci        formats.
3355bd8deadSopenharmony_ci
3365bd8deadSopenharmony_ci    6)  Should S3TC compressed sRGB formats be supported?
3375bd8deadSopenharmony_ci
3385bd8deadSopenharmony_ci        RESOLVED:  Yes, but only if EXT_texture_compression_s3tc is also
3395bd8deadSopenharmony_ci        advertised.  For competitive reasons, we expect OpenGL ES will
3405bd8deadSopenharmony_ci        need  an S3TC-based block compression format for sRGB data.
3415bd8deadSopenharmony_ci
3425bd8deadSopenharmony_ci        Rather than expose a separate "sRGB_compression" extension,
3435bd8deadSopenharmony_ci        it makes more sense to specify a dependency between
3445bd8deadSopenharmony_ci        EXT_texture_compression_s3tc and this extension such that when
3455bd8deadSopenharmony_ci        BOTH extensions are exposed, the GL_COMPRESSED_SRGB*_S3TC_DXT*_NV
3465bd8deadSopenharmony_ci        tokens are accepted.
3475bd8deadSopenharmony_ci
3485bd8deadSopenharmony_ci        We avoid explicitly requiring S3TC formats when EXT_texture_sRGB
3495bd8deadSopenharmony_ci        is advertised to avoid IP encumbrances.
3505bd8deadSopenharmony_ci
3515bd8deadSopenharmony_ci    7)  How is the texture border color handled for sRGB formats?
3525bd8deadSopenharmony_ci        (Only relevant if NV_texture_border_clamp is supported.
3535bd8deadSopenharmony_ci
3545bd8deadSopenharmony_ci        RESOLVED:  The texture border color is specified as four
3555bd8deadSopenharmony_ci        floating-point values.  Given that the texture border color can
3565bd8deadSopenharmony_ci        be specified at such high precision, it is always treated as a
3575bd8deadSopenharmony_ci        linear RGBA value.
3585bd8deadSopenharmony_ci
3595bd8deadSopenharmony_ci        Only texel components are converted from the sRGB encoding to a
3605bd8deadSopenharmony_ci        linear RGB value ahead of texture filtering.  The border color
3615bd8deadSopenharmony_ci        can be used "as is" without any conversion.
3625bd8deadSopenharmony_ci
3635bd8deadSopenharmony_ci        By keeping the texture border color specified as a linear
3645bd8deadSopenharmony_ci        RGB value at the API level allows developers to specify the
3655bd8deadSopenharmony_ci        high-precision texture border color in a single consistent color
3665bd8deadSopenharmony_ci        space without concern for how the sRGB conversion is implemented
3675bd8deadSopenharmony_ci        in relation to filtering.
3685bd8deadSopenharmony_ci
3695bd8deadSopenharmony_ci        An implementation that does post-filtering sRGB conversion is
3705bd8deadSopenharmony_ci        likely to convert the texture border color to sRGB within
3715bd8deadSopenharmony_ci        the driver so it can be filtered with the sRGB values coming
3725bd8deadSopenharmony_ci        from texels and then the filtered sRGB value is converted to
3735bd8deadSopenharmony_ci        linear RGB.
3745bd8deadSopenharmony_ci
3755bd8deadSopenharmony_ci        By maintaining the texture border color always in linear RGB,
3765bd8deadSopenharmony_ci        we avoid developers having to know if an implementation is
3775bd8deadSopenharmony_ci        performing the sRGB conversion (ideally) pre-filtering or (less
3785bd8deadSopenharmony_ci        ideally) post-filtering.
3795bd8deadSopenharmony_ci
3805bd8deadSopenharmony_ci    8)  Should sRGB framebuffer support affect the pixel path?
3815bd8deadSopenharmony_ci
3825bd8deadSopenharmony_ci        RESOLVED:  No.
3835bd8deadSopenharmony_ci
3845bd8deadSopenharmony_ci        sRGB conversion only applies to color reads for blending and
3855bd8deadSopenharmony_ci        color writes.  Color reads for glReadPixels have no sRGB
3865bd8deadSopenharmony_ci        conversion applied.
3875bd8deadSopenharmony_ci
3885bd8deadSopenharmony_ci
3895bd8deadSopenharmony_ciRevision History
3905bd8deadSopenharmony_ci
3915bd8deadSopenharmony_ci    Rev.    Date       Author       Changes
3925bd8deadSopenharmony_ci    ----   --------    ---------    -------------------------------------
3935bd8deadSopenharmony_ci     5     17 Jan 2013  groth       Add sized L and LA sRGB formats
3945bd8deadSopenharmony_ci                                    Drastically flesh out interactions.
3955bd8deadSopenharmony_ci     4     11 sep 2012  groth       Further clarify interactions
3965bd8deadSopenharmony_ci     3     21 Aug 2012  groth       Reorganzied issues. Clarified some.
3975bd8deadSopenharmony_ci     2     15 Aug 2012  groth       Clarified mheyer feedback.
3985bd8deadSopenharmony_ci     1     13 Aug 2012  groth       Initial draft based off EXT_texture_sRGB
399