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