EXT_texture_norm16

Name

 EXT_texture_norm16

Name Strings

 GL_EXT_texture_norm16

Contributors

 Contributors to EXT_texture_snorm
 Daniel Koch, NVIDIA
 Jan-Harald Fredriksen, ARM

Contact

 Mathias Heyer, NVIDIA (mheyer [at] nvidia.com)

Status

 Complete

Version

 Last Modified Date:  2014-10-24
 Revision:            5

Number

OpenGL ES Extension #207

Dependencies

 OpenGL ES 3.1 is required.

 This extension is written against the OpenGL ES 3.1 (June 4, 2014)
 specification.

 This extension interacts with EXT_texture_buffer.

 This extension interacts with EXT_texture_view.

 This extension interacts with OES_texture_storage_multisample_2d_array.

 This extension interacts with EXT_copy_image.

 This extension interacts with EXT_texture_compression_s3tc.

 This extension interacts with EXT_texture_compression_rgtc.

 This extension interacts with NV_texture_compression_s3tc.

 This extension interacts with NV_sRGB_formats.

Overview

 OpenGL ES 3.1 supports 8-bit (signed) normalized textures.

 This extension provides a set of new 16 bit signed normalized and
 unsigned normalized fixed point texture, renderbuffer and
 texture buffer formats.

New Procedures and Functions

 None

New Tokens

 Accepted by the <internalFormat> parameter of TexImage2D,TexImage3D,
 TexStorage2D, TexStorage3D and TexStorage2DMultisample,
 TexStorage3DMultisampleOES, TexBufferEXT, TexBufferRangeEXT,
 TextureViewEXT, RenderbufferStorage and RenderbufferStorageMultisample:

    R16_EXT                                     0x822A
    RG16_EXT                                    0x822C
    RGBA16_EXT                                  0x805B

 Accepted by the <internalFormat> parameter of TexImage2D,TexImage3D,
 TexStorage2D, TexStorage3D, TexStorage2DMultisample,
 TexStorage3DMultisampleOES and TextureViewEXT:

    RGB16_EXT                                   0x8054

    R16_SNORM_EXT                               0x8F98
    RG16_SNORM_EXT                              0x8F99
    RGB16_SNORM_EXT                             0x8F9A
    RGBA16_SNORM_EXT                            0x8F9B

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

Add to Table 4.X.1 (introduced by EXT_copy_image) "Compatible internal
Formats  for copying between compressed and uncompressed...."

    ------------------------------------------------------------------------------
    | 64-bit  | RGBA16_EXT,          | COMPRESSED_RGB_S3TC_DXT1_EXT,             |
    |         | RGBA16_SNORM_EXT     | COMPRESSED_SRGB_S3TC_DXT1_NV,             |
    |         |                      | COMPRESSED_RGBA_S3TC_DXT1_EXT,            |
    |         |                      | COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV,       |
    |         |                      | COMPRESSED_RED_RGTC1_EXT,                 |
    |         |                      | COMPRESSED_SIGNED_RED_RGTC1_EXT,          |
    |         |                      | COMPRESSED_RGB8_ETC2,                     |
    |         |                      | COMPRESSED_SRGB8_ETC2,                    |
    |         |                      | COMPRESSED_R11_EAC,                       |
    |         |                      | COMPRESSED_SIGNED_R11_EAC,                |
    |         |                      | COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, |
    |         |                      | COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 |
    ------------------------------------------------------------------------------

Add a row to Table 8.2 "Valid combinations of format, type and sized
internal formats":

    Format          Type            External Bytes  Internal Format
                                    per Pixel
    --------------- --------------- --------------- ---------------
    RED             UNSIGNED_SHORT  2               R16_EXT
    RG              UNSIGNED_SHORT  4               RG16_EXT
    RGB             UNSIGNED_SHORT  6               RGB16_EXT
    RGBA            UNSIGNED_SHORT  8               RGBA16_EXT

    RED             SHORT           2               R16_SNORM_EXT
    RG              SHORT           4               RG16_SNORM_EXT
    RGB             SHORT           6               RGB16_SNORM_EXT
    RGBA            SHORT           8               RGBA16_SNORM_EXT


