15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    NV_texture_compression_s3tc
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_NV_texture_compression_s3tc
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Contributors to the OpenGL EXT_texture_compression_s3tc extension
125bd8deadSopenharmony_ci    Greg Roth, NVIDIA
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciContact
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    Ian Stewart, NVIDIA Corporation (istewart 'at' nvidia.com)
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ciStatus
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ci    Complete.
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ciVersion
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ci    Last Modifed Date: Sep 27, 2012
255bd8deadSopenharmony_ci    NVIDIA Revision: 1
265bd8deadSopenharmony_ci
275bd8deadSopenharmony_ciNumber
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ci    OpenGL ES Extension #128
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ciDependencies
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ci    This extension is written against the OpenGL ES 2.0.25
345bd8deadSopenharmony_ci    Specification.
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ci    This extension interacts with NV_texture_array
375bd8deadSopenharmony_ci
385bd8deadSopenharmony_ciOverview
395bd8deadSopenharmony_ci
405bd8deadSopenharmony_ci    This extension adds support for S3's S3TC texture compression
415bd8deadSopenharmony_ci    formats, including DXT1, DXT3, and DXT5.  For the DXT1 format,
425bd8deadSopenharmony_ci    this specification supports an RGB-only mode and a special RGBA
435bd8deadSopenharmony_ci    mode with single-bit alpha.
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ciIP Status
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    Contact S3 Incorporated (http://www.s3.com) regarding any
485bd8deadSopenharmony_ci    intellectual property issues associated with implementing this
495bd8deadSopenharmony_ci    extension.
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ci    WARNING: Vendors able to support S3TC texture compression in
525bd8deadSopenharmony_ci    Direct3D drivers do not necessarily have the right to use the same
535bd8deadSopenharmony_ci    functionality in OpenGL ES.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ciNew Tokens
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ci    Accepted by the <internalformat> parameter of CompressedTexImage2D
585bd8deadSopenharmony_ci    and CompressedTexSubImage2D:
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ci        COMPRESSED_RGB_S3TC_DXT1_NV                     0x83F0
615bd8deadSopenharmony_ci        COMPRESSED_RGBA_S3TC_DXT1_NV                    0x83F1
625bd8deadSopenharmony_ci        COMPRESSED_RGBA_S3TC_DXT3_NV                    0x83F2
635bd8deadSopenharmony_ci        COMPRESSED_RGBA_S3TC_DXT5_NV                    0x83F3
645bd8deadSopenharmony_ci
655bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL ES 2.0.25 Specification
665bd8deadSopenharmony_ci
675bd8deadSopenharmony_ci    Modify Section 3.7.3, "Compressed Texture Images"
685bd8deadSopenharmony_ci
695bd8deadSopenharmony_ci    (Replace first two sentences with)
705bd8deadSopenharmony_ci
715bd8deadSopenharmony_ci    Texture images may also be specified or modified using image data
725bd8deadSopenharmony_ci    already stored in a known compressed image format.  The GL defines
735bd8deadSopenharmony_ci    some specific compressed formats, and others may be defined by GL
745bd8deadSopenharmony_ci    extensions.
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci    (Insert after section describing CompressedTexImage2D)
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ci    The specific compressed texture formats supported by
795bd8deadSopenharmony_ci    CompressedTexImage2D, and the corresponding base internal format
805bd8deadSopenharmony_ci    for each specific format, are defined in table 3.X.
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ci        Table 3.X: "Specific compressed texture formats"
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ci        Compressed Internal Formats           Base Internal Format
855bd8deadSopenharmony_ci        ===========================           ====================
865bd8deadSopenharmony_ci        COMPRESSED_RGB_S3TC_DXT1_NV           RGB
875bd8deadSopenharmony_ci        COMPRESSED_RGBA_S3TC_DXT1_NV          RGBA
885bd8deadSopenharmony_ci        COMPRESSED_RGBA_S3TC_DXT3_NV          RGBA
895bd8deadSopenharmony_ci        COMPRESSED_RGBA_S3TC_DXT5_NV          RGBA
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci    (Replace last paragraph with)
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ci    If the internal format is one of COMPRESSED_RGB_S3TC_DXT1_NV,
945bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT1_NV, COMPRESSED_RGBA_S3TC_DXT3_NV, or
955bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT5_NV, the compressed texture is stored
965bd8deadSopenharmony_ci    using one of several S3TC compressed texture image formats and is
975bd8deadSopenharmony_ci    easily edited along 4x4 texel boundaries. In this case,
985bd8deadSopenharmony_ci    CompressedTexImage2D will result in an INVALID_OPERATION error
995bd8deadSopenharmony_ci    if one of the following conditions occurs:
1005bd8deadSopenharmony_ci
1015bd8deadSopenharmony_ci        * <width> is not a multiple of four, and <width> plus
1025bd8deadSopenharmony_ci          <xoffset> is not equal to TEXTURE_WIDTH;
1035bd8deadSopenharmony_ci
1045bd8deadSopenharmony_ci        * <height> is not a multiple of four, and <height> plus
1055bd8deadSopenharmony_ci          <yoffset> is not equal to TEXTURE_HEIGHT; or
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ci        * <xoffset> or <yoffset> is not a multiple of four.
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci    For any other formats, calling CompressedTexSubImage2D will result
1105bd8deadSopenharmony_ci    in an INVALID_OPERATION error if <xoffset> or <yoffset> is not
1115bd8deadSopenharmony_ci    equal to zero, or if <width> and <height> do not match the width
1125bd8deadSopenharmony_ci    and height of the texture, respectively. The contents of any texel
1135bd8deadSopenharmony_ci    outside the region modified by the call are undefined. These
1145bd8deadSopenharmony_ci    restrictions may be relaxed for other specific compressed internal
1155bd8deadSopenharmony_ci    formats whose images are easily modified.
1165bd8deadSopenharmony_ci
1175bd8deadSopenharmony_ciInteractions with NV_texture_array
1185bd8deadSopenharmony_ci
1195bd8deadSopenharmony_ci    If NV_texture_array is supported, the S3TC compressed formats may
1205bd8deadSopenharmony_ci    also be used as the internal formats given to
1215bd8deadSopenharmony_ci    CompressedTexImage3DNV and CompressedTexSubImage3DNV. The
1225bd8deadSopenharmony_ci    restrictions for the <width>, <height>, <xoffset>, and <yoffset>
1235bd8deadSopenharmony_ci    parameters of the CompressedTexSubImage2D function when used with
1245bd8deadSopenharmony_ci    S3TC compressed texture formats, described in this extension, also
1255bd8deadSopenharmony_ci    apply to the identically named parameters of
1265bd8deadSopenharmony_ci    CompressedTexSubImage3DNV.
1275bd8deadSopenharmony_ci
1285bd8deadSopenharmony_ciErrors
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ci    INVALID_OPERATION is generated by CopyTexSubImage2D if the texture
1315bd8deadSopenharmony_ci    image <level> bound to <target> has internal format
1325bd8deadSopenharmony_ci    COMPRESSED_RGB_S3TC_DXT1_NV, COMPRESSED_RGBA_S3TC_DXT1_NV,
1335bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT3_NV, or COMPRESSED_RGBA_S3TC_DXT5_NV.
1345bd8deadSopenharmony_ci
1355bd8deadSopenharmony_ci    INVALID_OPERATION is generated by CompressedTexSubImage2D if
1365bd8deadSopenharmony_ci    <internalformat> is COMPRESSED_RGB_S3TC_DXT1_NV,
1375bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT1_NV, COMPRESSED_RGBA_S3TC_DXT3_NV, or
1385bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT5_NV and any of the following apply:
1395bd8deadSopenharmony_ci
1405bd8deadSopenharmony_ci        * <width> is not a multiple of four, and <width> plus
1415bd8deadSopenharmony_ci          <xoffset> is not equal to the texture width;
1425bd8deadSopenharmony_ci
1435bd8deadSopenharmony_ci        * <height> is not a multiple of four, and <height> plus
1445bd8deadSopenharmony_ci          <yoffset> is not equal to the texture height; or
1455bd8deadSopenharmony_ci
1465bd8deadSopenharmony_ci        * <xoffset> or <yoffset> is not a multiple of four.
1475bd8deadSopenharmony_ci
1485bd8deadSopenharmony_ciNew State
1495bd8deadSopenharmony_ci
1505bd8deadSopenharmony_ci    The queries for NUM_COMPRESSED_TEXTURE_FORMATS and
1515bd8deadSopenharmony_ci    COMPRESSED_TEXTURE_FORMATS include COMPRESSED_RGB_S3TC_DXT1_NV,
1525bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT1_NV, COMPRESSED_RGBA_S3TC_DXT3_NV, and
1535bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT5_NV.
1545bd8deadSopenharmony_ci
1555bd8deadSopenharmony_ciAppendix
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci    S3TC Compressed Texture Image Formats
1585bd8deadSopenharmony_ci
1595bd8deadSopenharmony_ci    Compressed texture images stored using the S3TC compressed image
1605bd8deadSopenharmony_ci    formats are represented as a collection of 4x4 texel blocks, where
1615bd8deadSopenharmony_ci    each block contains 64 or 128 bits of texel data.  The image is
1625bd8deadSopenharmony_ci    encoded as a normal 2D raster image in which each 4x4 block is
1635bd8deadSopenharmony_ci    treated as a single pixel.  If an S3TC image has a width or height
1645bd8deadSopenharmony_ci    that is not a multiple of four, the data corresponding to texels
1655bd8deadSopenharmony_ci    outside the image are irrelevant and undefined.
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ci    When an S3TC image with a width of <w>, height of <h>, and block
1685bd8deadSopenharmony_ci    size of <blocksize> (8 or 16 bytes) is decoded, the corresponding
1695bd8deadSopenharmony_ci    image size (in bytes) is:
1705bd8deadSopenharmony_ci
1715bd8deadSopenharmony_ci        ceil(<w>/4) * ceil(<h>/4) * blocksize.
1725bd8deadSopenharmony_ci
1735bd8deadSopenharmony_ci    When decoding an S3TC image, the block containing the texel at
1745bd8deadSopenharmony_ci    offset (<x>, <y>) begins at an offset (in bytes) relative to the
1755bd8deadSopenharmony_ci    base of the image of:
1765bd8deadSopenharmony_ci
1775bd8deadSopenharmony_ci        blocksize * (ceil(<w>/4) * floor(<y>/4) + floor(<x>/4)).
1785bd8deadSopenharmony_ci
1795bd8deadSopenharmony_ci    The data corresponding to a specific texel (<x>, <y>) are
1805bd8deadSopenharmony_ci    extracted from a 4x4 texel block using a relative (x,y) value of
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ci        (<x> modulo 4, <y> modulo 4).
1835bd8deadSopenharmony_ci
1845bd8deadSopenharmony_ci    There are four distinct S3TC image formats:
1855bd8deadSopenharmony_ci
1865bd8deadSopenharmony_ci    COMPRESSED_RGB_S3TC_DXT1_NV:  Each 4x4 block of texels consists of
1875bd8deadSopenharmony_ci    64 bits of RGB image data.
1885bd8deadSopenharmony_ci
1895bd8deadSopenharmony_ci        Each RGB image data block is encoded as a sequence of 8 bytes,
1905bd8deadSopenharmony_ci        called (in order of increasing address):
1915bd8deadSopenharmony_ci
1925bd8deadSopenharmony_ci            c0_lo, c0_hi, c1_lo, c1_hi, bits_0, bits_1, bits_2, bits_3
1935bd8deadSopenharmony_ci
1945bd8deadSopenharmony_ci        The 8 bytes of the block are decoded into three quantities:
1955bd8deadSopenharmony_ci
1965bd8deadSopenharmony_ci            color0 = c0_lo + c0_hi * 256
1975bd8deadSopenharmony_ci            color1 = c1_lo + c1_hi * 256
1985bd8deadSopenharmony_ci            bits   = bits_0 + 256 * (bits_1 + 256 * (bits_2 + 256 * bits_3))
1995bd8deadSopenharmony_ci
2005bd8deadSopenharmony_ci        color0 and color1 are 16-bit unsigned integers that are
2015bd8deadSopenharmony_ci        unpacked to RGB colors RGB0 and RGB1 as though they were
2025bd8deadSopenharmony_ci        16-bit packed pixels with a <format> of RGB and a type of
2035bd8deadSopenharmony_ci        UNSIGNED_SHORT_5_6_5.
2045bd8deadSopenharmony_ci
2055bd8deadSopenharmony_ci        bits is a 32-bit unsigned integer, from which a two-bit
2065bd8deadSopenharmony_ci        control code is extracted for a texel at location (x,y) in the
2075bd8deadSopenharmony_ci        block using:
2085bd8deadSopenharmony_ci
2095bd8deadSopenharmony_ci            code(x,y) = bits[2*(4*y+x)+1 .. 2*(4*y+x)+0]
2105bd8deadSopenharmony_ci
2115bd8deadSopenharmony_ci        where bit 31 is the most significant and bit 0 is the least
2125bd8deadSopenharmony_ci        significant bit.
2135bd8deadSopenharmony_ci
2145bd8deadSopenharmony_ci        The RGB color for a texel at location (x,y) in the block is
2155bd8deadSopenharmony_ci        given by:
2165bd8deadSopenharmony_ci
2175bd8deadSopenharmony_ci            RGB0,              if color0 > color1 and code(x,y) == 0
2185bd8deadSopenharmony_ci            RGB1,              if color0 > color1 and code(x,y) == 1
2195bd8deadSopenharmony_ci            (2*RGB0+RGB1)/3,   if color0 > color1 and code(x,y) == 2
2205bd8deadSopenharmony_ci            (RGB0+2*RGB1)/3,   if color0 > color1 and code(x,y) == 3
2215bd8deadSopenharmony_ci
2225bd8deadSopenharmony_ci            RGB0,              if color0 <= color1 and code(x,y) == 0
2235bd8deadSopenharmony_ci            RGB1,              if color0 <= color1 and code(x,y) == 1
2245bd8deadSopenharmony_ci            (RGB0+RGB1)/2,     if color0 <= color1 and code(x,y) == 2
2255bd8deadSopenharmony_ci            BLACK,             if color0 <= color1 and code(x,y) == 3
2265bd8deadSopenharmony_ci
2275bd8deadSopenharmony_ci        Arithmetic operations are done per component, and BLACK refers
2285bd8deadSopenharmony_ci        to an RGB color where red, green, and blue are all zero.
2295bd8deadSopenharmony_ci
2305bd8deadSopenharmony_ci        Since this image has an RGB format, there is no alpha
2315bd8deadSopenharmony_ci        component and the image is considered fully opaque.
2325bd8deadSopenharmony_ci
2335bd8deadSopenharmony_ci
2345bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT1_NV:  Each 4x4 block of texels consists
2355bd8deadSopenharmony_ci    of 64 bits of RGB image data and minimal alpha information.  The
2365bd8deadSopenharmony_ci    RGB components of a texel are extracted in the same way as
2375bd8deadSopenharmony_ci    COMPRESSED_RGB_S3TC_DXT1_NV.
2385bd8deadSopenharmony_ci
2395bd8deadSopenharmony_ci        The alpha component for a texel at location (x,y) in the block
2405bd8deadSopenharmony_ci        is given by:
2415bd8deadSopenharmony_ci
2425bd8deadSopenharmony_ci            0.0,               if color0 <= color1 and code(x,y) == 3
2435bd8deadSopenharmony_ci            1.0,               otherwise
2445bd8deadSopenharmony_ci
2455bd8deadSopenharmony_ci
2465bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT3_NV:  Each 4x4 block of texels consists
2475bd8deadSopenharmony_ci    of 64 bits of uncompressed alpha image data followed by 64 bits of
2485bd8deadSopenharmony_ci    RGB image data.
2495bd8deadSopenharmony_ci
2505bd8deadSopenharmony_ci        Each RGB image data block is encoded according to the
2515bd8deadSopenharmony_ci        COMPRESSED_RGB_S3TC_DXT1_NV format, with the exception that
2525bd8deadSopenharmony_ci        the two code bits always use the non-transparent encodings.
2535bd8deadSopenharmony_ci        In other words, they are treated as though color0 > color1,
2545bd8deadSopenharmony_ci        regardless of the actual values of color0 and color1.
2555bd8deadSopenharmony_ci
2565bd8deadSopenharmony_ci        Each alpha image data block is encoded as a sequence of 8
2575bd8deadSopenharmony_ci        bytes, called (in order of increasing address):
2585bd8deadSopenharmony_ci
2595bd8deadSopenharmony_ci            a0, a1, a2, a3, a4, a5, a6, a7
2605bd8deadSopenharmony_ci
2615bd8deadSopenharmony_ci        The 8 bytes of the block are decoded into one 64-bit integer:
2625bd8deadSopenharmony_ci
2635bd8deadSopenharmony_ci            alpha = a0 + 256 * (a1 + 256 * (a2 + 256 * (a3 + 256 * (a4 +
2645bd8deadSopenharmony_ci                         256 * (a5 + 256 * (a6 + 256 * a7))))))
2655bd8deadSopenharmony_ci
2665bd8deadSopenharmony_ci        alpha is a 64-bit unsigned integer, from which a four-bit
2675bd8deadSopenharmony_ci        alpha value is extracted for a texel at location (x,y) in the
2685bd8deadSopenharmony_ci        block using:
2695bd8deadSopenharmony_ci
2705bd8deadSopenharmony_ci            alpha(x,y) = bits[4*(4*y+x)+3 .. 4*(4*y+x)+0]
2715bd8deadSopenharmony_ci
2725bd8deadSopenharmony_ci        where bit 63 is the most significant and bit 0 is the least
2735bd8deadSopenharmony_ci        significant bit.
2745bd8deadSopenharmony_ci
2755bd8deadSopenharmony_ci        The alpha component for a texel at location (x,y) in the block
2765bd8deadSopenharmony_ci        is given by alpha(x,y) / 15.
2775bd8deadSopenharmony_ci
2785bd8deadSopenharmony_ci
2795bd8deadSopenharmony_ci    COMPRESSED_RGBA_S3TC_DXT5_NV:  Each 4x4 block of texels consists
2805bd8deadSopenharmony_ci    of 64 bits of compressed alpha image data followed by 64 bits of
2815bd8deadSopenharmony_ci    RGB image data.
2825bd8deadSopenharmony_ci
2835bd8deadSopenharmony_ci        Each RGB image data block is encoded according to the
2845bd8deadSopenharmony_ci        COMPRESSED_RGB_S3TC_DXT1_NV format, with the exception that
2855bd8deadSopenharmony_ci        the two code bits always use the non-transparent encodings.
2865bd8deadSopenharmony_ci        In other words, they are treated as though color0 > color1,
2875bd8deadSopenharmony_ci        regardless of the actual values of color0 and color1.
2885bd8deadSopenharmony_ci
2895bd8deadSopenharmony_ci        Each alpha image data block is encoded as a sequence of 8
2905bd8deadSopenharmony_ci        bytes, called (in order of increasing address):
2915bd8deadSopenharmony_ci
2925bd8deadSopenharmony_ci        alpha0, alpha1, bits_0, bits_1, bits_2, bits_3, bits_4, bits_5
2935bd8deadSopenharmony_ci
2945bd8deadSopenharmony_ci        The alpha0 and alpha1 are 8-bit unsigned bytes converted to
2955bd8deadSopenharmony_ci        alpha components by multiplying by 1/255.
2965bd8deadSopenharmony_ci
2975bd8deadSopenharmony_ci        The 6 "bits" bytes of the block are decoded into one 48-bit
2985bd8deadSopenharmony_ci        integer:
2995bd8deadSopenharmony_ci
3005bd8deadSopenharmony_ci          bits = bits_0 + 256 * (bits_1 + 256 * (bits_2 + 256 * (bits_3 +
3015bd8deadSopenharmony_ci                          256 * (bits_4 + 256 * bits_5))))
3025bd8deadSopenharmony_ci
3035bd8deadSopenharmony_ci        bits is a 48-bit unsigned integer, from which a three-bit
3045bd8deadSopenharmony_ci        control code is extracted for a texel at location (x,y) in the
3055bd8deadSopenharmony_ci        block using:
3065bd8deadSopenharmony_ci
3075bd8deadSopenharmony_ci            code(x,y) = bits[3*(4*y+x)+2 .. 3*(4*y+x)+0]
3085bd8deadSopenharmony_ci
3095bd8deadSopenharmony_ci        where bit 47 is the most significant and bit 0 is the least
3105bd8deadSopenharmony_ci        significant bit.
3115bd8deadSopenharmony_ci
3125bd8deadSopenharmony_ci        The alpha component for a texel at location (x,y) in the block
3135bd8deadSopenharmony_ci        is given by:
3145bd8deadSopenharmony_ci
3155bd8deadSopenharmony_ci              alpha0,                   code(x,y) == 0
3165bd8deadSopenharmony_ci              alpha1,                   code(x,y) == 1
3175bd8deadSopenharmony_ci
3185bd8deadSopenharmony_ci              (6*alpha0 + 1*alpha1)/7,  alpha0 > alpha1 and code(x,y) == 2
3195bd8deadSopenharmony_ci              (5*alpha0 + 2*alpha1)/7,  alpha0 > alpha1 and code(x,y) == 3
3205bd8deadSopenharmony_ci              (4*alpha0 + 3*alpha1)/7,  alpha0 > alpha1 and code(x,y) == 4
3215bd8deadSopenharmony_ci              (3*alpha0 + 4*alpha1)/7,  alpha0 > alpha1 and code(x,y) == 5
3225bd8deadSopenharmony_ci              (2*alpha0 + 5*alpha1)/7,  alpha0 > alpha1 and code(x,y) == 6
3235bd8deadSopenharmony_ci              (1*alpha0 + 6*alpha1)/7,  alpha0 > alpha1 and code(x,y) == 7
3245bd8deadSopenharmony_ci
3255bd8deadSopenharmony_ci              (4*alpha0 + 1*alpha1)/5,  alpha0 <= alpha1 and code(x,y) == 2
3265bd8deadSopenharmony_ci              (3*alpha0 + 2*alpha1)/5,  alpha0 <= alpha1 and code(x,y) == 3
3275bd8deadSopenharmony_ci              (2*alpha0 + 3*alpha1)/5,  alpha0 <= alpha1 and code(x,y) == 4
3285bd8deadSopenharmony_ci              (1*alpha0 + 4*alpha1)/5,  alpha0 <= alpha1 and code(x,y) == 5
3295bd8deadSopenharmony_ci              0.0,                      alpha0 <= alpha1 and code(x,y) == 6
3305bd8deadSopenharmony_ci              1.0,                      alpha0 <= alpha1 and code(x,y) == 7
3315bd8deadSopenharmony_ci
3325bd8deadSopenharmony_ci
3335bd8deadSopenharmony_ciIssues
3345bd8deadSopenharmony_ci
3355bd8deadSopenharmony_ci    None
3365bd8deadSopenharmony_ci
3375bd8deadSopenharmony_ciRevision History
3385bd8deadSopenharmony_ci
3395bd8deadSopenharmony_ci    Rev.    Date        Author       Changes
3405bd8deadSopenharmony_ci    ----   --------     ---------    -------------------------------------
3415bd8deadSopenharmony_ci     1     09/27/2012   istewart     First revision, based of the
3425bd8deadSopenharmony_ci                                     EXT_texture_compression_s3tc
3435bd8deadSopenharmony_ci                                     specification.
3445bd8deadSopenharmony_ci
3455bd8deadSopenharmony_ci# vim:ai:ts=4:sts=4:expandtab:textwidth=70
346