15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci NV_multisample_coverage 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_NV_multisample_coverage 85bd8deadSopenharmony_ci GLX_NV_multisample_coverage 95bd8deadSopenharmony_ci WGL_NV_multisample_coverage 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ciContact 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ci Mike Strauss (mstrauss 'at' nvidia.com) 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ciStatus 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ci Shipping in NVIDIA release 169.xx drivers (May 2008) for GeForce 185bd8deadSopenharmony_ci 8 and up 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ciVersion 215bd8deadSopenharmony_ci 225bd8deadSopenharmony_ci Revision: 4 235bd8deadSopenharmony_ci Last Modified Date: March 7, 2013 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ciNumber 265bd8deadSopenharmony_ci 275bd8deadSopenharmony_ci 393 285bd8deadSopenharmony_ci 295bd8deadSopenharmony_ciDependencies 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ci ARB_multisample is required. 325bd8deadSopenharmony_ci Written using the language of the OpenGL 2.1 specification. 335bd8deadSopenharmony_ci Written using the language of the GLX 1.4 specification. 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ciOverview 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci The ARB_multisample extension provides a mechanism for antialiasing 385bd8deadSopenharmony_ci primitives. This mechanism allows an application to request an 395bd8deadSopenharmony_ci additional buffer, the multisample buffer, that is added to the 405bd8deadSopenharmony_ci framebuffer. An application can request the number of samples per 415bd8deadSopenharmony_ci fragment that are stored in the multisample buffer. Rendering 425bd8deadSopenharmony_ci proceeds by writing color, depth, and stencil values for each 435bd8deadSopenharmony_ci sample to the multisample buffer. The results are automatically 445bd8deadSopenharmony_ci resolved to a single displayable color each time a pixel is 455bd8deadSopenharmony_ci updated. 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ci Coverage Sample Anti-Aliasing (CSAA) is an extension to multisample 485bd8deadSopenharmony_ci antialiasing. The technique separates "samples" into two types of 495bd8deadSopenharmony_ci samples. "Color samples" are samples with color, depth, and 505bd8deadSopenharmony_ci stencil information stored in the multisample buffer. "Coverage 515bd8deadSopenharmony_ci samples" include both color samples and additional samples that only 525bd8deadSopenharmony_ci provide pixel coverage information. 535bd8deadSopenharmony_ci 545bd8deadSopenharmony_ci This extension follows the example of the 555bd8deadSopenharmony_ci NV_framebuffer_multisample_coverage extension, which adds CSAA 565bd8deadSopenharmony_ci support for framebuffer objects. The base description of 575bd8deadSopenharmony_ci multisample rendering is written in terms of coverage samples and 585bd8deadSopenharmony_ci color samples. The windows system notion of "samples" 595bd8deadSopenharmony_ci (SAMPLES_ARB) is layered on top of coverage and color samples. 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ciIP Status 625bd8deadSopenharmony_ci 635bd8deadSopenharmony_ci None. 645bd8deadSopenharmony_ci 655bd8deadSopenharmony_ciNew Procedures and Functions 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ci None. 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ciNew Tokens 705bd8deadSopenharmony_ci 715bd8deadSopenharmony_ci Accepted by the <attribList> parameter of glXChooseVisual, and by 725bd8deadSopenharmony_ci the <attrib> parameter of glXGetConfig, the <attrib_list> parameter 735bd8deadSopenharmony_ci of glXChooseFBConfig, and the <attribute> parameter of 745bd8deadSopenharmony_ci glXGetFBConfigAttrib: 755bd8deadSopenharmony_ci 765bd8deadSopenharmony_ci GLX_COVERAGE_SAMPLES_NV 100001 775bd8deadSopenharmony_ci GLX_COLOR_SAMPLES_NV 0x20B3 785bd8deadSopenharmony_ci 795bd8deadSopenharmony_ci Accepted by the <piAttributes> parameter of 805bd8deadSopenharmony_ci wglGetPixelFormatAttribivEXT, wglGetPixelFormatAttribfvEXT, and 815bd8deadSopenharmony_ci the <piAttribIList> and <pfAttribIList> of wglChoosePixelFormatEXT: 825bd8deadSopenharmony_ci 835bd8deadSopenharmony_ci WGL_COVERAGE_SAMPLES_NV 0x2042 845bd8deadSopenharmony_ci WGL_COLOR_SAMPLES_NV 0x20B9 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetBooleanv, GetDoublev, 875bd8deadSopenharmony_ci GetIntegerv, and GetFloatv: 885bd8deadSopenharmony_ci 895bd8deadSopenharmony_ci COLOR_SAMPLES_NV 0x8E20 905bd8deadSopenharmony_ci 915bd8deadSopenharmony_ci (Note: Earlier versions of this extension included a token 925bd8deadSopenharmony_ci COVERAGE_SAMPLES_NV that was an alias for SAMPLES/SAMPLES_ARB. This was 935bd8deadSopenharmony_ci removed to avoid a name collision with a similar COVERAGE_SAMPLES_NV 945bd8deadSopenharmony_ci token from the NV_coverage_sample extension to OpenGL ES.) 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 2.0 Specification (OpenGL Operation) 975bd8deadSopenharmony_ci 985bd8deadSopenharmony_ci None. 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization) 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ci Modify Section 3.2.1, Multisampling (p. 93). 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ci (replace third and fourth paragraphs, p. 94) 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ci During multisample rendering the contents of a pixel fragment are 1075bd8deadSopenharmony_ci changed in three ways. First, each fragment includes a coverage 1085bd8deadSopenharmony_ci value with SAMPLES_ARB bits. The value of SAMPLES_ARB is an 1095bd8deadSopenharmony_ci implementation-dependent constant, and is queried by calling 1105bd8deadSopenharmony_ci GetIntegerv with <pname> set to SAMPLES_ARB. 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ci Second, each fragment includes SAMPLES_ARB coverage samples. The 1135bd8deadSopenharmony_ci number of coverage samples includes both samples that indicate only 1145bd8deadSopenharmony_ci coverage information, as well as samples that include coverage, 1155bd8deadSopenharmony_ci color, depth, and texture coordinate information. The location of 1165bd8deadSopenharmony_ci the coverage information only samples may be anywhere within the 1175bd8deadSopenharmony_ci pixel. These samples may be used with an implementation-dependent 1185bd8deadSopenharmony_ci algorithm as additional weights when resolving the color values to a 1195bd8deadSopenharmony_ci single pixel color. 1205bd8deadSopenharmony_ci 1215bd8deadSopenharmony_ci Third, each fragment includes COLOR_SAMPLES_NV depth values, 1225bd8deadSopenharmony_ci color values, and sets of texture coordinates instead of the 1235bd8deadSopenharmony_ci single depth value, color value, and set of texture coordinates 1245bd8deadSopenharmony_ci that are maintained in single-sample rendering mode. These samples 1255bd8deadSopenharmony_ci are referred to as color samples, although they contain more than 1265bd8deadSopenharmony_ci color information. COLOR_SAMPLES_NV is an implementation-dependent 1275bd8deadSopenharmony_ci constant, and is queried by calling GetIntegerv with <pname> set to 1285bd8deadSopenharmony_ci COLOR_SAMPLES_NV. An implementation may choose to assign the same 1295bd8deadSopenharmony_ci color value and the same set of texture coordinates to more than 1305bd8deadSopenharmony_ci one sample. The location for evaluating the color value and the 1315bd8deadSopenharmony_ci set of texture coordinates can be anywhere within the pixel 1325bd8deadSopenharmony_ci including the fragment center or any of the color sample locations. 1335bd8deadSopenharmony_ci The color value and the set of texture coordinates need not be 1345bd8deadSopenharmony_ci evaluated at the same location. Each pixel fragment thus 1355bd8deadSopenharmony_ci consists of integer x and y grid coordinates, SAMPLES_ARB 1365bd8deadSopenharmony_ci samples, COLOR_SAMPLES_NV of which contain color and depth values, 1375bd8deadSopenharmony_ci COLOR_SAMPLES_NV sets of texture coordinates, and a coverage value 1385bd8deadSopenharmony_ci with a maximum of SAMPLES_ARB bits. 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci (modify seventh paragraph, p. 94) 1415bd8deadSopenharmony_ci 1425bd8deadSopenharmony_ci If MULTISAMPLE is enabled, multisample rasterization of all 1435bd8deadSopenharmony_ci primitives differs substantially from single-sample rasterization. 1445bd8deadSopenharmony_ci It is understood that each pixel in the framebuffer has SAMPLES_ARB 1455bd8deadSopenharmony_ci locations associated with it. Of these locations, COLOR_SAMPLES_NV 1465bd8deadSopenharmony_ci have associated color, depth, and texture coordinates. The 1475bd8deadSopenharmony_ci remaining locations only supply additional pixel coverage 1485bd8deadSopenharmony_ci information. These locations are exact positions, rather than 1495bd8deadSopenharmony_ci regions or areas, and each is referred to as a sample point. The 1505bd8deadSopenharmony_ci sample points... 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 2.0 Specification (Per-Fragment 1535bd8deadSopenharmony_ciOperations and the Frame Buffer) 1545bd8deadSopenharmony_ci 1555bd8deadSopenharmony_ci Modify Section 4.1.11, Additional Multisample Fragment 1565bd8deadSopenharmony_ci Operations (p. 213). 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci (modify second paragraph, p. 213) 1595bd8deadSopenharmony_ci 1605bd8deadSopenharmony_ci If MULTISAMPLE is enabled, and the value of SAMPLE_BUFFERS is one, 1615bd8deadSopenharmony_ci the alpha test, stencil test, depth test, blending, and dithering 1625bd8deadSopenharmony_ci operations are performed for each pixel color sample, rather than 1635bd8deadSopenharmony_ci just once for each fragment... 1645bd8deadSopenharmony_ci 1655bd8deadSopenharmony_ci (modify third paragraph, p 215) 1665bd8deadSopenharmony_ci 1675bd8deadSopenharmony_ci After all operations have been completed on the multisample... 1685bd8deadSopenharmony_ci The method of combination is not specified, though a simple average 1695bd8deadSopenharmony_ci computed independently for each color component is recommended when 1705bd8deadSopenharmony_ci the number of coverage samples and color samples are equal. 1715bd8deadSopenharmony_ci 1725bd8deadSopenharmony_ci 1735bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 2.0 Specification (Special Functions) 1745bd8deadSopenharmony_ci 1755bd8deadSopenharmony_ci None. 1765bd8deadSopenharmony_ci 1775bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 2.0 Specification (State and 1785bd8deadSopenharmony_ciState Requests) 1795bd8deadSopenharmony_ci 1805bd8deadSopenharmony_ci 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ciAdditions to Appendix A of the OpenGL 2.0 Specification (Invariance) 1835bd8deadSopenharmony_ci 1845bd8deadSopenharmony_ci None. 1855bd8deadSopenharmony_ci 1865bd8deadSopenharmony_ciAdditions to the GLX Specification 1875bd8deadSopenharmony_ci 1885bd8deadSopenharmony_ci Modify Section 3.3.3 Configuration Management (p. 12) 1895bd8deadSopenharmony_ci 1905bd8deadSopenharmony_ci (modify fourth paragraph, p. 12) 1915bd8deadSopenharmony_ci 1925bd8deadSopenharmony_ci The attribute GLX_SAMPLE_BUFFERS indicates the number of multisample 1935bd8deadSopenharmony_ci buffers, which must be zero or one. The attribute 1945bd8deadSopenharmony_ci GLX_COVERAGE_SAMPLES_NV gives the number of coverage samples per 1955bd8deadSopenharmony_ci pixel, and the attribute GLX_COLOR_SAMPLES_NV gives the number of 1965bd8deadSopenharmony_ci color samples per pixel; if GLX_SAMPLE_BUFFERS is zero, then 1975bd8deadSopenharmony_ci GLX_COVERAGE_SAMPLES_NV and GLX_COLOR_SAMPLES_NV will also be zero. 1985bd8deadSopenharmony_ci If GLX_SAMPLE_BUFFERS is one, then the number of color, depth, and 1995bd8deadSopenharmony_ci stencil bits for each sample in the multisample buffer are 2005bd8deadSopenharmony_ci specified by the GLX_*_SIZE attributes. GLX_SAMPLES is an alias for 2015bd8deadSopenharmony_ci GLX_COVERAGE_SAMPLES_NV. 2025bd8deadSopenharmony_ci 2035bd8deadSopenharmony_ci (modify GLX_SAMPLES entry in Table 3.1: GLXFBConfig attributes, 2045bd8deadSopenharmony_ci p. 12) 2055bd8deadSopenharmony_ci 2065bd8deadSopenharmony_ci Attribute Type Notes 2075bd8deadSopenharmony_ci ----------------------- ------- ------------------------------ 2085bd8deadSopenharmony_ci GLX_COVERAGE_SAMPLES_NV integer no. coverage samples per pixel 2095bd8deadSopenharmony_ci 2105bd8deadSopenharmony_ci (add a new entry to Table 3.1: GLXFBConfig attributes, p.12, 2115bd8deadSopenharmony_ci following the GLX_COVERAGE_SAMPLES_NV entry) 2125bd8deadSopenharmony_ci 2135bd8deadSopenharmony_ci Attribute Type Notes 2145bd8deadSopenharmony_ci ----------------------- ------- ------------------------------ 2155bd8deadSopenharmony_ci GLX_COLOR_SAMPLES_NV integer no. color samples per pixel 2165bd8deadSopenharmony_ci 2175bd8deadSopenharmony_ci 2185bd8deadSopenharmony_ci (add a new following the discussion of GLX_TRASPARENT_TYPE, 2195bd8deadSopenharmony_ci p 18.) 2205bd8deadSopenharmony_ci 2215bd8deadSopenharmony_ci If GLX_COVERAGE_SAMPLES_NV is in <attrib_list>, but 2225bd8deadSopenharmony_ci GLX_COLOR_SAMPLES_NV is not in <attrib_list> the selected 2235bd8deadSopenharmony_ci GLXFBConfigs must have the same number of color samples as 2245bd8deadSopenharmony_ci coverage samples. 2255bd8deadSopenharmony_ci 2265bd8deadSopenharmony_ci (modify the GLX_SAMPLES entry in Table 3.4: Default values and 2275bd8deadSopenharmony_ci match criteria for GLXFBConfig attributes, p. 19) 2285bd8deadSopenharmony_ci 2295bd8deadSopenharmony_ci Selection 2305bd8deadSopenharmony_ci and Sorting Sort 2315bd8deadSopenharmony_ci Attribute Default Criteria Priority 2325bd8deadSopenharmony_ci ----------------------- ------- ----------- -------- 2335bd8deadSopenharmony_ci GLX_COVERAGE_SAMPLES_NV 0 SMALLER 7 2345bd8deadSopenharmony_ci 2355bd8deadSopenharmony_ci 2365bd8deadSopenharmony_ci (add a new entry to table 3.4: Default values and match criteria 2375bd8deadSopenharmony_ci for GLXFBConfig attributes, p. 19, following the 2385bd8deadSopenharmony_ci GLX_COVERAGE_SAMPLES_NV entry. 2395bd8deadSopenharmony_ci 2405bd8deadSopenharmony_ci Selection 2415bd8deadSopenharmony_ci and Sorting Sort 2425bd8deadSopenharmony_ci Attribute Default Criteria Priority 2435bd8deadSopenharmony_ci ----------------------- ------- ----------- -------- 2445bd8deadSopenharmony_ci GLX_COLOR_SAMPLES_NV 0 SMALLER 8 2455bd8deadSopenharmony_ci 2465bd8deadSopenharmony_ci 2475bd8deadSopenharmony_ci (modify the GLX_DEPTH_SIZE, GLX_STENCIL_SIZE, GLX_ACCUM_*_SIZE, 2485bd8deadSopenharmony_ci and GLX_X_VISUAL_TYPE entries in table 3.4: Default values and 2495bd8deadSopenharmony_ci match criteria for GLXFBConfig attributes, p. 19, by incrementing 2505bd8deadSopenharmony_ci the value of Sort Priority for each) 2515bd8deadSopenharmony_ci 2525bd8deadSopenharmony_ci (modify sixth paragraph, p. 20) 2535bd8deadSopenharmony_ci 2545bd8deadSopenharmony_ci 7. Smaller GLX_COVERAGE_SAMPLES_NV. 2555bd8deadSopenharmony_ci 2565bd8deadSopenharmony_ci (add a new paragraph following the sixth paragraph, p. 20) 2575bd8deadSopenharmony_ci 2585bd8deadSopenharmony_ci 8. Smaller GLX_COLOR_SAMPLES_NV. 2595bd8deadSopenharmony_ci 2605bd8deadSopenharmony_ci (modify paragraphs seven through ten, p. 20, by incrementing 2615bd8deadSopenharmony_ci the list number for each) 2625bd8deadSopenharmony_ci 2635bd8deadSopenharmony_ci Modify Section 3.4.1 Using Visuals for Configuration Management 2645bd8deadSopenharmony_ci 2655bd8deadSopenharmony_ci (modify the GLX_SAMPLES entry in Table 3.7: GLX attributes for 2665bd8deadSopenharmony_ci Visuals, p. 37) 2675bd8deadSopenharmony_ci 2685bd8deadSopenharmony_ci Attribute Type Notes 2695bd8deadSopenharmony_ci ------------------------- -------- -------------------------- 2705bd8deadSopenharmony_ci GLX_COVERAGE_SAMPLES_NV integer number of coverage samples 2715bd8deadSopenharmony_ci per pixel. 2725bd8deadSopenharmony_ci 2735bd8deadSopenharmony_ci (add a new entry to table 3.7: GLX attributes for Visuals, p.37, 2745bd8deadSopenharmony_ci following the GLX_COVERAGE_SAMPLES_NV entry) 2755bd8deadSopenharmony_ci 2765bd8deadSopenharmony_ci Attribute Type Notes 2775bd8deadSopenharmony_ci ------------------------- -------- -------------------------- 2785bd8deadSopenharmony_ci GLX_COLOR_SAMPLES_NV integer number of color samples 2795bd8deadSopenharmony_ci per pixel. 2805bd8deadSopenharmony_ci 2815bd8deadSopenharmony_ci 2825bd8deadSopenharmony_ci (modify the GLX_SAMPLES entry in table 3.8: Defaults and selection 2835bd8deadSopenharmony_ci criteria used by glXChooseVisual, p.38) 2845bd8deadSopenharmony_ci 2855bd8deadSopenharmony_ci Attribute Default Selection Criteria 2865bd8deadSopenharmony_ci ------------------------- ------- ------------------ 2875bd8deadSopenharmony_ci GLX_COVERAGE_SAMPLES_NV 0 Smaller 2885bd8deadSopenharmony_ci 2895bd8deadSopenharmony_ci (add a new entry to table 3.8: Defaults and selection criteria used 2905bd8deadSopenharmony_ci by glXChooseVisual, p.38, following the GLX_COVERAGE_SAMPLES_NV 2915bd8deadSopenharmony_ci entry) 2925bd8deadSopenharmony_ci 2935bd8deadSopenharmony_ci Attribute Default Selection Criteria 2945bd8deadSopenharmony_ci ------------------------- ------- ------------------ 2955bd8deadSopenharmony_ci GLX_COLOR_SAMPLES_NV 0 Smaller 2965bd8deadSopenharmony_ci 2975bd8deadSopenharmony_ci 2985bd8deadSopenharmony_ciGLX Protocol 2995bd8deadSopenharmony_ci 3005bd8deadSopenharmony_ci None. 3015bd8deadSopenharmony_ci 3025bd8deadSopenharmony_ciAdditions to the WGL Specification 3035bd8deadSopenharmony_ci 3045bd8deadSopenharmony_ci Modify additions from ARB_multisample 3055bd8deadSopenharmony_ci 3065bd8deadSopenharmony_ci (modify first and second paragraphs) 3075bd8deadSopenharmony_ci 3085bd8deadSopenharmony_ci The parameter WGL_SAMPLE_BUFFERS_ARB is added to 3095bd8deadSopenharmony_ci wglGetPixelFormatAttrib*v. When queried, by calling 3105bd8deadSopenharmony_ci wglGetPixelFormatAttrib*v with <piAttributes> set to 3115bd8deadSopenharmony_ci WGL_SAMPLE_BUFFERS_ARB, it returns the number of multisample 3125bd8deadSopenharmony_ci buffers included in the pixel format. For a normal pixel format, 3135bd8deadSopenharmony_ci the return value is zero. A return value of one indicates that a 3145bd8deadSopenharmony_ci single multisample buffer is available. The number of coverage 3155bd8deadSopenharmony_ci samples per pixel is queried by calling wglGetPixelFormatAttrib*v 3165bd8deadSopenharmony_ci with <piAttributes> set to WGL_COVERAGE_SAMPLES_NV. The number of 3175bd8deadSopenharmony_ci color samples per pixel is queried by calling 3185bd8deadSopenharmony_ci wglGetPixelFormatAttrib*v with <piAttributes> set to 3195bd8deadSopenharmony_ci WGL_COLOR_SAMPLES_NV. It is understood that the number of color, 3205bd8deadSopenharmony_ci depth, and stencil bits per sample in the multisample buffer are as 3215bd8deadSopenharmony_ci specified by the WGL_*_SIZE parameters. It is also understood that 3225bd8deadSopenharmony_ci there are no single-sample depth or stencil buffers associated with 3235bd8deadSopenharmony_ci this pixel format -- the only depth and stencil buffers are those 3245bd8deadSopenharmony_ci in the multisample buffer. WGL_COVERAGE_SAMPLES_NV and 3255bd8deadSopenharmony_ci WGL_COLOR_SAMPLES_NV are zero if WGL_SAMPLES_BUFFERS_ARB is zero. 3265bd8deadSopenharmony_ci WGL_SAMPLES_ARB is an alias for WGL_COVERAGE_SAMPLES_NV. 3275bd8deadSopenharmony_ci 3285bd8deadSopenharmony_ci wglChoosePixelFormatARB accepts WGL_SAMPLE_BUFFERS_ARB in 3295bd8deadSopenharmony_ci <piAttribIList> and <pfAttribIList> with the corresponding value 3305bd8deadSopenharmony_ci set to the minimum number of multisample buffers that can be 3315bd8deadSopenharmony_ci accepted. Pixel formats with the smallest number of multisample 3325bd8deadSopenharmony_ci buffers that meets or exceeds the specified minimum number are 3335bd8deadSopenharmony_ci preferred. Currently operations with more than one multisample 3345bd8deadSopenharmony_ci buffer are undefined, so the returned value will be either zero or 3355bd8deadSopenharmony_ci one. 3365bd8deadSopenharmony_ci 3375bd8deadSopenharmony_ci (add a new paragraph, missing from ARB_multisample, following the 3385bd8deadSopenharmony_ci second paragraph) 3395bd8deadSopenharmony_ci 3405bd8deadSopenharmony_ci wglChoosePixelFormatARB accepts WGL_COVERAGE_SAMPLES_NV in 3415bd8deadSopenharmony_ci <piAttribIList> and <pfAttibIList> with the corresponding value 3425bd8deadSopenharmony_ci set to the requested number of coverage samples for the multisample 3435bd8deadSopenharmony_ci buffer. wglChoosePixelFormatARB accepts WGL_COLOR_SAMPLES_NV in 3445bd8deadSopenharmony_ci <piAttribIList> and <pfAttribIList> with the corresponding value 3455bd8deadSopenharmony_ci set to the requested number of color samples for the multisample 3465bd8deadSopenharmony_ci buffer. A pixel format with differing numbers of coverage and 3475bd8deadSopenharmony_ci color samples may only be chosen when WGL_COLOR_SAMPLES_NV is 3485bd8deadSopenharmony_ci specified. 3495bd8deadSopenharmony_ci 3505bd8deadSopenharmony_ci 3515bd8deadSopenharmony_ciErrors 3525bd8deadSopenharmony_ci 3535bd8deadSopenharmony_ci None. 3545bd8deadSopenharmony_ci 3555bd8deadSopenharmony_ciNew State 3565bd8deadSopenharmony_ci 3575bd8deadSopenharmony_ci 3585bd8deadSopenharmony_ciNew Implementation Dependent State 3595bd8deadSopenharmony_ci 3605bd8deadSopenharmony_ci Minimum 3615bd8deadSopenharmony_ci Get Value Type Get Command Value Description Sec. 3625bd8deadSopenharmony_ci -------------------- ---- ----------- ------- -------------------------- ----- 3635bd8deadSopenharmony_ci SAMPLES_ARB Z+ GetIntegerv 0 Number of coverage samples 3.2.1 3645bd8deadSopenharmony_ci (state already in ARB_multisample, 3655bd8deadSopenharmony_ci just defined to be coverage samples) 3665bd8deadSopenharmony_ci COLOR_SAMPLES_NV Z+ GetIntegerv 0 Number of color samples 3.2.1 3675bd8deadSopenharmony_ci 3685bd8deadSopenharmony_ciIssues 3695bd8deadSopenharmony_ci 3705bd8deadSopenharmony_ci 1) How do we provide backward compatibility for glXChooseFBConfig 3715bd8deadSopenharmony_ci and wglChoosePixelFormatARB if COVERAGE_SAMPLES_NV aliases to 3725bd8deadSopenharmony_ci SAMPLES_ARB? 3735bd8deadSopenharmony_ci 3745bd8deadSopenharmony_ci RESOLVED: Traditional multisample antialiasing can be 3755bd8deadSopenharmony_ci be described as CSAA where the number of coverage and color 3765bd8deadSopenharmony_ci samples are the same (all samples provide coverage, color, 3775bd8deadSopenharmony_ci depth, and stencil information). Existing applications and 3785bd8deadSopenharmony_ci applications that do not wish to use this extension will use 3795bd8deadSopenharmony_ci SAMPLES_ARB when choosing a multisample GLXFBConfig or pixel 3805bd8deadSopenharmony_ci format. In this case, glXChooseFBConfig and 3815bd8deadSopenharmony_ci wglChoosePixelFormatARB should never return a CSAA visual or 3825bd8deadSopenharmony_ci pixel format. This is enforced in the spec by requiring the 3835bd8deadSopenharmony_ci presence of COLOR_SAMPLES_NV in the attribute list in order to 3845bd8deadSopenharmony_ci return a CSAA GLXFBConfig or pixel format. 3855bd8deadSopenharmony_ci 3865bd8deadSopenharmony_ci (NOTE: The token COVERAGE_SAMPLES_NV was removed in version 4 3875bd8deadSopenharmony_ci of the extension, but its value was always indistinguishable 3885bd8deadSopenharmony_ci from SAMPLES_ARB.) 3895bd8deadSopenharmony_ci 3905bd8deadSopenharmony_ci 2) How do we provide backward compatibility for 3915bd8deadSopenharmony_ci glXGetFBConfigAttrib and wglGetPixelFormatAttrib*v if 3925bd8deadSopenharmony_ci COVERAGE_SAMPLES_NV aliases to SAMPLES_ARB? 3935bd8deadSopenharmony_ci 3945bd8deadSopenharmony_ci RESOLVED: The glXGetFBConfigAttrib and 3955bd8deadSopenharmony_ci wglGetPixelFormatAttrib*v routines provide a mechanism for 3965bd8deadSopenharmony_ci applications to query properties of a GLXFBConfig or pixel 3975bd8deadSopenharmony_ci format. This is useful for obtaining additional information 3985bd8deadSopenharmony_ci about a GLXFBConfig or pixel format after choosing one with the 3995bd8deadSopenharmony_ci appropriate routine. An application can also use these 4005bd8deadSopenharmony_ci routines to apply custom GLXFBConfig/pixel format selection 4015bd8deadSopenharmony_ci logic when presented with a set of GLXFBConfigs or pixel 4025bd8deadSopenharmony_ci formats. 4035bd8deadSopenharmony_ci 4045bd8deadSopenharmony_ci In the latter case, existing applications and future 4055bd8deadSopenharmony_ci applications that do not use this extension may accidentally 4065bd8deadSopenharmony_ci select a CSAA GLXFBConfig or pixel format because they only 4075bd8deadSopenharmony_ci look at SAMPLES_ARB, which aliases to COVERAGE_SAMPLES_NV. 4085bd8deadSopenharmony_ci This problem is not unique to CSAA GLXFBConfigs and pixel 4095bd8deadSopenharmony_ci formats. An application can run into a problem selecting the 4105bd8deadSopenharmony_ci wrong GLXFBConfig or pixel format any time a new GLXFBConfig or 4115bd8deadSopenharmony_ci pixel format attribute is added that differs from the old 4125bd8deadSopenharmony_ci default. The GLX specification provides GLXFBConfig sorting 4135bd8deadSopenharmony_ci guidelines to aid in working around this problem. For WGL, 4145bd8deadSopenharmony_ci vendors are encouraged to order their visuals and pixel formats 4155bd8deadSopenharmony_ci in such a way that gives preference to old formats. With 4165bd8deadSopenharmony_ci regards to CSAA, it is recommended that vendors list traditional 4175bd8deadSopenharmony_ci multisample pixel formats first, and CSAA pixel formats later. 4185bd8deadSopenharmony_ci The assumption being that applications will tend to choose the 4195bd8deadSopenharmony_ci first pixel format that meets the criteria. 4205bd8deadSopenharmony_ci 4215bd8deadSopenharmony_ci (NOTE: The token COVERAGE_SAMPLES_NV was removed in version 4 4225bd8deadSopenharmony_ci of the extension, but its value was always indistinguishable 4235bd8deadSopenharmony_ci from SAMPLES_ARB.) 4245bd8deadSopenharmony_ci 4255bd8deadSopenharmony_ci 3) The NV_framebuffer_multisample_coverage extension supplies 4265bd8deadSopenharmony_ci specific rules with regards to how the requested number of 4275bd8deadSopenharmony_ci coverage and color samples are rounded to an implementation 4285bd8deadSopenharmony_ci supported value. Should this extension provide similar rules? 4295bd8deadSopenharmony_ci 4305bd8deadSopenharmony_ci RESOLVED. The NV_framebuffer_multisample_coverage extension 4315bd8deadSopenharmony_ci is built on top of EXT_framebuffer_multisample, which provides 4325bd8deadSopenharmony_ci explicit rules for rounding the number of requested samples. 4335bd8deadSopenharmony_ci Specifically, the spec says to round the number of requested 4345bd8deadSopenharmony_ci samples up to the next implementation supported value. 4355bd8deadSopenharmony_ci NV_framebuffer_multisample_coverage says that the number of 4365bd8deadSopenharmony_ci coverage samples is rounded to the next highest implementation 4375bd8deadSopenharmony_ci supported value. The number of color samples is rounded up to 4385bd8deadSopenharmony_ci the next highest implementation supported value given the 4395bd8deadSopenharmony_ci chosen number of coverage samples. 4405bd8deadSopenharmony_ci 4415bd8deadSopenharmony_ci Choosing WGL pixel formats has always been a flexible 4425bd8deadSopenharmony_ci and fuzzy process. On the other hand, the GLX specification 4435bd8deadSopenharmony_ci provides explicit rules for sorting and choosing GLXFBConfigs. 4445bd8deadSopenharmony_ci Language has been added to the GLX spec to sort first on 4455bd8deadSopenharmony_ci coverage samples, and then on color samples. This has a 4465bd8deadSopenharmony_ci similar effect as the rules given in 4475bd8deadSopenharmony_ci NV_framebuffer_multisample_coverage as long as both 4485bd8deadSopenharmony_ci COVERAGE_SAMPLES_NV and COLOR_SAMPLES_NV are specified. For 4495bd8deadSopenharmony_ci WGL pixel format selection, the implementation is free to 4505bd8deadSopenharmony_ci sort in whatever way it wishes. Although it is recommended 4515bd8deadSopenharmony_ci that sorting be done in a way that is compatible with 4525bd8deadSopenharmony_ci NV_framebuffer_mulitsample_coverage. 4535bd8deadSopenharmony_ci 4545bd8deadSopenharmony_ciRevision History 4555bd8deadSopenharmony_ci 4565bd8deadSopenharmony_ci Revision 1, 6/22/2007, mstrauss: Initial version 4575bd8deadSopenharmony_ci Revision 2, 6/23/2007, mstrauss: Removed GLX visual language. 4585bd8deadSopenharmony_ci Added GLXFBconfig language. 4595bd8deadSopenharmony_ci Revision 3, 4/20/2009, jajones: Filled in GLX token values. 4605bd8deadSopenharmony_ci Restored GLX 1.2 compatibility 4615bd8deadSopenharmony_ci table entries. 4625bd8deadSopenharmony_ci Revision 4, 3/7/2013, pbrown: Removed the OpenGL API token 4635bd8deadSopenharmony_ci COVERAGE_SAMPLES_NV, which was 4645bd8deadSopenharmony_ci just an alias for SAMPLES_ARB. 4655bd8deadSopenharmony_ci 4665bd8deadSopenharmony_ci 467