15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci NV_texture_multisample 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_NV_texture_multisample 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Jeff Bolz, NVIDIA Corporation (jbolz 'at' nvidia.com) 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciStatus 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci Shipping on NVIDIA GPUs (GeForce 8 and up) since Release 190. 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciVersion 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci Last Modified Date: 09/10/09 205bd8deadSopenharmony_ci Revision: 2 215bd8deadSopenharmony_ci 225bd8deadSopenharmony_ciNumber 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ci 403 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ciDependencies 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ci OpenGL 2.0 is required. 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ci This extension is written against the OpenGL 3.1 specification and the 315bd8deadSopenharmony_ci NV_gpu_program4 extension. 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ci ARB_texture_multisample is required. 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ci This extension interacts with NV_explicit_multisample. 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci This extension interacts with NV_framebuffer_multisample_coverage. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ci This extension interacts with EXT_direct_state_access. 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ciOverview 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ci This specification extends NV_gpu_program4 to support per-sample fetching 445bd8deadSopenharmony_ci from multisample textures described in ARB_texture_multisample. 455bd8deadSopenharmony_ci Specifically, it adds: 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ci * The TXFMS sample fetch instruction. 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ci * Texture targets corresponding to the multisample textures added by 505bd8deadSopenharmony_ci ARB_texture_multisample. 515bd8deadSopenharmony_ci 525bd8deadSopenharmony_ci * A program option to enable these features. 535bd8deadSopenharmony_ci 545bd8deadSopenharmony_ci This specification also extends the ARB_texture_multisample extension 555bd8deadSopenharmony_ci by adding support for EXT_direct_state_access and VCAA multisample 565bd8deadSopenharmony_ci coverage with seperate <colorSamples> and <coverageSamples> parameters. 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ciNew Procedures and Functions 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ci void TexImage2DMultisampleCoverageNV(enum target, 615bd8deadSopenharmony_ci sizei coverageSamples, sizei colorSamples, 625bd8deadSopenharmony_ci int internalFormat, 635bd8deadSopenharmony_ci sizei width, sizei height, 645bd8deadSopenharmony_ci boolean fixedSampleLocations); 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ci void TexImage3DMultisampleCoverageNV(enum target, 675bd8deadSopenharmony_ci sizei coverageSamples, sizei colorSamples, 685bd8deadSopenharmony_ci int internalFormat, 695bd8deadSopenharmony_ci sizei width, sizei height, sizei depth, 705bd8deadSopenharmony_ci boolean fixedSampleLocations); 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ci void TextureImage2DMultisampleNV(uint texture, enum target, 735bd8deadSopenharmony_ci sizei samples, int internalFormat, 745bd8deadSopenharmony_ci sizei width, sizei height, 755bd8deadSopenharmony_ci boolean fixedSampleLocations); 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ci void TextureImage3DMultisampleNV(uint texture, enum target, 785bd8deadSopenharmony_ci sizei samples, int internalFormat, 795bd8deadSopenharmony_ci sizei width, sizei height, sizei depth, 805bd8deadSopenharmony_ci boolean fixedSampleLocations); 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci void TextureImage2DMultisampleCoverageNV(uint texture, enum target, 835bd8deadSopenharmony_ci sizei coverageSamples, sizei colorSamples, 845bd8deadSopenharmony_ci int internalFormat, 855bd8deadSopenharmony_ci sizei width, sizei height, 865bd8deadSopenharmony_ci boolean fixedSampleLocations); 875bd8deadSopenharmony_ci 885bd8deadSopenharmony_ci void TextureImage3DMultisampleCoverageNV(uint texture, enum target, 895bd8deadSopenharmony_ci sizei coverageSamples, sizei colorSamples, 905bd8deadSopenharmony_ci int internalFormat, 915bd8deadSopenharmony_ci sizei width, sizei height, sizei depth, 925bd8deadSopenharmony_ci boolean fixedSampleLocations); 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ciNew Tokens 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetTexLevelParameter: 975bd8deadSopenharmony_ci 985bd8deadSopenharmony_ci TEXTURE_COVERAGE_SAMPLES_NV 0x9045 995bd8deadSopenharmony_ci TEXTURE_COLOR_SAMPLES_NV 0x9046 1005bd8deadSopenharmony_ci 1015bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 3.1 Specification (OpenGL Operation) 1025bd8deadSopenharmony_ci 1035bd8deadSopenharmony_ci Modify Section 2.X.2, Program Grammar 1045bd8deadSopenharmony_ci 1055bd8deadSopenharmony_ci If a program specifies the NV_texture_multisample program option, add to 1065bd8deadSopenharmony_ci existing grammar rules if not already present: 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ci <texTarget> ::= "2DMS" 1095bd8deadSopenharmony_ci | "ARRAY2DMS" 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ci <TEXop> ::= "TXFMS" 1125bd8deadSopenharmony_ci 1135bd8deadSopenharmony_ci Add to section 2.X.4.4, Program Texture Access 1145bd8deadSopenharmony_ci 1155bd8deadSopenharmony_ci Add row to table X.17 1165bd8deadSopenharmony_ci 1175bd8deadSopenharmony_ci coordinates used 1185bd8deadSopenharmony_ci texTarget Texture Type s t r layer shadow 1195bd8deadSopenharmony_ci ---------------- --------------------- ----- ----- ------ 1205bd8deadSopenharmony_ci 2DMS TEXTURE_2D_MULTISAMPLE <not supported> 1215bd8deadSopenharmony_ci ARRAY2DMS TEXTURE_2D_MULTISAMPLE_ARRAY <not supported> 1225bd8deadSopenharmony_ci 1235bd8deadSopenharmony_ci Add row to table X.18 1245bd8deadSopenharmony_ci 1255bd8deadSopenharmony_ci coordinates used 1265bd8deadSopenharmony_ci texTarget supported i j k layer lod 1275bd8deadSopenharmony_ci ---------------- --------- ----- ----- --- 1285bd8deadSopenharmony_ci 2DMS no - - - - - 1295bd8deadSopenharmony_ci ARRAY2DMS no - - - - - 1305bd8deadSopenharmony_ci 1315bd8deadSopenharmony_ci Replace or add language explaining TexelFetchMultisample after the 1325bd8deadSopenharmony_ci discussion of TexelFetch 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci The TXFMS instruction provides the ability to extract a single sample from 1355bd8deadSopenharmony_ci a specified renderbuffer, two-dimensional multisample, or two-dimensional 1365bd8deadSopenharmony_ci multisample array texture image using the function: 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ci result_t_vec TexelFetchMultisample(int_vec coord, int_vec offset); 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci The extracted texel is converted to an (R,G,B,A) vector according to Table 1415bd8deadSopenharmony_ci 3.20. The result vector is interpreted as floating-point, signed integer, 1425bd8deadSopenharmony_ci or unsigned integer, according to the data type modifier of the 1435bd8deadSopenharmony_ci instruction. If the internal format of the texture is not compatible with 1445bd8deadSopenharmony_ci the instruction's data type modifier, the extracted texel value is 1455bd8deadSopenharmony_ci undefined. 1465bd8deadSopenharmony_ci 1475bd8deadSopenharmony_ci <coord> is a four-component signed integer vector used to identify the 1485bd8deadSopenharmony_ci single sample accessed. For the 2DMS and RENDERBUFFER targets, the x and y 1495bd8deadSopenharmony_ci components are used to select the pixel and the w component is used to 1505bd8deadSopenharmony_ci select the sample. For the ARRAY2DMS target, the x, y, and z components are 1515bd8deadSopenharmony_ci used to select the texel and the w component is used to select the sample. 1525bd8deadSopenharmony_ci All of the restrictions of TexelFetch apply to TexelFetchMultisample, with 1535bd8deadSopenharmony_ci the additional requirement that it must be called on a RENDERBUFFER, 2DMS, 1545bd8deadSopenharmony_ci or ARRAY2DMS texture target. If the sample number is greater than or equal 1555bd8deadSopenharmony_ci to the value of SAMPLES for the multisample texture, the results are 1565bd8deadSopenharmony_ci undefined. 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 3.1 Specification (Rasterization) 1595bd8deadSopenharmony_ci 1605bd8deadSopenharmony_ci Add to the end of Section 3.8.4 (Multisample Textures): 1615bd8deadSopenharmony_ci 1625bd8deadSopenharmony_ci The commands 1635bd8deadSopenharmony_ci 1645bd8deadSopenharmony_ci void TexImage2DMultisampleCoverageNV(enum target, 1655bd8deadSopenharmony_ci sizei coverageSamples, sizei colorSamples, 1665bd8deadSopenharmony_ci int internalFormat, 1675bd8deadSopenharmony_ci sizei width, sizei height, 1685bd8deadSopenharmony_ci boolean fixedSampleLocations); 1695bd8deadSopenharmony_ci 1705bd8deadSopenharmony_ci void TexImage3DMultisampleCoverageNV(enum target, 1715bd8deadSopenharmony_ci sizei coverageSamples, sizei colorSamples, 1725bd8deadSopenharmony_ci int internalFormat, 1735bd8deadSopenharmony_ci sizei width, sizei height, sizei depth, 1745bd8deadSopenharmony_ci boolean fixedSampleLocations); 1755bd8deadSopenharmony_ci 1765bd8deadSopenharmony_ci establish the data storage, format, dimensions, and number of samples of a 1775bd8deadSopenharmony_ci multisample texture's image where the number of <colorSamples> and 1785bd8deadSopenharmony_ci <coverageSamples> can be explicitly specified. 1795bd8deadSopenharmony_ci 1805bd8deadSopenharmony_ci If <coverageSamples> is zero, then TEXTURE_COVERAGE_SAMPLES_NV 1815bd8deadSopenharmony_ci is set to zero. Otherwise <coverageSamples> represents a request 1825bd8deadSopenharmony_ci for a desired minimum number of coverage samples. Since different 1835bd8deadSopenharmony_ci implementations may support different coverage sample counts for 1845bd8deadSopenharmony_ci multisampled rendering, the actual number of coverage samples 1855bd8deadSopenharmony_ci allocated for the renderbuffer image is implementation dependent. 1865bd8deadSopenharmony_ci However, the resulting value for TEXTURE_COVERAGE_SAMPLES_NV is 1875bd8deadSopenharmony_ci guaranteed to be greater than or equal to <coverageSamples> and no 1885bd8deadSopenharmony_ci more than the next larger coverage sample count supported by the 1895bd8deadSopenharmony_ci implementation. 1905bd8deadSopenharmony_ci 1915bd8deadSopenharmony_ci If <colorSamples> is zero then TEXTURE_COLOR_SAMPLES_NV is set 1925bd8deadSopenharmony_ci to zero. Otherwise, <colorSamples> represents a request for a 1935bd8deadSopenharmony_ci desired minimum number of colors samples. Since different 1945bd8deadSopenharmony_ci implementations may support different color sample counts for 1955bd8deadSopenharmony_ci multisampled rendering, the actual number of color samples 1965bd8deadSopenharmony_ci allocated for the renderbuffer image is implementation dependent. 1975bd8deadSopenharmony_ci Furthermore, a given implementation may support different color 1985bd8deadSopenharmony_ci sample counts for each supported coverage sample count. The 1995bd8deadSopenharmony_ci resulting value for TEXTURE_COLOR_SAMPLES_NV is determined 2005bd8deadSopenharmony_ci after resolving the value for TEXTURE_COVERAGE_SAMPLES_NV. 2015bd8deadSopenharmony_ci If the requested color sample count exceeds the maximum number of 2025bd8deadSopenharmony_ci color samples supported by the implementation given the value of 2035bd8deadSopenharmony_ci TEXTURE_COVERAGE_SAMPLES_NV, the implementation will set 2045bd8deadSopenharmony_ci TEXTURE_COLOR_SAMPLES_NV to the highest supported value. 2055bd8deadSopenharmony_ci Otherwise, the resulting value for TEXTURE_COLOR_SAMPLES_NV is 2065bd8deadSopenharmony_ci guaranteed to be greater than or equal to <colorSamples> and no 2075bd8deadSopenharmony_ci more than the next larger color sample count supported by the 2085bd8deadSopenharmony_ci implementation given the value of TEXTURE_COVERAGE_SAMPLES_NV. 2095bd8deadSopenharmony_ci 2105bd8deadSopenharmony_ci If <colorSamples> is greater than <coverageSamples>, the error 2115bd8deadSopenharmony_ci INVALID_VALUE is generated. 2125bd8deadSopenharmony_ci 2135bd8deadSopenharmony_ci If <coverageSamples> or <colorSamples> is greater than 2145bd8deadSopenharmony_ci MAX_SAMPLES_EXT, the error INVALID_VALUE is generated. 2155bd8deadSopenharmony_ci 2165bd8deadSopenharmony_ci If <coverageSamples> is greater than zero, and <colorSamples> is 2175bd8deadSopenharmony_ci zero, RENDERBUFFER_COLOR_SAMPLES_NV is set to an implementation 2185bd8deadSopenharmony_ci dependent value based on RENDERBUFFER_COVERAGE_SAMPLES_NV. 2195bd8deadSopenharmony_ci 2205bd8deadSopenharmony_ci An implementation may only support a subset of the possible 2215bd8deadSopenharmony_ci combinations of coverage samples and color samples. Requests for 2225bd8deadSopenharmony_ci combinations not supported by the implementation are resolved to 2235bd8deadSopenharmony_ci a supported combination using the rules above. The number of 2245bd8deadSopenharmony_ci supported combinations is MAX_MULTISAMPLE_COVERAGE_MODES_NV. 2255bd8deadSopenharmony_ci MULTISAMPLE_COVERAGE_MODES_NV is an array of 2265bd8deadSopenharmony_ci MAX_MULTISAMPLE_COVERAGE_MODES_NV pairs of integers representing 2275bd8deadSopenharmony_ci the combinations of coverage samples and color samples supported 2285bd8deadSopenharmony_ci by the implementation. The first integer in each pair corresponds 2295bd8deadSopenharmony_ci to coverage samples, while the second corresponds to color samples. 2305bd8deadSopenharmony_ci 2315bd8deadSopenharmony_ci (Note: MULTISAMPLE_COVERAGE_MODES_NV and MAX_MULTISAMPLE_COVERAGE_MODES_NV 2325bd8deadSopenharmony_ci are specified in the NV_framebuffer_multisample_coverage extension.) 2335bd8deadSopenharmony_ci 2345bd8deadSopenharmony_ci Add to the end of section 3.8.14 (Texture Objects): 2355bd8deadSopenharmony_ci 2365bd8deadSopenharmony_ci The following multisample texture update commands: 2375bd8deadSopenharmony_ci 2385bd8deadSopenharmony_ci void TextureImage2DMultisampleNV(uint texture, enum target, 2395bd8deadSopenharmony_ci sizei samples, int internalFormat, 2405bd8deadSopenharmony_ci sizei width, sizei height, 2415bd8deadSopenharmony_ci boolean fixedSampleLocations); 2425bd8deadSopenharmony_ci 2435bd8deadSopenharmony_ci void TextureImage3DMultisampleNV(uint texture, enum target, 2445bd8deadSopenharmony_ci sizei samples, int internalFormat, 2455bd8deadSopenharmony_ci sizei width, sizei height, sizei depth, 2465bd8deadSopenharmony_ci boolean fixedSampleLocations); 2475bd8deadSopenharmony_ci 2485bd8deadSopenharmony_ci void TextureImage2DMultisampleCoverageNV(uint texture, enum target, 2495bd8deadSopenharmony_ci sizei coverageSamples, sizei colorSamples, 2505bd8deadSopenharmony_ci int internalFormat, 2515bd8deadSopenharmony_ci sizei width, sizei height, 2525bd8deadSopenharmony_ci boolean fixedSampleLocations); 2535bd8deadSopenharmony_ci 2545bd8deadSopenharmony_ci void TextureImage3DMultisampleCoverageNV(uint texture, enum target, 2555bd8deadSopenharmony_ci sizei coverageSamples, sizei colorSamples, 2565bd8deadSopenharmony_ci int internalFormat, 2575bd8deadSopenharmony_ci sizei width, sizei height, sizei depth, 2585bd8deadSopenharmony_ci boolean fixedSampleLocations); 2595bd8deadSopenharmony_ci 2605bd8deadSopenharmony_ci operate identically to the corresponding command where "Texture" 2615bd8deadSopenharmony_ci is substituted for "Tex" (and extension suffixes are dropped or 2625bd8deadSopenharmony_ci updated appropriately) except, rather than updating the current bound 2635bd8deadSopenharmony_ci texture for the texture unit indicated by the current active texture 2645bd8deadSopenharmony_ci state and the target parameter, these "Texture" commands update the 2655bd8deadSopenharmony_ci texture object named by the initial texture parameter. If the 2665bd8deadSopenharmony_ci texture parameter is zero, then the target parameter selects the 2675bd8deadSopenharmony_ci default texture of the specified target to update. The remaining 2685bd8deadSopenharmony_ci parameters following the initial texture parameter for the listed 2695bd8deadSopenharmony_ci "Texture" commands match the parameters for the corresponding "Tex" 2705bd8deadSopenharmony_ci command and are interpreted as they are for the "Tex" command. 2715bd8deadSopenharmony_ci If the texture parameter is for an unused name, the name becomes 2725bd8deadSopenharmony_ci used and the named texture object is set to a new state vector, 2735bd8deadSopenharmony_ci comprising all the state values listed in section 3.8.11, set 2745bd8deadSopenharmony_ci to the same initial values prior to the command's state update. 2755bd8deadSopenharmony_ci If the texture parameter is for a used name and that named texture 2765bd8deadSopenharmony_ci object has a different target than the specified target parameter, 2775bd8deadSopenharmony_ci the INVALID_OPERATION error is generated. One consequence of this 2785bd8deadSopenharmony_ci error for commands that accepts TEXTURE_PROXY_* as a valid target 2795bd8deadSopenharmony_ci parameter is TEXTURE_PROXY_* target tokens generate errors if used 2805bd8deadSopenharmony_ci with a non-zero texture parameter because the target of a non-default 2815bd8deadSopenharmony_ci (non-zero) texture object is never a proxy target." 2825bd8deadSopenharmony_ci 2835bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 3.1 Specification (Per-Fragment Operations 2845bd8deadSopenharmony_ciand the Frame Buffer) 2855bd8deadSopenharmony_ci 2865bd8deadSopenharmony_ci None. 2875bd8deadSopenharmony_ci 2885bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 3.1 Specification (Special Functions) 2895bd8deadSopenharmony_ci 2905bd8deadSopenharmony_ci None. 2915bd8deadSopenharmony_ci 2925bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 3.1 Specification (State and 2935bd8deadSopenharmony_ciState Requests) 2945bd8deadSopenharmony_ci 2955bd8deadSopenharmony_ci None. 2965bd8deadSopenharmony_ci 2975bd8deadSopenharmony_ciAdditions to the AGL/GLX/WGL Specifications 2985bd8deadSopenharmony_ci 2995bd8deadSopenharmony_ci None. 3005bd8deadSopenharmony_ci 3015bd8deadSopenharmony_ciNew State 3025bd8deadSopenharmony_ci 3035bd8deadSopenharmony_ci (add to table 6.14, Textures (state per texture image p. 252) 3045bd8deadSopenharmony_ci Initial 3055bd8deadSopenharmony_ci Get Value Type Get Command Value Description Section 3065bd8deadSopenharmony_ci -------------------------------- ---- ----------------------------- ------- ------------------- ------------ 3075bd8deadSopenharmony_ci TEXTURE_COVERAGE_SAMPLES_NV Z+ GetTexLevelParameter 0 Number of coverage 3.8.4 3085bd8deadSopenharmony_ci samples per texel 3095bd8deadSopenharmony_ci TEXTURE_COLOR_SAMPLES_NV Z+ GetTexLevelParameter 0 Number of color 3.8.4 3105bd8deadSopenharmony_ci samples per texel 3115bd8deadSopenharmony_ci 3125bd8deadSopenharmony_ciInteractions with NV_explicit_multisample 3135bd8deadSopenharmony_ci 3145bd8deadSopenharmony_ci If NV_explicit_multisample is not present, the language following the discussion 3155bd8deadSopenharmony_ci of Texelfetch in section 2.X.4.4, Program Texture Access will be new and should 3165bd8deadSopenharmony_ci omit any mention of sampling from renderbuffers. 3175bd8deadSopenharmony_ci 3185bd8deadSopenharmony_ciDependencies on EXT_direct_state_access 3195bd8deadSopenharmony_ci 3205bd8deadSopenharmony_ci If EXT_direct_state_access is not supported, remove references to the 3215bd8deadSopenharmony_ci TextureImage* commands added by this extension. 3225bd8deadSopenharmony_ci 3235bd8deadSopenharmony_ciIssues 3245bd8deadSopenharmony_ci 3255bd8deadSopenharmony_ci (1) What should this extension be called? 3265bd8deadSopenharmony_ci 3275bd8deadSopenharmony_ci RESOLVED: NV_texture_multisample. It contains the NVIDIA specific portions 3285bd8deadSopenharmony_ci of ARB_texture_multisample. 3295bd8deadSopenharmony_ci 3305bd8deadSopenharmony_ci (2) What should the multisample texel fetch opcode be called? 3315bd8deadSopenharmony_ci 3325bd8deadSopenharmony_ci RESOLVED: TEXFMS. It is currently called TXFMS to correspond to the GLSL 3335bd8deadSopenharmony_ci builtin, TexelFetchMultisample. It has been suggested that this builtin be 3345bd8deadSopenharmony_ci renamed. Even if it is, TEXFMS matches the opcode added via 3355bd8deadSopenharmony_ci NV_explicit_multisample. It is better to mismatch GLSL than have two opcodes 3365bd8deadSopenharmony_ci for the same operation. 3375bd8deadSopenharmony_ci 3385bd8deadSopenharmony_ciRevision History 3395bd8deadSopenharmony_ci 3405bd8deadSopenharmony_ci Rev. Date Author Changes 3415bd8deadSopenharmony_ci ---- -------- -------- ----------------------------------------- 3425bd8deadSopenharmony_ci 1 6/23/09 groth Extracted from portions of an earlier version of 3435bd8deadSopenharmony_ci ARB_texture_multisample 3445bd8deadSopenharmony_ci 3455bd8deadSopenharmony_ci 2 9/10/09 pdaniell Add support for VCAA and DSA 346