15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    ARB_texture_multisample
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_ARB_texture_multisample
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Jeff Bolz, NVIDIA Corporation (jbolz 'at' nvidia.com)
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciNotice
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    Copyright (c) 2009-2014 The Khronos Group Inc. Copyright terms at
165bd8deadSopenharmony_ci        http://www.khronos.org/registry/speccopyright.html
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ciSpecification Update Policy
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ci    Khronos-approved extension specifications are updated in response to
215bd8deadSopenharmony_ci    issues and bugs prioritized by the Khronos OpenGL Working Group. For
225bd8deadSopenharmony_ci    extensions which have been promoted to a core Specification, fixes will
235bd8deadSopenharmony_ci    first appear in the latest version of that core Specification, and will
245bd8deadSopenharmony_ci    eventually be backported to the extension document. This policy is
255bd8deadSopenharmony_ci    described in more detail at
265bd8deadSopenharmony_ci        https://www.khronos.org/registry/OpenGL/docs/update_policy.php
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ciStatus
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ci    Complete. Approved by the ARB on July 3, 2009.
315bd8deadSopenharmony_ci
325bd8deadSopenharmony_ciVersion
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ci    Last Modified Date:         February 28, 2014
355bd8deadSopenharmony_ci    Revision:                   12
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ciNumber
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ci    ARB Extension #67
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ciDependencies
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ci    This extension is written against the OpenGL 3.1 specification.
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ciOverview
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    This extension provides support for two new types of "multisample
485bd8deadSopenharmony_ci    textures" - two-dimensional and two-dimensional array - as well as
495bd8deadSopenharmony_ci    mechanisms to fetch a specific sample from such a texture in a shader,
505bd8deadSopenharmony_ci    and to attach such textures to FBOs for rendering.
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci    This extension also includes the following functionality, first described
535bd8deadSopenharmony_ci    in NV_explicit_multisample:
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci     * A query in the API to query the location of samples within the pixel
565bd8deadSopenharmony_ci
575bd8deadSopenharmony_ci     * An explicit control for the multisample sample mask to augment the
585bd8deadSopenharmony_ci       control provided by SampleCoverage
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ciNew Procedures and Functions
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ci    void TexImage2DMultisample(enum target, sizei samples, enum internalformat,
635bd8deadSopenharmony_ci                               sizei width, sizei height,
645bd8deadSopenharmony_ci                               boolean fixedsamplelocations);
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ci    void TexImage3DMultisample(enum target, sizei samples, enum internalformat,
675bd8deadSopenharmony_ci                               sizei width, sizei height, sizei depth,
685bd8deadSopenharmony_ci                               boolean fixedsamplelocations);
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ci    void GetMultisamplefv(enum pname, uint index, float *val);
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ci    void SampleMaski(uint index, bitfield mask);
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ciNew Tokens
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetMultisamplefv:
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ci        SAMPLE_POSITION                             0x8E50
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ci    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, and by
815bd8deadSopenharmony_ci    the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
825bd8deadSopenharmony_ci    GetDoublev:
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ci        SAMPLE_MASK                                 0x8E51
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ci    Accepted by the <target> parameter of GetBooleani_v and
875bd8deadSopenharmony_ci    GetIntegeri_v:
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ci        SAMPLE_MASK_VALUE                           0x8E52
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci    Accepted by the <target> parameter of BindTexture and
925bd8deadSopenharmony_ci    TexImage2DMultisample:
935bd8deadSopenharmony_ci
945bd8deadSopenharmony_ci        TEXTURE_2D_MULTISAMPLE                      0x9100
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ci    Accepted by the <target> parameter of TexImage2DMultisample:
975bd8deadSopenharmony_ci
985bd8deadSopenharmony_ci        PROXY_TEXTURE_2D_MULTISAMPLE                0x9101
995bd8deadSopenharmony_ci
1005bd8deadSopenharmony_ci    Accepted by the <target> parameter of BindTexture and
1015bd8deadSopenharmony_ci    TexImage3DMultisample:
1025bd8deadSopenharmony_ci
1035bd8deadSopenharmony_ci        TEXTURE_2D_MULTISAMPLE_ARRAY                0x9102
1045bd8deadSopenharmony_ci
1055bd8deadSopenharmony_ci    Accepted by the <target> parameter of TexImage3DMultisample:
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ci        PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY          0x9103
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetBooleanv, GetDoublev, GetIntegerv,
1105bd8deadSopenharmony_ci    and GetFloatv:
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci        MAX_SAMPLE_MASK_WORDS                       0x8E59
1135bd8deadSopenharmony_ci        MAX_COLOR_TEXTURE_SAMPLES                   0x910E
1145bd8deadSopenharmony_ci        MAX_DEPTH_TEXTURE_SAMPLES                   0x910F
1155bd8deadSopenharmony_ci        MAX_INTEGER_SAMPLES                         0x9110
1165bd8deadSopenharmony_ci        TEXTURE_BINDING_2D_MULTISAMPLE              0x9104
1175bd8deadSopenharmony_ci        TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY        0x9105
1185bd8deadSopenharmony_ci
1195bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetTexLevelParameter
1205bd8deadSopenharmony_ci
1215bd8deadSopenharmony_ci        TEXTURE_SAMPLES                             0x9106
1225bd8deadSopenharmony_ci        TEXTURE_FIXED_SAMPLE_LOCATIONS              0x9107
1235bd8deadSopenharmony_ci
1245bd8deadSopenharmony_ci    Returned by the <type> parameter of GetActiveUniform:
1255bd8deadSopenharmony_ci
1265bd8deadSopenharmony_ci        SAMPLER_2D_MULTISAMPLE                      0x9108
1275bd8deadSopenharmony_ci        INT_SAMPLER_2D_MULTISAMPLE                  0x9109
1285bd8deadSopenharmony_ci        UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE         0x910A
1295bd8deadSopenharmony_ci        SAMPLER_2D_MULTISAMPLE_ARRAY                0x910B
1305bd8deadSopenharmony_ci        INT_SAMPLER_2D_MULTISAMPLE_ARRAY            0x910C
1315bd8deadSopenharmony_ci        UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY   0x910D
1325bd8deadSopenharmony_ci
1335bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 3.1 Specification (OpenGL Operation)
1345bd8deadSopenharmony_ci
1355bd8deadSopenharmony_ci    Add to table 2.9 "OpenGL Shading Language type tokens" page 56:
1365bd8deadSopenharmony_ci
1375bd8deadSopenharmony_ci    Type Name Token                              Keyword
1385bd8deadSopenharmony_ci    -----------------------------------------    ------------
1395bd8deadSopenharmony_ci    SAMPLER_2D_MULTISAMPLE                       sampler2DMS
1405bd8deadSopenharmony_ci    SAMPLER_2D_MULTISAMPLE_ARRAY                 sampler2DMSArray
1415bd8deadSopenharmony_ci    INT_SAMPLER_2D_MULTISAMPLE_ARRAY             isampler2DMSArray
1425bd8deadSopenharmony_ci    UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE          usampler2DMS
1435bd8deadSopenharmony_ci    UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY    usampler2DMSArray
1445bd8deadSopenharmony_ci
1455bd8deadSopenharmony_ci    Add to section 2.11.7, after subsection "Texel Fetches"
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ci    Multisample Texel Fetches
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci    Multisample texel fetches are similar to standard texel fetches.
1505bd8deadSopenharmony_ci    Since multisample buffers can't have mipmaps, there is no LOD
1515bd8deadSopenharmony_ci    parameter. Instead, there is an integer parameter which selects the
1525bd8deadSopenharmony_ci    sample number to be fetched from the buffer. The number identifying
1535bd8deadSopenharmony_ci    the sample is the same as the value used to query the sample
1545bd8deadSopenharmony_ci    location using GetMultisamplefv. Multisample textures support only
1555bd8deadSopenharmony_ci    NEAREST filtering.
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci    Additionally, this fetch may only be performed on a multisample
1585bd8deadSopenharmony_ci    texture sampler. No other sample or fetch commands may be performed
1595bd8deadSopenharmony_ci    on a multisample texture sampler.
1605bd8deadSopenharmony_ci
1615bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 3.1 Specification (Rasterization)
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci    (Insert into section 3.3.1, Multisampling after the discussion of
1645bd8deadSopenharmony_ci    the query for SAMPLES)
1655bd8deadSopenharmony_ci
1665bd8deadSopenharmony_ci    The location of a given sample is queried with the command
1675bd8deadSopenharmony_ci
1685bd8deadSopenharmony_ci        void GetMultisamplefv(enum pname, uint index, float *val);
1695bd8deadSopenharmony_ci
1705bd8deadSopenharmony_ci    <pname> must be SAMPLE_POSITION and <index> corresponds to the
1715bd8deadSopenharmony_ci    sample for which the location should be returned. The sample
1725bd8deadSopenharmony_ci    location is returned as two floating point values in <val[0]> and
1735bd8deadSopenharmony_ci    <val[1]>, each between 0 and 1, corresponding to the <x> and <y>
1745bd8deadSopenharmony_ci    locations respectively in GL pixel space of that sample. (0.5, 0.5)
1755bd8deadSopenharmony_ci    thus corresponds to the pixel center. An INVALID_ENUM error is
1765bd8deadSopenharmony_ci    generated if <pname> is not SAMPLE_POSITION. An INVALID_VALUE error
1775bd8deadSopenharmony_ci    is generated if <index> is greater than or equal to the value of
1785bd8deadSopenharmony_ci    SAMPLES. If the multisample mode does not have fixed sample
1795bd8deadSopenharmony_ci    locations, the returned values may only reflect the locations of
1805bd8deadSopenharmony_ci    samples within some pixels.
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ci    Modify Section 3.8.1, Texture Image Specification (p. 143)
1835bd8deadSopenharmony_ci
1845bd8deadSopenharmony_ci    Add the two new targets to MAX_TEXTURE_SIZE description:
1855bd8deadSopenharmony_ci
1865bd8deadSopenharmony_ci    In a similar fashion, the maximum allowable width of a texel array
1875bd8deadSopenharmony_ci    for a one or two-dimensional, one- or two-dimensional array,
1885bd8deadSopenharmony_ci    two-dimensional multisample, or two-dimensional multisample array
1895bd8deadSopenharmony_ci    texture, and the maximum allowable height of a two-dimensional,
1905bd8deadSopenharmony_ci    two-dimensional array, two- dimensional multisample, or
1915bd8deadSopenharmony_ci    two-dimensional multisample array texture, must be at least
1925bd8deadSopenharmony_ci    2^(k-lod)+2*b_t for image arrays of level 0 through k, where k is
1935bd8deadSopenharmony_ci    the log base 2 of MAX_TEXTURE_SIZE.
1945bd8deadSopenharmony_ci
1955bd8deadSopenharmony_ci    (Insert new Section 3.8.4, Multisample Textures.  Renumber subsequent
1965bd8deadSopenharmony_ci    sections.)
1975bd8deadSopenharmony_ci
1985bd8deadSopenharmony_ci    In addition to the texture types described in previous sections, two
1995bd8deadSopenharmony_ci    additional types of textures are supported. A multisample texture is
2005bd8deadSopenharmony_ci    similar to a two-dimensional or two-dimensional array texture,
2015bd8deadSopenharmony_ci    except it contains multiple samples per texel. Multisample textures
2025bd8deadSopenharmony_ci    do not have multiple image levels.
2035bd8deadSopenharmony_ci
2045bd8deadSopenharmony_ci    The commands
2055bd8deadSopenharmony_ci
2065bd8deadSopenharmony_ci        void TexImage2DMultisample(enum target, sizei samples,
2075bd8deadSopenharmony_ci                                   enum internalformat,
2085bd8deadSopenharmony_ci                                   sizei width, sizei height,
2095bd8deadSopenharmony_ci                                   boolean fixedsamplelocations);
2105bd8deadSopenharmony_ci
2115bd8deadSopenharmony_ci        void TexImage3DMultisample(enum target, sizei samples,
2125bd8deadSopenharmony_ci                                   enum internalformat,
2135bd8deadSopenharmony_ci                                   sizei width, sizei height, sizei depth,
2145bd8deadSopenharmony_ci                                   boolean fixedsamplelocations);
2155bd8deadSopenharmony_ci
2165bd8deadSopenharmony_ci    establish the data storage, format, dimensions, and number of
2175bd8deadSopenharmony_ci    samples of a multisample texture's image. For TexImage2DMultisample,
2185bd8deadSopenharmony_ci    <target> must be TEXTURE_2D_MULTISAMPLE or
2195bd8deadSopenharmony_ci    PROXY_TEXTURE_2D_MULTISAMPLE and for TexImage3DMultisample <target>
2205bd8deadSopenharmony_ci    must be TEXTURE_2D_MULTISAMPLE_ARRAY or
2215bd8deadSopenharmony_ci    PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY. <width> and <height> are the
2225bd8deadSopenharmony_ci    dimensions in texels of the texture.
2235bd8deadSopenharmony_ci
2245bd8deadSopenharmony_ci    <internalformat> must be color-renderable, depth-renderable, or
2255bd8deadSopenharmony_ci    stencil- renderable (as defined in section 4.4.4). The error
2265bd8deadSopenharmony_ci    INVALID_OPERATION may be generated if any of the following are true:
2275bd8deadSopenharmony_ci
2285bd8deadSopenharmony_ci    * <internalformat> is a depth/stencil-renderable format and
2295bd8deadSopenharmony_ci      <samples> is greater than the value of MAX_DEPTH_TEXTURE_SAMPLES
2305bd8deadSopenharmony_ci    * <internalformat> is a color-renderable format and <samples> is
2315bd8deadSopenharmony_ci      greater than the value of MAX_COLOR_TEXTURE_SAMPLES
2325bd8deadSopenharmony_ci    * <internalformat> is a signed or unsigned integer format and
2335bd8deadSopenharmony_ci      <samples> is greater than the value of MAX_INTEGER_SAMPLES.
2345bd8deadSopenharmony_ci
2355bd8deadSopenharmony_ci    If <fixedsamplelocations> is TRUE, the image will use identical
2365bd8deadSopenharmony_ci    sample locations and the same number of samples for all texels in
2375bd8deadSopenharmony_ci    the image, and the sample locations will not depend on the
2385bd8deadSopenharmony_ci    internalformat or size of the image. 
2395bd8deadSopenharmony_ci
2405bd8deadSopenharmony_ci    An INVALID_VALUE error is generated by TexImage2DMultisample if <width>
2415bd8deadSopenharmony_ci    or <height> is greater than the value of MAX_TEXTURE_SIZE. An
2425bd8deadSopenharmony_ci    INVALID_VALUE error is generated by TexImage3DMultisample if <width>,
2435bd8deadSopenharmony_ci    <height>, or <depth> is greater than the value of MAX_3DTEXTURE_SIZE; An
2445bd8deadSopenharmony_ci    INVALID_VALUE error is generated if <samples> is greater than the value
2455bd8deadSopenharmony_ci    of MAX_SAMPLES. An OUT_OF_MEMORY error is generated if the GL is unable
2465bd8deadSopenharmony_ci    to create a texture level of the requested size.
2475bd8deadSopenharmony_ci
2485bd8deadSopenharmony_ci    When a multisample texture is accessed in a shader, the access takes
2495bd8deadSopenharmony_ci    one vector of integers describing which texel to fetch and an
2505bd8deadSopenharmony_ci    integer corresponding to the sample numbers described in section
2515bd8deadSopenharmony_ci    3.3.1 describing which sample within the texel to fetch. No standard
2525bd8deadSopenharmony_ci    sampling instructions are allowed on the multisample texture
2535bd8deadSopenharmony_ci    targets.
2545bd8deadSopenharmony_ci
2555bd8deadSopenharmony_ci    Modify Section 3.8.11, Texture Completeness (p. 154)
2565bd8deadSopenharmony_ci
2575bd8deadSopenharmony_ci    (insert after first paragraph of section, p. 154)
2585bd8deadSopenharmony_ci
2595bd8deadSopenharmony_ci    For multisample textures, a texture is complete if each dimension of
2605bd8deadSopenharmony_ci    the texture's level is positive.
2615bd8deadSopenharmony_ci
2625bd8deadSopenharmony_ci    Modify Section 3.8.12, Texture State and Proxy State (p. 155)
2635bd8deadSopenharmony_ci
2645bd8deadSopenharmony_ci    (insert into the first paragraph of the section, p. 155)
2655bd8deadSopenharmony_ci
2665bd8deadSopenharmony_ci    ... the compressed flag set to FALSE, and a zero compressed size).
2675bd8deadSopenharmony_ci    Multisample textures contain an integer identifying the number of
2685bd8deadSopenharmony_ci    samples in each texel. The buffer texture target has associated an
2695bd8deadSopenharmony_ci    integer containing ...
2705bd8deadSopenharmony_ci
2715bd8deadSopenharmony_ci    (add a new paragraph after the paragraph starting with "Proxy Arrays...")
2725bd8deadSopenharmony_ci
2735bd8deadSopenharmony_ci    Proxy array for two-dimensional multisample and two-dimensional
2745bd8deadSopenharmony_ci    multisample array textures are operated on in the same way when
2755bd8deadSopenharmony_ci    TexImage2DMultisample is called with <target> specified as
2765bd8deadSopenharmony_ci    PROXY_TEXTURE_2D_MULTISAMPLE, or TexImage3DMultisample is called
2775bd8deadSopenharmony_ci    with <target> specified as PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY.
2785bd8deadSopenharmony_ci
2795bd8deadSopenharmony_ci    Modify Section 3.8.13, Texture Objects (p. 157)
2805bd8deadSopenharmony_ci
2815bd8deadSopenharmony_ci    (modify first paragraphs of section, p. 157, simply adding
2825bd8deadSopenharmony_ci     references to multisample textures)
2835bd8deadSopenharmony_ci
2845bd8deadSopenharmony_ci    In addition to the default textures TEXTURE_1D, TEXTURE_2D,
2855bd8deadSopenharmony_ci    TEXTURE_3D, TEXTURE_1D_ARRAY, TEXTURE_2D_ARRAY, TEXTURE_RECTANGLE,
2865bd8deadSopenharmony_ci    TEXTURE_BUFFER, TEXTURE_CUBE_MAP, TEXTURE_2D_MULTISAMPLE, and
2875bd8deadSopenharmony_ci    TEXTURE_2D_MULTISAMPLE_ARRAY, named one-, two-, and
2885bd8deadSopenharmony_ci    three-dimensional, one- and two-dimensional array, rectangular,
2895bd8deadSopenharmony_ci    buffer, cube map, two-dimensional multisample, and two- dimensional
2905bd8deadSopenharmony_ci    multisample array texture objects can be created and operated upon.
2915bd8deadSopenharmony_ci    The name space for texture objects is the unsigned integers, with
2925bd8deadSopenharmony_ci    zero reserved by the GL.
2935bd8deadSopenharmony_ci
2945bd8deadSopenharmony_ci    ...
2955bd8deadSopenharmony_ci
2965bd8deadSopenharmony_ci    In the initial state, TEXTURE_1D, TEXTURE_2D, TEXTURE_3D,
2975bd8deadSopenharmony_ci    TEXTURE_1D_ARRAY, TEXTURE_2D_ARRAY, TEXTURE_RECTANGLE,
2985bd8deadSopenharmony_ci    TEXTURE_BUFFER, TEXTURE_CUBE_MAP, TEXTURE_2D_MULTISAMPLE, and
2995bd8deadSopenharmony_ci    TEXTURE_2D_MULTISAMPLE_ARRAY have one-, two-, and three-dimensional,
3005bd8deadSopenharmony_ci    one- and two-dimensional array, rectangular, buffer, cube map,
3015bd8deadSopenharmony_ci    two-dimensional multisample, and two-dimensional multisample array
3025bd8deadSopenharmony_ci    texture state vectors respectively associated with them. In order
3035bd8deadSopenharmony_ci    that access to these initial textures not be lost, they are treated
3045bd8deadSopenharmony_ci    as texture objects all of whose names are 0. The initial one-, two-,
3055bd8deadSopenharmony_ci    three- dimensional, one- and two-dimensional array, rectangular,
3065bd8deadSopenharmony_ci    buffer, cube map, two-dimensional multisample, and two-dimensional
3075bd8deadSopenharmony_ci    multisample array texture is therefore operated upon, queried, and
3085bd8deadSopenharmony_ci    applied as TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_1D_ARRAY,
3095bd8deadSopenharmony_ci    TEXTURE_2D_ARRAY, TEXTURE_RECTANGLE, TEXTURE_BUFFER,
3105bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP, TEXTURE_2D_MULTISAMPLE, and
3115bd8deadSopenharmony_ci    TEXTURE_2D_MULTISAMPLE_ARRAY respectively while 0 is bound to the
3125bd8deadSopenharmony_ci    corresponding targets.
3135bd8deadSopenharmony_ci
3145bd8deadSopenharmony_ci    (modify second paragraph, p. 158)
3155bd8deadSopenharmony_ci
3165bd8deadSopenharmony_ci    The texture object name space, including the initial one-, two-, and
3175bd8deadSopenharmony_ci    three-dimensional, one- and two-dimensional array, rectangular,
3185bd8deadSopenharmony_ci    buffer, cube map, two-dimensional multisample, and two-dimensional
3195bd8deadSopenharmony_ci    multisample array texture objects, is shared among all texture
3205bd8deadSopenharmony_ci    units. A texture object may be bound to more than one texture unit
3215bd8deadSopenharmony_ci    simultaneously. After a texture object is bound, any GL operations
3225bd8deadSopenharmony_ci    on that target object affect any other texture units to which the
3235bd8deadSopenharmony_ci    same texture object is bound.
3245bd8deadSopenharmony_ci
3255bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 3.1 Specification (Per-Fragment
3265bd8deadSopenharmony_ciOperations and the Frame Buffer)
3275bd8deadSopenharmony_ci
3285bd8deadSopenharmony_ci    Modify Section 4.1.3, Multisample Fragment Operations
3295bd8deadSopenharmony_ci
3305bd8deadSopenharmony_ci    Modify the first paragraph to include SAMPLE_MASK and
3315bd8deadSopenharmony_ci    SAMPLE_MASK_VALUE on the list of values the coverage value is
3325bd8deadSopenharmony_ci    modified based on.
3335bd8deadSopenharmony_ci
3345bd8deadSopenharmony_ci    Modify the discussion of SAMPLE_COVERAGE to start with "Next" instead of
3355bd8deadSopenharmony_ci    "Finally"
3365bd8deadSopenharmony_ci
3375bd8deadSopenharmony_ci    Add after the discussion of SAMPLE_COVERAGE:
3385bd8deadSopenharmony_ci
3395bd8deadSopenharmony_ci    Finally, if SAMPLE_MASK is enabled, the fragment coverage is ANDed
3405bd8deadSopenharmony_ci    with the coverage value SAMPLE_MASK_VALUE. The value of
3415bd8deadSopenharmony_ci    SAMPLE_MASK_VALUE is specified using
3425bd8deadSopenharmony_ci
3435bd8deadSopenharmony_ci        void SampleMaski(GLuint index, GLbitfield mask);
3445bd8deadSopenharmony_ci
3455bd8deadSopenharmony_ci    with <mask> set to the desired mask for <maskNumber>.
3465bd8deadSopenharmony_ci    SAMPLE_MASK_VALUE is queried by calling GetIntegeri_v with <pname>
3475bd8deadSopenharmony_ci    set to SAMPLE_MASK_VALUE and the index set to <maskNumber>. Bit B of
3485bd8deadSopenharmony_ci    mask M corresponds to sample 32*M+B as described in Section 3.3.1.
3495bd8deadSopenharmony_ci    The error INVALID_VALUE is generated if the mask word indexed is
3505bd8deadSopenharmony_ci    greater than or equal to MAX_SAMPLE_MASK_WORDS.
3515bd8deadSopenharmony_ci
3525bd8deadSopenharmony_ci    Modify Section 4.4.2, Attaching Images to Framebuffer Objects, p. 203
3535bd8deadSopenharmony_ci
3545bd8deadSopenharmony_ci    (the first paragraph of RenderbufferStorageMultisample p. 205)
3555bd8deadSopenharmony_ci
3565bd8deadSopenharmony_ci    ... If either <width> or <height> is greater than the value of
3575bd8deadSopenharmony_ci    MAX_RENDERBUFFER_SIZE, or if <samples> is greater than the value of
3585bd8deadSopenharmony_ci    MAX_SAMPLES, then the error INVALID_VALUE is generated. If
3595bd8deadSopenharmony_ci    <internalformat> is a signed or unsigned integer format and
3605bd8deadSopenharmony_ci    <samples> is greater than the value of MAX_INTEGER_SAMPLES, then the
3615bd8deadSopenharmony_ci    error INVALID_OPERATION is generated. (see ``Required Renderbuffer
3625bd8deadSopenharmony_ci    Formats'' below). ...
3635bd8deadSopenharmony_ci
3645bd8deadSopenharmony_ci    (The second paragraph of "Required Renderbuffer Formats" p. 206):
3655bd8deadSopenharmony_ci
3665bd8deadSopenharmony_ci    Implementations must support creation of renderbuffers in these
3675bd8deadSopenharmony_ci    required formats with up to the value of MAX_SAMPLES multisamples,
3685bd8deadSopenharmony_ci    with the exception that the signed and unsigned integer formats are
3695bd8deadSopenharmony_ci    required only to support creation of renderbuffers with up to the
3705bd8deadSopenharmony_ci    value of MAX_INTEGER_SAMPLES multisamples, which must be at least
3715bd8deadSopenharmony_ci    one.
3725bd8deadSopenharmony_ci
3735bd8deadSopenharmony_ci    Modify the description of FrameBufferTextureARB in
3745bd8deadSopenharmony_ci    ARB_geometry_shader4, to allow multisample array textures with
3755bd8deadSopenharmony_ci    FramebufferTextureARB:
3765bd8deadSopenharmony_ci
3775bd8deadSopenharmony_ci    If <texture> is the name of a three-dimensional texture, cube map
3785bd8deadSopenharmony_ci    texture, one- or two-dimensional array texture, or two-dimensional
3795bd8deadSopenharmony_ci    multisample array texture, the texture level attached to the
3805bd8deadSopenharmony_ci    framebuffer attachment point is an array of images, and the
3815bd8deadSopenharmony_ci    framebuffer attachment is considered layered.
3825bd8deadSopenharmony_ci
3835bd8deadSopenharmony_ci    (At the end of p. 208, describing FrameBufferTexture*D)
3845bd8deadSopenharmony_ci
3855bd8deadSopenharmony_ci    If <textarget> is TEXTURE_RECTANGLE, TEXTURE_2D_MULTISAMPLE, or
3865bd8deadSopenharmony_ci    TEXTURE_2D_MULTISAMPLE_ARRAY, then <level> must be zero.
3875bd8deadSopenharmony_ci
3885bd8deadSopenharmony_ci    ...
3895bd8deadSopenharmony_ci
3905bd8deadSopenharmony_ci    For FramebufferTexture2D, if <texture> is not zero, then <textarget>
3915bd8deadSopenharmony_ci    must be one of of TEXTURE_2D, TEXTURE_RECTANGLE,
3925bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_POSITIVE_Y,
3935bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_POSITIVE_Z, TEXTURE_CUBE_MAP_NEGATIVE_X,
3945bd8deadSopenharmony_ci    TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Z, or
3955bd8deadSopenharmony_ci    TEXTURE_2D_MULTISAMPLE.
3965bd8deadSopenharmony_ci
3975bd8deadSopenharmony_ci    ...
3985bd8deadSopenharmony_ci
3995bd8deadSopenharmony_ci    The command
4005bd8deadSopenharmony_ci
4015bd8deadSopenharmony_ci        void FramebufferTextureLayer(enum target, enum attachment,
4025bd8deadSopenharmony_ci                                     uint texture, int level, int layer);
4035bd8deadSopenharmony_ci
4045bd8deadSopenharmony_ci    operates identically to FramebufferTexture3D, except that it
4055bd8deadSopenharmony_ci    attaches a single layer of a three-dimensional, one- or
4065bd8deadSopenharmony_ci    two-dimensional array, or two-dimensional multisample array texture
4075bd8deadSopenharmony_ci    layer is an integer indicating the layer sample number, and is
4085bd8deadSopenharmony_ci    treated identically to the layer parameter in FramebufferTexture3D.
4095bd8deadSopenharmony_ci    The error INVALID_VALUE is generated if texture is non-zero and
4105bd8deadSopenharmony_ci    layer is negative. The error INVALID_OPERATION is generated if
4115bd8deadSopenharmony_ci    texture is non-zero and is not the name of a three dimensional, two-
4125bd8deadSopenharmony_ci    dimensional multisample array, or one-or two-dimensional array
4135bd8deadSopenharmony_ci    texture. Unlike FramebufferTexture3D, no textarget parameter is
4145bd8deadSopenharmony_ci    accepted. ...
4155bd8deadSopenharmony_ci
4165bd8deadSopenharmony_ci
4175bd8deadSopenharmony_ci    Modify Section 4.4.4, Framebuffer Completeness, p. 212
4185bd8deadSopenharmony_ci
4195bd8deadSopenharmony_ci    (Modify the last bullet at the top of p. 215)
4205bd8deadSopenharmony_ci
4215bd8deadSopenharmony_ci    - The value of RENDERBUFFER_SAMPLES is the same for all attached
4225bd8deadSopenharmony_ci      renderbuffers; the value of TEXTURE_SAMPLES is the same for all
4235bd8deadSopenharmony_ci      attached textures; and, if the attached images are a mix of
4245bd8deadSopenharmony_ci      renderbuffers and textures, the value of RENDERBUFFER_SAMPLES
4255bd8deadSopenharmony_ci      matches the value of TEXTURE_SAMPLES.
4265bd8deadSopenharmony_ci
4275bd8deadSopenharmony_ci      { FRAMEBUFFER_INCOMPLETE_MULTISAMPLE }
4285bd8deadSopenharmony_ci
4295bd8deadSopenharmony_ci    - The value of TEXTURE_FIXED_SAMPLE_LOCATIONS is the same for all
4305bd8deadSopenharmony_ci      attached textures; if the attached images are a mix of
4315bd8deadSopenharmony_ci      renderbuffers and textures, the value of
4325bd8deadSopenharmony_ci      TEXTURE_FIXED_SAMPLE_LOCATIONS must be TRUE for all attached
4335bd8deadSopenharmony_ci      textures.
4345bd8deadSopenharmony_ci
4355bd8deadSopenharmony_ci      { FRAMEBUFFER_INCOMPLETE_MULTISAMPLE }
4365bd8deadSopenharmony_ci
4375bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 3.1 Specification (State and
4385bd8deadSopenharmony_ciState Requests)
4395bd8deadSopenharmony_ci
4405bd8deadSopenharmony_ci    Edit Section 6.1.3, p. 223 (Enumerated Queries)
4415bd8deadSopenharmony_ci
4425bd8deadSopenharmony_ci    Add TEXTURE_2D_MULTISAMPLE, PROXY_TEXTURE_2D_MULTISAMPLE,
4435bd8deadSopenharmony_ci    TEXTURE_2D_MULTISAMPLE_ARRAY, and PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY
4445bd8deadSopenharmony_ci    to the list of valid targets for GetTexLevelParameter{if}v.
4455bd8deadSopenharmony_ci
4465bd8deadSopenharmony_ciAdditions to the AGL/GLX/WGL Specifications
4475bd8deadSopenharmony_ci
4485bd8deadSopenharmony_ci    None
4495bd8deadSopenharmony_ci
4505bd8deadSopenharmony_ciGLX Protocol
4515bd8deadSopenharmony_ci
4525bd8deadSopenharmony_ci    TBD
4535bd8deadSopenharmony_ci
4545bd8deadSopenharmony_ciErrors
4555bd8deadSopenharmony_ci
4565bd8deadSopenharmony_ci    The error INVALID_VALUE is generated by GetBooleani_v and
4575bd8deadSopenharmony_ci    GetIntegeri_v if <target> is SAMPLE_MASK_VALUE and <index> is greater
4585bd8deadSopenharmony_ci    than or equal to MAX_SAMPLE_MASK_WORDS.
4595bd8deadSopenharmony_ci
4605bd8deadSopenharmony_ci    The error INVALID_VALUE is generated by SampleMaski if <index> is
4615bd8deadSopenharmony_ci    greater than or equal to MAX_SAMPLE_MASK_WORDS.
4625bd8deadSopenharmony_ci
4635bd8deadSopenharmony_ci    The error INVALID_ENUM is generated by GetMultisamplefv if <pname>
4645bd8deadSopenharmony_ci    is not SAMPLE_POSITION.
4655bd8deadSopenharmony_ci
4665bd8deadSopenharmony_ci    The error INVALID_VALUE is generated by GetMultisamplefv if <index> is
4675bd8deadSopenharmony_ci    greater than or equal to the value of SAMPLES.
4685bd8deadSopenharmony_ci
4695bd8deadSopenharmony_ci    The error INVALID_OPERATION is generated by TexImage2DMultisample
4705bd8deadSopenharmony_ci    and TexImage3DMultisample if the number of samples exceeds the
4715bd8deadSopenharmony_ci    implementation dependent maximum for the given internal format.
4725bd8deadSopenharmony_ci
4735bd8deadSopenharmony_ci    The error INVALID_VALUE is generated by TexImage2DMultisample
4745bd8deadSopenharmony_ci    TexImage3DMultisample if either <width> or <height> is greater than the
4755bd8deadSopenharmony_ci    value of MAX_TEXTURE_SIZE, or if <samples> is greater than the value of
4765bd8deadSopenharmony_ci    MAX_SAMPLES.
4775bd8deadSopenharmony_ci
4785bd8deadSopenharmony_ci    The error INVALID_VALUE is generated by TexImage3DMultisample if
4795bd8deadSopenharmony_ci    <width>, <height>, or <depth> is greater than the value of
4805bd8deadSopenharmony_ci    MAX_3D_TEXTURE_SIZE, or if <samples> is greater than the value of
4815bd8deadSopenharmony_ci    MAX_SAMPLES.
4825bd8deadSopenharmony_ci
4835bd8deadSopenharmony_ci    The error OUT_OF_MEMORY is generated by TexImage2DMultisample and
4845bd8deadSopenharmony_ci    TexImage3DMultisample if the GL is unable to create a texture level
4855bd8deadSopenharmony_ci    of the requested size.
4865bd8deadSopenharmony_ci
4875bd8deadSopenharmony_ci    The error INVALID_OPERATION is generated by
4885bd8deadSopenharmony_ci    RenderbufferStorageMultisample if <internalformat> is a signed or
4895bd8deadSopenharmony_ci    unsigned integer format and <samples> is greater than the value of
4905bd8deadSopenharmony_ci    MAX_INTEGER_SAMPLES.
4915bd8deadSopenharmony_ci
4925bd8deadSopenharmony_ciNew State
4935bd8deadSopenharmony_ci
4945bd8deadSopenharmony_ci    Get Value                       Get Command    Type    Initial Value
4955bd8deadSopenharmony_ci    ---------                       -----------    ----    -------------
4965bd8deadSopenharmony_ci    SAMPLE_MASK                     IsEnabled      B       FALSE
4975bd8deadSopenharmony_ci    SAMPLE_MASK_VALUE               GetIntegeri_v  nxZ+    ~0
4985bd8deadSopenharmony_ci
4995bd8deadSopenharmony_ci    Where n is the number of sample mask words (the value of
5005bd8deadSopenharmony_ci    MAX_SAMPLE_MASK_WORDS) the implementation supports.
5015bd8deadSopenharmony_ci
5025bd8deadSopenharmony_ci    (add to table 6.12, Texture State Per Texture Unit/Binding Point p. 250)
5035bd8deadSopenharmony_ci
5045bd8deadSopenharmony_ci                                                               Initial
5055bd8deadSopenharmony_ci    Get Value                              Type    Get Command  Value  Description                 Sec.
5065bd8deadSopenharmony_ci    ------------------------------------   ----     ----------- ------- --------------------------- ------
5075bd8deadSopenharmony_ci    TEXTURE_BINDING_2D_MULTISAMPLE        32*xZ+   GetIntegerv    0    Texture object bound to     3.8.13
5085bd8deadSopenharmony_ci                                                                       TEXTURE_2D_MULTISAMPLE
5095bd8deadSopenharmony_ci    TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY  32*xZ+   GetIntegerv    0    Texture object bound to     3.8.13
5105bd8deadSopenharmony_ci                                                                       TEXTURE_2D_MULTISAMPLE_ARRAY
5115bd8deadSopenharmony_ci
5125bd8deadSopenharmony_ci    (add to table 6.14, Textures (state per texture image p. 252)
5135bd8deadSopenharmony_ci
5145bd8deadSopenharmony_ci                                                                Initial
5155bd8deadSopenharmony_ci    Get Value                       Type  Get Command            Value  Description                 Sec.
5165bd8deadSopenharmony_ci    ----------------------          ----  -------------------   ------- --------------------------- ------
5175bd8deadSopenharmony_ci    TEXTURE_SAMPLES                  Z+   GetTexLevelParameter     0    Number of samples per texel 3.8.4
5185bd8deadSopenharmony_ci    TEXTURE_FIXED_SAMPLE_LOCATIONS   B    GetTexLevelParameter   TRUE   Whether the image uses a    3.8.4
5195bd8deadSopenharmony_ci                                                                        fixed sample pattern
5205bd8deadSopenharmony_ci
5215bd8deadSopenharmony_ci    (add to table 6.41, Framebuffer dependent Values, p. 279)
5225bd8deadSopenharmony_ci
5235bd8deadSopenharmony_ci                                                        Initial
5245bd8deadSopenharmony_ci    Get Value           Type        Get Command         Value           Description      Sec.
5255bd8deadSopenharmony_ci    ------------------  ----------  ------------------  --------------  ---------------  ------
5265bd8deadSopenharmony_ci    SAMPLE_POSITION     N*2*R[0,1]  GetMultisamplefv    implementation  Explicit sample  3.2.1
5275bd8deadSopenharmony_ci                                                        dependent       positions
5285bd8deadSopenharmony_ci
5295bd8deadSopenharmony_ci    Where N is the number of samples (the value of SAMPLES) the framebuffer supports.
5305bd8deadSopenharmony_ci
5315bd8deadSopenharmony_ciNew Implementation Dependent State
5325bd8deadSopenharmony_ci
5335bd8deadSopenharmony_ci                                                      Minimum
5345bd8deadSopenharmony_ci    Get Value                    Type    Get Command  Value   Description                   Sec.
5355bd8deadSopenharmony_ci    ---------                    ------- -----------  ------- ------------------------      ------
5365bd8deadSopenharmony_ci    MAX_SAMPLE_MASK_WORDS        Z+      GetIntegerv  1       maximum number of sample      4.1.3
5375bd8deadSopenharmony_ci                                                              mask words
5385bd8deadSopenharmony_ci    MAX_COLOR_TEXTURE_SAMPLES    Z+      GetIntegerv  1       maximum number of samples     4.1.3
5395bd8deadSopenharmony_ci                                                              in a color multisample
5405bd8deadSopenharmony_ci                                                              texture
5415bd8deadSopenharmony_ci    MAX_DEPTH_TEXTURE_SAMPLES    Z+      GetIntegerv  1       maximum number of samples     4.1.3
5425bd8deadSopenharmony_ci                                                              in a depth/stencil
5435bd8deadSopenharmony_ci                                                              multisample texture
5445bd8deadSopenharmony_ci    MAX_INTEGER_SAMPLES          Z+      GetIntegerv  1       Maximum number of samples     4.4.2
5455bd8deadSopenharmony_ci                                                              in integer format
5465bd8deadSopenharmony_ci                                                              multisample buffers
5475bd8deadSopenharmony_ci
5485bd8deadSopenharmony_ciModifications to the OpenGL Shading Language Specification, Version 1.40
5495bd8deadSopenharmony_ci
5505bd8deadSopenharmony_ci    Including the following line in a shader can be used to control the
5515bd8deadSopenharmony_ci    language featured described in this extension:
5525bd8deadSopenharmony_ci
5535bd8deadSopenharmony_ci      #extension GL_ARB_texture_multisample : <behavior>
5545bd8deadSopenharmony_ci
5555bd8deadSopenharmony_ci    where <behavior> is as specified in section 3.3.
5565bd8deadSopenharmony_ci
5575bd8deadSopenharmony_ci    A new preprocessor #define is added to the OpenGL Shading Language:
5585bd8deadSopenharmony_ci
5595bd8deadSopenharmony_ci      #define GL_ARB_texture_multisample 1
5605bd8deadSopenharmony_ci
5615bd8deadSopenharmony_ci    Add to section 3.6 "Keywords"
5625bd8deadSopenharmony_ci
5635bd8deadSopenharmony_ci    The following new sampler types are added:
5645bd8deadSopenharmony_ci
5655bd8deadSopenharmony_ci      sampler2DMS, isampler2DMS, usampler2DMS,
5665bd8deadSopenharmony_ci      sampler2DMSArray, isampler2DMSArray, usampler2DMSArray
5675bd8deadSopenharmony_ci
5685bd8deadSopenharmony_ci    Add to section 4.1 "Basic Types"
5695bd8deadSopenharmony_ci
5705bd8deadSopenharmony_ci    Add the following sampler type to the "Floating Point Sampler Types"
5715bd8deadSopenharmony_ci    table:
5725bd8deadSopenharmony_ci
5735bd8deadSopenharmony_ci      sampler2DMS                handle for accessing a 2D multisample texture
5745bd8deadSopenharmony_ci      sampler2DMSArray           handle for accessing a 2D multisample array texture
5755bd8deadSopenharmony_ci
5765bd8deadSopenharmony_ci    Add the following sampler type to the "Unsigned Integer Sampler
5775bd8deadSopenharmony_ci    Types" table:
5785bd8deadSopenharmony_ci
5795bd8deadSopenharmony_ci      usampler2DMS               handle for accessing an unsigned integer 2D multisample texture
5805bd8deadSopenharmony_ci      usampler2DMSArray          handle for accessing an unsigned integer 2D multisample array texture
5815bd8deadSopenharmony_ci
5825bd8deadSopenharmony_ci    Add the following sampler type to the "Integer Sampler Types" table:
5835bd8deadSopenharmony_ci
5845bd8deadSopenharmony_ci      isampler2DMS               handle for accessing an integer 2D multisample texture
5855bd8deadSopenharmony_ci      isampler2DMSArray          handle for accessing an integer 2D multisample array texture
5865bd8deadSopenharmony_ci
5875bd8deadSopenharmony_ci    Add to section 8.7 "Texture Lookup Functions"
5885bd8deadSopenharmony_ci
5895bd8deadSopenharmony_ci    Add new functions to the set of allowed texture lookup functions:
5905bd8deadSopenharmony_ci
5915bd8deadSopenharmony_ci    Syntax:
5925bd8deadSopenharmony_ci
5935bd8deadSopenharmony_ci      gvec4 texelFetch(gsampler2DMS sampler, ivec2 P, int sample)
5945bd8deadSopenharmony_ci      gvec4 texelFetch(gsampler2DMSArray sampler, ivec3 P, int sample)
5955bd8deadSopenharmony_ci
5965bd8deadSopenharmony_ci    Description:
5975bd8deadSopenharmony_ci
5985bd8deadSopenharmony_ci      Use integer texture coordinate <P> to lookup a single sample
5995bd8deadSopenharmony_ci      <sample> on the texture bound to <sampler> as described in section
6005bd8deadSopenharmony_ci      2.11.7.1 of the OpenGL specification "Multisample Texel Fetches".
6015bd8deadSopenharmony_ci
6025bd8deadSopenharmony_ci    Syntax:
6035bd8deadSopenharmony_ci
6045bd8deadSopenharmony_ci      ivec2 textureSize(gsampler2DMS sampler)
6055bd8deadSopenharmony_ci      ivec3 textureSize(gsampler2DMSArray sampler)
6065bd8deadSopenharmony_ci
6075bd8deadSopenharmony_ci    Description:
6085bd8deadSopenharmony_ci
6095bd8deadSopenharmony_ci      Returns the dimensions, width and height of level 0 for the
6105bd8deadSopenharmony_ci      texture bound to <sampler>, as described in section 2.11.7.1 of
6115bd8deadSopenharmony_ci      the OpenGL specification section "Texture Size Query".
6125bd8deadSopenharmony_ci
6135bd8deadSopenharmony_ciExamples
6145bd8deadSopenharmony_ci
6155bd8deadSopenharmony_ciIssues
6165bd8deadSopenharmony_ci
6175bd8deadSopenharmony_ci    (1) Do we need new "max size" queries for the new targets?
6185bd8deadSopenharmony_ci
6195bd8deadSopenharmony_ci    RESOLVED: No. The existing MAX_TEXTURE_SIZE applies to 2D multisample
6205bd8deadSopenharmony_ci    textures, and MAX_3D_TEXTURE_SIZE to 3D multisample textures.
6215bd8deadSopenharmony_ci
6225bd8deadSopenharmony_ci    (2) What commands may be used on multisample textures?
6235bd8deadSopenharmony_ci
6245bd8deadSopenharmony_ci    RESOLVED: Multisample textures can be bound for rendering and texturing,
6255bd8deadSopenharmony_ci    but they cannot be loaded/read with SubImage commands (TexSubImage,
6265bd8deadSopenharmony_ci    CopyTexSubImage, GetTexImage), they don't support compressed formats,
6275bd8deadSopenharmony_ci    and they don't need TexParameters since they can only be fetched with
6285bd8deadSopenharmony_ci    texelFetchMultisample.
6295bd8deadSopenharmony_ci
6305bd8deadSopenharmony_ci    (3) Should the new TexImage commands take an "int level" argument?
6315bd8deadSopenharmony_ci
6325bd8deadSopenharmony_ci    RESOLVED: No. We can add new commands if/when we ever add mipmapped
6335bd8deadSopenharmony_ci    multisample textures.
6345bd8deadSopenharmony_ci
6355bd8deadSopenharmony_ci    (4) GetMultisamplefv takes an index to support >32 samples, but
6365bd8deadSopenharmony_ci        NV_gpu_shader4_1's gl_SampleMask is only 32 bits. What gives?
6375bd8deadSopenharmony_ci
6385bd8deadSopenharmony_ci    RESOLVED: This is gpu_shader4_1's problem, not ARB_texture_multisample's
6395bd8deadSopenharmony_ci    problem.
6405bd8deadSopenharmony_ci
6415bd8deadSopenharmony_ci    (5) Should GLSL include a query to return the sample count of a
6425bd8deadSopenharmony_ci        texture, either as part of textureSizeMultisample or
6435bd8deadSopenharmony_ci        stand-alone?
6445bd8deadSopenharmony_ci
6455bd8deadSopenharmony_ci    RESOLVED: No, there hasn't been a demand for it.
6465bd8deadSopenharmony_ci
6475bd8deadSopenharmony_ci    (6) How does SAMPLE_POSITION interact with
6485bd8deadSopenharmony_ci        EXT_fragment_coord_conventions?
6495bd8deadSopenharmony_ci
6505bd8deadSopenharmony_ci    RESOLVED: The SAMPLE_POSITION query is not in any way affected by
6515bd8deadSopenharmony_ci    the shader state added in EXT_fragment_coord_conventions. It is
6525bd8deadSopenharmony_ci    expected that the returned values will not actually be used within
6535bd8deadSopenharmony_ci    the shader, but rather to compute filter weights on the CPU, so
6545bd8deadSopenharmony_ci    whether the fragment coord is inverted or translated by 0.5 doesn't
6555bd8deadSopenharmony_ci    matter.
6565bd8deadSopenharmony_ci
6575bd8deadSopenharmony_ci    (7) Should we use "TexImage3DMultisample" to make things look like
6585bd8deadSopenharmony_ci        regular 2D arrays, or just have TexImage2DArrayMultisample?
6595bd8deadSopenharmony_ci
6605bd8deadSopenharmony_ci    RESOLVED: Leave it as is.
6615bd8deadSopenharmony_ci
6625bd8deadSopenharmony_ci    (8) How should we deal with varying sample locations?
6635bd8deadSopenharmony_ci
6645bd8deadSopenharmony_ci    RESOLVED: Allow the application to explicitly request fixed sample
6655bd8deadSopenharmony_ci    locations for when a texture will be used to do custom downsamples.
6665bd8deadSopenharmony_ci    When this is requested, the values returned by GetMultisamplefv will
6675bd8deadSopenharmony_ci    be valid for all texels in the image and can be used to construct
6685bd8deadSopenharmony_ci    elaborate filter kernels that can safely be used across the entire
6695bd8deadSopenharmony_ci    image.
6705bd8deadSopenharmony_ci
6715bd8deadSopenharmony_ci    (9) Are depth multisample textures supported?
6725bd8deadSopenharmony_ci
6735bd8deadSopenharmony_ci    RESOLVED: Some implementations may not support texturing from a
6745bd8deadSopenharmony_ci    multisample depth/stencil texture. In that case, they would export
6755bd8deadSopenharmony_ci    MAX_DEPTH_TEXTURE_SAMPLES = 1.
6765bd8deadSopenharmony_ci
6775bd8deadSopenharmony_ciRevision History
6785bd8deadSopenharmony_ci
6795bd8deadSopenharmony_ci    Rev.    Date    Author    Changes
6805bd8deadSopenharmony_ci    ----  --------  --------  -----------------------------------------------
6815bd8deadSopenharmony_ci    12    2/28/14   Jon Leech Add missing error for invalid <pname> to       
6825bd8deadSopenharmony_ci                              GetMultisamplefv, and change texture size
6835bd8deadSopenharmony_ci                              limits for TexImage3DMultisample to the value
6845bd8deadSopenharmony_ci                              of MAX_3D_TEXTURE_SIZE (Bugs 11134, 11135).
6855bd8deadSopenharmony_ci    11    9/23/13   Jon Leech Change type of <internalformat> argument to    
6865bd8deadSopenharmony_ci                              enum (Bug 10496).
6875bd8deadSopenharmony_ci    10    8/02/09   Jon Leech Reformat to 80 columns and assign ARB
6885bd8deadSopenharmony_ci                              extension number.
6895bd8deadSopenharmony_ci    9     7/23/09   groth     Update return of textureSize(gsampler2DMSarray)
6905bd8deadSopenharmony_ci    8     7/20/09   Jon Leech Assign enum values.
6915bd8deadSopenharmony_ci    7     6/26/09   groth     Update some language to correspond to gl3.2
6925bd8deadSopenharmony_ci    6     6/11/09   groth     Add new max queries to token section
6935bd8deadSopenharmony_ci    5     5/28/09   groth     Add MAX_INTEGER_SAMPLES query.
6945bd8deadSopenharmony_ci    4     5/22/09   jbolz     Add max sample queries.
6955bd8deadSopenharmony_ci    3     5/14/09   jbolz     Add allowance for not supporting multisample
6965bd8deadSopenharmony_ci                              depth textures.
6975bd8deadSopenharmony_ci    2     5/08/09   jbolz     Add allowance for varying sample locations,
6985bd8deadSopenharmony_ci                              and a mechanism to request fixed locations.
6995bd8deadSopenharmony_ci                              Resolve some issues.
7005bd8deadSopenharmony_ci    1     4/30/09   jbolz     First revision.
7015bd8deadSopenharmony_ci
702