15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    NV_float_buffer
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_NV_float_buffer
85bd8deadSopenharmony_ci    WGL_NV_float_buffer
95bd8deadSopenharmony_ci    GLX_NV_float_buffer
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ciContact
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ci    Pat Brown, NVIDIA Corporation (pbrown 'at' nvidia.com)
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ciNotice
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ci    Copyright NVIDIA Corporation.
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciIP Status
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    NVIDIA Proprietary.
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciStatus
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    Implemented in CineFX (NV30) Emulation driver, August 2002.
265bd8deadSopenharmony_ci    Shipping in Release 40 NVIDIA driver for CineFX hardware, January 2003.
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ci    Superseded by the more general ARB_texture_float and
295bd8deadSopenharmony_ci    ARB_color_buffer_float extensions.  However, NV3x-based GPUs are not
305bd8deadSopenharmony_ci    capable enough to support the generality of the ARB extensions so
315bd8deadSopenharmony_ci    the NV_float_buffer extension remains available for NV3x development
325bd8deadSopenharmony_ci    and backward compatibility.
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ciVersion
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ci    Last Modified:      2006/11/03
375bd8deadSopenharmony_ci    NVIDIA Revision:    20
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ciNumber
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    281
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ciDependencies
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ci    Written based on the wording of the OpenGL 1.3 specification and the
465bd8deadSopenharmony_ci    WGL_ARB_pixel_format extension specification.
475bd8deadSopenharmony_ci
485bd8deadSopenharmony_ci    The following extensions are required:
495bd8deadSopenharmony_ci        * NV_fragment_program
505bd8deadSopenharmony_ci        * NV_texture_rectangle
515bd8deadSopenharmony_ci        * WGL_ARB_pixel_format
525bd8deadSopenharmony_ci        * WGL_ARB_render_texture
535bd8deadSopenharmony_ci        * WGL_NV_render_texture_rectangle
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    EXT_paletted_texture trivially affects the definition of this extension.
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ci    SGIX_depth_texture trivially affects the definition of this extension.
585bd8deadSopenharmony_ci
595bd8deadSopenharmony_ci    NV_texture_shader trivially affects the definition of this extension.
605bd8deadSopenharmony_ci
615bd8deadSopenharmony_ci    NV_half_float trivially affects the definition of this extension.
625bd8deadSopenharmony_ci
635bd8deadSopenharmony_ci    ARB_color_buffer_float and ATI_pixel_format_float affect the definition of
645bd8deadSopenharmony_ci    this extension.
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ci    ARB_texture_float and ATI_texture_float affect the definition of this
675bd8deadSopenharmony_ci    extension.
685bd8deadSopenharmony_ci
695bd8deadSopenharmony_ci    This extension modifies EXT_framebuffer_object.
705bd8deadSopenharmony_ci
715bd8deadSopenharmony_ciOverview
725bd8deadSopenharmony_ci
735bd8deadSopenharmony_ci    This extension builds upon NV_fragment_program to provide a framebuffer
745bd8deadSopenharmony_ci    and texture format that allows fragment programs to read and write
755bd8deadSopenharmony_ci    unconstrained floating point data.
765bd8deadSopenharmony_ci
775bd8deadSopenharmony_ci    In unextended OpenGL, most computations dealing with color or depth
785bd8deadSopenharmony_ci    buffers are typically constrained to operate on values in the range [0,1].
795bd8deadSopenharmony_ci    Computational results are also typically clamped to the range [0,1].
805bd8deadSopenharmony_ci    Color, texture, and depth buffers themselves also hold values mapped to
815bd8deadSopenharmony_ci    the range [0,1].
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ci    The NV_fragment_program extension provides a general computational model
845bd8deadSopenharmony_ci    that supports floating-point numbers constrained only by the precision of
855bd8deadSopenharmony_ci    the underlying data types.  The quantites computed by fragment programs do
865bd8deadSopenharmony_ci    not necessarily correspond in number or in range to conventional
875bd8deadSopenharmony_ci    attributes such as RGBA colors or depth values.  Because of the range and
885bd8deadSopenharmony_ci    precision constraints imposed by conventional fixed-point color buffers,
895bd8deadSopenharmony_ci    it may be difficult (if not impossible) to use them to implement certain
905bd8deadSopenharmony_ci    multi-pass algorithms.
915bd8deadSopenharmony_ci
925bd8deadSopenharmony_ci    To enhance the extended range and precision available through fragment
935bd8deadSopenharmony_ci    programs, this extension provides floating-point RGBA color buffers that
945bd8deadSopenharmony_ci    can be used instead of conventional fixed-point RGBA color buffers.  A
955bd8deadSopenharmony_ci    floating-point RGBA color buffer consists of one to four floating-point
965bd8deadSopenharmony_ci    components stored in the 16- or 32-bit floating-point formats (fp16 or
975bd8deadSopenharmony_ci    fp32) defined in the NV_half_float and NV_fragment_program extensions.
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci    When a floating-point color buffer is used, the results of fragment
1005bd8deadSopenharmony_ci    programs, as written to the "x", "y", "z", and "w" components of the
1015bd8deadSopenharmony_ci    o[COLR] or o[COLH] output registers, are written directly to the color
1025bd8deadSopenharmony_ci    buffer without any clamping or modification.  Certain per-fragment
1035bd8deadSopenharmony_ci    operations are bypassed when rendering to floating-point color buffers.
1045bd8deadSopenharmony_ci
1055bd8deadSopenharmony_ci    A floating-point color buffer can also be used as a texture map, either by
1065bd8deadSopenharmony_ci    reading back the contents and then using conventional TexImage calls, or
1075bd8deadSopenharmony_ci    by using the buffer directly via the ARB_render_texture extension or
1085bd8deadSopenharmony_ci    the EXT_framebuffer_object extension.
1095bd8deadSopenharmony_ci
1105bd8deadSopenharmony_ci    This extension has many uses.  Some possible uses include:
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci        (1) Multi-pass algorithms with arbitrary intermediate results that
1135bd8deadSopenharmony_ci            don't have to be artifically forced into the range [0,1].  In
1145bd8deadSopenharmony_ci            addition, intermediate results can be written without having to
1155bd8deadSopenharmony_ci            worry about out-of-range values.
1165bd8deadSopenharmony_ci
1175bd8deadSopenharmony_ci        (2) Deferred shading algorithms where an expensive fragment program is
1185bd8deadSopenharmony_ci            executed only after depth testing is fully complete.  Instead, a
1195bd8deadSopenharmony_ci            simple program is executed, which stores the parameters necessary
1205bd8deadSopenharmony_ci            to produce a final result.  After the entire scene is rendered, a
1215bd8deadSopenharmony_ci            second pass is executed over the entire frame buffer to execute
1225bd8deadSopenharmony_ci            the complex fragment program using the results written to the
1235bd8deadSopenharmony_ci            floating-point color buffer in the first pass.  This will save the
1245bd8deadSopenharmony_ci            cost of applying complex fragment programs to fragments that will
1255bd8deadSopenharmony_ci            not appear in the final image.
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ci        (3) Use floating-point texture maps to evaluate functions with
1285bd8deadSopenharmony_ci            arbitrary ranges.  Arbitrary functions with a finite domain can be
1295bd8deadSopenharmony_ci            approximated using a texture map holding sample results and
1305bd8deadSopenharmony_ci            piecewise linear approximation.
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci    There are several significant limitations on the use of floating-point
1335bd8deadSopenharmony_ci    color buffers.  First, floating-point color buffers do not support frame
1345bd8deadSopenharmony_ci    buffer blending.  Second, floating-point texture maps do not support
1355bd8deadSopenharmony_ci    mipmapping or any texture filtering other than NEAREST.  Third,
1365bd8deadSopenharmony_ci    floating-point texture maps must be 2D, and must use the
1375bd8deadSopenharmony_ci    NV_texture_rectangle extension.
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ciIssues
1405bd8deadSopenharmony_ci
1415bd8deadSopenharmony_ci    Should the extension create a separate non-RGBA pixel formats or simply
1425bd8deadSopenharmony_ci    extend existing RGBA formats?
1435bd8deadSopenharmony_ci
1445bd8deadSopenharmony_ci        RESOLVED:  Extend existing RGBA formats.  Since fragment programs
1455bd8deadSopenharmony_ci        generally build on RGBA semantics, it's cleaner to avoid creating a
1465bd8deadSopenharmony_ci        separate "XYZW" mode.  There are several special semantics that need
1475bd8deadSopenharmony_ci        to be added:  clear color state is now not clamped, and ReadPixels
1485bd8deadSopenharmony_ci        will clamp to [0,1] only if the source data comes from fixed-point
1495bd8deadSopenharmony_ci        color buffers.
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ci        Fragment programs can be written that store data completely unrelated
1525bd8deadSopenharmony_ci        to color into a floating-point "RGBA" buffer.
1535bd8deadSopenharmony_ci 
1545bd8deadSopenharmony_ci    Can floating-point color buffers be displayed?  If so, how?
1555bd8deadSopenharmony_ci
1565bd8deadSopenharmony_ci        RESOLVED:  Not in this extension.  Floating-point color buffers can be
1575bd8deadSopenharmony_ci        used only as pbuffers.  Hardware necessary to display floating-point
1585bd8deadSopenharmony_ci        color buffers would be expensive and consume significant memory
1595bd8deadSopenharmony_ci        bandwidth.
1605bd8deadSopenharmony_ci
1615bd8deadSopenharmony_ci    Is it possible to encode more than four distinct values in a
1625bd8deadSopenharmony_ci    floating-point color buffer?
1635bd8deadSopenharmony_ci
1645bd8deadSopenharmony_ci        RESOLVED:  Yes.  The NV_fragment_program extension contains pack and
1655bd8deadSopenharmony_ci        unpack instructions (PK2H, PK2US, PK4B, PK4UB, PK4UBG, UP2H, UP2US,
1665bd8deadSopenharmony_ci        UP4B, UP4UB, UP4UBG) that allow fragment programs to encode multiple
1675bd8deadSopenharmony_ci        values into a single 32-bit component.  In particular, it is possible
1685bd8deadSopenharmony_ci        to pack two half-precision floats, two normalized unsigned shorts, or
1695bd8deadSopenharmony_ci        four normalized signed or unsigned bytes into a single 32-bit
1705bd8deadSopenharmony_ci        component.
1715bd8deadSopenharmony_ci
1725bd8deadSopenharmony_ci        A program can use a pack instruction to pack multiple values into a
1735bd8deadSopenharmony_ci        single 32-bit component and then write the resulting component to a
1745bd8deadSopenharmony_ci        floating-point color buffer with 32-bit components.  On a subsequent
1755bd8deadSopenharmony_ci        rendering pass, a program can read back the stored data (using texture
1765bd8deadSopenharmony_ci        mapping) and use the equivalent unpack instruction to restore the
1775bd8deadSopenharmony_ci        original values.  The only data lost in this process comes from the
1785bd8deadSopenharmony_ci        loss of precision or clamping in the packing operation, where the
1795bd8deadSopenharmony_ci        original values are converted to data types with lower precision or a
1805bd8deadSopenharmony_ci        smaller data range.
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ci    What happens when rendering to a floating-point color buffer if fragment
1835bd8deadSopenharmony_ci    program mode is disabled?  Or when fragment program mode is enabled, but
1845bd8deadSopenharmony_ci    no program is loaded?
1855bd8deadSopenharmony_ci
1865bd8deadSopenharmony_ci        RESOLVED:  Fragment programs are required to use floating-point color
1875bd8deadSopenharmony_ci        buffers.  An INVALID_OPERATION error is generated by any GL command
1885bd8deadSopenharmony_ci        that generates fragments if FRAGMENT_PROGRAM_NV is disabled.  The same
1895bd8deadSopenharmony_ci        behavior already exists for conventional frame buffers if
1905bd8deadSopenharmony_ci        FRAGMENT_PROGRAM_NV is enabled but the bound fragment program is
1915bd8deadSopenharmony_ci        invalid.
1925bd8deadSopenharmony_ci
1935bd8deadSopenharmony_ci    Should alpha test be supported with floating-point color buffers?
1945bd8deadSopenharmony_ci
1955bd8deadSopenharmony_ci        RESOLVED:  No.  It is trivial to implement an alpha test in a fragment
1965bd8deadSopenharmony_ci        program using the KIL instruction, which requires no dedicated frame
1975bd8deadSopenharmony_ci        buffer logic.
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ci    Should blending be supported with floating-point color buffers?
2005bd8deadSopenharmony_ci
2015bd8deadSopenharmony_ci        RESOLVED:  Not in this extension.  While blending would clearly be
2025bd8deadSopenharmony_ci        useful, full-precision floating-point blenders are expensive.  In
2035bd8deadSopenharmony_ci        addition, a computational model more general than traditional blending
2045bd8deadSopenharmony_ci        (with its 1-x operations and clamping) is desirable.  The traditional
2055bd8deadSopenharmony_ci        OpenGL blending model would not be the most suitable computational
2065bd8deadSopenharmony_ci        model for future blend-enabled floating-point color buffers.
2075bd8deadSopenharmony_ci
2085bd8deadSopenharmony_ci        An alternative to conventional blending (operating at a coarser
2095bd8deadSopenharmony_ci        granularity) is to (1) render a pass into the color buffer, (2) bind
2105bd8deadSopenharmony_ci        the color buffer as a texture rectangle using this extension and
2115bd8deadSopenharmony_ci        ARB_render_texture, (3) perform texture lookups in a fragment program
2125bd8deadSopenharmony_ci        using the TEX instruction with f[WPOS].xy as a 2D texture coordinate,
2135bd8deadSopenharmony_ci        and (4) perform the necessary blending between the passes using the
2145bd8deadSopenharmony_ci        same fragment program.
2155bd8deadSopenharmony_ci
2165bd8deadSopenharmony_ci    Should we provide accumulation buffers for pixel formats with
2175bd8deadSopenharmony_ci    floating-point color buffers?
2185bd8deadSopenharmony_ci
2195bd8deadSopenharmony_ci        RESOLVED:  No.  Accumulation operations contents can be achieved using
2205bd8deadSopenharmony_ci        fragment programs to perform the accumulation, which requires no
2215bd8deadSopenharmony_ci        dedicated frame buffer logic.
2225bd8deadSopenharmony_ci
2235bd8deadSopenharmony_ci    Should fragment program color results be converted to match the format of
2245bd8deadSopenharmony_ci    the frame buffer, or should an error result?  For example, what if we
2255bd8deadSopenharmony_ci    write to o[COLR] but have a 16-bit frame buffer?
2265bd8deadSopenharmony_ci
2275bd8deadSopenharmony_ci        RESOLVED:  Conversions can be performed simply in hardware, so no
2285bd8deadSopenharmony_ci        error semantics are required.  This mechanism also allows the same
2295bd8deadSopenharmony_ci        programs to be shared between contexts with different pixel formats.
2305bd8deadSopenharmony_ci
2315bd8deadSopenharmony_ci        Applications should be aware that if color components contain packed
2325bd8deadSopenharmony_ci        data, a data type mismatch may result in a floating-point data
2335bd8deadSopenharmony_ci        conversion that corrupts the packed data.
2345bd8deadSopenharmony_ci
2355bd8deadSopenharmony_ci    How should floating-point color buffers interact with multisampling?  For
2365bd8deadSopenharmony_ci    normal color buffers, the multiple samples for each pixel are required to
2375bd8deadSopenharmony_ci    be filtered down to a single pixel in the color buffer.  Similar filtering
2385bd8deadSopenharmony_ci    on floating-point color buffers does not necessarily make sense.  Should
2395bd8deadSopenharmony_ci    there even be a normal color buffer in this case?
2405bd8deadSopenharmony_ci    
2415bd8deadSopenharmony_ci        RESOLVED:  The initial implementation of this extension does not
2425bd8deadSopenharmony_ci        provide floating-point color buffers that support multisampling.
2435bd8deadSopenharmony_ci
2445bd8deadSopenharmony_ci        Multisample fragment operations (e.g., SAMPLE_COVERAGE) are explicitly
2455bd8deadSopenharmony_ci        not supported by extension.  This extension does not modify the
2465bd8deadSopenharmony_ci        portion of the spec where multiple samples are resolved to a single
2475bd8deadSopenharmony_ci        color value.  So if floating-point color buffers were provided, the
2485bd8deadSopenharmony_ci        multiple samples are filtered down to a single result value, most
2495bd8deadSopenharmony_ci        likely by computing a per-component average value.
2505bd8deadSopenharmony_ci
2515bd8deadSopenharmony_ci    Conventional RGBA primitive antialiasing multiplies coverage by the alpha
2525bd8deadSopenharmony_ci    component of the fragment's color, with the assumption that alpha blending
2535bd8deadSopenharmony_ci    will be performed.  How does antialiasing work with floating-point color
2545bd8deadSopenharmony_ci    buffers?
2555bd8deadSopenharmony_ci
2565bd8deadSopenharmony_ci        RESOLVED:  It doesn't.  The computed coverage is not accessible to
2575bd8deadSopenharmony_ci        fragment programs and is discarded.  Note also that conventional
2585bd8deadSopenharmony_ci        antialiasing requires alpha blending, which does not work for
2595bd8deadSopenharmony_ci        floating-point color buffers.
2605bd8deadSopenharmony_ci
2615bd8deadSopenharmony_ci    What are the semantics for ReadPixels when using a floating-point color
2625bd8deadSopenharmony_ci    buffer?
2635bd8deadSopenharmony_ci
2645bd8deadSopenharmony_ci        RESOLVED:  ReadPixels from a floating-point color buffer works like
2655bd8deadSopenharmony_ci        any other RGBA read, except that the final results are not clamped to
2665bd8deadSopenharmony_ci        the range [0,1].  This ensures that we can save and restore
2675bd8deadSopenharmony_ci        floating-point color buffers using ReadPixels/DrawPixels.
2685bd8deadSopenharmony_ci
2695bd8deadSopenharmony_ci    What are the semantics for Bitmap when using a floating-point color
2705bd8deadSopenharmony_ci    buffer?
2715bd8deadSopenharmony_ci
2725bd8deadSopenharmony_ci        RESOLVED:  Bitmap generates fragments using the current raster
2735bd8deadSopenharmony_ci        attributes, which are then passed to fragment programs like any other
2745bd8deadSopenharmony_ci        fragments.  Bitmaps will be drawn using the color of the current
2755bd8deadSopenharmony_ci        raster position, whose components are clamped to [0,1] when the raster
2765bd8deadSopenharmony_ci        position is sent.
2775bd8deadSopenharmony_ci
2785bd8deadSopenharmony_ci    What are the semantics for DrawPixels when using a floating-point color
2795bd8deadSopenharmony_ci    buffer?  How about CopyPixels?
2805bd8deadSopenharmony_ci
2815bd8deadSopenharmony_ci        RESOLVED:  DrawPixels generates fragments with the originally
2825bd8deadSopenharmony_ci        specified color values; components are not clamped to [0,1].  For
2835bd8deadSopenharmony_ci        fixed-point color buffers, DrawPixels will generate fragments with
2845bd8deadSopenharmony_ci        clamped color components.  
2855bd8deadSopenharmony_ci
2865bd8deadSopenharmony_ci        CopyPixels is defined in the spec as a ReadPixels followed by a
2875bd8deadSopenharmony_ci        DrawPixels, and will operate similarly.
2885bd8deadSopenharmony_ci
2895bd8deadSopenharmony_ci        This mechanism allows applications to write floating-point data
2905bd8deadSopenharmony_ci        directly into a floating-point color buffer without any clamping.
2915bd8deadSopenharmony_ci        Since DrawPixels and CopyPixels generate fragments and fragment
2925bd8deadSopenharmony_ci        programs are required to render to floating-point color buffers, a
2935bd8deadSopenharmony_ci        fragment program is still required to load a floating-point color
2945bd8deadSopenharmony_ci        buffer using DrawPixels.
2955bd8deadSopenharmony_ci
2965bd8deadSopenharmony_ci    What are the semantics for Clear when using a floating-point color
2975bd8deadSopenharmony_ci    buffer?
2985bd8deadSopenharmony_ci
2995bd8deadSopenharmony_ci        RESOLVED:  Clears work as normal, except that values outside the range
3005bd8deadSopenharmony_ci        [0,1] can be written to the color buffer.  The core spec is modified
3015bd8deadSopenharmony_ci        so that clear color values are not clamped to [0,1].  Instead, for
3025bd8deadSopenharmony_ci        fixed-point color buffers, clear colors are clamped to [0,1] at clear
3035bd8deadSopenharmony_ci        time.
3045bd8deadSopenharmony_ci
3055bd8deadSopenharmony_ci        For compatibility with conventional OpenGL, queries of
3065bd8deadSopenharmony_ci        CLEAR_COLOR_VALUE will clamp components to [0,1].  A separate
3075bd8deadSopenharmony_ci        FLOAT_CLEAR_COLOR_VALUE_NV query is added to query unclamped color
3085bd8deadSopenharmony_ci        clear values.
3095bd8deadSopenharmony_ci
3105bd8deadSopenharmony_ci    Why don't floating-point textures support filtering?  What can be done to
3115bd8deadSopenharmony_ci    achieve texture filtering?
3125bd8deadSopenharmony_ci    
3135bd8deadSopenharmony_ci        RESOLVED:  Extended OpenGL texture filtering (including mipmapping and
3145bd8deadSopenharmony_ci        support for anisotropic filters) is very computationally expensive.
3155bd8deadSopenharmony_ci        Even simple linear filtering for floating-point textures with large
3165bd8deadSopenharmony_ci        components is expensive.
3175bd8deadSopenharmony_ci
3185bd8deadSopenharmony_ci        Linear filters can be implemented in fragment programs by doing
3195bd8deadSopenharmony_ci        multiple lookups into the same texture.  Since fragment programs allow
3205bd8deadSopenharmony_ci        the use of arbitrary coordinates into arbitrary texture maps, this
3215bd8deadSopenharmony_ci        type of operation can be easily done.
3225bd8deadSopenharmony_ci
3235bd8deadSopenharmony_ci        A 1D linear filter can be implemented using an nx1 texture rectangle
3245bd8deadSopenharmony_ci        with the following (untested) fragment program, assuming the 1D
3255bd8deadSopenharmony_ci        coordinate is in f[TEX0].x:
3265bd8deadSopenharmony_ci
3275bd8deadSopenharmony_ci            ADDR H2.xy, f[TEX0].x, {0.0, 1.0};
3285bd8deadSopenharmony_ci            FRCH H3.x, R1.x;             # compute the blend factor
3295bd8deadSopenharmony_ci            TEX  H0, H2.x, TEX0, RECT;   # lookup 1st sample
3305bd8deadSopenharmony_ci            TEX  H1, H2.y, TEX0, RECT;   # lookup 2nd sample
3315bd8deadSopenharmony_ci            LRPH H0, H3.x, H1, H0;       # blend
3325bd8deadSopenharmony_ci            
3335bd8deadSopenharmony_ci        A 2D linear filter can be implemented similarly, assuming the 2D
3345bd8deadSopenharmony_ci        coordinate is in f[TEX0].xy:
3355bd8deadSopenharmony_ci
3365bd8deadSopenharmony_ci            ADDH H2, f[TEX0].xyxy, {0.0, 0.0, 1.0, 1.0};
3375bd8deadSopenharmony_ci            FRCH H3.xy, H2.xyxy;         # base weights
3385bd8deadSopenharmony_ci            ADDH H3.zw, 1.0, -H3.xyxy;   # 1-base weights
3395bd8deadSopenharmony_ci            MULH H3, H3.xzxz, H3.yyww;   # bilinear filter weights
3405bd8deadSopenharmony_ci            TEX H1, R2.xyxy, TEX0, RECT; # lookup 1st sample
3415bd8deadSopenharmony_ci            MULH H0, H1, H3.x;           # blend
3425bd8deadSopenharmony_ci            TEX H1, R2.zyzy, TEX0, RECT; # lookup 2nd sample
3435bd8deadSopenharmony_ci            MADH H0, H1, H3.y, H0;       # blend
3445bd8deadSopenharmony_ci            TEX H0, R2.xwxw, TEX0, RECT; # lookup 3rd sample
3455bd8deadSopenharmony_ci            MADH H0, H1, H3.z, H0;       # blend
3465bd8deadSopenharmony_ci            TEX H1, R2.zwzw, TEX0, RECT; # lookup 4th sample
3475bd8deadSopenharmony_ci            MADH H0, H1, H3.w, H0;       # blend
3485bd8deadSopenharmony_ci
3495bd8deadSopenharmony_ci        Fragment programs can be used to perform more-or-less arbitrary
3505bd8deadSopenharmony_ci        filtering using similar methods, and the DDX and DDY instructions can
3515bd8deadSopenharmony_ci        be used to refine the shape of the filter.
3525bd8deadSopenharmony_ci
3535bd8deadSopenharmony_ci    Why must the NV_texture_rectangle extension be used in order to use
3545bd8deadSopenharmony_ci    floating-point texture maps?
3555bd8deadSopenharmony_ci
3565bd8deadSopenharmony_ci        RESOLVED:  On many graphics hardware platforms, texture maps are
3575bd8deadSopenharmony_ci        stored using a special memory encodings designed to optimize rendering
3585bd8deadSopenharmony_ci        performance.  In current hardware, conventional texture maps usually
3595bd8deadSopenharmony_ci        top out at 32 bits per texel.  The logic required to encode and decode
3605bd8deadSopenharmony_ci        128-bit texels (and frame buffer pixels) optimally is substantially
3615bd8deadSopenharmony_ci        more complex.
3625bd8deadSopenharmony_ci
3635bd8deadSopenharmony_ci    What happens if you try to use a floating-point texture without a
3645bd8deadSopenharmony_ci    fragment program?
3655bd8deadSopenharmony_ci
3665bd8deadSopenharmony_ci        RESOLVED:  No error is generated, but that texture is effectively
3675bd8deadSopenharmony_ci        disabled.  This is similar to the behavior if an application tried to
3685bd8deadSopenharmony_ci        use a normal texture having an inconsistent set of mipmaps.
3695bd8deadSopenharmony_ci
3705bd8deadSopenharmony_ci    How does NV_float_buffer interact with the OpenGL 1.2 imaging subset?
3715bd8deadSopenharmony_ci
3725bd8deadSopenharmony_ci        RESOLVED:  The imaging subset as specified should work properly with
3735bd8deadSopenharmony_ci        floating-point color buffers, but is not modified by this extension.
3745bd8deadSopenharmony_ci        There are imaging operations (e.g., color tables, histograms) that
3755bd8deadSopenharmony_ci        expect the components they operate on to be in the range [0,1], and
3765bd8deadSopenharmony_ci        this extension makes no attempt to extend such functionality.
3775bd8deadSopenharmony_ci
3785bd8deadSopenharmony_ci    How does NV_float_buffer interact with SGIS_generate_mipmap?
3795bd8deadSopenharmony_ci
3805bd8deadSopenharmony_ci        RESOLVED:  Since this extension supports only texture rectangles
3815bd8deadSopenharmony_ci        (which have no mipmaps), this issue is moot.  
3825bd8deadSopenharmony_ci
3835bd8deadSopenharmony_ci        In the general case, mipmaps should be generated using an appropriate
3845bd8deadSopenharmony_ci        downsample filter, where floating-point component values are averaged.
3855bd8deadSopenharmony_ci        Components should not be clamped during any such mipmap generation.
3865bd8deadSopenharmony_ci
3875bd8deadSopenharmony_ci    What is the deal with the names of the clear color query tokens?
3885bd8deadSopenharmony_ci
3895bd8deadSopenharmony_ci        RESOLVED:  The "normal" OpenGL clear color (clamped to [0,1]) is
3905bd8deadSopenharmony_ci        queried using the token COLOR_CLEAR_VALUE.  This extension provides a
3915bd8deadSopenharmony_ci        new query for unclamped values, using the token
3925bd8deadSopenharmony_ci        FLOAT_CLEAR_COLOR_VALUE_NV.  Notice that "CLEAR" and "COLOR" are
3935bd8deadSopenharmony_ci        reversed due to a mistake made when the spec was first written.  This
3945bd8deadSopenharmony_ci        spec lists the core query token, and originally had "CLEAR" and
3955bd8deadSopenharmony_ci        "COLOR" reversed there, too.  
3965bd8deadSopenharmony_ci
3975bd8deadSopenharmony_ci        Then again, the core specification is inconsistent since the queried
3985bd8deadSopenharmony_ci        state is set by calling glClearColor(), with "Clear" before "Color".
3995bd8deadSopenharmony_ci
4005bd8deadSopenharmony_ci    What performance issues exist with this functionality?
4015bd8deadSopenharmony_ci
4025bd8deadSopenharmony_ci        See the "NV3x Implementation Issues" section of the
4035bd8deadSopenharmony_ci        specification.
4045bd8deadSopenharmony_ci
4055bd8deadSopenharmony_ci    How should the texture border color (values) be handled for float
4065bd8deadSopenharmony_ci    textures?
4075bd8deadSopenharmony_ci
4085bd8deadSopenharmony_ci        RESOLVED:  Clamp the texture border color (values) to [0,1]
4095bd8deadSopenharmony_ci        when sampling a float texture's border.  In core OpenGL 1.0, the
4105bd8deadSopenharmony_ci        texture border color components are clamped to the range [01,].
4115bd8deadSopenharmony_ci        The NV_texture_shader extension added support for signed texture
4125bd8deadSopenharmony_ci        components.  We decided to provide GL_TEXTURE_BORDER_VALUES as
4135bd8deadSopenharmony_ci        a way of specifying a version of the texture border color whose
4145bd8deadSopenharmony_ci        components were not clamped to [0,1] when set.  This was to
4155bd8deadSopenharmony_ci        provide a way of specifying negative texture border components.
4165bd8deadSopenharmony_ci
4175bd8deadSopenharmony_ci        In practice, that has not proven particularly useful.  No real
4185bd8deadSopenharmony_ci        applications are known to have specified negative texture border
4195bd8deadSopenharmony_ci        values components.
4205bd8deadSopenharmony_ci
4215bd8deadSopenharmony_ci        Ideally, the unclamped GL_TEXTURE_BORDER_VALUES state could
4225bd8deadSopenharmony_ci        provide an unclamped (unmassaged) set of floating-point color
4235bd8deadSopenharmony_ci        components for the texture border color.  This requires an
4245bd8deadSopenharmony_ci        additional 96 bits of state per texture unit to support this,
4255bd8deadSopenharmony_ci        and based on the experience with NV_texture_shader's support for
4265bd8deadSopenharmony_ci        texture border values outside the [0,1] range, it is simply not
4275bd8deadSopenharmony_ci        worth it.
4285bd8deadSopenharmony_ci
4295bd8deadSopenharmony_ci        For compatibility with the NV_texture_shader extension, we
4305bd8deadSopenharmony_ci        provide language saying that floating-point textures clamp
4315bd8deadSopenharmony_ci        the components of the TEXTURE_BORDER_VALUES vector [0,1] when
4325bd8deadSopenharmony_ci        sampling the border color.
4335bd8deadSopenharmony_ci
4345bd8deadSopenharmony_ci
4355bd8deadSopenharmony_ciNew Procedures and Functions
4365bd8deadSopenharmony_ci
4375bd8deadSopenharmony_ci    None.
4385bd8deadSopenharmony_ci
4395bd8deadSopenharmony_ciNew Tokens
4405bd8deadSopenharmony_ci
4415bd8deadSopenharmony_ci    Accepted by the <internalformat> parameter of TexImage2D and
4425bd8deadSopenharmony_ci    CopyTexImage2D:
4435bd8deadSopenharmony_ci
4445bd8deadSopenharmony_ci        FLOAT_R_NV                                      0x8880
4455bd8deadSopenharmony_ci        FLOAT_RG_NV                                     0x8881
4465bd8deadSopenharmony_ci        FLOAT_RGB_NV                                    0x8882
4475bd8deadSopenharmony_ci        FLOAT_RGBA_NV                                   0x8883
4485bd8deadSopenharmony_ci        FLOAT_R16_NV                                    0x8884
4495bd8deadSopenharmony_ci        FLOAT_R32_NV                                    0x8885
4505bd8deadSopenharmony_ci        FLOAT_RG16_NV                                   0x8886
4515bd8deadSopenharmony_ci        FLOAT_RG32_NV                                   0x8887
4525bd8deadSopenharmony_ci        FLOAT_RGB16_NV                                  0x8888
4535bd8deadSopenharmony_ci        FLOAT_RGB32_NV                                  0x8889
4545bd8deadSopenharmony_ci        FLOAT_RGBA16_NV                                 0x888A
4555bd8deadSopenharmony_ci        FLOAT_RGBA32_NV                                 0x888B
4565bd8deadSopenharmony_ci
4575bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetTexLevelParameterfv and
4585bd8deadSopenharmony_ci    GetTexLevelParameteriv:
4595bd8deadSopenharmony_ci
4605bd8deadSopenharmony_ci        TEXTURE_FLOAT_COMPONENTS_NV                     0x888C
4615bd8deadSopenharmony_ci
4625bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
4635bd8deadSopenharmony_ci    and GetDoublev:
4645bd8deadSopenharmony_ci
4655bd8deadSopenharmony_ci        FLOAT_CLEAR_COLOR_VALUE_NV                      0x888D
4665bd8deadSopenharmony_ci        FLOAT_RGBA_MODE_NV                              0x888E
4675bd8deadSopenharmony_ci
4685bd8deadSopenharmony_ci    Accepted in the <piAttributes> array of wglGetPixelFormatAttribivARB and
4695bd8deadSopenharmony_ci    wglGetPixelFormatAttribfvARB and in the <piAttribIList> and
4705bd8deadSopenharmony_ci    <pfAttribFList> arrays of wglChoosePixelFormatARB:
4715bd8deadSopenharmony_ci
4725bd8deadSopenharmony_ci        WGL_FLOAT_COMPONENTS_NV                         0x20B0
4735bd8deadSopenharmony_ci        WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV        0x20B1
4745bd8deadSopenharmony_ci        WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV       0x20B2
4755bd8deadSopenharmony_ci        WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV      0x20B3
4765bd8deadSopenharmony_ci        WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV     0x20B4
4775bd8deadSopenharmony_ci
4785bd8deadSopenharmony_ci    Accepted in the <piAttribIList> array of wglCreatePbufferARB and returned
4795bd8deadSopenharmony_ci    in the <value> parameter of wglQueryPbufferARB when <iAttribute> is
4805bd8deadSopenharmony_ci    WGL_TEXTURE_FORMAT_ARB:
4815bd8deadSopenharmony_ci
4825bd8deadSopenharmony_ci        WGL_TEXTURE_FLOAT_R_NV                          0x20B5
4835bd8deadSopenharmony_ci        WGL_TEXTURE_FLOAT_RG_NV                         0x20B6
4845bd8deadSopenharmony_ci        WGL_TEXTURE_FLOAT_RGB_NV                        0x20B7
4855bd8deadSopenharmony_ci        WGL_TEXTURE_FLOAT_RGBA_NV                       0x20B8
4865bd8deadSopenharmony_ci
4875bd8deadSopenharmony_ci    Accepted in the <value> array of glXGetFBConfigAttrib (and
4885bd8deadSopenharmony_ci    glXGetFBConfigAttribSGIX):
4895bd8deadSopenharmony_ci
4905bd8deadSopenharmony_ci        GLX_FLOAT_COMPONENTS_NV                         0x20B0
4915bd8deadSopenharmony_ci
4925bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 1.3 Specification (OpenGL Operation)
4935bd8deadSopenharmony_ci
4945bd8deadSopenharmony_ci    None.
4955bd8deadSopenharmony_ci
4965bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 1.3 Specification (Rasterization)
4975bd8deadSopenharmony_ci
4985bd8deadSopenharmony_ci    Modify Section 3.6.4, Rasterization of Pixel Rectangles (p. 91)
4995bd8deadSopenharmony_ci
5005bd8deadSopenharmony_ci    (modify first paragraph of "Final Conversion", p. 102) ...  For RGBA
5015bd8deadSopenharmony_ci    components, the final conversion depends on the format of the color
5025bd8deadSopenharmony_ci    buffer.  If the components of the color buffer are fixed-point, each
5035bd8deadSopenharmony_ci    element is clamped to [0,1] and converted to fixed-point according to the
5045bd8deadSopenharmony_ci    rules given in section 2.13.9 (Final Color Processing).  If the components
5055bd8deadSopenharmony_ci    of the color buffer are floating-point, the elements are not modified.
5065bd8deadSopenharmony_ci
5075bd8deadSopenharmony_ci
5085bd8deadSopenharmony_ci    Modify Section 3.8.1, Texture Image Specification (p. 116)
5095bd8deadSopenharmony_ci
5105bd8deadSopenharmony_ci    (modify last paragaph, p. 116) The selected groups are processed exactly
5115bd8deadSopenharmony_ci    as for DrawPixels stopping just before final conversion.  For textures
5125bd8deadSopenharmony_ci    with fixed-point RGBA internal formats, each R, G, B, A component is
5135bd8deadSopenharmony_ci    clamped to [0,1].
5145bd8deadSopenharmony_ci
5155bd8deadSopenharmony_ci    (modify first paragraph, p. 117) Components are then selected from the
5165bd8deadSopenharmony_ci    resulting pixel groups to obtain a texture with the base internal format
5175bd8deadSopenharmony_ci    specified by (or derived from) <internalformat>.  Table 3.15 summarizes
5185bd8deadSopenharmony_ci    the mapping of pixel group values to texture components, ...
5195bd8deadSopenharmony_ci
5205bd8deadSopenharmony_ci    (add to end of first paragraph, p. 117) Specifying a value of <format>
5215bd8deadSopenharmony_ci    incompatible with <internalformat> produces the error INVALID_OPERATION.
5225bd8deadSopenharmony_ci    A pixel format and texture internal format are compatible if the pixel
5235bd8deadSopenharmony_ci    format can generate a pixel group of the type listed in the "Pixel Group
5245bd8deadSopenharmony_ci    Type" column of Table 3.15 in the row corresponding to the base internal
5255bd8deadSopenharmony_ci    format.
5265bd8deadSopenharmony_ci
5275bd8deadSopenharmony_ci    (add between first and second paragraphs, p.117) Textures with a base
5285bd8deadSopenharmony_ci    internal format of FLOAT_R_NV, FLOAT_RG_NV, FLOAT_RGB_NV, and
5295bd8deadSopenharmony_ci    FLOAT_RGBA_NV are known as floating-point textures.  Floating-point
5305bd8deadSopenharmony_ci    textures are only supported for the TEXTURE_RECTANGLE_NV target.
5315bd8deadSopenharmony_ci    Specifying a floating-point texture with any other target will produce an
5325bd8deadSopenharmony_ci    INVALID_OPERATION error.
5335bd8deadSopenharmony_ci
5345bd8deadSopenharmony_ci    (modify last paragraph, p. 117) The internal component resolution is the
5355bd8deadSopenharmony_ci    number of bits allocated to each component in a texture image.  If
5365bd8deadSopenharmony_ci    internalformat is specified as a base internal format, the GL stores the
5375bd8deadSopenharmony_ci    resulting texture with internal component resolutions of its own choosing.
5385bd8deadSopenharmony_ci    If a sized internal format is specified, the memory allocation per texture
5395bd8deadSopenharmony_ci    component is assigned by the GL to match the allocations listed in Table
5405bd8deadSopenharmony_ci    3.16 as closely as possible. ...
5415bd8deadSopenharmony_ci
5425bd8deadSopenharmony_ci    (modify Table 3.15, p. 118 -- Respecify this table with all extensions
5435bd8deadSopenharmony_ci    relevant to texture formats supported by NVIDIA.  For this extension, add
5445bd8deadSopenharmony_ci    four base internal formats.)
5455bd8deadSopenharmony_ci    
5465bd8deadSopenharmony_ci        Base Internal            Pixel       Component       Internal
5475bd8deadSopenharmony_ci        Format                   Group Type  Values          Components
5485bd8deadSopenharmony_ci        ---------------------    ----------  ---------       ---------------
5495bd8deadSopenharmony_ci        ALPHA                    RGBA        A               A
5505bd8deadSopenharmony_ci        LUMINANCE                RGBA        R               L
5515bd8deadSopenharmony_ci        LUMINANCE_ALPHA          RGBA        R,A             L,A
5525bd8deadSopenharmony_ci        INTENSITY                RGBA        R               I
5535bd8deadSopenharmony_ci        RGB                      RGBA        R,G,B           R,G,B
5545bd8deadSopenharmony_ci        RGBA                     RGBA        R,G,B,A         R,G,B,A
5555bd8deadSopenharmony_ci      * COLOR_INDEX              CI          CI              CI
5565bd8deadSopenharmony_ci      * DEPTH_COMPONENT          DEPTH       DEPTH           DEPTH
5575bd8deadSopenharmony_ci      * HILO_NV                  HILO        HI,LO           HI,LO
5585bd8deadSopenharmony_ci      * DSDT_NV                  TEXOFF      DS,DT           DS,DT
5595bd8deadSopenharmony_ci      * DSDT_MAG_NV              TEXOFF      DS,DT,MAG       DS,DT,MAG
5605bd8deadSopenharmony_ci      * DSDT_MAG_INTENSITY_NV    TEXOFF
5615bd8deadSopenharmony_ci                                 or RGBA     DS,DT,MAG,VIB   DS,DT,MAG,I
5625bd8deadSopenharmony_ci        FLOAT_R_NV               RGBA        R               R (float)
5635bd8deadSopenharmony_ci        FLOAT_RG_NV              RGBA        R,G             R,G (float)
5645bd8deadSopenharmony_ci        FLOAT_RGB_NV             RGBA        R,G,B           R,G,B (float)
5655bd8deadSopenharmony_ci        FLOAT_RGBA_NV            RGBA        R,G,B,A         R,G,B,A (float)
5665bd8deadSopenharmony_ci
5675bd8deadSopenharmony_ci        Table 3.15:  Conversion from pixel groups to internal texture
5685bd8deadSopenharmony_ci        components.  "Pixel Group Type" defines the type of pixel group
5695bd8deadSopenharmony_ci        required for the specified internal format.  All internal components
5705bd8deadSopenharmony_ci        are stored as unsigned-fixed point numbers, except for DS/DT (signed
5715bd8deadSopenharmony_ci        fixed-point numbers) and floating-point R,G,B,A (signed floating-point
5725bd8deadSopenharmony_ci        numbers).  See Section 3.8.12 for a description of texture components
5735bd8deadSopenharmony_ci        R, G, B, A, L, and I.  See NV_texture_shader spec (Section 3.8.13) for
5745bd8deadSopenharmony_ci        a description of texture components HI, LO, DS, DT, and MAG.
5755bd8deadSopenharmony_ci
5765bd8deadSopenharmony_ci        * - indicates formats found in other extension specs:  COLOR_INDEX in
5775bd8deadSopenharmony_ci            EXT_paletted texture; DEPTH_COMPONENT in SGIX_depth_texture; and
5785bd8deadSopenharmony_ci            HILO_NV, DSDT_NV, DSDT_MAG_NV, DSDT_MAG_INTENSITY_NV in
5795bd8deadSopenharmony_ci            NV_texture_shader.
5805bd8deadSopenharmony_ci
5815bd8deadSopenharmony_ci    (modify Table 3.16, p. 119 -- Respecify this table with all extensions
5825bd8deadSopenharmony_ci    relevant to sized texture internal formats supported by NVIDIA.  For this
5835bd8deadSopenharmony_ci    extension, add eight sized internal formats.)
5845bd8deadSopenharmony_ci
5855bd8deadSopenharmony_ci        Sized                  Base                
5865bd8deadSopenharmony_ci        Int. Format            Int. Format         Component Name / Type-Size
5875bd8deadSopenharmony_ci        -------------------    ---------------     ---------------------------
5885bd8deadSopenharmony_ci        ALPHA4                 ALPHA               A/U4
5895bd8deadSopenharmony_ci        ALPHA8                 ALPHA               A/U8
5905bd8deadSopenharmony_ci        ALPHA12                ALPHA               A/U12
5915bd8deadSopenharmony_ci        ALPHA16                ALPHA               A/U16
5925bd8deadSopenharmony_ci        LUMINANCE4             LUMINANCE           L/U4
5935bd8deadSopenharmony_ci        LUMINANCE8             LUMINANCE           L/U8
5945bd8deadSopenharmony_ci        LUMINANCE12            LUMINANCE           L/U12
5955bd8deadSopenharmony_ci        LUMINANCE16            LUMINANCE           L/U16
5965bd8deadSopenharmony_ci        LUMINANCE4_ALPHA4      LUMINANCE_ALPHA     A/U4   L/U4
5975bd8deadSopenharmony_ci        LUMINANCE6_ALPHA2      LUMINANCE_ALPHA     A/U2   L/U6
5985bd8deadSopenharmony_ci        LUMINANCE8_ALPHA8      LUMINANCE_ALPHA     A/U8   L/U8
5995bd8deadSopenharmony_ci        LUMINANCE12_ALPHA4     LUMINANCE_ALPHA     A/U4   L/U12
6005bd8deadSopenharmony_ci        LUMINANCE12_ALPHA12    LUMINANCE_ALPHA     A/U12  L/U12
6015bd8deadSopenharmony_ci        LUMINANCE16_ALPHA16    LUMINANCE_ALPHA     A/U16  L/U16
6025bd8deadSopenharmony_ci        INTENSITY4             INTENSITY           I/U4
6035bd8deadSopenharmony_ci        INTENSITY8             INTENSITY           I/U8
6045bd8deadSopenharmony_ci        INTENSITY12            INTENSITY           I/U12
6055bd8deadSopenharmony_ci        INTENSITY16            INTENSITY           I/U16
6065bd8deadSopenharmony_ci        R3_G3_B2               RGB                 R/U3   G/U3   B/U2
6075bd8deadSopenharmony_ci        RGB4                   RGB                 R/U4   G/U4   B/U4
6085bd8deadSopenharmony_ci        RGB5                   RGB                 R/U5   G/U5   B/U5
6095bd8deadSopenharmony_ci        RGB8                   RGB                 R/U8   G/U8   B/U8
6105bd8deadSopenharmony_ci        RGB10                  RGB                 R/U10  G/U10  B/10
6115bd8deadSopenharmony_ci        RGB12                  RGB                 R/U12  G/U12  B/U12
6125bd8deadSopenharmony_ci        RGB16                  RGB                 R/U16  G/U16  B/U16
6135bd8deadSopenharmony_ci        RGBA2                  RGBA                R/U2   G/U2   B/U2   A/U2
6145bd8deadSopenharmony_ci        RGBA4                  RGBA                R/U4   G/U4   B/U4   A/U4
6155bd8deadSopenharmony_ci        RGB5_A1                RGBA                R/U5   G/U5   B/U5   A/U1
6165bd8deadSopenharmony_ci        RGBA8                  RGBA                R/U8   G/U8   B/U8   A/U8
6175bd8deadSopenharmony_ci        RGB10_A2               RGBA                R/U10  G/U10  B/U10  A/U2
6185bd8deadSopenharmony_ci        RGBA12                 RGBA                R/U12  G/U12  B/U12  A/U12
6195bd8deadSopenharmony_ci        RGBA16                 RGBA                R/U16  G/U16  B/U16  A/U16
6205bd8deadSopenharmony_ci      * COLOR_INDEX1_EXT       COLOR_INDEX         CI/U1
6215bd8deadSopenharmony_ci      * COLOR_INDEX2_EXT       COLOR_INDEX         CI/U2
6225bd8deadSopenharmony_ci      * COLOR_INDEX4_EXT       COLOR_INDEX         CI/U4
6235bd8deadSopenharmony_ci      * COLOR_INDEX8_EXT       COLOR_INDEX         CI/U8
6245bd8deadSopenharmony_ci      * COLOR_INDEX16_EXT      COLOR_INDEX         CI/U16
6255bd8deadSopenharmony_ci      * DEPTH_COMPONENT16_SGIX DEPTH_COMPONENT     Z/U16
6265bd8deadSopenharmony_ci      * DEPTH_COMPONENT24_SGIX DEPTH_COMPONENT     Z/U24
6275bd8deadSopenharmony_ci      * DEPTH_COMPONENT32_SGIX DEPTH_COMPONENT     Z/U32
6285bd8deadSopenharmony_ci      * HILO16_NV              HILO                HI/U16 LO/U16
6295bd8deadSopenharmony_ci      * SIGNED_HILO16_NV       HILO                HI/S16 LO/S16
6305bd8deadSopenharmony_ci      * SIGNED_RGBA8_NV        RGBA                R/S8   G/S8   B/S8   A/S8
6315bd8deadSopenharmony_ci      * SIGNED_RGB8_
6325bd8deadSopenharmony_ci        UNSIGNED_ALPHA8_NV     RGBA                R/S8   G/S8   B/S8   A/U8
6335bd8deadSopenharmony_ci      * SIGNED_RGB8_NV         RGB                 R/S8   G/S8   B/S8
6345bd8deadSopenharmony_ci      * SIGNED_LUMINANCE8_NV   LUMINANCE           L/S8
6355bd8deadSopenharmony_ci      * SIGNED_LUMINANCE8_
6365bd8deadSopenharmony_ci        ALPHA8_NV              LUMINANCE_ALPHA     L/S8   A/S8
6375bd8deadSopenharmony_ci      * SIGNED_ALPHA8_NV       ALPHA               A/S8
6385bd8deadSopenharmony_ci      * SIGNED_INTENSITY8_NV   INTENSITY           I/S8
6395bd8deadSopenharmony_ci      * DSDT8_NV               DSDT_NV             DS/S8  DT/S8
6405bd8deadSopenharmony_ci      * DSDT8_MAG8_NV          DSDT_MAG_NV         DS/S8  DT/S8  MAG/U8
6415bd8deadSopenharmony_ci      * DSDT8_MAG8_            DSDT_MAG_
6425bd8deadSopenharmony_ci        INTENSITY8_NV          INTENSITY_NV        DS/S8  DT/S8  MAG/U8 I/U8        
6435bd8deadSopenharmony_ci        FLOAT_R16_NV           FLOAT_R_NV          R/F16
6445bd8deadSopenharmony_ci        FLOAT_R32_NV           FLOAT_R_NV          R/F32
6455bd8deadSopenharmony_ci        FLOAT_RG16_NV          FLOAT_RG_NV         R/F16  G/F16
6465bd8deadSopenharmony_ci        FLOAT_RG32_NV          FLOAT_RG_NV         R/F32  G/F32
6475bd8deadSopenharmony_ci        FLOAT_RGB16_NV         FLOAT_RGB_NV        R/F16  G/F16  B/F16
6485bd8deadSopenharmony_ci        FLOAT_RGB32_NV         FLOAT_RGB_NV        R/F32  G/F32  B/F32
6495bd8deadSopenharmony_ci        FLOAT_RGBA16_NV        FLOAT_RGBA_NV       R/F16  G/F16  B/F16  A/F16
6505bd8deadSopenharmony_ci        FLOAT_RGBA32_NV        FLOAT_RGBA_NV       R/F32  G/F32  B/F32  A/F32
6515bd8deadSopenharmony_ci
6525bd8deadSopenharmony_ci        Table 3.16:  Sized Internal Formats.  Describes the correspondence of
6535bd8deadSopenharmony_ci        sized internal formats to base internal formats, and desired component
6545bd8deadSopenharmony_ci        resolutions.  Component resolution descriptions are of the form
6555bd8deadSopenharmony_ci        "<NAME>/<TYPE><SIZE>", where NAME specifies the component name in
6565bd8deadSopenharmony_ci        Table 3.15, TYPE is "U" for unsigned fixed-point, "S" for signed
6575bd8deadSopenharmony_ci        fixed-point, and "F" for unsigned floating-point.  <SIZE> is the
6585bd8deadSopenharmony_ci        number of requested bits per component.
6595bd8deadSopenharmony_ci
6605bd8deadSopenharmony_ci        * - indicates formats found in other extension specs:  COLOR_INDEX in
6615bd8deadSopenharmony_ci            EXT_paletted texture; DEPTH_COMPONENT in SGIX_depth_texture; and
6625bd8deadSopenharmony_ci            HILO_NV, DSDT_NV, DSDT_MAG_NV, DSDT_MAG_INTENSITY_NV in
6635bd8deadSopenharmony_ci            NV_texture_shader.
6645bd8deadSopenharmony_ci
6655bd8deadSopenharmony_ci    Modify Section 3.8,7, Minification (p. 141)
6665bd8deadSopenharmony_ci
6675bd8deadSopenharmony_ci    Change the last paragraph (as modified by the NV_texture_shader
6685bd8deadSopenharmony_ci    extension) to read (only the last sentence changes from the
6695bd8deadSopenharmony_ci    NV_texture_shader version):
6705bd8deadSopenharmony_ci
6715bd8deadSopenharmony_ci    "If any of the selected tauijk, tauij, or taui in the above equations
6725bd8deadSopenharmony_ci    refer to a border texel with i < -bs, j < bs, k < -bs, i >= ws-bs, j
6735bd8deadSopenharmony_ci    >= hs-bs, or k >= ds-bs, then the border values given by the current
6745bd8deadSopenharmony_ci    setting of TEXTURE_BORDER_VALUES is used instead of the unspecified
6755bd8deadSopenharmony_ci    value or values.  If the texture contains color components, the
6765bd8deadSopenharmony_ci    components of the TEXTURE_BORDER_VALUES vector are interpreted as
6775bd8deadSopenharmony_ci    an RGBA color to match the texture's internal format in a manner
6785bd8deadSopenharmony_ci    consistent with table 3.15.  If the texture contains HILO components,
6795bd8deadSopenharmony_ci    the first and second components of the TEXTURE_BORDER_VALUES vector
6805bd8deadSopenharmony_ci    are interpreted as the hi and lo components respectively.  If the
6815bd8deadSopenharmony_ci    texture contains texture offset group components, the first, second,
6825bd8deadSopenharmony_ci    third, and fourth components of the TEXTURE_BORDER_VALUES vector
6835bd8deadSopenharmony_ci    are interpreted as ds, dt, mag, and vib components respectively.
6845bd8deadSopenharmony_ci    Additionally, the texture border values are clamped appropriately
6855bd8deadSopenharmony_ci    depending on the signedness of each particular component.  Unsigned
6865bd8deadSopenharmony_ci    components and components of floating-point textures are clamped to
6875bd8deadSopenharmony_ci    [0,1]; signed components (not including floating-point textures)
6885bd8deadSopenharmony_ci    are clamped to [-1,1]."
6895bd8deadSopenharmony_ci
6905bd8deadSopenharmony_ci    (Add after the last paragraph in the section) Floating-point textures
6915bd8deadSopenharmony_ci    (those with a base internal format of FLOAT_R_NV, FLOAT_RG_NV,
6925bd8deadSopenharmony_ci    FLOAT_RGB_NV, or FLOAT_RGBA_NV) do not support texture filters other than
6935bd8deadSopenharmony_ci    NEAREST.  For such textures, NEAREST filtering is applied regardless of
6945bd8deadSopenharmony_ci    the setting of TEXTURE_MIN_FILTER.
6955bd8deadSopenharmony_ci
6965bd8deadSopenharmony_ci    Modify Section 3.8.8, Magnification (p. 141)
6975bd8deadSopenharmony_ci
6985bd8deadSopenharmony_ci    (Add after the last paragraph in the section) Floating-point textures
6995bd8deadSopenharmony_ci    (those with a base internal format of FLOAT_R_NV, FLOAT_RG_NV,
7005bd8deadSopenharmony_ci    FLOAT_RGB_NV, or FLOAT_RGBA_NV) do not support texture filters other than
7015bd8deadSopenharmony_ci    NEAREST.  For such textures, NEAREST filtering is applied regardless of
7025bd8deadSopenharmony_ci    the setting of TEXTURE_MAG_FILTER.
7035bd8deadSopenharmony_ci
7045bd8deadSopenharmony_ci    Modify Section 3.8.13, Texture Environments and Texture Functions (p. 147)
7055bd8deadSopenharmony_ci
7065bd8deadSopenharmony_ci    (Add paragraph after discussion of all the values used in the
7075bd8deadSopenharmony_ci    miscellaneous tables in this section.) If the base internal format is
7085bd8deadSopenharmony_ci    HILO_NV, DSDT_NV, DSDT_MAG_NV, DSDT_MAG_INTENSITY_NV, FLOAT_R_NV,
7095bd8deadSopenharmony_ci    FLOAT_RG_NV, FLOAT_RGB_NV, or FLOAT_RGBA_NV, the texture lookup results
7105bd8deadSopenharmony_ci    are not supported using conventional OpenGL texture functions.  In this
7115bd8deadSopenharmony_ci    case, the corresponding texture function is NONE (Cv = Cf, Av = Af), and
7125bd8deadSopenharmony_ci    it is as though texture mapping were disabled for that texture unit.
7135bd8deadSopenharmony_ci
7145bd8deadSopenharmony_ci    Modify Section 3.11, Antialiasing Application (p. 155)
7155bd8deadSopenharmony_ci
7165bd8deadSopenharmony_ci    Finally, if antialiasing is enabled for the primitive from which a
7175bd8deadSopenharmony_ci    rasterized fragment was produced, then the computed coverage value may be
7185bd8deadSopenharmony_ci    applied to the fragment.  In RGBA mode with fixed-point frame buffers, the
7195bd8deadSopenharmony_ci    value is multiplied by the fragment's alpha (A) value to yield a final
7205bd8deadSopenharmony_ci    alpha value.  In RGBA mode with floating-point frame buffers, the coverage
7215bd8deadSopenharmony_ci    value is simply discarded.  In color index mode, the value is used to set
7225bd8deadSopenharmony_ci    the low order bits of the color index value as described in section 3.2.
7235bd8deadSopenharmony_ci    
7245bd8deadSopenharmony_ci
7255bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 1.3 Specification (Per-Fragment
7265bd8deadSopenharmony_ciOperations and the Frame Buffer)
7275bd8deadSopenharmony_ci
7285bd8deadSopenharmony_ci    Modify Chapter 4 Introduction (p. 156)
7295bd8deadSopenharmony_ci
7305bd8deadSopenharmony_ci    (replace next-to-last paragraph)
7315bd8deadSopenharmony_ci
7325bd8deadSopenharmony_ci    The GL provides three types of color buffers:  color index, fixed-point
7335bd8deadSopenharmony_ci    RGBA, or floating-point RGBA.  Color index buffers consist of unsigned
7345bd8deadSopenharmony_ci    integer color indices.  Fixed-point RGBA buffers consist of R, G, B, and
7355bd8deadSopenharmony_ci    optionally, A unsigned integer values.  Floating-point RGBA buffers
7365bd8deadSopenharmony_ci    consist of R, and optionally, G, B, and A floating-point component values,
7375bd8deadSopenharmony_ci    corresponding to the X, Y, Z, and W outputs, respectively, of a fragment
7385bd8deadSopenharmony_ci    program.  The number of bitplanes in each of the color buffers, the depth
7395bd8deadSopenharmony_ci    buffer, ...
7405bd8deadSopenharmony_ci
7415bd8deadSopenharmony_ci    Modify Section 4.1.3, Multisample Fragment Operations (p. 158)
7425bd8deadSopenharmony_ci
7435bd8deadSopenharmony_ci    This step applies only for fixed-point RGBA color buffers. Otherwise,
7445bd8deadSopenharmony_ci    proceed to the next step.  ...
7455bd8deadSopenharmony_ci
7465bd8deadSopenharmony_ci    Modify Section 4.1.4, Alpha Test (p. 159)
7475bd8deadSopenharmony_ci
7485bd8deadSopenharmony_ci    This step applies only for fixed-point RGBA color buffers. Otherwise,
7495bd8deadSopenharmony_ci    proceed to the next step.  ...
7505bd8deadSopenharmony_ci
7515bd8deadSopenharmony_ci    Modify Section 4.1.7, Blending (p. 161)
7525bd8deadSopenharmony_ci
7535bd8deadSopenharmony_ci    (modify second paragraph)
7545bd8deadSopenharmony_ci
7555bd8deadSopenharmony_ci    This blending is dependent on the incoming fragment's alpha value and that
7565bd8deadSopenharmony_ci    of the corresponding currently stored pixel.  Blending applies only for
7575bd8deadSopenharmony_ci    fixed-point RGBA color buffers; otherwise, it is bypassed. ...
7585bd8deadSopenharmony_ci
7595bd8deadSopenharmony_ci    Modify Section 4.1.8, Dithering (p. 165)
7605bd8deadSopenharmony_ci
7615bd8deadSopenharmony_ci    Dithering selects between two color values or indices.  Dithering does not
7625bd8deadSopenharmony_ci    apply to floating-point RGBA color buffers. ...
7635bd8deadSopenharmony_ci
7645bd8deadSopenharmony_ci    Modify Section 4.1.9, Logical Operation (p. 165)
7655bd8deadSopenharmony_ci
7665bd8deadSopenharmony_ci    Finally, a logical operation is applied between the incoming fragment's
7675bd8deadSopenharmony_ci    color or index values and the color or index values stored at the
7685bd8deadSopenharmony_ci    corresponding location in the frame buffer.  Logical operations do not
7695bd8deadSopenharmony_ci    apply to floating-point color buffers. ...
7705bd8deadSopenharmony_ci
7715bd8deadSopenharmony_ci    Modify Section 4.2.3, Clearing the Buffers (p. 171)
7725bd8deadSopenharmony_ci
7735bd8deadSopenharmony_ci    ...
7745bd8deadSopenharmony_ci
7755bd8deadSopenharmony_ci        void ClearColor(float r, float g, float b, float a);
7765bd8deadSopenharmony_ci
7775bd8deadSopenharmony_ci    sets the clear value for RGBA color buffers.  When a fixed-point color
7785bd8deadSopenharmony_ci    buffer is cleared, the effective clear color is derived by clamping each
7795bd8deadSopenharmony_ci    component to [0,1] and converting to fixed-point according to the rules in
7805bd8deadSopenharmony_ci    section 2.13.9.  When a floating-point color buffer is cleared, the
7815bd8deadSopenharmony_ci    components of the clear value are used directly without being clamped.
7825bd8deadSopenharmony_ci
7835bd8deadSopenharmony_ci    Modify Section 4.2.4, The Accumulation Buffer (p. 172)
7845bd8deadSopenharmony_ci
7855bd8deadSopenharmony_ci    (modify last paragraph) ... If there is no accumulation buffer, or if
7865bd8deadSopenharmony_ci    color buffer is not fixed-point RGBA, Accum generates the error
7875bd8deadSopenharmony_ci    INVALID_OPERATION.
7885bd8deadSopenharmony_ci
7895bd8deadSopenharmony_ci    Modify Section 4.3.2, Reading Pixels
7905bd8deadSopenharmony_ci
7915bd8deadSopenharmony_ci    (modify "Conversion of RGBA Values", p. 176) This step applies only if the
7925bd8deadSopenharmony_ci    GL is in RGBA mode, and then only if format is neither STENCIL INDEX nor
7935bd8deadSopenharmony_ci    DEPTH COMPONENT.  The R, G, B, and A values form a group of elements.  If
7945bd8deadSopenharmony_ci    the color buffer has fixed-point format, each element is taken to be a
7955bd8deadSopenharmony_ci    fixed-point value in [0,1] with m bits, where m is the number of bits in
7965bd8deadSopenharmony_ci    the corresponding color component of the selected buffer (see section
7975bd8deadSopenharmony_ci    2.13.9).
7985bd8deadSopenharmony_ci
7995bd8deadSopenharmony_ci    (add to end of "Final Conversion", p. 177) ... For an RGBA color,
8005bd8deadSopenharmony_ci    components are clamped depending on the data type of the buffer being
8015bd8deadSopenharmony_ci    read.  For fixed-point buffers, each component is clamped to [0.1].  For
8025bd8deadSopenharmony_ci    floating-point buffers, if <type> is not FLOAT or HALF_FLOAT_NV, each
8035bd8deadSopenharmony_ci    component is clamped to [0,1] if <type> is unsigned or [-1,1] if <type> is
8045bd8deadSopenharmony_ci    signed and then converted according to Table 4.7.
8055bd8deadSopenharmony_ci
8065bd8deadSopenharmony_ci    Modify section 4.4.4, as defined by EXT_framebuffer_object,
8075bd8deadSopenharmony_ci    definition of color-renderable:
8085bd8deadSopenharmony_ci
8095bd8deadSopenharmony_ci        * An internal format is "color-renderable" if it is RGB, RGBA,
8105bd8deadSopenharmony_ci          FLOAT_R_NV, FLOAT_RG_NV, FLOAT_RGB_NV, FLOAT_RGBA_NV, or one
8115bd8deadSopenharmony_ci          of the formats from table 3.16 whose base internal format is
8125bd8deadSopenharmony_ci          RGB, RGBA, FLOAT_R_NV, FLOAT_RG_NV, FLOAT_RGB_NV, or
8135bd8deadSopenharmony_ci          FLOAT_RGBA_NV.  No other formats, including compressed
8145bd8deadSopenharmony_ci          internal formats, are color-renderable.
8155bd8deadSopenharmony_ci
8165bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 1.3 Specification (Special Functions)
8175bd8deadSopenharmony_ci
8185bd8deadSopenharmony_ci    None.
8195bd8deadSopenharmony_ci
8205bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 1.3 Specification (State and
8215bd8deadSopenharmony_ciState Requests)
8225bd8deadSopenharmony_ci
8235bd8deadSopenharmony_ci    Modify Section 6.1.4, Texture Queries (p. 200)
8245bd8deadSopenharmony_ci 
8255bd8deadSopenharmony_ci    Modify Table 6.1 (add new rows, corresponding to new internal formats,
8265bd8deadSopenharmony_ci    p. 202)
8275bd8deadSopenharmony_ci
8285bd8deadSopenharmony_ci        Base Internal Format     R   G   B   A
8295bd8deadSopenharmony_ci        --------------------    --- --- --- ---
8305bd8deadSopenharmony_ci        FLOAT_R_NV               R   0   0   1
8315bd8deadSopenharmony_ci        FLOAT_RG_NV              R   G   0   1
8325bd8deadSopenharmony_ci        FLOAT_RGB_NV             R   G   B   1
8335bd8deadSopenharmony_ci        FLOAT_RGBA_NV            R   G   B   A
8345bd8deadSopenharmony_ci
8355bd8deadSopenharmony_ciAdditions to Appendix A of the OpenGL 1.3 Specification (Invariance)
8365bd8deadSopenharmony_ci
8375bd8deadSopenharmony_ci    None.
8385bd8deadSopenharmony_ci
8395bd8deadSopenharmony_ciAdditions to the WGL Specification
8405bd8deadSopenharmony_ci
8415bd8deadSopenharmony_ci    First, close your eyes and pretend that a WGL specification actually
8425bd8deadSopenharmony_ci    existed.  Maybe if we all concentrate hard enough, one will magically
8435bd8deadSopenharmony_ci    appear.
8445bd8deadSopenharmony_ci
8455bd8deadSopenharmony_ci    Modify/add to the description of <piAttributes> in
8465bd8deadSopenharmony_ci    wglGetPixelFormatAttribivARB and <pfAttributes> in
8475bd8deadSopenharmony_ci    wglGetPixelFormatAttribfvARB:
8485bd8deadSopenharmony_ci
8495bd8deadSopenharmony_ci      WGL_FLOAT_COMPONENTS_NV
8505bd8deadSopenharmony_ci        True if the R, G, B, and A components of each color buffer are
8515bd8deadSopenharmony_ci        represented as (unclamped) floating-point numbers.
8525bd8deadSopenharmony_ci
8535bd8deadSopenharmony_ci      WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV
8545bd8deadSopenharmony_ci      WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV
8555bd8deadSopenharmony_ci      WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV
8565bd8deadSopenharmony_ci      WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV
8575bd8deadSopenharmony_ci        True if the pixel format describes a floating-point color that can be
8585bd8deadSopenharmony_ci        bound to a texture rectangle with internal formats of FLOAT_R_NV,
8595bd8deadSopenharmony_ci        FLOAT_RG_NV, FLOAT_RGB_NV, or FLOAT_RGBA_NV, respectively.  Currently
8605bd8deadSopenharmony_ci        only pbuffers can be bound as textures so this attribute will only be
8615bd8deadSopenharmony_ci        TRUE if WGL_DRAW_TO_PBUFFER is also TRUE.  Additionally,
8625bd8deadSopenharmony_ci        floating-point color buffers can not be bound to texture targets other
8635bd8deadSopenharmony_ci        than TEXTURE_RECTANGLE_NV.
8645bd8deadSopenharmony_ci
8655bd8deadSopenharmony_ci    Add new table entries for pixel format attribute matching in
8665bd8deadSopenharmony_ci    wglChoosePixelFormatARB.
8675bd8deadSopenharmony_ci
8685bd8deadSopenharmony_ci        Attribute                    Type        Match Criteria
8695bd8deadSopenharmony_ci        -------------------------    -------     --------------
8705bd8deadSopenharmony_ci        WGL_FLOAT_COMPONENTS_NV      boolean     exact
8715bd8deadSopenharmony_ci        WGL_BIND_TO_TEXTURE_         boolean     exact
8725bd8deadSopenharmony_ci          RECTANGLE_FLOAT_R_NV
8735bd8deadSopenharmony_ci        WGL_BIND_TO_TEXTURE_         boolean     exact
8745bd8deadSopenharmony_ci          RECTANGLE_FLOAT_RG_NV
8755bd8deadSopenharmony_ci        WGL_BIND_TO_TEXTURE_         boolean     exact
8765bd8deadSopenharmony_ci          RECTANGLE_FLOAT_RGB_NV
8775bd8deadSopenharmony_ci        WGL_BIND_TO_TEXTURE_         boolean     exact
8785bd8deadSopenharmony_ci          RECTANGLE_FLOAT_RGBA_NV
8795bd8deadSopenharmony_ci
8805bd8deadSopenharmony_ci    (In the wglCreatePbufferARB section, modify the attribute list)
8815bd8deadSopenharmony_ci
8825bd8deadSopenharmony_ci      WGL_TEXTURE_FORMAT_ARB
8835bd8deadSopenharmony_ci
8845bd8deadSopenharmony_ci        This attribute indicates the base internal format of the texture that
8855bd8deadSopenharmony_ci        will be created when a color buffer of a pbuffer is bound to a texture
8865bd8deadSopenharmony_ci        map.  It can be set to WGL_TEXTURE_RGB_ARB (indicating an internal
8875bd8deadSopenharmony_ci        format of RGB), WGL_TEXTURE_RGBA_ARB (indicating a base internal
8885bd8deadSopenharmony_ci        format of RGBA), WGL_TEXTURE_FLOAT_R_NV (indicating a base internal
8895bd8deadSopenharmony_ci        format of FLOAT_R_NV), WGL_TEXTURE_FLOAT_RG_NV (indicating a base
8905bd8deadSopenharmony_ci        internal format of FLOAT_RG_NV), WGL_TEXTURE_FLOAT_RGB_NV (indicating
8915bd8deadSopenharmony_ci        a base internal format of FLOAT_RGB_NV), WGL_TEXTURE_FLOAT_RGBA_NV
8925bd8deadSopenharmony_ci        (indicating a base internal format of FLOAT_RGBA_NV), or
8935bd8deadSopenharmony_ci        WGL_NO_TEXTURE_ARB. The default value is WGL_NO_TEXTURE_ARB.
8945bd8deadSopenharmony_ci
8955bd8deadSopenharmony_ci
8965bd8deadSopenharmony_ci    (In the wglCreatePbufferARB section, modify the discussion of what happens
8975bd8deadSopenharmony_ci    to the depth/stencil/accum buffers when switching between mipmap levels or
8985bd8deadSopenharmony_ci    cube map faces.)
8995bd8deadSopenharmony_ci
9005bd8deadSopenharmony_ci    For pbuffers with a texture format of WGL_TEXTURE_RGB_ARB,
9015bd8deadSopenharmony_ci    WGL_TEXTURE_RGBA_ARB, WGL_TEXTURE_FLOAT_R_NV, WGL_TEXTURE_FLOAT_RG_NV,
9025bd8deadSopenharmony_ci    WGL_TEXTURE_FLOAT_RGB_NV, or WGL_TEXTURE_FLOAT_RGBA_NV, there will be a
9035bd8deadSopenharmony_ci    separate set of color buffers for each mipmap level and cube map face in
9045bd8deadSopenharmony_ci    the pbuffer.  Otherwise, the WGL implementation is free to share a single
9055bd8deadSopenharmony_ci    set of color, auxillary, and accumulation buffers between levels or faces.
9065bd8deadSopenharmony_ci
9075bd8deadSopenharmony_ci
9085bd8deadSopenharmony_ci    (In the wglCreatePbufferARB section, modify the error list)
9095bd8deadSopenharmony_ci
9105bd8deadSopenharmony_ci        ERROR_INVALID_DATA     WGL_TEXTURE_FORMAT_ARB is
9115bd8deadSopenharmony_ci                               WGL_TEXTURE_FLOAT_R_NV,
9125bd8deadSopenharmony_ci                               WGL_TEXTURE_FLOAT_RG_NV,
9135bd8deadSopenharmony_ci                               WGL_TEXTURE_FLOAT_RGB_NV, or
9145bd8deadSopenharmony_ci                               WGL_TEXTURE_FLOAT_RGBA_NV, and
9155bd8deadSopenharmony_ci                               WGL_TEXTURE_TARGET_ARB is not
9165bd8deadSopenharmony_ci                               WGL_TEXTURE_RECTANGLE_NV.
9175bd8deadSopenharmony_ci
9185bd8deadSopenharmony_ci        ERROR_INVALID_DATA     WGL_TEXTURE_FORMAT_ARB is
9195bd8deadSopenharmony_ci                               WGL_TEXTURE_FLOAT_R_NV,
9205bd8deadSopenharmony_ci                               WGL_TEXTURE_TARGET_ARB is
9215bd8deadSopenharmony_ci                               WGL_TEXTURE_RECTANGLE_NV, and the
9225bd8deadSopenharmony_ci                               WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV
9235bd8deadSopenharmony_ci                               attribute is not set in the pixel format.
9245bd8deadSopenharmony_ci
9255bd8deadSopenharmony_ci        ERROR_INVALID_DATA     WGL_TEXTURE_FORMAT_ARB is
9265bd8deadSopenharmony_ci                               WGL_TEXTURE_FLOAT_RG_NV,
9275bd8deadSopenharmony_ci                               WGL_TEXTURE_TARGET_ARB is
9285bd8deadSopenharmony_ci                               WGL_TEXTURE_RECTANGLE_NV, and the
9295bd8deadSopenharmony_ci                               WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV
9305bd8deadSopenharmony_ci                               attribute is not set in the pixel format.
9315bd8deadSopenharmony_ci
9325bd8deadSopenharmony_ci        ERROR_INVALID_DATA     WGL_TEXTURE_FORMAT_ARB is
9335bd8deadSopenharmony_ci                               WGL_TEXTURE_FLOAT_RGB_NV,
9345bd8deadSopenharmony_ci                               WGL_TEXTURE_TARGET_ARB is
9355bd8deadSopenharmony_ci                               WGL_TEXTURE_RECTANGLE_NV, and the
9365bd8deadSopenharmony_ci                               WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV
9375bd8deadSopenharmony_ci                               attribute is not set in the pixel format.
9385bd8deadSopenharmony_ci
9395bd8deadSopenharmony_ci        ERROR_INVALID_DATA     WGL_TEXTURE_FORMAT_ARB is
9405bd8deadSopenharmony_ci                               WGL_TEXTURE_FLOAT_RGBA_NV,
9415bd8deadSopenharmony_ci                               WGL_TEXTURE_TARGET_ARB is
9425bd8deadSopenharmony_ci                               WGL_TEXTURE_RECTANGLE_NV, and the
9435bd8deadSopenharmony_ci                               WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV
9445bd8deadSopenharmony_ci                               attribute is not set in the pixel format.
9455bd8deadSopenharmony_ci
9465bd8deadSopenharmony_ci    Modify wglBindTexImageARB: 
9475bd8deadSopenharmony_ci
9485bd8deadSopenharmony_ci    ...
9495bd8deadSopenharmony_ci
9505bd8deadSopenharmony_ci        The pbuffer attribute WGL_TEXTURE_FORMAT_ARB determines the base
9515bd8deadSopenharmony_ci        internal format of the texture. The format-specific component sizes
9525bd8deadSopenharmony_ci        are also determined by pbuffer attributes as shown in the table below.
9535bd8deadSopenharmony_ci        The component sizes are dependent on the format of the texture.
9545bd8deadSopenharmony_ci  
9555bd8deadSopenharmony_ci        Component           Size                 Format
9565bd8deadSopenharmony_ci        ---------    ------------------------    ----------------------------
9575bd8deadSopenharmony_ci            R        WGL_RED_BITS_ARB            RGB, RGBA, FLOAT_R, FLOAT_RG,
9585bd8deadSopenharmony_ci                                                 FLOAT_RGB, FLOAT_RGBA
9595bd8deadSopenharmony_ci            G        WGL_GREEN_BITS_ARB          RGB, RGBA, FLOAT_R, FLOAT_RG,
9605bd8deadSopenharmony_ci                                                 FLOAT_RGB, FLOAT_RGBA
9615bd8deadSopenharmony_ci            B        WGL_BLUE_BITS_ARB           RGB, RGBA, FLOAT_R, FLOAT_RG,
9625bd8deadSopenharmony_ci                                                 FLOAT_RGB, FLOAT_RGBA
9635bd8deadSopenharmony_ci            A        WGL_ALPHA_BITS_ARB          RGB, RGBA, FLOAT_R, FLOAT_RG,
9645bd8deadSopenharmony_ci                                                 FLOAT_RGB, FLOAT_RGBA
9655bd8deadSopenharmony_ci
9665bd8deadSopenharmony_ci
9675bd8deadSopenharmony_ciAdditions to the AGL Specification
9685bd8deadSopenharmony_ci
9695bd8deadSopenharmony_ci    None
9705bd8deadSopenharmony_ci
9715bd8deadSopenharmony_ciAdditions to the GLX Specification
9725bd8deadSopenharmony_ci
9735bd8deadSopenharmony_ci    <very incomplete>
9745bd8deadSopenharmony_ci
9755bd8deadSopenharmony_ci    The GLX_FLOAT_COMPONENTS_NV framebuffer config attribute is a
9765bd8deadSopenharmony_ci    boolean (or GLX_DONT_CARE) indicating if floating-point components
9775bd8deadSopenharmony_ci    are requested.
9785bd8deadSopenharmony_ci
9795bd8deadSopenharmony_ciDependencies on EXT_paletted_texture, SGIX_depth_texture, and NV_texture_shader
9805bd8deadSopenharmony_ci
9815bd8deadSopenharmony_ci    If any of these extensions are not supported, the rows in Tables 3.15 and
9825bd8deadSopenharmony_ci    3.16 corresponding to texture formats defined by the unsupported extension
9835bd8deadSopenharmony_ci    should be removed.
9845bd8deadSopenharmony_ci
9855bd8deadSopenharmony_ci    If NV_texture_shader is not supported, ignore the amended
9865bd8deadSopenharmony_ci    paragraph from the NV_texture_shader specificiaton describing
9875bd8deadSopenharmony_ci    TEXTURE_BORDER_VALUES clamping in favor of the original OpenGL
9885bd8deadSopenharmony_ci    specification language.
9895bd8deadSopenharmony_ci
9905bd8deadSopenharmony_ciDependencies on NV_half_float
9915bd8deadSopenharmony_ci
9925bd8deadSopenharmony_ci    If GL_NV_half_float is not supported, all references to HALF_FLOAT_NV
9935bd8deadSopenharmony_ci    should be deleted.
9945bd8deadSopenharmony_ci
9955bd8deadSopenharmony_ciDependencies on ARB_color_buffer_float and ATI_pixel_format_float
9965bd8deadSopenharmony_ci
9975bd8deadSopenharmony_ci    If ARB_color_buffer_float and ATI_pixel_format_float are also supported,
9985bd8deadSopenharmony_ci    the GL would have two different floating-point frame buffer models with
9995bd8deadSopenharmony_ci    different restrictions.  To avoid having to carry these differences all
10005bd8deadSopenharmony_ci    the way down the pipeline and provide two distinct sets of frame buffer
10015bd8deadSopenharmony_ci    formats, the following limitations on rendering to floating-point color
10025bd8deadSopenharmony_ci    buffers in this extension are removed if ARB_color_buffer_float or
10035bd8deadSopenharmony_ci    ATI_pixel_format_float is supported:
10045bd8deadSopenharmony_ci
10055bd8deadSopenharmony_ci      Modify Section 3.11, Antialiasing Application (p. 155)
10065bd8deadSopenharmony_ci
10075bd8deadSopenharmony_ci      ... In RGBA mode with floating-point frame buffers, the coverage value
10085bd8deadSopenharmony_ci      is simply discarded.  ...
10095bd8deadSopenharmony_ci
10105bd8deadSopenharmony_ci      Modify Section 4.1.3, Multisample Fragment Operations (p. 158)
10115bd8deadSopenharmony_ci
10125bd8deadSopenharmony_ci      This step applies only for fixed-point RGBA color buffers. Otherwise,
10135bd8deadSopenharmony_ci      proceed to the next step.  ...
10145bd8deadSopenharmony_ci
10155bd8deadSopenharmony_ci      Modify Section 4.1.4, Alpha Test (p. 159)
10165bd8deadSopenharmony_ci
10175bd8deadSopenharmony_ci      This step applies only for fixed-point RGBA color buffers. Otherwise,
10185bd8deadSopenharmony_ci      proceed to the next step.  ...
10195bd8deadSopenharmony_ci
10205bd8deadSopenharmony_ci      Modify Section 4.1.7, Blending (p. 161)
10215bd8deadSopenharmony_ci
10225bd8deadSopenharmony_ci      (modify second paragraph)
10235bd8deadSopenharmony_ci
10245bd8deadSopenharmony_ci      This blending is dependent on the incoming fragment's alpha value and
10255bd8deadSopenharmony_ci      that of the corresponding currently stored pixel.  Blending applies only
10265bd8deadSopenharmony_ci      for fixed-point RGBA color buffers; otherwise, it is bypassed. ...
10275bd8deadSopenharmony_ci
10285bd8deadSopenharmony_ci      Modify Section 4.2.4, The Accumulation Buffer (p. 172)
10295bd8deadSopenharmony_ci
10305bd8deadSopenharmony_ci      (modify last paragraph) ..., or if color buffer is not fixed-point RGBA,
10315bd8deadSopenharmony_ci
10325bd8deadSopenharmony_ci    When blending is enabled with a floating-point color buffer, the spec
10335bd8deadSopenharmony_ci    language in ARB_color_buffer_float describes how blending is performed.
10345bd8deadSopenharmony_ci
10355bd8deadSopenharmony_ci    The above restrictions remain in effect on NV3X (GeForce FX, Quadro FX)
10365bd8deadSopenharmony_ci    hardware, where neither ARB_color_buffer_float nor ATI_pixel_format_float
10375bd8deadSopenharmony_ci    is supported.
10385bd8deadSopenharmony_ci
10395bd8deadSopenharmony_ci    Additionally, if ARB_color_buffer_float or ATI_pixel_format_float is
10405bd8deadSopenharmony_ci    supported, the following errors are not generated:
10415bd8deadSopenharmony_ci
10425bd8deadSopenharmony_ci      INVALID_OPERATION is generated by Begin, DrawPixels, Bitmap, CopyPixels,
10435bd8deadSopenharmony_ci      or a command that performs an explicit Begin if the color buffer has a
10445bd8deadSopenharmony_ci      floating-point RGBA format and FRAGMENT_PROGRAM_NV is disabled.
10455bd8deadSopenharmony_ci
10465bd8deadSopenharmony_ci      INVALID_OPERATION is generated by Accum if the color buffer has a color
10475bd8deadSopenharmony_ci      index or floating-point RGBA format.
10485bd8deadSopenharmony_ci
10495bd8deadSopenharmony_ciDependencies on ARB_texture_float and ATI_texture_float
10505bd8deadSopenharmony_ci
10515bd8deadSopenharmony_ci    If ARB_texture_float or ATI_texture_float is also supported, the GL would
10525bd8deadSopenharmony_ci    have two different sets of floating-point textures with different
10535bd8deadSopenharmony_ci    restrictions.  To avoid having to carry these differences all the way down
10545bd8deadSopenharmony_ci    the pipeline, the following limitations on filtering of NV_float_buffer
10555bd8deadSopenharmony_ci    textures are removed if ARB_texture_float or ATI_texture_float is
10565bd8deadSopenharmony_ci    supported:
10575bd8deadSopenharmony_ci
10585bd8deadSopenharmony_ci      Modify Section 3.8,7, Minification (p. 141)
10595bd8deadSopenharmony_ci
10605bd8deadSopenharmony_ci      (Add after the last paragraph in the section) Floating-point textures
10615bd8deadSopenharmony_ci      (those with a base internal format of FLOAT_R_NV, FLOAT_RG_NV,
10625bd8deadSopenharmony_ci      FLOAT_RGB_NV, or FLOAT_RGBA_NV) do not support texture filters other
10635bd8deadSopenharmony_ci      than NEAREST.  For such textures, NEAREST filtering is applied
10645bd8deadSopenharmony_ci      regardless of the setting of TEXTURE_MIN_FILTER.
10655bd8deadSopenharmony_ci
10665bd8deadSopenharmony_ci      Modify Section 3.8.8, Magnification (p. 141)
10675bd8deadSopenharmony_ci
10685bd8deadSopenharmony_ci      (Add after the last paragraph in the section) Floating-point textures
10695bd8deadSopenharmony_ci      (those with a base internal format of FLOAT_R_NV, FLOAT_RG_NV,
10705bd8deadSopenharmony_ci      FLOAT_RGB_NV, or FLOAT_RGBA_NV) do not support texture filters other
10715bd8deadSopenharmony_ci      than NEAREST.  For such textures, NEAREST filtering is applied
10725bd8deadSopenharmony_ci      regardless of the setting of TEXTURE_MAG_FILTER.
10735bd8deadSopenharmony_ci
10745bd8deadSopenharmony_ci    The above restrictions remain in effect on NV3X (GeForce FX, Quadro FX)
10755bd8deadSopenharmony_ci    hardware, where ARB_texture_float and ATI_texture_float are not supported.
10765bd8deadSopenharmony_ci
10775bd8deadSopenharmony_ci    The following restriction requiring the use of rectangle textures does
10785bd8deadSopenharmony_ci    remain in effect for NV_float_buffer texture formats, even though
10795bd8deadSopenharmony_ci    ARB_texture_float and ATI_texture_float provides the ability to use
10805bd8deadSopenharmony_ci    floating-point textures with non-rectangle targets.  If this capability is
10815bd8deadSopenharmony_ci    required, use the texture formats defined in ARB_texture_float or
10825bd8deadSopenharmony_ci    ATI_texture_float.
10835bd8deadSopenharmony_ci
10845bd8deadSopenharmony_ci      (add between first and second paragraphs, p.117) Textures with a base
10855bd8deadSopenharmony_ci      internal format of FLOAT_R_NV, FLOAT_RG_NV, FLOAT_RGB_NV, and
10865bd8deadSopenharmony_ci      FLOAT_RGBA_NV are known as floating-point textures.  Floating-point
10875bd8deadSopenharmony_ci      textures are only supported for the TEXTURE_RECTANGLE_NV target.
10885bd8deadSopenharmony_ci      Specifying a floating-point texture with any other target will produce
10895bd8deadSopenharmony_ci      an INVALID_OPERATION error.
10905bd8deadSopenharmony_ci
10915bd8deadSopenharmony_ciDependencies on EXT_framebuffer_object
10925bd8deadSopenharmony_ci
10935bd8deadSopenharmony_ci    If EXT_framebuffer_object is not supported, then ignore any
10945bd8deadSopenharmony_ci    reference to EXT_framebuffer_object.
10955bd8deadSopenharmony_ci
10965bd8deadSopenharmony_ciGLX Protocol
10975bd8deadSopenharmony_ci
10985bd8deadSopenharmony_ci    None.
10995bd8deadSopenharmony_ci
11005bd8deadSopenharmony_ciErrors
11015bd8deadSopenharmony_ci
11025bd8deadSopenharmony_ci    INVALID_OPERATION is generated by Begin, DrawPixels, Bitmap, CopyPixels,
11035bd8deadSopenharmony_ci    or a command that performs an explicit Begin if the color buffer has a
11045bd8deadSopenharmony_ci    floating-point RGBA format and FRAGMENT_PROGRAM_NV is disabled.
11055bd8deadSopenharmony_ci
11065bd8deadSopenharmony_ci    INVALID_OPERATION is generated by TexImage3D, TexImage2D, TexImage1D,
11075bd8deadSopenharmony_ci    TexSubImage3D, TexSubImage2D, or TexSubImage1D if the pixel group type
11085bd8deadSopenharmony_ci    corresponding to <format> is not compatible with the base internal format
11095bd8deadSopenharmony_ci    of the texture.
11105bd8deadSopenharmony_ci
11115bd8deadSopenharmony_ci    INVALID_OPERATION is generated by TexImage3D, TexImage1D, or
11125bd8deadSopenharmony_ci    CopyTexImage1D if the base internal format corresponding to
11135bd8deadSopenharmony_ci    <internalformat> is FLOAT_R_NV, FLOAT_RG_NV, FLOAT_RGB_NV, or
11145bd8deadSopenharmony_ci    FLOAT_RGBA_NV.
11155bd8deadSopenharmony_ci
11165bd8deadSopenharmony_ci    INVALID_OPERATION is generated by TexImage2D or CopyTexImage2D if the base
11175bd8deadSopenharmony_ci    internal format corresponding to <internalformat> is FLOAT_R_NV,
11185bd8deadSopenharmony_ci    FLOAT_RG_NV, FLOAT_RGB_NV, or FLOAT_RGBA_NV and <target> is not
11195bd8deadSopenharmony_ci    TEXTURE_RECTANGLE_NV.
11205bd8deadSopenharmony_ci
11215bd8deadSopenharmony_ci    INVALID_OPERATION is generated by Accum if the color buffer has a color
11225bd8deadSopenharmony_ci    index or floating-point RGBA format.
11235bd8deadSopenharmony_ci
11245bd8deadSopenharmony_ci    ERROR_INVALID_DATA is generated by wglCreatePbufferARB if
11255bd8deadSopenharmony_ci    WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_FLOAT_R_NV, WGL_TEXTURE_FLOAT_RG_NV,
11265bd8deadSopenharmony_ci    WGL_TEXTURE_FLOAT_RGB_NV, or WGL_TEXTURE_FLOAT_RGBA_NV, and
11275bd8deadSopenharmony_ci    WGL_TEXTURE_TARGET_ARB is not WGL_TEXTURE_RECTANGLE_NV.
11285bd8deadSopenharmony_ci
11295bd8deadSopenharmony_ci    ERROR_INVALID_DATA is generated by wglCreatePbufferARB if
11305bd8deadSopenharmony_ci    WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_FLOAT_R_NV, WGL_TEXTURE_TARGET_ARB
11315bd8deadSopenharmony_ci    is WGL_TEXTURE_RECTANGLE_NV, and the
11325bd8deadSopenharmony_ci    WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV attribute is not set in the pixel
11335bd8deadSopenharmony_ci    format.
11345bd8deadSopenharmony_ci
11355bd8deadSopenharmony_ci    ERROR_INVALID_DATA is generated by wglCreatePbufferARB if
11365bd8deadSopenharmony_ci    WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_FLOAT_RG_NV, WGL_TEXTURE_TARGET_ARB
11375bd8deadSopenharmony_ci    is WGL_TEXTURE_RECTANGLE_NV, and the
11385bd8deadSopenharmony_ci    WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV attribute is not set in the
11395bd8deadSopenharmony_ci    pixel format.
11405bd8deadSopenharmony_ci
11415bd8deadSopenharmony_ci    ERROR_INVALID_DATA is generated by wglCreatePbufferARB if
11425bd8deadSopenharmony_ci    WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_FLOAT_RGB_NV, WGL_TEXTURE_TARGET_ARB
11435bd8deadSopenharmony_ci    is WGL_TEXTURE_RECTANGLE_NV, and the
11445bd8deadSopenharmony_ci    WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV attribute is not set in the
11455bd8deadSopenharmony_ci    pixel format.
11465bd8deadSopenharmony_ci
11475bd8deadSopenharmony_ci    ERROR_INVALID_DATA is generated by wglCreatePbufferARB if
11485bd8deadSopenharmony_ci    WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_FLOAT_RGBA_NV,
11495bd8deadSopenharmony_ci    WGL_TEXTURE_TARGET_ARB is WGL_TEXTURE_RECTANGLE_NV, and the
11505bd8deadSopenharmony_ci    WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV attribute is not set in the
11515bd8deadSopenharmony_ci    pixel format.
11525bd8deadSopenharmony_ci
11535bd8deadSopenharmony_ci    
11545bd8deadSopenharmony_ciNew State
11555bd8deadSopenharmony_ci
11565bd8deadSopenharmony_ci    (Modify Table 6.15, Texture Objects (cont.), p. 223)
11575bd8deadSopenharmony_ci
11585bd8deadSopenharmony_ci                                                        Init.
11595bd8deadSopenharmony_ci    Get Value                     Type    Get Command   Value  Description             Sec.   Attribute
11605bd8deadSopenharmony_ci    ---------------------------   -----   ------------  -----  ---------------------   -----  ------------
11615bd8deadSopenharmony_ci    TEXTURE_FLOAT_COMPONENTS_NV   n x B   GetTexLevel-    0    True if texture holds   3.8    -
11625bd8deadSopenharmony_ci                                                               unclamped floating-
11635bd8deadSopenharmony_ci                                                               point values
11645bd8deadSopenharmony_ci
11655bd8deadSopenharmony_ci    (Modify Table 6.19, Framebuffer Control, p. 227)
11665bd8deadSopenharmony_ci
11675bd8deadSopenharmony_ci                                                      Init.
11685bd8deadSopenharmony_ci    Get Value                    Type   Get Command   Value     Description                Sec.   Attribute
11695bd8deadSopenharmony_ci    --------------------------   ----   -----------   -------   ------------------------   -----  ------------
11705bd8deadSopenharmony_ci    COLOR_CLEAR_VALUE            C      GetFloatv     0,0,0,0   Color buffer clear value   4.2.3  color-buffer
11715bd8deadSopenharmony_ci                                                                (RGBA mode), each value
11725bd8deadSopenharmony_ci                                                                clamped to [0,1].
11735bd8deadSopenharmony_ci    FLOAT_CLEAR_COLOR_VALUE_NV   4xR    GetFloatv     0,0,0,0   Color buffer clear value   4.2.3  color-buffer
11745bd8deadSopenharmony_ci                                                                (RGBA mode), each value
11755bd8deadSopenharmony_ci                                                                unclamped.
11765bd8deadSopenharmony_ci
11775bd8deadSopenharmony_ci
11785bd8deadSopenharmony_ciNew Implementation Dependent State
11795bd8deadSopenharmony_ci
11805bd8deadSopenharmony_ci    (Modify Table 6.28, Implementation Dependent Values, p. 236)
11815bd8deadSopenharmony_ci
11825bd8deadSopenharmony_ci                                              Init.
11835bd8deadSopenharmony_ci    Get Value            Type   Get Command   Value   Description            Sec.  Attribute
11845bd8deadSopenharmony_ci    ------------------   ----   -----------   -----   ---------------------  ----  ---------
11855bd8deadSopenharmony_ci    FLOAT_RGBA_MODE_NV   B      GetBooleanv   -       True if color buffers  4     -
11865bd8deadSopenharmony_ci                                                      store floating-point
11875bd8deadSopenharmony_ci                                                      data
11885bd8deadSopenharmony_ci
11895bd8deadSopenharmony_ciNV3x Implementation Details
11905bd8deadSopenharmony_ci
11915bd8deadSopenharmony_ci    NV3x GPUs (GeForce FX, etc.) support hardware acceleration for float
11925bd8deadSopenharmony_ci    textures with two or more components only when the repeat mode state
11935bd8deadSopenharmony_ci    (S and T) is GL_CLAMP_TO_EDGE.  If you use either the GL_CLAMP or
11945bd8deadSopenharmony_ci    GL_CLAMP_TO_BORDER repeat modes with a float texture with two or
11955bd8deadSopenharmony_ci    more components, the software rasterizer is used.
11965bd8deadSopenharmony_ci
11975bd8deadSopenharmony_ci    However, if you use a single-component float texture (GL_FLOAT_R_NV,
11985bd8deadSopenharmony_ci    etc.), all clamping repeat modes (GL_CLAMP, GL_CLAMP_TO_EDGE, and
11995bd8deadSopenharmony_ci    GL_CLAMP_TO_BORDER) are available with full hardware acceleration.
12005bd8deadSopenharmony_ci
12015bd8deadSopenharmony_ci    The two-, three-, and four-component texture formats all use the
12025bd8deadSopenharmony_ci    same amount of texture memory storage (128 bits per texel for the
12035bd8deadSopenharmony_ci    GL_FLOAT_x32 formats, and 64 bits per texel for the GL_FLOAT_x16
12045bd8deadSopenharmony_ci    formats).  Future GPUs will likely store two and three component
12055bd8deadSopenharmony_ci    float textures more efficiently.
12065bd8deadSopenharmony_ci
12075bd8deadSopenharmony_ci    The GL_FLOAT_R32_NV and GL_FLOAT_R16_NV texture formats each use 32
12085bd8deadSopenharmony_ci    bits per texel.  Future GPUs will likely store GL_FLOAT_R16_NV more
12095bd8deadSopenharmony_ci    efficiently.
12105bd8deadSopenharmony_ci
12115bd8deadSopenharmony_ci    NVIDIA treats the unsized internal formats GL_FLOAT_R_NV,
12125bd8deadSopenharmony_ci    GL_FLOAT_RGBA_NV, etc. the same as GL_FLOAT_R32_NV,
12135bd8deadSopenharmony_ci    GL_FLOAT_RGBA32_NV, etc.
12145bd8deadSopenharmony_ci
12155bd8deadSopenharmony_ciRevision History
12165bd8deadSopenharmony_ci
12175bd8deadSopenharmony_ci    Rev.    Date    Author   Changes
12185bd8deadSopenharmony_ci    ----  -------- --------  --------------------------------------------
12195bd8deadSopenharmony_ci     20   11/03/06  mjk      Update Status
12205bd8deadSopenharmony_ci
12215bd8deadSopenharmony_ci     19   01/10/05  mjk      Add very minimal GLX discussion
12225bd8deadSopenharmony_ci
12235bd8deadSopenharmony_ci     18   09/12/05  jjuliano Describe interaction with EXT_framebuffer_object.
12245bd8deadSopenharmony_ci                             The GL_FLOAT_*_NV texture formats are
12255bd8deadSopenharmony_ci                             color-renderable.
12265bd8deadSopenharmony_ci
12275bd8deadSopenharmony_ci     17   04/04/05  pbrown   Describe interactions with ARB_texture_float and
12285bd8deadSopenharmony_ci                             ARB_color_buffer_float (as well as the ATI
12295bd8deadSopenharmony_ci                             equivalents), which remove some of the
12305bd8deadSopenharmony_ci                             restrictions of this extension, when supported.
12315bd8deadSopenharmony_ci
12325bd8deadSopenharmony_ci     16   06/16/03  pbrown   Corrected the usage of WGL_TEXTURE_FLOAT_R_NV and
12335bd8deadSopenharmony_ci                             related enums in the list of enumerants.
12345bd8deadSopenharmony_ci
12355bd8deadSopenharmony_ci     15   01/23/03  mjk      Document texture border color (values) behavior
12365bd8deadSopenharmony_ci                             for float textures.  See issue.
12375bd8deadSopenharmony_ci
12385bd8deadSopenharmony_ci     14   01/20/03  mjk      Added NV3x Implementation Details section.
12395bd8deadSopenharmony_ci
12405bd8deadSopenharmony_ci     13   11/27/02  pbrown   Fixed the name of the clear color query enum in
12415bd8deadSopenharmony_ci                             the state table  -- the core spec says
12425bd8deadSopenharmony_ci                             COLOR_CLEAR_VALUE.  The enum in this extension is
12435bd8deadSopenharmony_ci                             FLOAT_CLEAR_COLOR_VALUE_NV.  Documented this
12445bd8deadSopenharmony_ci                             inconsistency.
12455bd8deadSopenharmony_ci
12465bd8deadSopenharmony_ci     12   10/09/02  pbrown   Clarified that the floating-point internal format
12475bd8deadSopenharmony_ci                             enums can not be passed TexImage1D and
12485bd8deadSopenharmony_ci                             TexImage3D.
12495bd8deadSopenharmony_ci
12505bd8deadSopenharmony_ci     11   07/19/02  pbrown   Cleaned up a number of items in the issues
12515bd8deadSopenharmony_ci                             section.  Removed limitation that DrawPixels and
12525bd8deadSopenharmony_ci                             CopyPixels color components are clamped to
12535bd8deadSopenharmony_ci                             [0,1].  Removed language modifying multisample
12545bd8deadSopenharmony_ci                             color filtering -- if multisample buffers are
12555bd8deadSopenharmony_ci                             supported, the color components will be filtered
12565bd8deadSopenharmony_ci                             on a componentwise basis.
12575bd8deadSopenharmony_ci
12585bd8deadSopenharmony_ci     10   07/09/02  pbrown   Fixed contradictory issue resolutions.
12595bd8deadSopenharmony_ci
12605bd8deadSopenharmony_ci      9   01/31/02  pbrown   Added revision history.
12615bd8deadSopenharmony_ci
12625bd8deadSopenharmony_ci      8   01/29/02  pbrown   Fix spec to indicate that
12635bd8deadSopenharmony_ci                             TEXTURE_FLOAT_COMPONENTS_NV is queried by
12645bd8deadSopenharmony_ci                             GetTexLevelParameter*() calls instead of the
12655bd8deadSopenharmony_ci                             generic gets.
12665bd8deadSopenharmony_ci
12675bd8deadSopenharmony_ci      7   12/26/01  pbrown   Documented limitation where DrawPixels/CopyPixels
12685bd8deadSopenharmony_ci                             data are clamped to [0,1], even when the color
12695bd8deadSopenharmony_ci                             buffer is floating-point.  This is consistent
12705bd8deadSopenharmony_ci                             with the fact that pixel data is supposed to go
12715bd8deadSopenharmony_ci                             in f[COL0] (fixed-point interpolator).  Changed
12725bd8deadSopenharmony_ci                             float texture to RGBA expansion to always fill in
12735bd8deadSopenharmony_ci                             with (0,0,0,1), not (0,0,0,0). This is more
12745bd8deadSopenharmony_ci                             consistent with our other texture formats.
12755bd8deadSopenharmony_ci
12765bd8deadSopenharmony_ci      6   11/30/01  pbrown   Assigned WGL enumerant values.
12775bd8deadSopenharmony_ci
12785bd8deadSopenharmony_ci      5   11/27/01  pbrown   Modify NV_float_buffer to eliminate the
12795bd8deadSopenharmony_ci                             dependencies on NV_render_depth_texture, now that
12805bd8deadSopenharmony_ci                             they are no longer necessary.  More pedantic
12815bd8deadSopenharmony_ci                             fixes.
12825bd8deadSopenharmony_ci
12835bd8deadSopenharmony_ci      4   10/29/01  pbrown   Add documentation of possible uses of
12845bd8deadSopenharmony_ci                             floating-point color buffers. 
12855bd8deadSopenharmony_ci
12865bd8deadSopenharmony_ci      3   10/19/01  pbrown   Assign GL enumerants.  Fixed some bugs in the use
12875bd8deadSopenharmony_ci                             of #defines in the spec.  Added ARB_imaging
12885bd8deadSopenharmony_ci                             and SGIS_generate_mipmap interaction issues.
1289