Add to Table 8.13 "Correspondence of sized internal formats to base
internal formats,...":

    Sized            Base            Bits/component              CR   TF  Req.  Req.
    Internal         Internal        S are shared bits                    rend. tex.
    Format           Format          R     G    B    A    S
    ------------     -----------     ----  ---- ---- ---  ----   ---  --- ----  ---
    R16_EXT          RED             16                           X    X   X     X
    RG16_EXT         RG              16    16                     X    X   X     X
    RGB16_EXT        RGB             16    16   16                -    X   -     X
    RGBA16_EXT       RGBA            16    16   16   16           X    X   X     X

    R16_SNORM_EXT    RED             s16                          -    X   -     X
    RG16_SNORM_EXT   RG              s16   s16                    -    X   -     X
    RGB16_SNORM_EXT  RGB             s16   s16  s16               -    X   -     X
    RGBA16_SNORM_EXT RGBA            s16   s16  s16  s16          -    X   -     X

Add to Table 8.15: "ReadPixels format and type used during CopyTex*."

    Read Buffer Format                     format  type
    -------------------------------------  ------  --------------
    16bit Unsigned Normalized Fixed-point  RGBA    UNSIGNED_SHORT


Add to Table 8.X.2 "Compatible internal formats for TextureViewEXT. ..."

    --------------------------------------------------------------------------
    | Class                      | Internal formats                          |
    --------------------------------------------------------------------------
    | VIEW_CLASS_64_BITS         | RGBA16_EXT, RGBA16_SNORM_EXT              |
    --------------------------------------------------------------------------
    | VIEW_CLASS_48_BITS         | RGB16_EXT, RGB16_SNORM_EXT                |
    --------------------------------------------------------------------------
    | VIEW_CLASS_32_BITS         | RG16_EXT, RG16_SNORM_EXT                  |
    --------------------------------------------------------------------------
    | VIEW_CLASS_16_BITS         | R16_EXT, R16_SNORM_EXT                    |
    --------------------------------------------------------------------------

    (If EXT_texture_view is not supported, this additions will apply to
    Table 4.X.2 "Compatible internal formats for CopyImageSubDataEXT" as
    introduced by EXT_copy_image)


Add to Table texbo1, "Internal Formats for Buffer Textures. ..."

                                                        Component
    Sized Internal Format Base Type  Components  Norm    0 1 2 3
    --------------------- ---------  ----------  ----   ---------
    R16_EXT               ushort      1           Yes    R 0 0 1
    RG16_EXT              ushort      2           Yes    R G 0 1
    RGBA16_EXT            ushort      4           Yes    R G B A

Additions to Chapter 15 of the OpenGL ES 3.1 Specification (Writing Fragments and Samples to the Framebuffer)

    Add to the second paragraph of Section 16.1.2 "ReadPixels":

    "For 16bit unsigned normalized fixed-point rendering surfaces,
     the combination format RGBA and type UNSIGNED_SHORT is accepted."

Errors

No new errors.

Interactions with EXT_texture_buffer

If EXT_texture_buffer is not supported, remove references to TexBufferEXT
and TexBufferRangeEXT. Also remove additions to Table textbo1.

Interactions with EXT_texture_view

If EXT_texture_view is not supported, remove references to TextureViewEXT.
Also remove additions to Table 8.X.2.

Interactions with OES_texture_storage_multisample_2d_array

If OES_texture_storage_multisample_2d_array is not supported, remove
references to TexStorage3DMultisampleOES

Interactions with EXT_copy_image

If EXT_copy_image is not supported, remove additions to Table 8.X.2.
(If EXT_texture_view is not supported remove references to Table 4.X.2)

Interactions with EXT_texture_compression_s3tc (or equivalent):

If EXT_texture_compression_s3tc or similar functionality (i.e.
NV_texture_compression_s3tc etc) is not supported, ignore references
to the following texture formats: COMPRESSED_RGB_S3TC_DXT1_EXT and
COMPRESSED_RGBA_S3TC_DXT1_EXT.

Interactions with NV_sRGB_formats (or equivalent):

If NV_sRGB_formats or similar functionality is not
supported, ignore references to the following texture formats:
COMPRESSED_SRGB_S3TC_DXT1_NV and COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV.

Interactions with EXT_texture_compression_rgtc (or equivalent):

If EXT_texture_compression_rgtc or equivalent functionality is not
supported, ignore references to the following texture formats:
COMPRESSED_RED_RGTC1_EXT, COMPRESSED_SIGNED_RED_RGTC1_EXT.

Issues

None yet.

Revision History:

Revision 1 2014-07-03 (mheyer) initial revision Revision 2 2014-07-18 (mheyer) add EXT_texture_buffer, EXT_texture_view, EXT_copy_image and OES_texture_storage_multisample_2d_array interactions Revision 3 2014-07-18 (mheyer) rename to NV_texture_norm16, mark SNORM formats as non color-renderable Revision 4 2014-08-05 (mheyer) rename to EXT_texture_norm16, added interactions with compressed texture format extensions Revision: 5 2014-10-24 (dkoch) mark complete, publishing cleanup