15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    ARB_multisample
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_ARB_multisample
85bd8deadSopenharmony_ci    GLX_ARB_multisample
95bd8deadSopenharmony_ci    WGL_ARB_multisample
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ciContact
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ci    Dale Kirkland, NVIDIA (dkirkland 'at' nvidia.com)
145bd8deadSopenharmony_ci    Bill Armstrong, E&S (armstron 'at' es.com)
155bd8deadSopenharmony_ci    Michael Gold, NVIDIA (gold 'at' nvidia.com)
165bd8deadSopenharmony_ci    Jon Leech, SGI (ljp 'at' sgi.com)
175bd8deadSopenharmony_ci    Paula Womack, 3dfx (paulaw 'at' 3dfx.com)
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciNotice
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    Copyright (c) 1999-2013 The Khronos Group Inc. Copyright terms at
225bd8deadSopenharmony_ci        http://www.khronos.org/registry/speccopyright.html
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ciSpecification Update Policy
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ci    Khronos-approved extension specifications are updated in response to
275bd8deadSopenharmony_ci    issues and bugs prioritized by the Khronos OpenGL Working Group. For
285bd8deadSopenharmony_ci    extensions which have been promoted to a core Specification, fixes will
295bd8deadSopenharmony_ci    first appear in the latest version of that core Specification, and will
305bd8deadSopenharmony_ci    eventually be backported to the extension document. This policy is
315bd8deadSopenharmony_ci    described in more detail at
325bd8deadSopenharmony_ci        https://www.khronos.org/registry/OpenGL/docs/update_policy.php
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ciStatus
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ci    Approved by ARB on 12/8/1999.
375bd8deadSopenharmony_ci    GLX protocol must still be defined.
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ciVersion
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    Last Modified Date: March 12, 2002
425bd8deadSopenharmony_ci    Author Revision: 0.6
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ci    Based on:  SGIS_Multisample Specification
455bd8deadSopenharmony_ci               Date: 1994/11/22 Revision: 1.14
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ciNumber
485bd8deadSopenharmony_ci
495bd8deadSopenharmony_ci    ARB Extension #5
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ciDependencies
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ci    WGL_EXT_extensions_string is required.
545bd8deadSopenharmony_ci    WGL_EXT_pixel_format is required.
555bd8deadSopenharmony_ci
565bd8deadSopenharmony_ciOverview
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ci    This extension provides a mechanism to antialias all GL primitives:
595bd8deadSopenharmony_ci    points, lines, polygons, bitmaps, and images.  The technique is to
605bd8deadSopenharmony_ci    sample all primitives multiple times at each pixel.  The color
615bd8deadSopenharmony_ci    sample values are resolved to a single, displayable color each time
625bd8deadSopenharmony_ci    a pixel is updated, so the antialiasing appears to be automatic at
635bd8deadSopenharmony_ci    the application level.  Because each sample includes depth and
645bd8deadSopenharmony_ci    stencil information, the depth and stencil functions perform
655bd8deadSopenharmony_ci    equivalently to the single-sample mode.
665bd8deadSopenharmony_ci
675bd8deadSopenharmony_ci    An additional buffer, called the multisample buffer, is added to
685bd8deadSopenharmony_ci    the framebuffer.  Pixel sample values, including color, depth, and
695bd8deadSopenharmony_ci    stencil values, are stored in this buffer.  When the framebuffer
705bd8deadSopenharmony_ci    includes a multisample buffer, it does not also include separate
715bd8deadSopenharmony_ci    depth or stencil buffers, even if the multisample buffer does not
725bd8deadSopenharmony_ci    store depth or stencil values.  Color buffers (left/right, front/
735bd8deadSopenharmony_ci    back, and aux) do coexist with the multisample buffer, however.
745bd8deadSopenharmony_ci
755bd8deadSopenharmony_ci    Multisample antialiasing is most valuable for rendering polygons,
765bd8deadSopenharmony_ci    because it requires no sorting for hidden surface elimination, and
775bd8deadSopenharmony_ci    it correctly handles adjacent polygons, object silhouettes, and
785bd8deadSopenharmony_ci    even intersecting polygons.  If only points or lines are being
795bd8deadSopenharmony_ci    rendered, the "smooth" antialiasing mechanism provided by the base
805bd8deadSopenharmony_ci    GL may result in a higher quality image.  This extension is
815bd8deadSopenharmony_ci    designed to allow multisample and smooth antialiasing techniques
825bd8deadSopenharmony_ci    to be alternated during the rendering of a single scene.
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ciIP Status
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ci    TBD
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ciIssues
895bd8deadSopenharmony_ci
905bd8deadSopenharmony_ci    1. Multiple passes have been taken out.  Is this acceptable?
915bd8deadSopenharmony_ci
925bd8deadSopenharmony_ci       RESOLUTION:  Yes.  This can be added back with an additional
935bd8deadSopenharmony_ci       extension if needed.
945bd8deadSopenharmony_ci
955bd8deadSopenharmony_ci    2. Would SampleAlphaARB be a better name for the function
965bd8deadSopenharmony_ci       SampleMaskARB?  If so, the name SAMPLE_MASK_ARB should also be
975bd8deadSopenharmony_ci       changed to SAMPLE_ALPHA_ARB.
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci       RESOLUTION:  Names containing "mask" were changed to use
1005bd8deadSopenharmony_ci       "coverage" instead.
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci    3. Should the SampleCoverageARB function be changed to allow
1035bd8deadSopenharmony_ci       blending between more than two objects?
1045bd8deadSopenharmony_ci
1055bd8deadSopenharmony_ci       RESOLUTION:  Not addressed by this extension.  An additional
1065bd8deadSopenharmony_ci       extension has been proposed that allows a coverage range for
1075bd8deadSopenharmony_ci       each object.  The coverage range is a min and max value that
1085bd8deadSopenharmony_ci       can be used to blend multiple objects at different level-of-
1095bd8deadSopenharmony_ci       detail fading.  The SampleCoverageARB function will layer on
1105bd8deadSopenharmony_ci       this new extension.
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ciNew Procedures and Functions
1135bd8deadSopenharmony_ci
1145bd8deadSopenharmony_ci    void SampleCoverageARB(clampf value,
1155bd8deadSopenharmony_ci                           boolean invert);
1165bd8deadSopenharmony_ci
1175bd8deadSopenharmony_ciNew Tokens
1185bd8deadSopenharmony_ci
1195bd8deadSopenharmony_ci    Accepted by the <attribList> parameter of glXChooseVisual, and by
1205bd8deadSopenharmony_ci    the <attrib> parameter of glXGetConfig:
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci        GLX_SAMPLE_BUFFERS_ARB               100000
1235bd8deadSopenharmony_ci        GLX_SAMPLES_ARB                      100001
1245bd8deadSopenharmony_ci
1255bd8deadSopenharmony_ci    Accepted by the <piAttributes> parameter of
1265bd8deadSopenharmony_ci    wglGetPixelFormatAttribivEXT, wglGetPixelFormatAttribfvEXT, and
1275bd8deadSopenharmony_ci    the <piAttribIList> and <pfAttribIList> of wglChoosePixelFormatEXT:
1285bd8deadSopenharmony_ci
1295bd8deadSopenharmony_ci        WGL_SAMPLE_BUFFERS_ARB               0x2041
1305bd8deadSopenharmony_ci        WGL_SAMPLES_ARB                      0x2042
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled,
1335bd8deadSopenharmony_ci    and by the <pname> parameter of GetBooleanv, GetIntegerv,
1345bd8deadSopenharmony_ci    GetFloatv, and GetDoublev:
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ci        MULTISAMPLE_ARB                      0x809D
1375bd8deadSopenharmony_ci        SAMPLE_ALPHA_TO_COVERAGE_ARB         0x809E
1385bd8deadSopenharmony_ci        SAMPLE_ALPHA_TO_ONE_ARB              0x809F
1395bd8deadSopenharmony_ci        SAMPLE_COVERAGE_ARB                  0x80A0
1405bd8deadSopenharmony_ci
1415bd8deadSopenharmony_ci    Accepted by the <mask> parameter of PushAttrib:
1425bd8deadSopenharmony_ci
1435bd8deadSopenharmony_ci        MULTISAMPLE_BIT_ARB                  0x20000000
1445bd8deadSopenharmony_ci
1455bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetBooleanv, GetDoublev,
1465bd8deadSopenharmony_ci    GetIntegerv, and GetFloatv:
1475bd8deadSopenharmony_ci
1485bd8deadSopenharmony_ci        SAMPLE_BUFFERS_ARB                   0x80A8
1495bd8deadSopenharmony_ci        SAMPLES_ARB                          0x80A9
1505bd8deadSopenharmony_ci        SAMPLE_COVERAGE_VALUE_ARB            0x80AA
1515bd8deadSopenharmony_ci        SAMPLE_COVERAGE_INVERT_ARB           0x80AB
1525bd8deadSopenharmony_ci
1535bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.2.1 Specification (OpenGL Operation)
1545bd8deadSopenharmony_ci
1555bd8deadSopenharmony_ci    None
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.2.1 Specification (Rasterization)
1585bd8deadSopenharmony_ci
1595bd8deadSopenharmony_ci    If SAMPLE_BUFFERS_ARB is a value of one, the rasterization of all
1605bd8deadSopenharmony_ci    GL primitives is changed, and is referred to as multisample
1615bd8deadSopenharmony_ci    rasterization.  Otherwise, primitive rasterization operates as it is
1625bd8deadSopenharmony_ci    described in the GL specification, and is referred to as single-
1635bd8deadSopenharmony_ci    sample rasterization.  The value of SAMPLE_BUFFERS_ARB is an
1645bd8deadSopenharmony_ci    implementation dependent constant, and is queried by calling
1655bd8deadSopenharmony_ci    GetIntegerv with <pname> set to SAMPLE_BUFFERS_ARB.  This value is
1665bd8deadSopenharmony_ci    the same as GLX_SAMPLE_BUFFERS_ARB or WGL_SAMPLE_BUFFERS_ARB for
1675bd8deadSopenharmony_ci    the visual or pixel format associated with the context.
1685bd8deadSopenharmony_ci
1695bd8deadSopenharmony_ci    During multisample rendering the contents of a pixel fragment are
1705bd8deadSopenharmony_ci    changed in two ways.  First, each fragment includes a coverage
1715bd8deadSopenharmony_ci    value with SAMPLES_ARB bits.  The value of SAMPLES_ARB is an
1725bd8deadSopenharmony_ci    implementation-dependent constant, and is queried by calling
1735bd8deadSopenharmony_ci    GetIntegerv with <pname> set to SAMPLES_ARB.  Second, each fragment
1745bd8deadSopenharmony_ci    includes SAMPLES_ARB depth values, instead of the single depth
1755bd8deadSopenharmony_ci    value that is maintained in single-sample rendering mode.  Each
1765bd8deadSopenharmony_ci    pixel fragment thus consists of integer x and y grid coordinates,
1775bd8deadSopenharmony_ci    a color, SAMPLES_ARB depth values, texture coordinates, and a
1785bd8deadSopenharmony_ci    coverage value with a maximum of SAMPLES_ARB bits.
1795bd8deadSopenharmony_ci
1805bd8deadSopenharmony_ci    The behavior of multisample rasterization is a function of
1815bd8deadSopenharmony_ci    MULTISAMPLE_ARB, which is enabled and disabled by calling Enable or
1825bd8deadSopenharmony_ci    Disable, with <cap> set to MULTISAMPLE_ARB.  Its value is queried
1835bd8deadSopenharmony_ci    using IsEnabled, with <cap> set to MULTISAMPLE_ARB.
1845bd8deadSopenharmony_ci
1855bd8deadSopenharmony_ci    If MULTISAMPLE_ARB is disabled, multisample rasterization of all
1865bd8deadSopenharmony_ci    primitives is equivalent to single-sample rasterization, except
1875bd8deadSopenharmony_ci    that the fragment coverage value is set to full coverage.  The
1885bd8deadSopenharmony_ci    depth values may all be set to the single value that would have
1895bd8deadSopenharmony_ci    been assigned by single-sample rasterization, or they may be
1905bd8deadSopenharmony_ci    assigned as described below for multisample rasterization.
1915bd8deadSopenharmony_ci
1925bd8deadSopenharmony_ci    If MULTISAMPLE_ARB is enabled, multisample rasterization of all
1935bd8deadSopenharmony_ci    primitives differs substantially from single-sample rasterization.
1945bd8deadSopenharmony_ci    It is understood that each pixel in the framebuffer has SAMPLES_ARB
1955bd8deadSopenharmony_ci    locations associated with it.  These locations are exact positions,
1965bd8deadSopenharmony_ci    rather than regions or areas, and each is referred to as a sample
1975bd8deadSopenharmony_ci    point. The sample points associated with a pixel may be located
1985bd8deadSopenharmony_ci    inside or outside of the unit square that is considered to bound
1995bd8deadSopenharmony_ci    the pixel. Furthermore, the relative locations of sample points
2005bd8deadSopenharmony_ci    may be identical for each pixel in the framebuffer, or they may
2015bd8deadSopenharmony_ci    differ.
2025bd8deadSopenharmony_ci
2035bd8deadSopenharmony_ci    If the sample locations differ per pixel, they should be aligned to
2045bd8deadSopenharmony_ci    window, not screen, boundaries.  Otherwise rendering results will
2055bd8deadSopenharmony_ci    be window-position specific.  The invariance requirement described
2065bd8deadSopenharmony_ci    in section 3.1 is relaxed for all enabled multisample rendering,
2075bd8deadSopenharmony_ci    because the sample locations may be a function of pixel location.
2085bd8deadSopenharmony_ci
2095bd8deadSopenharmony_ci    It is not possible to query the actual sample locations of a pixel.
2105bd8deadSopenharmony_ci
2115bd8deadSopenharmony_ci    Point Multisample Rasterization
2125bd8deadSopenharmony_ci    [Insert before section 3.3.1]
2135bd8deadSopenharmony_ci
2145bd8deadSopenharmony_ci    If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is a value of
2155bd8deadSopenharmony_ci    one, then points are rasterized using the following algorithm,
2165bd8deadSopenharmony_ci    regardless of whether point antialiasing (POINT_SMOOTH) is enabled
2175bd8deadSopenharmony_ci    or disabled.  Point rasterization produces a fragment for each
2185bd8deadSopenharmony_ci    framebuffer pixel with one or more sample points that intersect the
2195bd8deadSopenharmony_ci    region lying within the circle having diameter equal to the current
2205bd8deadSopenharmony_ci    point width and centered at the point's (Xw,Yw).  Coverage bits
2215bd8deadSopenharmony_ci    that correspond to sample points that intersect the circular region
2225bd8deadSopenharmony_ci    are 1, other coverage bits are 0.  All depth values of the fragment
2235bd8deadSopenharmony_ci    are assigned the depth value of the point being rasterized. Other
2245bd8deadSopenharmony_ci    data associated with each fragment are the data associated with the
2255bd8deadSopenharmony_ci    point being rasterized.
2265bd8deadSopenharmony_ci
2275bd8deadSopenharmony_ci    Point size range and number of gradations are equivalent to those
2285bd8deadSopenharmony_ci    supported for antialiased points.
2295bd8deadSopenharmony_ci
2305bd8deadSopenharmony_ci    Line Multisample Rasterization
2315bd8deadSopenharmony_ci    [Insert before section 3.4.3]
2325bd8deadSopenharmony_ci
2335bd8deadSopenharmony_ci    If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is a value of
2345bd8deadSopenharmony_ci    one, then lines are rasterized using the following algorithm,
2355bd8deadSopenharmony_ci    regardless of whether line antialiasing (LINE_SMOOTH) is enabled
2365bd8deadSopenharmony_ci    or disabled. Line rasterization produces a fragment for each
2375bd8deadSopenharmony_ci    framebuffer pixel with one or more sample points that intersect the
2385bd8deadSopenharmony_ci    rectangular region that is described in the Antialiasing section of
2395bd8deadSopenharmony_ci    3.4.2 (Other Line Segment Features).  If line stippling is enabled,
2405bd8deadSopenharmony_ci    the rectangular region is subdivided into adjacent unit-length
2415bd8deadSopenharmony_ci    rectangles, with some rectangles eliminated according to the
2425bd8deadSopenharmony_ci    procedure given under Line Stipple, where "fragment" is replaced
2435bd8deadSopenharmony_ci    by "rectangle".
2445bd8deadSopenharmony_ci
2455bd8deadSopenharmony_ci    Coverage bits that correspond to sample points that intersect a
2465bd8deadSopenharmony_ci    retained rectangle are 1, other coverage bits are 0.  Each depth
2475bd8deadSopenharmony_ci    value is produced by substituting the corresponding sample location
2485bd8deadSopenharmony_ci    into equation 3.1, then using the result to evaluate equation 3.3.
2495bd8deadSopenharmony_ci    The data associated with each fragment are otherwise computed by
2505bd8deadSopenharmony_ci    evaluating equation 3.1 at the fragment center, then substituting
2515bd8deadSopenharmony_ci    into equation 3.2.
2525bd8deadSopenharmony_ci
2535bd8deadSopenharmony_ci    Line width range and number of gradations are equivalent to those
2545bd8deadSopenharmony_ci    supported for antialiased lines.
2555bd8deadSopenharmony_ci
2565bd8deadSopenharmony_ci    Polygon Multisample Rasterization
2575bd8deadSopenharmony_ci    [Insert before section 3.5.6]
2585bd8deadSopenharmony_ci
2595bd8deadSopenharmony_ci    If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is a value of
2605bd8deadSopenharmony_ci    one, then polygons are rasterized using the following algorithm,
2615bd8deadSopenharmony_ci    regardless of whether polygon antialiasing (POLYGON_SMOOTH) is
2625bd8deadSopenharmony_ci    enabled or disabled. Polygon rasterization produces a fragment for
2635bd8deadSopenharmony_ci    each framebuffer pixel with one or more sample points that satisfy
2645bd8deadSopenharmony_ci    the point sampling criteria described in section 3.5.1, including
2655bd8deadSopenharmony_ci    the special treatment for sample points that lie on a polygon
2665bd8deadSopenharmony_ci    boundary edge.  If a polygon is culled, based on its orientation
2675bd8deadSopenharmony_ci    and the CullFace mode, then no fragments are produced during
2685bd8deadSopenharmony_ci    rasterization. Fragments are culled by the polygon stipple just as
2695bd8deadSopenharmony_ci    they are for aliased and antialiased polygons.
2705bd8deadSopenharmony_ci
2715bd8deadSopenharmony_ci    Coverage bits that correspond to sample points that satisfy the
2725bd8deadSopenharmony_ci    point sampling criteria are 1, other coverage bits are 0.  Each
2735bd8deadSopenharmony_ci    depth value is produced by substituting the corresponding sample
2745bd8deadSopenharmony_ci    location into the barycentric equations described in section 3.5.1,
2755bd8deadSopenharmony_ci    using the approximation to equation 3.4 that omits w components.
2765bd8deadSopenharmony_ci    The data associated with each fragment are otherwise computed by
2775bd8deadSopenharmony_ci    barycentric evaluation using the fragment's center point.
2785bd8deadSopenharmony_ci
2795bd8deadSopenharmony_ci    The rasterization described above applies only to the FILL state of
2805bd8deadSopenharmony_ci    PolygonMode.  For POINT and LINE, the rasterizations described in
2815bd8deadSopenharmony_ci    the Point Multisample Rasterization and the Line Multisample
2825bd8deadSopenharmony_ci    Rasterization sections apply.
2835bd8deadSopenharmony_ci
2845bd8deadSopenharmony_ci    Pixel Rectangle Multisample Rasterization
2855bd8deadSopenharmony_ci    [Insert before section 3.6.5]
2865bd8deadSopenharmony_ci
2875bd8deadSopenharmony_ci    If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is a value of
2885bd8deadSopenharmony_ci    one, then pixel rectangles are rasterized using the following
2895bd8deadSopenharmony_ci    algorithm. Let (Xrp,Yrp) be the current raster position.  (If the
2905bd8deadSopenharmony_ci    current raster position is invalid, then DrawPixels is ignored.)
2915bd8deadSopenharmony_ci    If a particular group (index or components) is the nth in a row and
2925bd8deadSopenharmony_ci    belongs to the mth row, consider the region in window coordinates
2935bd8deadSopenharmony_ci    bounded by the rectangle with corners
2945bd8deadSopenharmony_ci
2955bd8deadSopenharmony_ci      (Xrp + Zx*n, Yrp + Zy*m)
2965bd8deadSopenharmony_ci
2975bd8deadSopenharmony_ci    and
2985bd8deadSopenharmony_ci
2995bd8deadSopenharmony_ci      (Xrp + Zx*(n+1), Yrp + Zy*(m+1))
3005bd8deadSopenharmony_ci
3015bd8deadSopenharmony_ci    where Zx and Zy are the pixel zoom factors specified by PixelZoom,
3025bd8deadSopenharmony_ci    and may each be either positive or negative.  A fragment
3035bd8deadSopenharmony_ci    representing group n,m is produced for each framebuffer pixel with
3045bd8deadSopenharmony_ci    one or more sample points that lie inside, or on the bottom or
3055bd8deadSopenharmony_ci    left boundary, of this rectangle.  Each fragment so produced takes
3065bd8deadSopenharmony_ci    its associated data from the group and from the current raster
3075bd8deadSopenharmony_ci    position, in a manner consistent with the discussion in the
3085bd8deadSopenharmony_ci    Conversion to Fragments subsection of section 3.6.4 of the GL
3095bd8deadSopenharmony_ci    specification.  All depth sample values are assigned the same
3105bd8deadSopenharmony_ci    value, taken either from the group (if it is a depth component
3115bd8deadSopenharmony_ci    group) or from the current raster position (if it is not).
3125bd8deadSopenharmony_ci
3135bd8deadSopenharmony_ci    A single pixel rectangle will generate multiple, perhaps very many
3145bd8deadSopenharmony_ci    fragments for the same framebuffer pixel, depending on the pixel
3155bd8deadSopenharmony_ci    zoom factors.
3165bd8deadSopenharmony_ci
3175bd8deadSopenharmony_ci    Bitmap Multisample Rasterization
3185bd8deadSopenharmony_ci    [Insert at the end section 3.7]
3195bd8deadSopenharmony_ci
3205bd8deadSopenharmony_ci    If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is a value of
3215bd8deadSopenharmony_ci    one, then bitmaps are rasterized using the following algorithm.  If
3225bd8deadSopenharmony_ci    the current raster position is invalid, the bitmap is ignored.
3235bd8deadSopenharmony_ci    Otherwise, a screen-aligned array of pixel-size rectangles is
3245bd8deadSopenharmony_ci    constructed, with its lower-left corner at (Xrp,Yrp), and its upper
3255bd8deadSopenharmony_ci    right corner at (Xrp+w,Yrp+h), where w and h are the width and
3265bd8deadSopenharmony_ci    height of the bitmap. Rectangles in this array are eliminated if
3275bd8deadSopenharmony_ci    the corresponding bit in the bitmap is zero, and are retained
3285bd8deadSopenharmony_ci    otherwise.  Bitmap rasterization produces a fragment for each
3295bd8deadSopenharmony_ci    framebuffer pixel with one or more sample points either inside or
3305bd8deadSopenharmony_ci    on the bottom or left edge of a retained rectangle.
3315bd8deadSopenharmony_ci
3325bd8deadSopenharmony_ci    Coverage bits that correspond to sample points either inside or on
3335bd8deadSopenharmony_ci    the bottom or left edge of a retained rectangle are 1, other
3345bd8deadSopenharmony_ci    coverage bits are 0.  The associated data for each fragment are
3355bd8deadSopenharmony_ci    those associated with the current raster position.  Once the
3365bd8deadSopenharmony_ci    fragments have been produced, the current raster position is
3375bd8deadSopenharmony_ci    updated exactly as it is in the single-sample rasterization case.
3385bd8deadSopenharmony_ci
3395bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.2.1 Specification (Per-Fragment
3405bd8deadSopenharmony_ciOperations and the Frame Buffer)
3415bd8deadSopenharmony_ci
3425bd8deadSopenharmony_ci    Multisample Fragment Operations
3435bd8deadSopenharmony_ci    [Insert after section 4.1.2]
3445bd8deadSopenharmony_ci
3455bd8deadSopenharmony_ci    This step modifies fragment alpha and coverage values based on the
3465bd8deadSopenharmony_ci    values of SAMPLE_ALPHA_TO_COVERAGE_ARB, SAMPLE_ALPHA_TO_ONE_ARB,
3475bd8deadSopenharmony_ci    SAMPLE_COVERAGE_ARB, SAMPLE_COVERAGE_VALUE_ARB, and
3485bd8deadSopenharmony_ci    SAMPLE_COVERAGE_INVERT_ARB.  No changes to the fragment alpha or
3495bd8deadSopenharmony_ci    coverage values are made at this step if MULTISAMPLE_ARB is
3505bd8deadSopenharmony_ci    disabled, or if SAMPLE_BUFFERS_ARB is not a value of one.
3515bd8deadSopenharmony_ci
3525bd8deadSopenharmony_ci    SAMPLE_ALPHA_TO_COVERAGE_ARB, SAMPLE_ALPHA_TO_ONE_ARB, and
3535bd8deadSopenharmony_ci    SAMPLE_COVERAGE_ARB are enabled and disabled by calling Enable and
3545bd8deadSopenharmony_ci    Disable with <cap> specified as one of the three token values. All
3555bd8deadSopenharmony_ci    three values are queried by calling IsEnabled, with <cap> set to
3565bd8deadSopenharmony_ci    the desired token value. If SAMPLE_ALPHA_TO_COVERAGE_ARB is
3575bd8deadSopenharmony_ci    enabled, the fragment alpha value is used to generate a temporary
3585bd8deadSopenharmony_ci    coverage value, which is then ANDed with the fragment coverage
3595bd8deadSopenharmony_ci    value.  Otherwise the fragment coverage value is unchanged at
3605bd8deadSopenharmony_ci    this point.
3615bd8deadSopenharmony_ci
3625bd8deadSopenharmony_ci    This specification does not require a specific algorithm for
3635bd8deadSopenharmony_ci    converting an alpha value to a temporary coverage value.  It is
3645bd8deadSopenharmony_ci    intended that the number of 1's in the temporary coverage be
3655bd8deadSopenharmony_ci    proportional to the alpha value, with all 1's corresponding to the
3665bd8deadSopenharmony_ci    maximum alpha value, and all 0's corresponding to an alpha value
3675bd8deadSopenharmony_ci    of 0.  It is also intended that the algorithm be pseudo-random in
3685bd8deadSopenharmony_ci    nature, to avoid image artifacts due to regular coverage sample
3695bd8deadSopenharmony_ci    locations.  The algorithm can and probably should be different
3705bd8deadSopenharmony_ci    at different pixel locations.  If it does differ, it should be
3715bd8deadSopenharmony_ci    defined relative to window, not screen, coordinates, so that
3725bd8deadSopenharmony_ci    rendering results are invariant with respect to window position.
3735bd8deadSopenharmony_ci
3745bd8deadSopenharmony_ci    Next, if SAMPLE_ALPHA_TO_ONE_ARB is enabled, fragment alpha is
3755bd8deadSopenharmony_ci    replaced by the maximum representable alpha value.  Otherwise,
3765bd8deadSopenharmony_ci    fragment alpha value is not changed.
3775bd8deadSopenharmony_ci
3785bd8deadSopenharmony_ci    Finally, if SAMPLE_COVERAGE_ARB is enabled, the fragment coverage
3795bd8deadSopenharmony_ci    is ANDed with another temporary coverage.  This temporary coverage
3805bd8deadSopenharmony_ci    is generated in the same manner as the one described above, but as
3815bd8deadSopenharmony_ci    a function of the value of SAMPLE_COVERAGE_VALUE_ARB.  The function
3825bd8deadSopenharmony_ci    need not be identical, but it must have the same properties of
3835bd8deadSopenharmony_ci    proportionality and invariance.  If SAMPLE_COVERAGE_INVERT_ARB is
3845bd8deadSopenharmony_ci    TRUE, the temporary coverage is inverted (all bit values are
3855bd8deadSopenharmony_ci    inverted) before it is ANDed with the fragment coverage.
3865bd8deadSopenharmony_ci
3875bd8deadSopenharmony_ci    The values of SAMPLE_COVERAGE_VALUE_ARB and
3885bd8deadSopenharmony_ci    SAMPLE_COVERAGE_INVERT_ARB are specified simultaneously by calling
3895bd8deadSopenharmony_ci    SampleCoverageARB, with <value> set to the desired coverage value,
3905bd8deadSopenharmony_ci    and <invert> set to TRUE or FALSE. <value> is clamped to [0,1]
3915bd8deadSopenharmony_ci    before being stored as SAMPLE_COVERAGE_VALUE_ARB.
3925bd8deadSopenharmony_ci    SAMPLE_COVERAGE_VALUE_ARB is queried by calling GetFloatv with
3935bd8deadSopenharmony_ci    <pname> set to SAMPLE_COVERAGE_VALUE_ARB.
3945bd8deadSopenharmony_ci    SAMPLE_COVERAGE_INVERT_ARB is queried by calling GetBooleanv with
3955bd8deadSopenharmony_ci    <pname> set to SAMPLE_COVERAGE_INVERT_ARB.
3965bd8deadSopenharmony_ci
3975bd8deadSopenharmony_ci    Multisample Fragment Operations
3985bd8deadSopenharmony_ci    [Insert after section 4.1.8]
3995bd8deadSopenharmony_ci
4005bd8deadSopenharmony_ci    If the DrawBuffers mode is NONE, no change is made to any
4015bd8deadSopenharmony_ci    multisample or color buffer.  Otherwise, fragment processing is as
4025bd8deadSopenharmony_ci    described below.
4035bd8deadSopenharmony_ci
4045bd8deadSopenharmony_ci    If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is one, the
4055bd8deadSopenharmony_ci    stencil test, depth test, blending, and dithering operations
4065bd8deadSopenharmony_ci    are performed for each pixel sample, rather than just once for each
4075bd8deadSopenharmony_ci    fragment.  Failure of the stencil or depth test results in
4085bd8deadSopenharmony_ci    termination of the processing of that sample, rather than
4095bd8deadSopenharmony_ci    discarding of the fragment.  All operations are performed on the
4105bd8deadSopenharmony_ci    color, depth, and stencil values stored in the multisample buffer
4115bd8deadSopenharmony_ci    (to be described in a following section).  The contents of the
4125bd8deadSopenharmony_ci    color buffers are not modified at this point.
4135bd8deadSopenharmony_ci
4145bd8deadSopenharmony_ci    Stencil, depth, blending, and dithering operations are performed
4155bd8deadSopenharmony_ci    for a pixel sample only if that sample's fragment coverage bit is
4165bd8deadSopenharmony_ci    a value of 1.  If the corresponding coverage bit is 0, no
4175bd8deadSopenharmony_ci    operations are performed for that sample.  Depth operations use
4185bd8deadSopenharmony_ci    the fragment depth value that is specific for each sample.  The
4195bd8deadSopenharmony_ci    single fragment color value is used for all sample operations,
4205bd8deadSopenharmony_ci    however, as is the current stencil value.
4215bd8deadSopenharmony_ci
4225bd8deadSopenharmony_ci    If MULTISAMPLE_ARB is disabled, and SAMPLE_BUFFERS_ARB is one, the
4235bd8deadSopenharmony_ci    fragment may be treated exactly as described above, with
4245bd8deadSopenharmony_ci    optimization possible because the fragment coverage must be set
4255bd8deadSopenharmony_ci    to full coverage. Further optimization is allowed, however.  An
4265bd8deadSopenharmony_ci    implementation may choose to identify a centermost sample, and to
4275bd8deadSopenharmony_ci    perform stencil and depth tests on only that sample.  Regardless
4285bd8deadSopenharmony_ci    of the outcome of the stencil test, all multisample buffer stencil
4295bd8deadSopenharmony_ci    sample values are set to the appropriate new stencil value.  If
4305bd8deadSopenharmony_ci    the depth test passes, all multisample buffer depth sample values
4315bd8deadSopenharmony_ci    are set to the depth of the fragment's centermost sample's depth
4325bd8deadSopenharmony_ci    value, and all multisample buffer color sample values are set to
4335bd8deadSopenharmony_ci    the color value of the incoming fragment.  Otherwise, no change is
4345bd8deadSopenharmony_ci    made to any multisample buffer color or depth value.
4355bd8deadSopenharmony_ci
4365bd8deadSopenharmony_ci    After all operations have been completed on the multisample buffer,
4375bd8deadSopenharmony_ci    the color sample values are combined to produce a single color
4385bd8deadSopenharmony_ci    value, and that value is written into each color buffer that is
4395bd8deadSopenharmony_ci    currently enabled, based on the DrawBuffers mode.  An
4405bd8deadSopenharmony_ci    implementation may defer the writing of the color buffer until a
4415bd8deadSopenharmony_ci    later time, but the state of the framebuffer must behave as if the
4425bd8deadSopenharmony_ci    color buffer was updated as each fragment was processed.  The
4435bd8deadSopenharmony_ci    method of combination is not specified, though a simple average
4445bd8deadSopenharmony_ci    computed independently for each color component is recommended.
4455bd8deadSopenharmony_ci
4465bd8deadSopenharmony_ci    Fine Control of Multisample Buffer Updates
4475bd8deadSopenharmony_ci    [Insert at the end of section 4.2.2]
4485bd8deadSopenharmony_ci
4495bd8deadSopenharmony_ci    When SAMPLE_BUFFERS_ARB is one, ColorMask, DepthMask, and
4505bd8deadSopenharmony_ci    StencilMask control the modification of values in the multisample
4515bd8deadSopenharmony_ci    buffer.  The color mask has no effect on modifications to the color
4525bd8deadSopenharmony_ci    buffers.  If the color mask is entirely disabled, the color sample
4535bd8deadSopenharmony_ci    values must still be combined (as described above) and the result
4545bd8deadSopenharmony_ci    used to replace the color values of the buffers enabled by
4555bd8deadSopenharmony_ci    DrawBuffers.
4565bd8deadSopenharmony_ci
4575bd8deadSopenharmony_ci    Clearing the Multisample Buffer
4585bd8deadSopenharmony_ci    [Insert as a subsection for section 4.2.3]
4595bd8deadSopenharmony_ci
4605bd8deadSopenharmony_ci    The color samples of the multisample buffer are cleared when one or
4615bd8deadSopenharmony_ci    more color buffers are cleared, as specified by the Clear mask bit
4625bd8deadSopenharmony_ci    COLOR_BUFFER_BIT and the DrawBuffers mode.  If the DrawBuffers mode
4635bd8deadSopenharmony_ci    is NONE, the color samples of the multisample buffer cannot be
4645bd8deadSopenharmony_ci    cleared.
4655bd8deadSopenharmony_ci
4665bd8deadSopenharmony_ci    Clear mask bits DEPTH_BUFFER_BIT and STENCIL_BUFFER_BIT indicate
4675bd8deadSopenharmony_ci    that the depth and stencil samples of the multisample buffer are to
4685bd8deadSopenharmony_ci    be cleared.  If Clear mask bit DEPTH_BUFFER_BIT is specified, and
4695bd8deadSopenharmony_ci    if the DrawBuffers mode is not NONE, then the multisample depth
4705bd8deadSopenharmony_ci    buffer samples are cleared.  Likewise, if Clear mask bit
4715bd8deadSopenharmony_ci    STENCIL_BUFFER_BIT is specified, and if the DrawBuffers mode is
4725bd8deadSopenharmony_ci    not NONE, then the multisample stencil buffer is cleared.
4735bd8deadSopenharmony_ci
4745bd8deadSopenharmony_ci    Reading Pixels
4755bd8deadSopenharmony_ci    [These changes are made to the text in section 4.3.2, following the
4765bd8deadSopenharmony_ci    subheading Obtaining Pixels from the Framebuffer.]
4775bd8deadSopenharmony_ci
4785bd8deadSopenharmony_ci    Follow the sentence "If there is no depth buffer, the error
4795bd8deadSopenharmony_ci    INVALID_OPERATION occurs." with: If there is a multisample buffer
4805bd8deadSopenharmony_ci    (SAMPLE_BUFFERS_ARB is 1) then values are obtained from the depth
4815bd8deadSopenharmony_ci    samples in this buffer.  It is recommended that the depth value
4825bd8deadSopenharmony_ci    of the centermost sample be used, though implementations may choose
4835bd8deadSopenharmony_ci    any function of the depth sample values at each pixel.
4845bd8deadSopenharmony_ci
4855bd8deadSopenharmony_ci    Follow the sentence "if there is no stencil buffer, the error
4865bd8deadSopenharmony_ci    INVALID_OPERATION occurs." with: If there is a multisample buffer,
4875bd8deadSopenharmony_ci    then values are obtained from the stencil samples in this buffer.
4885bd8deadSopenharmony_ci    It is recommended that the stencil value of the centermost sample
4895bd8deadSopenharmony_ci    be used, though implementations may choose any function of the
4905bd8deadSopenharmony_ci    stencil sample values at each pixel.
4915bd8deadSopenharmony_ci
4925bd8deadSopenharmony_ci    [This extension makes no change to the way that color values are
4935bd8deadSopenharmony_ci    obtained from the framebuffer.]
4945bd8deadSopenharmony_ci
4955bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.2.1 Specification (Special Functions)
4965bd8deadSopenharmony_ci
4975bd8deadSopenharmony_ci    None
4985bd8deadSopenharmony_ci
4995bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.2 Specification (State and State
5005bd8deadSopenharmony_ciRequests)
5015bd8deadSopenharmony_ci
5025bd8deadSopenharmony_ci    An additional group of state variables, MULTISAMPLE_BIT_ARB, is
5035bd8deadSopenharmony_ci    defined by this extension.  When PushAttrib is called with bit
5045bd8deadSopenharmony_ci    MULTISAMPLE_BIT_ARB set, the multisample group of state variables
5055bd8deadSopenharmony_ci    is pushed onto the attribute stack.  When PopAttrib is called,
5065bd8deadSopenharmony_ci    these state variables are restored to their previous values if
5075bd8deadSopenharmony_ci    they were pushed.  Some multisample state is included in the
5085bd8deadSopenharmony_ci    ENABLE_BIT group as well. In order to avoid incompatibility with
5095bd8deadSopenharmony_ci    GL implementations that do not support SGIS_multisample,
5105bd8deadSopenharmony_ci    ALL_ATTRIB_BITS does not include MULTISAMPLE_BIT_ARB.
5115bd8deadSopenharmony_ci
5125bd8deadSopenharmony_ciAdditions to the GLX Specification
5135bd8deadSopenharmony_ci
5145bd8deadSopenharmony_ci    The parameter GLX_SAMPLE_BUFFERS_ARB is added to glXGetConfig.
5155bd8deadSopenharmony_ci    When queried, by calling glXGetConfig with <attrib> set to
5165bd8deadSopenharmony_ci    GLX_SAMPLE_BUFFERS_ARB, it returns the number of multisample
5175bd8deadSopenharmony_ci    buffers included in the visual.  For a normal visual, the return
5185bd8deadSopenharmony_ci    value is zero. A return value of one indicates that a single
5195bd8deadSopenharmony_ci    multisample buffer is available.  The number of samples per pixel
5205bd8deadSopenharmony_ci    is queried by calling glXGetConfig with <attrib> set to
5215bd8deadSopenharmony_ci    GLX_SAMPLES_ARB.  It is understood that the number of color, depth,
5225bd8deadSopenharmony_ci    and stencil bits per sample in the multisample buffer are as
5235bd8deadSopenharmony_ci    specified by the GLX_*_SIZE parameters.  It is also understood that
5245bd8deadSopenharmony_ci    there are no single-sample depth or stencil buffers associated with
5255bd8deadSopenharmony_ci    this visual -- the only depth and stencil buffers are those in the
5265bd8deadSopenharmony_ci    multisample buffer.  GLX_SAMPLES_ARB is zero if
5275bd8deadSopenharmony_ci    GLX_SAMPLE_BUFFERS_ARB is zero.
5285bd8deadSopenharmony_ci
5295bd8deadSopenharmony_ci    glXChooseVisual accepts GLX_SAMPLE_BUFFERS_ARB in <attribList>,
5305bd8deadSopenharmony_ci    followed by the minimum number of multisample buffers that can be
5315bd8deadSopenharmony_ci    accepted.  Visuals with the smallest number of multisample buffers
5325bd8deadSopenharmony_ci    that meets or exceeds the specified minimum number are preferred.
5335bd8deadSopenharmony_ci    Currently operation with more than one multisample buffer is
5345bd8deadSopenharmony_ci    undefined, so the returned value will be either zero or one.
5355bd8deadSopenharmony_ci
5365bd8deadSopenharmony_ci    glXChooseVisual accepts GLX_SAMPLES_ARB in <attribList>, followed
5375bd8deadSopenharmony_ci    by the minimum number of samples that can be accepted in the
5385bd8deadSopenharmony_ci    multisample buffer.  Visuals with the smallest number of samples
5395bd8deadSopenharmony_ci    that meets or exceeds the specified minimum number are preferred.
5405bd8deadSopenharmony_ci
5415bd8deadSopenharmony_ci    If the color samples in the multisample buffer store fewer bits
5425bd8deadSopenharmony_ci    than are stored in the color buffers, this fact will not be
5435bd8deadSopenharmony_ci    reported accurately.  Presumably a compression scheme is being
5445bd8deadSopenharmony_ci    employed, and is expected to maintain an aggregate resolution
5455bd8deadSopenharmony_ci    equal to that of the color buffers.
5465bd8deadSopenharmony_ci
5475bd8deadSopenharmony_ciGLX Protocol
5485bd8deadSopenharmony_ci
5495bd8deadSopenharmony_ci    One new GL rendering commands is added. The following command is
5505bd8deadSopenharmony_ci    sent to the server as part of a glXRender request:
5515bd8deadSopenharmony_ci
5525bd8deadSopenharmony_ci        SampleCoverageARB
5535bd8deadSopenharmony_ci            2           12              rendering command length
5545bd8deadSopenharmony_ci            2           229             rendering command opcode
5555bd8deadSopenharmony_ci            4           FLOAT32         value
5565bd8deadSopenharmony_ci            1           BOOL            invert
5575bd8deadSopenharmony_ci            3                           unused
5585bd8deadSopenharmony_ci
5595bd8deadSopenharmony_ciAdditions to the WGL Specification
5605bd8deadSopenharmony_ci
5615bd8deadSopenharmony_ci    The parameter WGL_SAMPLE_BUFFERS_ARB is added to
5625bd8deadSopenharmony_ci    wglGetPixelFormatAttrib*v. When queried, by calling
5635bd8deadSopenharmony_ci    wglGetPixelFormatAttrib*v with <piAttributes> set to
5645bd8deadSopenharmony_ci    WGL_SAMPLE_BUFFERS_ARB, it returns the number of multisample
5655bd8deadSopenharmony_ci    buffers included in the pixel format.  For a normal pixel format,
5665bd8deadSopenharmony_ci    the return value is zero.  A return value of one indicates that a
5675bd8deadSopenharmony_ci    single multisample buffer is available.  The number of samples per
5685bd8deadSopenharmony_ci    pixel is queried by calling wglGetPixelFormatAttrib*v with
5695bd8deadSopenharmony_ci    <piAttributes> set to WGL_SAMPLES_ARB.  It is understood that the
5705bd8deadSopenharmony_ci    number of color, depth, and stencil bits per sample in the
5715bd8deadSopenharmony_ci    multisample buffer are as specified by the WGL_*_SIZE parameters.
5725bd8deadSopenharmony_ci    It is also understood that there are no single-sample depth or
5735bd8deadSopenharmony_ci    stencil buffers associated with this visual -- the only depth and
5745bd8deadSopenharmony_ci    stencil buffers are those in the multisample buffer.
5755bd8deadSopenharmony_ci    WGL_SAMPLES_ARB is zero if WGL_SAMPLE_BUFFERS_ARB is zero.
5765bd8deadSopenharmony_ci
5775bd8deadSopenharmony_ci    wglChoosePixelFormatEXT accepts WGL_SAMPLE_BUFFERS_ARB in
5785bd8deadSopenharmony_ci    <piAttribIList> and <pfAttribIList> with the corresponding value
5795bd8deadSopenharmony_ci    set to the minimum number of multisample buffers that can be
5805bd8deadSopenharmony_ci    accepted.  Pixel formats with the smallest number of multisample
5815bd8deadSopenharmony_ci    buffers that meets or exceeds the specified minimum number are
5825bd8deadSopenharmony_ci    preferred. Currently operation with more than one multisample
5835bd8deadSopenharmony_ci    buffer is undefined, so the returned value will be either zero or
5845bd8deadSopenharmony_ci    one.
5855bd8deadSopenharmony_ci
5865bd8deadSopenharmony_ci    If the color samples in the multisample buffer store fewer bits
5875bd8deadSopenharmony_ci    than are stored in the color buffers, this fact will not be
5885bd8deadSopenharmony_ci    reported accurately.  Presumably a compression scheme is being
5895bd8deadSopenharmony_ci    employed, and is expected to maintain an aggregate resolution
5905bd8deadSopenharmony_ci    equal to that of the color buffers.
5915bd8deadSopenharmony_ci
5925bd8deadSopenharmony_ciErrors
5935bd8deadSopenharmony_ci
5945bd8deadSopenharmony_ci    INVALID_OPERATION is generated if SampleCoverageARB is called
5955bd8deadSopenharmony_ci    between the execution of Begin and the execution of the
5965bd8deadSopenharmony_ci    corresponding End.
5975bd8deadSopenharmony_ci
5985bd8deadSopenharmony_ciNew State
5995bd8deadSopenharmony_ci
6005bd8deadSopenharmony_ci    Get Value                       Get Command    Type    Initial Value    Attribute
6015bd8deadSopenharmony_ci    ---------                       -----------    ----    -------------    ---------
6025bd8deadSopenharmony_ci    MULTISAMPLE_ARB                 IsEnabled      B       TRUE             multisample/enable
6035bd8deadSopenharmony_ci    SAMPLE_ALPHA_TO_COVERAGE_ARB    IsEnabled      B       FALSE            multisample/enable
6045bd8deadSopenharmony_ci    SAMPLE_ALPHA_TO_ONE_ARB         IsEnabled      B       FALSE            multisample/enable
6055bd8deadSopenharmony_ci    SAMPLE_COVERAGE_ARB             IsEnabled      B       FALSE            multisample/enable
6065bd8deadSopenharmony_ci    SAMPLE_COVERAGE_VALUE_ARB       GetFloatv      R+      1                multisample
6075bd8deadSopenharmony_ci    SAMPLE_COVERAGE_INVERT_ARB      GetBooleanv    B       FALSE            multisample
6085bd8deadSopenharmony_ci
6095bd8deadSopenharmony_ciNew Implementation Dependent State
6105bd8deadSopenharmony_ci
6115bd8deadSopenharmony_ci    Get Value                Get Command    Type    Minimum Value
6125bd8deadSopenharmony_ci    ---------                -----------    ----    -------------
6135bd8deadSopenharmony_ci    SAMPLE_BUFFERS_ARB       GetIntegerv    Z+      0
6145bd8deadSopenharmony_ci    SAMPLES_ARB              GetIntegerv    Z+      0
6155bd8deadSopenharmony_ci
6165bd8deadSopenharmony_ciConformance Testing
6175bd8deadSopenharmony_ci
6185bd8deadSopenharmony_ci    TBD
6195bd8deadSopenharmony_ci
6205bd8deadSopenharmony_ciRevision History
6215bd8deadSopenharmony_ci
6225bd8deadSopenharmony_ci    09/20/1999  0.1
6235bd8deadSopenharmony_ci        - First ARB draft based on the original SGI draft.
6245bd8deadSopenharmony_ci
6255bd8deadSopenharmony_ci    10/1/1999   0.2
6265bd8deadSopenharmony_ci        - Added query for the number of passes.
6275bd8deadSopenharmony_ci
6285bd8deadSopenharmony_ci    11/8/1999   0.3
6295bd8deadSopenharmony_ci        - Fixed numerous typos reported by E&S.
6305bd8deadSopenharmony_ci
6315bd8deadSopenharmony_ci    12/7/1999   0.4
6325bd8deadSopenharmony_ci        - Removed the multiple pass feature.
6335bd8deadSopenharmony_ci        - Resolved the working group issues at the ARB meeting.
6345bd8deadSopenharmony_ci        - Added language that stated that SAMPLE_BUFFERS_ARB is the
6355bd8deadSopenharmony_ci          same value as either GLX_SAMPLE_BUFFERS_ARB or
6365bd8deadSopenharmony_ci          WGL_SAMPLE_BUFFERS_ARB.
6375bd8deadSopenharmony_ci
6385bd8deadSopenharmony_ci    12/15/1999  0.5
6395bd8deadSopenharmony_ci        - Added back in the statement about ALL_ATTRIB_BITS not
6405bd8deadSopenharmony_ci          including MULTISAMPLE_BIT_ARB.
6415bd8deadSopenharmony_ci
6425bd8deadSopenharmony_ci    03/12/2002  0.6
6435bd8deadSopenharmony_ci        - Added GLX protocol for SampleCoverageARB. Updated contact
6445bd8deadSopenharmony_ci          information.
645