15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_texture_integer
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_EXT_texture_integer
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Michael Gold, NVIDIA Corporation (gold 'at' nvidia.com)
125bd8deadSopenharmony_ci    Pat Brown, NVIDIA Corporation (pbrown 'at' nvidia.com)
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciStatus
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    Shipping for GeForce 8 Series (November 2006)
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ciVersion
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ci    Last Modified Date:         05/20/2010
215bd8deadSopenharmony_ci    NVIDIA Revision:            6
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciNumber
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    343
265bd8deadSopenharmony_ci
275bd8deadSopenharmony_ciDependencies
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ci    OpenGL 2.0 is required.
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ci    NV_gpu_program4 or EXT_gpu_shader4 is required.
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ci    ARB_texture_float affects the definition of this extension.
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ci    ARB_color_buffer_float affects the definition of this extension.
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ci    EXT_framebuffer_object affects the definition of this extension.
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ci    This extension is written against the OpenGL 2.0 specification.
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ciOverview
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ci    Fixed-point textures in unextended OpenGL have integer components,
445bd8deadSopenharmony_ci    but those values are taken to represent floating-point values in
455bd8deadSopenharmony_ci    the range [0,1].  These integer components are considered
465bd8deadSopenharmony_ci    "normalized" integers.  When such a texture is accessed by a
475bd8deadSopenharmony_ci    shader or by fixed-function fragment processing, floating-point
485bd8deadSopenharmony_ci    values are returned.
495bd8deadSopenharmony_ci
505bd8deadSopenharmony_ci    This extension provides a set of new "unnormalized" integer texture
515bd8deadSopenharmony_ci    formats.  Formats with both signed and unsigned integers are provided.  In
525bd8deadSopenharmony_ci    these formats, the components are treated as true integers.  When such
535bd8deadSopenharmony_ci    textures are accessed by a shader, actual integer values are returned.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    Pixel operations that read from or write to a texture or color
565bd8deadSopenharmony_ci    buffer with unnormalized integer components follow a path similar
575bd8deadSopenharmony_ci    to that used for color index pixel operations, except that more
585bd8deadSopenharmony_ci    than one component may be provided at once.  Integer values flow
595bd8deadSopenharmony_ci    through the pixel processing pipe, and no pixel transfer
605bd8deadSopenharmony_ci    operations are performed.  Integer format enumerants used for such
615bd8deadSopenharmony_ci    operations indicate unnormalized integer data.
625bd8deadSopenharmony_ci
635bd8deadSopenharmony_ci    Textures or render buffers with unnormalized integer formats may also be
645bd8deadSopenharmony_ci    attached to framebuffer objects to receive fragment color values written
655bd8deadSopenharmony_ci    by a fragment shader.  Per-fragment operations that require floating-point
665bd8deadSopenharmony_ci    color components, including multisample alpha operations, alpha test,
675bd8deadSopenharmony_ci    blending, and dithering, have no effect when the corresponding colors are
685bd8deadSopenharmony_ci    written to an integer color buffer.  The NV_gpu_program4 and
695bd8deadSopenharmony_ci    EXT_gpu_shader4 extensions add the capability to fragment programs and
705bd8deadSopenharmony_ci    fragment shaders to write signed and unsigned integer output values.
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ci    This extension does not enforce type consistency for texture accesses or
735bd8deadSopenharmony_ci    between fragment shaders and the corresponding framebuffer attachments.
745bd8deadSopenharmony_ci    The results of a texture lookup from an integer texture are undefined:
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci      * for fixed-function fragment processing, or
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ci      * for shader texture accesses expecting floating-point return values.  
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ci    The color components used for per-fragment operations and written into a
815bd8deadSopenharmony_ci    color buffer are undefined:
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ci      * for fixed-function fragment processing with an integer color buffer,
845bd8deadSopenharmony_ci
855bd8deadSopenharmony_ci      * for fragment shaders that write floating-point color components to an
865bd8deadSopenharmony_ci        integer color buffer, or
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci      * for fragment shaders that write integer color components to a color
895bd8deadSopenharmony_ci        buffer with floating point or normalized integer components.
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci
925bd8deadSopenharmony_ciNew Procedures and Functions
935bd8deadSopenharmony_ci
945bd8deadSopenharmony_ci    void ClearColorIiEXT ( int r, int g, int b, int a );
955bd8deadSopenharmony_ci    void ClearColorIuiEXT ( uint r, uint g, uint b, uint a );
965bd8deadSopenharmony_ci    void TexParameterIivEXT( enum target, enum pname, int *params );
975bd8deadSopenharmony_ci    void TexParameterIuivEXT( enum target, enum pname, uint *params );
985bd8deadSopenharmony_ci    void GetTexParameterIivEXT ( enum target, enum pname, int *params);
995bd8deadSopenharmony_ci    void GetTexParameterIuivEXT ( enum target, enum pname, uint *params);
1005bd8deadSopenharmony_ci
1015bd8deadSopenharmony_ciNew Tokens
1025bd8deadSopenharmony_ci
1035bd8deadSopenharmony_ci    Accepted by the <pname> parameters of GetBooleanv, GetIntegerv,
1045bd8deadSopenharmony_ci    GetFloatv, and GetDoublev:
1055bd8deadSopenharmony_ci
1065bd8deadSopenharmony_ci        RGBA_INTEGER_MODE_EXT                           0x8D9E
1075bd8deadSopenharmony_ci
1085bd8deadSopenharmony_ci    Accepted by the <internalFormat> parameter of TexImage1D,
1095bd8deadSopenharmony_ci    TexImage2D, and TexImage3D:
1105bd8deadSopenharmony_ci
1115bd8deadSopenharmony_ci        RGBA32UI_EXT                                    0x8D70
1125bd8deadSopenharmony_ci        RGB32UI_EXT                                     0x8D71
1135bd8deadSopenharmony_ci        ALPHA32UI_EXT                                   0x8D72
1145bd8deadSopenharmony_ci        INTENSITY32UI_EXT                               0x8D73
1155bd8deadSopenharmony_ci        LUMINANCE32UI_EXT                               0x8D74
1165bd8deadSopenharmony_ci        LUMINANCE_ALPHA32UI_EXT                         0x8D75
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci        RGBA16UI_EXT                                    0x8D76
1195bd8deadSopenharmony_ci        RGB16UI_EXT                                     0x8D77
1205bd8deadSopenharmony_ci        ALPHA16UI_EXT                                   0x8D78
1215bd8deadSopenharmony_ci        INTENSITY16UI_EXT                               0x8D79
1225bd8deadSopenharmony_ci        LUMINANCE16UI_EXT                               0x8D7A
1235bd8deadSopenharmony_ci        LUMINANCE_ALPHA16UI_EXT                         0x8D7B
1245bd8deadSopenharmony_ci
1255bd8deadSopenharmony_ci        RGBA8UI_EXT                                     0x8D7C
1265bd8deadSopenharmony_ci        RGB8UI_EXT                                      0x8D7D
1275bd8deadSopenharmony_ci        ALPHA8UI_EXT                                    0x8D7E
1285bd8deadSopenharmony_ci        INTENSITY8UI_EXT                                0x8D7F
1295bd8deadSopenharmony_ci        LUMINANCE8UI_EXT                                0x8D80
1305bd8deadSopenharmony_ci        LUMINANCE_ALPHA8UI_EXT                          0x8D81
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci        RGBA32I_EXT                                     0x8D82
1335bd8deadSopenharmony_ci        RGB32I_EXT                                      0x8D83
1345bd8deadSopenharmony_ci        ALPHA32I_EXT                                    0x8D84
1355bd8deadSopenharmony_ci        INTENSITY32I_EXT                                0x8D85
1365bd8deadSopenharmony_ci        LUMINANCE32I_EXT                                0x8D86
1375bd8deadSopenharmony_ci        LUMINANCE_ALPHA32I_EXT                          0x8D87
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ci        RGBA16I_EXT                                     0x8D88
1405bd8deadSopenharmony_ci        RGB16I_EXT                                      0x8D89
1415bd8deadSopenharmony_ci        ALPHA16I_EXT                                    0x8D8A
1425bd8deadSopenharmony_ci        INTENSITY16I_EXT                                0x8D8B
1435bd8deadSopenharmony_ci        LUMINANCE16I_EXT                                0x8D8C
1445bd8deadSopenharmony_ci        LUMINANCE_ALPHA16I_EXT                          0x8D8D
1455bd8deadSopenharmony_ci
1465bd8deadSopenharmony_ci        RGBA8I_EXT                                      0x8D8E
1475bd8deadSopenharmony_ci        RGB8I_EXT                                       0x8D8F
1485bd8deadSopenharmony_ci        ALPHA8I_EXT                                     0x8D90
1495bd8deadSopenharmony_ci        INTENSITY8I_EXT                                 0x8D91
1505bd8deadSopenharmony_ci        LUMINANCE8I_EXT                                 0x8D92
1515bd8deadSopenharmony_ci        LUMINANCE_ALPHA8I_EXT                           0x8D93
1525bd8deadSopenharmony_ci
1535bd8deadSopenharmony_ci    Accepted by the <format> parameter of TexImage1D, TexImage2D,
1545bd8deadSopenharmony_ci    TexImage3D, TexSubImage1D, TexSubImage2D, TexSubImage3D,
1555bd8deadSopenharmony_ci    DrawPixels and ReadPixels:
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci        RED_INTEGER_EXT                                 0x8D94
1585bd8deadSopenharmony_ci        GREEN_INTEGER_EXT                               0x8D95
1595bd8deadSopenharmony_ci        BLUE_INTEGER_EXT                                0x8D96
1605bd8deadSopenharmony_ci        ALPHA_INTEGER_EXT                               0x8D97
1615bd8deadSopenharmony_ci        RGB_INTEGER_EXT                                 0x8D98
1625bd8deadSopenharmony_ci        RGBA_INTEGER_EXT                                0x8D99
1635bd8deadSopenharmony_ci        BGR_INTEGER_EXT                                 0x8D9A
1645bd8deadSopenharmony_ci        BGRA_INTEGER_EXT                                0x8D9B
1655bd8deadSopenharmony_ci        LUMINANCE_INTEGER_EXT                           0x8D9C
1665bd8deadSopenharmony_ci        LUMINANCE_ALPHA_INTEGER_EXT                     0x8D9D
1675bd8deadSopenharmony_ci
1685bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization)
1695bd8deadSopenharmony_ci
1705bd8deadSopenharmony_ci    Modify Section 3.6.4 (Rasterization of Pixel Rectangles), p. 126:
1715bd8deadSopenharmony_ci
1725bd8deadSopenharmony_ci    (modify the last paragraph, p. 126)
1735bd8deadSopenharmony_ci    Pixels are drawn using
1745bd8deadSopenharmony_ci
1755bd8deadSopenharmony_ci        void DrawPixels( sizei width, sizei height, enum format,
1765bd8deadSopenharmony_ci            enum type, void *data );
1775bd8deadSopenharmony_ci
1785bd8deadSopenharmony_ci    <format> is a symbolic constant indicating what the values in
1795bd8deadSopenharmony_ci    memory represent.  <width> and <height> are the width and height,
1805bd8deadSopenharmony_ci    respectively, of the pixel rectangle to be drawn. <data> is a
1815bd8deadSopenharmony_ci    pointer to the data to be drawn. These data are represented with
1825bd8deadSopenharmony_ci    one of seven GL data types, specified by <type>. The
1835bd8deadSopenharmony_ci    correspondence between the twenty type token values and the GL
1845bd8deadSopenharmony_ci    data types they indicate is given in table 3.5. If the GL is in
1855bd8deadSopenharmony_ci    color index mode and <format> is not one of COLOR_INDEX,
1865bd8deadSopenharmony_ci    STENCIL_INDEX, or DEPTH_COMPONENT, then the error
1875bd8deadSopenharmony_ci    INVALID_OPERATION occurs.  If the GL is in RGBA mode and the color
1885bd8deadSopenharmony_ci    buffer is an integer format and no fragment shader is active, the
1895bd8deadSopenharmony_ci    error INVALID_OPERATION occurs.  If <type> is BITMAP and <format>
1905bd8deadSopenharmony_ci    is not COLOR_INDEX or STENCIL_INDEX then the error INVALID_ENUM
1915bd8deadSopenharmony_ci    occurs.  If <format> is one of the integer component formats as
1925bd8deadSopenharmony_ci    defined in table 3.6, and <type> is FLOAT, then the error
1935bd8deadSopenharmony_ci    INVALID_ENUM occurs.  Some additional constraints on the
1945bd8deadSopenharmony_ci    combinations of format and type values that are accepted is
1955bd8deadSopenharmony_ci    discussed below.
1965bd8deadSopenharmony_ci
1975bd8deadSopenharmony_ci    (add the following to table 3.6, p. 129)
1985bd8deadSopenharmony_ci    Format Name                  Element Meaning and Order      Target Buffer
1995bd8deadSopenharmony_ci    ------ ----                  ------- ------- --- -----      ------ ------
2005bd8deadSopenharmony_ci    RED_INTEGER_EXT              iR                             Color
2015bd8deadSopenharmony_ci    GREEN_INTEGER_EXT            iG                             Color
2025bd8deadSopenharmony_ci    BLUE_INTEGER_EXT             iB                             Color
2035bd8deadSopenharmony_ci    ALPHA_INTEGER_EXT            iA                             Color
2045bd8deadSopenharmony_ci    RGB_INTEGER_EXT              iR, iG, iB                     Color
2055bd8deadSopenharmony_ci    RGBA_INTEGER_EXT             iR, iG, iB, iA                 Color
2065bd8deadSopenharmony_ci    BGR_INTEGER_EXT              iB, iG, iR                     Color
2075bd8deadSopenharmony_ci    BGRA_INTEGER_EXT             iB, iG, iR, iA                 Color
2085bd8deadSopenharmony_ci    LUMINANCE_INTEGER_EXT        iLuminance                     Color
2095bd8deadSopenharmony_ci    LUMINANCE_ALPHA_INTEGER_EXT  iLuminance, iA                 Color
2105bd8deadSopenharmony_ci
2115bd8deadSopenharmony_ci    Table 3.6: DrawPixels and ReadPixels formats. The second column
2125bd8deadSopenharmony_ci    gives a description of and the number and order of elements in a
2135bd8deadSopenharmony_ci    group. Unless specified as an index, formats yield components.
2145bd8deadSopenharmony_ci    Components are floating-point unless prefixed with the letter 'i'
2155bd8deadSopenharmony_ci    which indicates they are integer.
2165bd8deadSopenharmony_ci
2175bd8deadSopenharmony_ci    (modify first paragraph, p. 129)
2185bd8deadSopenharmony_ci    Data are taken from host memory as a sequence of signed or
2195bd8deadSopenharmony_ci    unsigned bytes (GL data types byte and ubyte), signed or unsigned
2205bd8deadSopenharmony_ci    short integers (GL data types short and ushort), signed or
2215bd8deadSopenharmony_ci    unsigned integers (GL data types int and uint), or floating point
2225bd8deadSopenharmony_ci    values (GL data type float). These elements are grouped into sets
2235bd8deadSopenharmony_ci    of one, two, three, or four values, depending on the format, to
2245bd8deadSopenharmony_ci    form a group.  Table 3.6 summarizes the format of groups obtained
2255bd8deadSopenharmony_ci    from memory; it also indicates those formats that yield indices
2265bd8deadSopenharmony_ci    and those that yield floating-point or integer components.
2275bd8deadSopenharmony_ci
2285bd8deadSopenharmony_ci    (modify the last paragraph, p. 135)
2295bd8deadSopenharmony_ci
2305bd8deadSopenharmony_ci    Conversion to floating-point
2315bd8deadSopenharmony_ci
2325bd8deadSopenharmony_ci    This step applies only to groups of floating-point components. It
2335bd8deadSopenharmony_ci    is not performed on indices or integer components.
2345bd8deadSopenharmony_ci
2355bd8deadSopenharmony_ci    (modify the third paragraph, p. 136)
2365bd8deadSopenharmony_ci    Final Expansion to RGBA
2375bd8deadSopenharmony_ci
2385bd8deadSopenharmony_ci    This step is performed only for non-depth component groups. Each
2395bd8deadSopenharmony_ci    group is converted to a group of 4 elements as follows: if a group
2405bd8deadSopenharmony_ci    does not contain an A element, then A is added and set to 1 for
2415bd8deadSopenharmony_ci    integer components or 1.0 for floating-point components. If any of
2425bd8deadSopenharmony_ci    R, G, or B is missing from the group, each missing element is
2435bd8deadSopenharmony_ci    added and assigned a value of 0 for integer components or 0.0 for
2445bd8deadSopenharmony_ci    floating-point components.
2455bd8deadSopenharmony_ci
2465bd8deadSopenharmony_ci    (modify the last paragraph, p. 136)
2475bd8deadSopenharmony_ci    Final Conversion
2485bd8deadSopenharmony_ci
2495bd8deadSopenharmony_ci    For a color index, final conversion consists of masking the bits
2505bd8deadSopenharmony_ci    of the index to the left of the binary point by 2^n - 1, where n is
2515bd8deadSopenharmony_ci    the number of bits in an index buffer.  For floating-point RGBA
2525bd8deadSopenharmony_ci    components, each element is clamped to [0, 1]. The resulting
2535bd8deadSopenharmony_ci    values are converted to fixed-point according to the rules given
2545bd8deadSopenharmony_ci    in section 2.14.9 (Final Color Processing).  For integer RGBA
2555bd8deadSopenharmony_ci    components, no conversion is applied.  For a depth component, an
2565bd8deadSopenharmony_ci    element is first clamped to [0, 1] and then converted to
2575bd8deadSopenharmony_ci    fixed-point as if it were a window z value (see section 2.11.1,
2585bd8deadSopenharmony_ci    Controlling the Viewport).  Stencil indices are masked by 2^n - 1,
2595bd8deadSopenharmony_ci    where n is the number of bits in the stencil buffer.
2605bd8deadSopenharmony_ci
2615bd8deadSopenharmony_ci    Modify Section 3.6.5 (Pixel Transfer Operations), p. 137
2625bd8deadSopenharmony_ci
2635bd8deadSopenharmony_ci    (modify last paragraph, p. 137)
2645bd8deadSopenharmony_ci    The GL defines five kinds of pixel groups:
2655bd8deadSopenharmony_ci
2665bd8deadSopenharmony_ci    1. Floating-point RGBA component: Each group comprises four color
2675bd8deadSopenharmony_ci       components in floating point format: red, green, blue, and
2685bd8deadSopenharmony_ci       alpha.
2695bd8deadSopenharmony_ci
2705bd8deadSopenharmony_ci    2. Integer RGBA component: Each group comprises four color
2715bd8deadSopenharmony_ci       components in integer format: red, green, blue, and alpha.
2725bd8deadSopenharmony_ci
2735bd8deadSopenharmony_ci    3. Depth component: Each group comprises a single depth component.
2745bd8deadSopenharmony_ci
2755bd8deadSopenharmony_ci    4. Color index: Each group comprises a single color index.
2765bd8deadSopenharmony_ci
2775bd8deadSopenharmony_ci    5. Stencil index: Each group comprises a single stencil index.
2785bd8deadSopenharmony_ci
2795bd8deadSopenharmony_ci    (modify second paragraph, p. 138)
2805bd8deadSopenharmony_ci    Each operation described in this section is applied sequentially
2815bd8deadSopenharmony_ci    to each pixel group in an image. Many operations are applied only
2825bd8deadSopenharmony_ci    to pixel groups of certain kinds; if an operation is not
2835bd8deadSopenharmony_ci    applicable to a given group, it is skipped.  None of the
2845bd8deadSopenharmony_ci    operations defined in this section affect integer RGBA component
2855bd8deadSopenharmony_ci    pixel groups.
2865bd8deadSopenharmony_ci
2875bd8deadSopenharmony_ci    Modify Section 3.8 (Texturing), p. 149
2885bd8deadSopenharmony_ci
2895bd8deadSopenharmony_ci    (insert between the first and second paragraphs, p. 150)
2905bd8deadSopenharmony_ci    The internal data type of a texture may be fixed-point,
2915bd8deadSopenharmony_ci    floating-point, signed integer or unsigned integer, depending on
2925bd8deadSopenharmony_ci    the internalformat of the texture.  The correspondence between
2935bd8deadSopenharmony_ci    internalformat and the internal data type is given in table 3.16.
2945bd8deadSopenharmony_ci    Fixed-point and floating-point textures return a floating-point
2955bd8deadSopenharmony_ci    value and integer textures return signed or unsigned integer
2965bd8deadSopenharmony_ci    values.  When a fragment shader is active, the shader is
2975bd8deadSopenharmony_ci    responsible for interpreting the result of a texture lookup as the
2985bd8deadSopenharmony_ci    correct data type, otherwise the result is undefined.  Fixed
2995bd8deadSopenharmony_ci    functionality assumes floating-point data, hence the result of
3005bd8deadSopenharmony_ci    using fixed functionality with integer textures is undefined.
3015bd8deadSopenharmony_ci
3025bd8deadSopenharmony_ci    Modify Section 3.8.1 (Texture Image Specification), p. 150
3035bd8deadSopenharmony_ci
3045bd8deadSopenharmony_ci    (modify second paragraph, p. 151) The selected groups are
3055bd8deadSopenharmony_ci    processed exactly as for DrawPixels, stopping just before final
3065bd8deadSopenharmony_ci    conversion.  If the <internalformat> of the texture is integer,
3075bd8deadSopenharmony_ci    the components are clamped to the representable range of the
3085bd8deadSopenharmony_ci    internal format: for signed formats, this is [-2^(n-1), 2^(n-1)-1]
3095bd8deadSopenharmony_ci    where n is the number of bits per component; for unsigned formats,
3105bd8deadSopenharmony_ci    the range is [0, 2^n-1].  For R, G, B, and A, if the
3115bd8deadSopenharmony_ci    <internalformat> of the texture is fixed-point, the components are
3125bd8deadSopenharmony_ci    clamped to [0, 1].  Otherwise, the components are not modified.
3135bd8deadSopenharmony_ci
3145bd8deadSopenharmony_ci    (insert between paragraphs five and six, p. 151)
3155bd8deadSopenharmony_ci    Textures with integer internal formats (table 3.16) require
3165bd8deadSopenharmony_ci    integer data.  The error INVALID_OPERATION is generated if the
3175bd8deadSopenharmony_ci    internal format is integer and <format> is not one of the integer
3185bd8deadSopenharmony_ci    formats listed in table 3.6, or if the internal format is not
3195bd8deadSopenharmony_ci    integer and <format> is an integer format, or if <format> is an
3205bd8deadSopenharmony_ci    integer format and <type> is FLOAT.
3215bd8deadSopenharmony_ci
3225bd8deadSopenharmony_ci    (add the following to table 3.16, p. 154)
3235bd8deadSopenharmony_ci    Sized                   Base              R    G    B    A    L    I
3245bd8deadSopenharmony_ci    Internal Format         Internal Format  bits bits bits bits bits bits
3255bd8deadSopenharmony_ci    ----------------------- ---------------  ---- ---- ---- ---- ---- ----
3265bd8deadSopenharmony_ci    ALPHA8I_EXT             ALPHA                             i8
3275bd8deadSopenharmony_ci    ALPHA8UI_EXT            ALPHA                            ui8
3285bd8deadSopenharmony_ci    ALPHA16I_EXT            ALPHA                            i16
3295bd8deadSopenharmony_ci    ALPHA16UI_EXT           ALPHA                           ui16
3305bd8deadSopenharmony_ci    ALPHA32I_EXT            ALPHA                            i32
3315bd8deadSopenharmony_ci    ALPHA32UI_EXT           ALPHA                           ui32
3325bd8deadSopenharmony_ci    LUMINANCE8I_EXT         LUMINANCE                              i8
3335bd8deadSopenharmony_ci    LUMINANCE8UI_EXT        LUMINANCE                             ui8
3345bd8deadSopenharmony_ci    LUMINANCE16I_EXT        LUMINANCE                             i16
3355bd8deadSopenharmony_ci    LUMINANCE16UI_EXT       LUMINANCE                            ui16
3365bd8deadSopenharmony_ci    LUMINANCE32I_EXT        LUMINANCE                             i32
3375bd8deadSopenharmony_ci    LUMINANCE32UI_EXT       LUMINANCE                            ui32
3385bd8deadSopenharmony_ci    LUMINANCE_ALPHA8I_EXT   LUMINANCE_ALPHA                   i8   i8
3395bd8deadSopenharmony_ci    LUMINANCE_ALPHA8UI_EXT  LUMINANCE_ALPHA                  ui8  ui8
3405bd8deadSopenharmony_ci    LUMINANCE_ALPHA16I_EXT  LUMINANCE_ALPHA                  i16  i16
3415bd8deadSopenharmony_ci    LUMINANCE_ALPHA16UI_EXT LUMINANCE_ALPHA                 ui16 ui16
3425bd8deadSopenharmony_ci    LUMINANCE_ALPHA32I_EXT  LUMINANCE_ALPHA                  i32  i32
3435bd8deadSopenharmony_ci    LUMINANCE_ALPHA32UI_EXT LUMINANCE_ALPHA                 ui32 ui32
3445bd8deadSopenharmony_ci    INTENSITY8I_EXT         INTENSITY                                   i8
3455bd8deadSopenharmony_ci    INTENSITY8UI_EXT        INTENSITY                                  ui8
3465bd8deadSopenharmony_ci    INTENSITY16I_EXT        INTENSITY                                  i16
3475bd8deadSopenharmony_ci    INTENSITY16UI_EXT       INTENSITY                                 ui16
3485bd8deadSopenharmony_ci    INTENSITY32I_EXT        INTENSITY                                  i32
3495bd8deadSopenharmony_ci    INTENSITY32UI_EXT       INTENSITY                                 ui32
3505bd8deadSopenharmony_ci    RGB8I_EXT               RGB                i8   i8   i8
3515bd8deadSopenharmony_ci    RGB8UI_EXT              RGB               ui8  ui8  ui8
3525bd8deadSopenharmony_ci    RGB16I_EXT              RGB               i16  i16  i16
3535bd8deadSopenharmony_ci    RGB16UI_EXT             RGB              ui16 ui16 ui16
3545bd8deadSopenharmony_ci    RGB32I_EXT              RGB               i32  i32  i32
3555bd8deadSopenharmony_ci    RGB32UI_EXT             RGB              ui32 ui32 ui32
3565bd8deadSopenharmony_ci    RGBA8I_EXT              RGBA               i8   i8   i8   i8
3575bd8deadSopenharmony_ci    RGBA8UI_EXT             RGBA              ui8  ui8  ui8  ui8
3585bd8deadSopenharmony_ci    RGBA16I_EXT             RGBA              i16  i16  i16  i16
3595bd8deadSopenharmony_ci    RGBA16UI_EXT            RGBA             ui16 ui16 ui16 ui16
3605bd8deadSopenharmony_ci    RGBA32I_EXT             RGBA              i32  i32  i32  i32
3615bd8deadSopenharmony_ci    RGBA32UI_EXT            RGBA             ui32 ui32 ui32 ui32
3625bd8deadSopenharmony_ci
3635bd8deadSopenharmony_ci    Table 3.16: Correspondence of sized internal formats to base
3645bd8deadSopenharmony_ci    internal formats, internal data type and desired component
3655bd8deadSopenharmony_ci    resolutions for each sized internal format.  The component
3665bd8deadSopenharmony_ci    resolution prefix indicates the internal data type: <f> is
3675bd8deadSopenharmony_ci    floating point, <i> is signed integer, <ui> is unsigned integer,
3685bd8deadSopenharmony_ci    and no prefix is fixed-point.
3695bd8deadSopenharmony_ci
3705bd8deadSopenharmony_ci
3715bd8deadSopenharmony_ci    Modify Section 3.8.2 (Alternate Texture Image Specification
3725bd8deadSopenharmony_ci    Commands), p. 159:
3735bd8deadSopenharmony_ci
3745bd8deadSopenharmony_ci    (modify the second paragraph, p. 159)
3755bd8deadSopenharmony_ci    The error INVALID_OPERATION is generated if depth component data
3765bd8deadSopenharmony_ci    is required and no depth buffer is present, or if integer RGBA
3775bd8deadSopenharmony_ci    data is required and the format of the current color buffer is not
3785bd8deadSopenharmony_ci    integer, or if floating-point or fixed-point RGBA data is required
3795bd8deadSopenharmony_ci    and the format of the current color buffer is integer.
3805bd8deadSopenharmony_ci
3815bd8deadSopenharmony_ci    Modify Section 3.8.4 (Texture Parameters), p. 166:
3825bd8deadSopenharmony_ci
3835bd8deadSopenharmony_ci    Various parameters control how the texture array is treated when
3845bd8deadSopenharmony_ci    specified or changed, and when applied to a fragment. Each
3855bd8deadSopenharmony_ci    parameter is set by calling
3865bd8deadSopenharmony_ci
3875bd8deadSopenharmony_ci        void TexParameter{if}( enum target, enum pname, T param );
3885bd8deadSopenharmony_ci        void TexParameter{if}v( enum target, enum pname, T params );
3895bd8deadSopenharmony_ci        void TexParameterIivEXT( enum target, enum pname, int *params );
3905bd8deadSopenharmony_ci        void TexParameterIuivEXT( enum target, enum pname, uint *params );
3915bd8deadSopenharmony_ci
3925bd8deadSopenharmony_ci    <target> is the target, either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D,
3935bd8deadSopenharmony_ci    or TEXTURE_CUBE_MAP. <pname> is a symbolic constant indicating the
3945bd8deadSopenharmony_ci    parameter to be set; the possible constants and corresponding
3955bd8deadSopenharmony_ci    parameters are summarized in table 3.19. In the first form of the
3965bd8deadSopenharmony_ci    command, <param> is a value to which to set a single-valued
3975bd8deadSopenharmony_ci    parameter; in the second and third forms of the command, <params>
3985bd8deadSopenharmony_ci    is an array of parameters whose type depends on the parameter
3995bd8deadSopenharmony_ci    being set.
4005bd8deadSopenharmony_ci
4015bd8deadSopenharmony_ci    If the value for TEXTURE_PRIORITY is specified as an integer, the
4025bd8deadSopenharmony_ci    conversion for signed integers from table 2.9 is applied to
4035bd8deadSopenharmony_ci    convert the value to floating-point.  The floating point value of
4045bd8deadSopenharmony_ci    TEXTURE_PRIORITY is clamped to lie in [0, 1].
4055bd8deadSopenharmony_ci
4065bd8deadSopenharmony_ci    If the values for TEXTURE_BORDER_COLOR are specified with
4075bd8deadSopenharmony_ci    TexParameterIivEXT or TexParameterIuivEXT, the values are
4085bd8deadSopenharmony_ci    unmodified and stored with an internal data type of integer.  If
4095bd8deadSopenharmony_ci    specified with TexParameteriv, the conversion for signed integers
4105bd8deadSopenharmony_ci    from table 2.9 is applied to convert these values to
4115bd8deadSopenharmony_ci    floating-point.  Otherwise the values are unmodified and stored as
4125bd8deadSopenharmony_ci    floating-point.
4135bd8deadSopenharmony_ci
4145bd8deadSopenharmony_ci
4155bd8deadSopenharmony_ci
4165bd8deadSopenharmony_ci    (modify table 3.19, p. 167)
4175bd8deadSopenharmony_ci    Name                  Type         Legal Values
4185bd8deadSopenharmony_ci    ----                  ----         ------------
4195bd8deadSopenharmony_ci    TEXTURE_BORDER_COLOR  4 floats or  any 4 values
4205bd8deadSopenharmony_ci                          4 ints or
4215bd8deadSopenharmony_ci                          4 uints
4225bd8deadSopenharmony_ci
4235bd8deadSopenharmony_ci    Table 3.19: Texture parameters and their values.
4245bd8deadSopenharmony_ci
4255bd8deadSopenharmony_ci    Modify Section 3.8.8 (Texture Minification), p. 170
4265bd8deadSopenharmony_ci
4275bd8deadSopenharmony_ci    (modify last paragraph, p. 174)
4285bd8deadSopenharmony_ci
4295bd8deadSopenharmony_ci    ... If the texture contains color components, the values of
4305bd8deadSopenharmony_ci    TEXTURE_BORDER_COLOR are interpreted as an RGBA color to match the
4315bd8deadSopenharmony_ci    texture's internal format in a manner consistent with table 3.15.
4325bd8deadSopenharmony_ci    The internal data type of the border values must be consistent
4335bd8deadSopenharmony_ci    with the type returned by the texture as described in section 3.8,
4345bd8deadSopenharmony_ci    or the result is undefined.  The border values for texture
4355bd8deadSopenharmony_ci    components stored as fixed-point values are clamped to [0, 1]
4365bd8deadSopenharmony_ci    before they are used.  If the texture contains depth components,
4375bd8deadSopenharmony_ci    the first component of TEXTURE_BORDER_COLOR is interpreted as a
4385bd8deadSopenharmony_ci    depth value
4395bd8deadSopenharmony_ci
4405bd8deadSopenharmony_ci    Modify Section 3.8.10 (Texture Completeness), p. 177:
4415bd8deadSopenharmony_ci
4425bd8deadSopenharmony_ci    (add to the requirements for one-, two-, or three-dimensional
4435bd8deadSopenharmony_ci    textures)
4445bd8deadSopenharmony_ci    If the internalformat is integer, TEXTURE_MAG_FILTER must be
4455bd8deadSopenharmony_ci    NEAREST and TEXTURE_MIN_FILTER must be NEAREST or
4465bd8deadSopenharmony_ci    NEAREST_MIPMAP_NEAREST.
4475bd8deadSopenharmony_ci    
4485bd8deadSopenharmony_ci    Modify Section 3.11.2 (Shader Execution), p. 194
4495bd8deadSopenharmony_ci
4505bd8deadSopenharmony_ci    (modify Shader Outputs, first paragraph, p. 196)
4515bd8deadSopenharmony_ci    ... These are gl_FragColor, gl_FragData[n], and gl_FragDepth.  If
4525bd8deadSopenharmony_ci    fragment clamping is enabled and the color buffer has a
4535bd8deadSopenharmony_ci    fixed-point or floating-point format, the final fragment color
4545bd8deadSopenharmony_ci    values or the final fragment data values written by a fragment
4555bd8deadSopenharmony_ci    shader are clamped to the range [0, 1].  If fragment clamping is
4565bd8deadSopenharmony_ci    disabled or the color buffer has an integer format, the final
4575bd8deadSopenharmony_ci    fragment color values or the final fragment data values are not
4585bd8deadSopenharmony_ci    modified.  The final fragment depth...
4595bd8deadSopenharmony_ci
4605bd8deadSopenharmony_ci    (insert between the first paragraph and second paragraphs of
4615bd8deadSopenharmony_ci    "Shader Outputs", p. 196)
4625bd8deadSopenharmony_ci    Colors values written by the fragment shader may be floating-
4635bd8deadSopenharmony_ci    point, signed integer or unsigned integer.  If the color buffer
4645bd8deadSopenharmony_ci    has a fixed-point format, the color values are assumed to be
4655bd8deadSopenharmony_ci    floating-point and are converted to fixed-point as described in
4665bd8deadSopenharmony_ci    section 2.14.9; otherwise no type conversion is applied.  If the
4675bd8deadSopenharmony_ci    values written by the fragment shader do not match the format(s)
4685bd8deadSopenharmony_ci    of the corresponding color buffer(s), the result is undefined.
4695bd8deadSopenharmony_ci
4705bd8deadSopenharmony_ci
4715bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 2.0 Specification (Per-Fragment
4725bd8deadSopenharmony_ciOperations and the Frame Buffer)
4735bd8deadSopenharmony_ci
4745bd8deadSopenharmony_ci    Modify Chapter 4 Introduction, (p. 198)
4755bd8deadSopenharmony_ci
4765bd8deadSopenharmony_ci    (modify third paragraph, p. 198)
4775bd8deadSopenharmony_ci    Color buffers consist of unsigned integer color indices, R, G, B
4785bd8deadSopenharmony_ci    and optionally A floating-point components represented as
4795bd8deadSopenharmony_ci    fixed-point unsigned integer or floating-point values, or R, G, B
4805bd8deadSopenharmony_ci    and optionally A integer components represented as signed or
4815bd8deadSopenharmony_ci    unsigned integer values.  The number of bitplanes...
4825bd8deadSopenharmony_ci
4835bd8deadSopenharmony_ci    Modify Section 4.1.3 (Multisample Fragment Operations), p. 200
4845bd8deadSopenharmony_ci
4855bd8deadSopenharmony_ci    (modify the second paragraph in this section)
4865bd8deadSopenharmony_ci    ... If SAMPLE_ALPHA_TO_COVERAGE is enabled and the color buffer
4875bd8deadSopenharmony_ci    has a fixed-point or floating-point format, a temporary coverage
4885bd8deadSopenharmony_ci    value is generated ...
4895bd8deadSopenharmony_ci
4905bd8deadSopenharmony_ci    Modify Section 4.1.4 (Alpha Test), p. 201
4915bd8deadSopenharmony_ci
4925bd8deadSopenharmony_ci    (modify the first paragraph in this section)    
4935bd8deadSopenharmony_ci    This step applies only in RGBA mode and only if the color buffer
4945bd8deadSopenharmony_ci    has a fixed-point or floating-point format. In color index mode or
4955bd8deadSopenharmony_ci    if the color buffer has an integer format, proceed to the next
4965bd8deadSopenharmony_ci    operation. The alpha test discards ...
4975bd8deadSopenharmony_ci
4985bd8deadSopenharmony_ci    Modify Section 4.1.8 (Blending), p. 205
4995bd8deadSopenharmony_ci
5005bd8deadSopenharmony_ci    (modify the second paragraph, p. 206)
5015bd8deadSopenharmony_ci    ... Blending is dependent on the incoming fragment's alpha value
5025bd8deadSopenharmony_ci    and that of the corresponding currently stored pixel. Blending
5035bd8deadSopenharmony_ci    applies only in RGBA mode and only if the color buffer has a
5045bd8deadSopenharmony_ci    fixed-point or floating-point format; in color index mode or if
5055bd8deadSopenharmony_ci    the color buffer has an integer format, it is bypassed. ...
5065bd8deadSopenharmony_ci
5075bd8deadSopenharmony_ci    Modify Section 4.2.3 (Clearing the Buffers), p. 215
5085bd8deadSopenharmony_ci
5095bd8deadSopenharmony_ci       void ClearColor(float r, float g, float b, float a);
5105bd8deadSopenharmony_ci
5115bd8deadSopenharmony_ci    sets the clear value for fixed-point and floating-point color
5125bd8deadSopenharmony_ci    buffers in RGBA mode.  The specified components are stored as
5135bd8deadSopenharmony_ci    floating-point values.
5145bd8deadSopenharmony_ci
5155bd8deadSopenharmony_ci       void ClearColorIiEXT(int r, int g, int b, int a);
5165bd8deadSopenharmony_ci       void ClearColorIuiEXT(uint r, uint g, uint b, uint a);
5175bd8deadSopenharmony_ci
5185bd8deadSopenharmony_ci    set the clear value for signed integer and unsigned integer color
5195bd8deadSopenharmony_ci    buffers, respectively, in RGBA mode.  The specified components are
5205bd8deadSopenharmony_ci    stored as integer values.
5215bd8deadSopenharmony_ci
5225bd8deadSopenharmony_ci    (add to the end of first partial paragraph, p. 217) ... then a
5235bd8deadSopenharmony_ci    Clear directed at that buffer has no effect.  When fixed-point
5245bd8deadSopenharmony_ci    RGBA color buffers are cleared, the clear color values are assumed
5255bd8deadSopenharmony_ci    to be floating-point and are clamped to [0,1] before being
5265bd8deadSopenharmony_ci    converted to fixed-point according to the rules of section 2.14.9.
5275bd8deadSopenharmony_ci    The result of clearing fixed-point or floating-point color buffers
5285bd8deadSopenharmony_ci    is undefined if the clear color was specified as integer values.
5295bd8deadSopenharmony_ci    The result of when clearing integer color buffers is undefined if
5305bd8deadSopenharmony_ci    the clear color was specified as floating-point values.
5315bd8deadSopenharmony_ci
5325bd8deadSopenharmony_ci    Modify Section 4.3.2 (Reading Pixels), p. 219
5335bd8deadSopenharmony_ci
5345bd8deadSopenharmony_ci    (append to the last paragraph, p. 221)
5355bd8deadSopenharmony_ci    The error INVALID_OPERATION occurs if <format> is an integer
5365bd8deadSopenharmony_ci    format and the color buffer is not an integer format, or if the
5375bd8deadSopenharmony_ci    color buffer is an integer format and <format> is not.  The error
5385bd8deadSopenharmony_ci    INVALID_ENUM occurs if <format> is an integer format and <type> is
5395bd8deadSopenharmony_ci    FLOAT.
5405bd8deadSopenharmony_ci
5415bd8deadSopenharmony_ci    (modify the first paragraph, p. 222)
5425bd8deadSopenharmony_ci    ... For a fixed-point color buffer, each element is taken to be a
5435bd8deadSopenharmony_ci    fixed-point value in [0, 1] with m bits, where m is the number of
5445bd8deadSopenharmony_ci    bits in the corresponding color component of the selected buffer
5455bd8deadSopenharmony_ci    (see section 2.14.9).  For an integer or floating-point color
5465bd8deadSopenharmony_ci    buffer, the elements are unmodified.
5475bd8deadSopenharmony_ci
5485bd8deadSopenharmony_ci    (modify the section labeled "Conversion to L", p. 222)
5495bd8deadSopenharmony_ci    This step applies only to RGBA component groups.  If the format is
5505bd8deadSopenharmony_ci    either LUMINANCE or LUMINANCE_ALPHA, a value L is computed as
5515bd8deadSopenharmony_ci
5525bd8deadSopenharmony_ci        L = R + G + B
5535bd8deadSopenharmony_ci
5545bd8deadSopenharmony_ci    otherwise if the format is either LUMINANCE_INTEGER_EXT or
5555bd8deadSopenharmony_ci    LUMINANCE_ALPHA_INTEGER_EXT, L is computed as
5565bd8deadSopenharmony_ci
5575bd8deadSopenharmony_ci        L = R
5585bd8deadSopenharmony_ci
5595bd8deadSopenharmony_ci    where R, G, and B are the values of the R, G, and B
5605bd8deadSopenharmony_ci    components. The single computed L component replaces the R, G, and
5615bd8deadSopenharmony_ci    B components in the group.
5625bd8deadSopenharmony_ci
5635bd8deadSopenharmony_ci    (modify the section labeled "Final Conversion", p. 222)
5645bd8deadSopenharmony_ci
5655bd8deadSopenharmony_ci    For a floating-point RGBA color, each component is first clamped
5665bd8deadSopenharmony_ci    to [0, 1]. Then the appropriate conversion formula from table 4.7
5675bd8deadSopenharmony_ci    is applied to the component.  For an integer RGBA color, each
5685bd8deadSopenharmony_ci    component is clamped to the representable range of <type>.
5695bd8deadSopenharmony_ci
5705bd8deadSopenharmony_ci
5715bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 2.0 Specification (State and
5725bd8deadSopenharmony_ciState Requests)
5735bd8deadSopenharmony_ci
5745bd8deadSopenharmony_ci    Modify Section 6.1.3 (Enumerated Queries), p. 246
5755bd8deadSopenharmony_ci
5765bd8deadSopenharmony_ci    (insert in the list of query functions, p. 246)
5775bd8deadSopenharmony_ci    void GetTexParameterIivEXT( enum target, enum value, int *data );
5785bd8deadSopenharmony_ci    void GetTexParameterIuivEXT( enum target, enum value, uint *data );
5795bd8deadSopenharmony_ci
5805bd8deadSopenharmony_ci    (modify the second paragraph, p. 247)
5815bd8deadSopenharmony_ci    ... For GetTexParameter, value must be either TEXTURE_RESIDENT, or
5825bd8deadSopenharmony_ci    one of the symbolic values in table 3.19.  Querying <value>
5835bd8deadSopenharmony_ci    TEXTURE_BORDER_COLOR with GetTexParameterIivEXT or
5845bd8deadSopenharmony_ci    GetTexParameterIuivEXT returns the border color values as signed
5855bd8deadSopenharmony_ci    integers or unsigned integers, respectively; otherwise the values
5865bd8deadSopenharmony_ci    are returned as described in section 6.1.2.  If the border color
5875bd8deadSopenharmony_ci    is queried with a type that does not match the original type with
5885bd8deadSopenharmony_ci    which it was specified, the result is undefined.  The <lod>
5895bd8deadSopenharmony_ci    argument ...
5905bd8deadSopenharmony_ci
5915bd8deadSopenharmony_ci    (add to end of third paragraph, p. 247) Queries with a <value> of
5925bd8deadSopenharmony_ci    TEXTURE_RED_TYPE_ARB, TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB,
5935bd8deadSopenharmony_ci    TEXTURE_ALPHA_TYPE_ARB, TEXTURE_LUMINANCE_TYPE_ARB,
5945bd8deadSopenharmony_ci    TEXTURE_INTENSITY_TYPE_ARB, or TEXTURE_DEPTH_TYPE_ARB, return the data
5955bd8deadSopenharmony_ci    type used to store the component.  Values of NONE,
5965bd8deadSopenharmony_ci    UNSIGNED_NORMALIZED_ARB, FLOAT, INT, or UNSIGNED_INT, indicate missing,
5975bd8deadSopenharmony_ci    unsigned normalized integer, floating-point, signed unnormalized integer,
5985bd8deadSopenharmony_ci    and unsigned unnormalized integer components, respectively.
5995bd8deadSopenharmony_ci
6005bd8deadSopenharmony_ci
6015bd8deadSopenharmony_ciGLX Protocol
6025bd8deadSopenharmony_ci
6035bd8deadSopenharmony_ci    The following rendering commands are sent to the server as part of
6045bd8deadSopenharmony_ci    a glXRender request:
6055bd8deadSopenharmony_ci
6065bd8deadSopenharmony_ci    ClearColorIiEXT
6075bd8deadSopenharmony_ci
6085bd8deadSopenharmony_ci        2      20              rendering command length
6095bd8deadSopenharmony_ci        2      4292            rendering command opcode
6105bd8deadSopenharmony_ci        4      INT32           r
6115bd8deadSopenharmony_ci        4      INT32           g
6125bd8deadSopenharmony_ci        4      INT32           b
6135bd8deadSopenharmony_ci        4      INT32           a
6145bd8deadSopenharmony_ci
6155bd8deadSopenharmony_ci    ClearColorIuiEXT
6165bd8deadSopenharmony_ci
6175bd8deadSopenharmony_ci        2      20              rendering command length
6185bd8deadSopenharmony_ci        2      4293            rendering command opcode
6195bd8deadSopenharmony_ci        4      CARD32          r
6205bd8deadSopenharmony_ci        4      CARD32          g
6215bd8deadSopenharmony_ci        4      CARD32          b
6225bd8deadSopenharmony_ci        4      CARD32          a
6235bd8deadSopenharmony_ci
6245bd8deadSopenharmony_ci    TexParameterIivEXT
6255bd8deadSopenharmony_ci
6265bd8deadSopenharmony_ci        2      12+(4*n)        rendering command length
6275bd8deadSopenharmony_ci        2      346             rendering command opcode
6285bd8deadSopenharmony_ci        4      ENUM            target
6295bd8deadSopenharmony_ci        4      ENUM            pname
6305bd8deadSopenharmony_ci               0x2802 n=1      GL_TEXTURE_WRAP_S
6315bd8deadSopenharmony_ci               0x2803 n=1      GL_TEXTURE_WRAP_T
6325bd8deadSopenharmony_ci               0x8072 n=1      GL_TEXTURE_WRAP_R
6335bd8deadSopenharmony_ci               0x2801 n=1      GL_TEXTURE_MIN_FILTER
6345bd8deadSopenharmony_ci               0x2800 n=1      GL_TEXTURE_MAG_FILTER
6355bd8deadSopenharmony_ci               0x8066 n=1      GL_TEXTURE_PRIORITY
6365bd8deadSopenharmony_ci               0x813A n=1      GL_TEXTURE_MIN_LOD
6375bd8deadSopenharmony_ci               0x813B n=1      GL_TEXTURE_MAX_LOD
6385bd8deadSopenharmony_ci               0x813C n=1      GL_TEXTURE_BASE_LEVEL
6395bd8deadSopenharmony_ci               0x813D n=1      GL_TEXTURE_MAX_LEVEL
6405bd8deadSopenharmony_ci               0x8501 n=1      GL_TEXTURE_LOD_BIAS
6415bd8deadSopenharmony_ci               0x884B n=1      GL_DEPTH_TEXTURE_MODE
6425bd8deadSopenharmony_ci               0x884C n=1      GL_TEXTURE_COMPARE_MODE
6435bd8deadSopenharmony_ci               0x884D n=1      GL_TEXTURE_COMPARE_FUNC
6445bd8deadSopenharmony_ci               0x8191 n=1      GL_GENERATE_MIPMAP
6455bd8deadSopenharmony_ci               0x1004 n=4      GL_TEXTURE_BORDER_COLOR
6465bd8deadSopenharmony_ci        4*n    LISTofINT32     params
6475bd8deadSopenharmony_ci
6485bd8deadSopenharmony_ci    TexParameterIuivEXT
6495bd8deadSopenharmony_ci
6505bd8deadSopenharmony_ci        2      12+(4*n)        rendering command length
6515bd8deadSopenharmony_ci        2      347             rendering command opcode
6525bd8deadSopenharmony_ci        4      ENUM            target
6535bd8deadSopenharmony_ci        4      ENUM            pname
6545bd8deadSopenharmony_ci               0x2802 n=1      GL_TEXTURE_WRAP_S
6555bd8deadSopenharmony_ci               0x2803 n=1      GL_TEXTURE_WRAP_T
6565bd8deadSopenharmony_ci               0x8072 n=1      GL_TEXTURE_WRAP_R
6575bd8deadSopenharmony_ci               0x2801 n=1      GL_TEXTURE_MIN_FILTER
6585bd8deadSopenharmony_ci               0x2800 n=1      GL_TEXTURE_MAG_FILTER
6595bd8deadSopenharmony_ci               0x8066 n=1      GL_TEXTURE_PRIORITY
6605bd8deadSopenharmony_ci               0x813A n=1      GL_TEXTURE_MIN_LOD
6615bd8deadSopenharmony_ci               0x813B n=1      GL_TEXTURE_MAX_LOD
6625bd8deadSopenharmony_ci               0x813C n=1      GL_TEXTURE_BASE_LEVEL
6635bd8deadSopenharmony_ci               0x813D n=1      GL_TEXTURE_MAX_LEVEL
6645bd8deadSopenharmony_ci               0x8501 n=1      GL_TEXTURE_LOD_BIAS
6655bd8deadSopenharmony_ci               0x884B n=1      GL_DEPTH_TEXTURE_MODE
6665bd8deadSopenharmony_ci               0x884C n=1      GL_TEXTURE_COMPARE_MODE
6675bd8deadSopenharmony_ci               0x884D n=1      GL_TEXTURE_COMPARE_FUNC
6685bd8deadSopenharmony_ci               0x8191 n=1      GL_GENERATE_MIPMAP
6695bd8deadSopenharmony_ci               0x1004 n=4      GL_TEXTURE_BORDER_COLOR
6705bd8deadSopenharmony_ci        4*n    LISTofCARD32    params
6715bd8deadSopenharmony_ci
6725bd8deadSopenharmony_ci    The following new non-rendering commands are added:
6735bd8deadSopenharmony_ci
6745bd8deadSopenharmony_ci    GetTexParameterIivEXT
6755bd8deadSopenharmony_ci
6765bd8deadSopenharmony_ci        1      CARD8           opcode(X assigned)
6775bd8deadSopenharmony_ci        1      203             GLX opcode
6785bd8deadSopenharmony_ci        2      4               request length
6795bd8deadSopenharmony_ci        4      GLX_CONTEXT_TAG context tag
6805bd8deadSopenharmony_ci        4      ENUM            target
6815bd8deadSopenharmony_ci        4      ENUM            pname
6825bd8deadSopenharmony_ci    =>
6835bd8deadSopenharmony_ci        1      1               reply
6845bd8deadSopenharmony_ci        1                      unused
6855bd8deadSopenharmony_ci        2      CARD16          sequence number
6865bd8deadSopenharmony_ci        4      m               reply length, m=(n==1?0:n)
6875bd8deadSopenharmony_ci        4                      unused
6885bd8deadSopenharmony_ci        4      CARD32          n
6895bd8deadSopenharmony_ci
6905bd8deadSopenharmony_ci        if (n=1) this follows:
6915bd8deadSopenharmony_ci
6925bd8deadSopenharmony_ci        4      INT32           params
6935bd8deadSopenharmony_ci        12                     unused
6945bd8deadSopenharmony_ci
6955bd8deadSopenharmony_ci        otherwise this follows:
6965bd8deadSopenharmony_ci
6975bd8deadSopenharmony_ci        16                     unused
6985bd8deadSopenharmony_ci        n*4    LISTofINT32     params
6995bd8deadSopenharmony_ci
7005bd8deadSopenharmony_ci    GetTexParameterIuivEXT
7015bd8deadSopenharmony_ci
7025bd8deadSopenharmony_ci        1      CARD8           opcode(X assigned)
7035bd8deadSopenharmony_ci        1      204             GLX opcode
7045bd8deadSopenharmony_ci        2      4               request length
7055bd8deadSopenharmony_ci        4      GLX_CONTEXT_TAG context tag
7065bd8deadSopenharmony_ci        4      ENUM            target
7075bd8deadSopenharmony_ci        4      ENUM            pname
7085bd8deadSopenharmony_ci    =>
7095bd8deadSopenharmony_ci        1      1               reply
7105bd8deadSopenharmony_ci        1                      unused
7115bd8deadSopenharmony_ci        2      CARD16          sequence number
7125bd8deadSopenharmony_ci        4      m               reply length, m=(n==1?0:n)
7135bd8deadSopenharmony_ci        4                      unused
7145bd8deadSopenharmony_ci        4      CARD32          n
7155bd8deadSopenharmony_ci
7165bd8deadSopenharmony_ci        if (n=1) this follows:
7175bd8deadSopenharmony_ci
7185bd8deadSopenharmony_ci        4      CARD32          params
7195bd8deadSopenharmony_ci        12                     unused
7205bd8deadSopenharmony_ci
7215bd8deadSopenharmony_ci        otherwise this follows:
7225bd8deadSopenharmony_ci
7235bd8deadSopenharmony_ci        16                     unused
7245bd8deadSopenharmony_ci        n*4    LISTofCARD32    params
7255bd8deadSopenharmony_ci
7265bd8deadSopenharmony_ciDependencies on ARB_texture_float
7275bd8deadSopenharmony_ci
7285bd8deadSopenharmony_ci    The following changes should be made if ARB_texture_float is not
7295bd8deadSopenharmony_ci    supported:
7305bd8deadSopenharmony_ci
7315bd8deadSopenharmony_ci    The references to floating-point data types in section 3.8, p. 150
7325bd8deadSopenharmony_ci    should be deleted.
7335bd8deadSopenharmony_ci
7345bd8deadSopenharmony_ci    The language in section 3.8.1 should indicate that final
7355bd8deadSopenharmony_ci    conversion always clamps when the internalformat is not integer.
7365bd8deadSopenharmony_ci
7375bd8deadSopenharmony_ci    The description of table 3.16 should not mention the <f>
7385bd8deadSopenharmony_ci    floating-point formats.
7395bd8deadSopenharmony_ci
7405bd8deadSopenharmony_ci    Section 3.8.4 should indicate that border color values should be
7415bd8deadSopenharmony_ci    clamped to [0,1] before being stored, if not specified with one of
7425bd8deadSopenharmony_ci    the TexParameterI* functions.
7435bd8deadSopenharmony_ci
7445bd8deadSopenharmony_ci    Section 3.8.8 should not mention clamping border color values to
7455bd8deadSopenharmony_ci    [0,1] for fixed-point textures, since this occurs in 3.8.4 at
7465bd8deadSopenharmony_ci    TexParameter specification.
7475bd8deadSopenharmony_ci
7485bd8deadSopenharmony_ciDependencies on ARB_color_buffer_float
7495bd8deadSopenharmony_ci
7505bd8deadSopenharmony_ci    The following changes should be made if ARB_color_buffer_float is
7515bd8deadSopenharmony_ci    not supported:
7525bd8deadSopenharmony_ci
7535bd8deadSopenharmony_ci    Section 3.11.2, subsection "Shader Outputs: p. 196 should not
7545bd8deadSopenharmony_ci    mention fragment clamping or color buffers with floating-point
7555bd8deadSopenharmony_ci    formats.
7565bd8deadSopenharmony_ci
7575bd8deadSopenharmony_ci    Chapter 4, p. 198 should not mention components represented as
7585bd8deadSopenharmony_ci    floating-point values.
7595bd8deadSopenharmony_ci
7605bd8deadSopenharmony_ci    Section 4.1.3, p. 200, section 4.1.4 p. 205, section 4.1.8 p. 206,
7615bd8deadSopenharmony_ci    section 4.2.3 p. 215 and section 4.3.2 p. 222 should not mention
7625bd8deadSopenharmony_ci    color buffers with a floating-point format.
7635bd8deadSopenharmony_ci
7645bd8deadSopenharmony_ci    Section 4.2.3 p. 217 should not mention clamping the clear color
7655bd8deadSopenharmony_ci    values to [0,1].
7665bd8deadSopenharmony_ci
7675bd8deadSopenharmony_ciErrors
7685bd8deadSopenharmony_ci
7695bd8deadSopenharmony_ci    INVALID_OPERATION is generated by Begin, DrawPixels, Bitmap,
7705bd8deadSopenharmony_ci    CopyPixels, or a command that performs an explicit Begin if the
7715bd8deadSopenharmony_ci    color buffer has an integer RGBA format and no fragment shader is
7725bd8deadSopenharmony_ci    active.
7735bd8deadSopenharmony_ci
7745bd8deadSopenharmony_ci    INVALID_ENUM is generated by DrawPixels, TexImage* and
7755bd8deadSopenharmony_ci    SubTexImage* if <format> is one of the integer component formats
7765bd8deadSopenharmony_ci    described in table 3.6 and <type> is FLOAT.
7775bd8deadSopenharmony_ci
7785bd8deadSopenharmony_ci    INVALID_OPERATION is generated by TexImage* and SubTexImage* if
7795bd8deadSopenharmony_ci    the texture internalformat is an integer format as described in
7805bd8deadSopenharmony_ci    table 3.16 and <format> is not one of the integer component
7815bd8deadSopenharmony_ci    formats described in table 3.6, or if the internalformat is not an
7825bd8deadSopenharmony_ci    integer format and <format> is an integer format.
7835bd8deadSopenharmony_ci
7845bd8deadSopenharmony_ci    INVALID_OPERATION is generated by CopyTexImage* and
7855bd8deadSopenharmony_ci    CopyTexSubImage* if the texture internalformat is an integer
7865bd8deadSopenharmony_ci    format and the read color buffer is not an integer format, or if
7875bd8deadSopenharmony_ci    the internalformat is not an integer format and the read color
7885bd8deadSopenharmony_ci    buffer is an integer format.
7895bd8deadSopenharmony_ci
7905bd8deadSopenharmony_ci    INVALID_ENUM is generated by ReadPixels if <format> is an integer
7915bd8deadSopenharmony_ci    format and <type> is FLOAT.
7925bd8deadSopenharmony_ci
7935bd8deadSopenharmony_ci    INVALID_OPERATON is generated by ReadPixels if <format> is an
7945bd8deadSopenharmony_ci    integer format and the color buffer is not an integer format, or
7955bd8deadSopenharmony_ci    if <format> is not an integer format and the color buffer is an
7965bd8deadSopenharmony_ci    integer format.
7975bd8deadSopenharmony_ci
7985bd8deadSopenharmony_ciNew State
7995bd8deadSopenharmony_ci
8005bd8deadSopenharmony_ci    (modify table 6.33, p. 294)
8015bd8deadSopenharmony_ci
8025bd8deadSopenharmony_ci                                                    Minimum
8035bd8deadSopenharmony_ci    Get Value                  Type   Get Command   Value    Description       Sec.   Attribute
8045bd8deadSopenharmony_ci    ------------------------   ----   -----------   -------  ----------------  ----   ----------
8055bd8deadSopenharmony_ci    RGBA_INTEGER_MODE_EXT        B    GetBooleanv   -        True if RGBA      2.7    -
8065bd8deadSopenharmony_ci                                                             components are
8075bd8deadSopenharmony_ci                                                             integers
8085bd8deadSopenharmony_ci
8095bd8deadSopenharmony_ciIssues
8105bd8deadSopenharmony_ci
8115bd8deadSopenharmony_ci    How should the integer pixel path be triggered: by the destination
8125bd8deadSopenharmony_ci    type, new source types, or new source formats?
8135bd8deadSopenharmony_ci
8145bd8deadSopenharmony_ci        RESOLVED: New source formats, based on the precedence of
8155bd8deadSopenharmony_ci        COLOR_INDEX and STENCIL_INDEX formats which invoke distinct
8165bd8deadSopenharmony_ci        pixel path behavior with identical data types and independent
8175bd8deadSopenharmony_ci        of the destination.
8185bd8deadSopenharmony_ci
8195bd8deadSopenharmony_ci    Should pixel transfer operations be defined for the integer pixel
8205bd8deadSopenharmony_ci    path?
8215bd8deadSopenharmony_ci
8225bd8deadSopenharmony_ci        RESOLVED: No.  Fragment shaders can achieve similar results
8235bd8deadSopenharmony_ci        with more flexibility.  There is no need to aggrandize this
8245bd8deadSopenharmony_ci        legacy mechanism.
8255bd8deadSopenharmony_ci
8265bd8deadSopenharmony_ci    What happens if a shader reads a float texel from an integer
8275bd8deadSopenharmony_ci    texture or vice-versa?
8285bd8deadSopenharmony_ci
8295bd8deadSopenharmony_ci        RESOLVED: The result is undefined.  The shader must have
8305bd8deadSopenharmony_ci        knowledge of the texture internal data type.
8315bd8deadSopenharmony_ci
8325bd8deadSopenharmony_ci    How do integer textures behave in fixed function fragment
8335bd8deadSopenharmony_ci    processing?
8345bd8deadSopenharmony_ci
8355bd8deadSopenharmony_ci        RESOLVED: The fixed function texture pipeline assumes textures
8365bd8deadSopenharmony_ci        return floating-point values, hence the return value from an
8375bd8deadSopenharmony_ci        integer texture will not be in a meaningful format.
8385bd8deadSopenharmony_ci
8395bd8deadSopenharmony_ci    How does TEXTURE_BORDER_COLOR work with integer textures?
8405bd8deadSopenharmony_ci
8415bd8deadSopenharmony_ci        RESOLVED: The internal storage of border values effectively
8425bd8deadSopenharmony_ci        becomes a union, and the returned values are interpreted as
8435bd8deadSopenharmony_ci        the same type as the texture.  New versions of TexParameter
8445bd8deadSopenharmony_ci        allow specification of signed and unsigned integer border
8455bd8deadSopenharmony_ci        values.
8465bd8deadSopenharmony_ci
8475bd8deadSopenharmony_ci    How does logic op behave with RGBA mode rendering into integer
8485bd8deadSopenharmony_ci    color buffer?
8495bd8deadSopenharmony_ci
8505bd8deadSopenharmony_ci        RESOLVED: The color logic op operates when enabled when
8515bd8deadSopenharmony_ci        rendering into integer color buffers.
8525bd8deadSopenharmony_ci
8535bd8deadSopenharmony_ci        Logic op operations make sense for integer color buffers so the
8545bd8deadSopenharmony_ci        COLOR_LOGIC_OP enable is respected when rendering into integer
8555bd8deadSopenharmony_ci        color buffers.
8565bd8deadSopenharmony_ci
8575bd8deadSopenharmony_ci        Blending does not apply to RGBA mode rendering when rendering
8585bd8deadSopenharmony_ci        into integer color buffers (as section 4.1.8 is updated to say).
8595bd8deadSopenharmony_ci        The color logic op (described in section 4.1.10) is not a blending
8605bd8deadSopenharmony_ci        operation (though it does take priority over the blending enable).
8615bd8deadSopenharmony_ci
8625bd8deadSopenharmony_ciRevision History
8635bd8deadSopenharmony_ci
8645bd8deadSopenharmony_ci    Rev.    Date    Author    Changes
8655bd8deadSopenharmony_ci    ----  --------  --------  -----------------------------------------
8665bd8deadSopenharmony_ci      6   05/20/10  srahman   Add GLX protocol.
8675bd8deadSopenharmony_ci
8685bd8deadSopenharmony_ci      5   07/15/07  pbrown    Fix typo in GetTexParameterIuivEXT function
8695bd8deadSopenharmony_ci                              name in "New Procedures and Functions".
8705bd8deadSopenharmony_ci
8715bd8deadSopenharmony_ci      4      --               Pre-release revisions.
8725bd8deadSopenharmony_ci
873