15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci SGIS_shared_multisample 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_SGIS_shared_multisample 85bd8deadSopenharmony_ci GLX_SGIS_shared_multisample 95bd8deadSopenharmony_ci 105bd8deadSopenharmony_ciVersion 115bd8deadSopenharmony_ci 125bd8deadSopenharmony_ci $Date: 1997/10/29 20:41:07 $ $Revision: 1.2 $ 135bd8deadSopenharmony_ci 145bd8deadSopenharmony_ciNumber 155bd8deadSopenharmony_ci 165bd8deadSopenharmony_ci 143 175bd8deadSopenharmony_ci 185bd8deadSopenharmony_ciDependencies 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ci GL_SGIS_multisample and GLX_SGIS_multisample are required 215bd8deadSopenharmony_ci 225bd8deadSopenharmony_ciOverview 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ci While the OpenGL multisample extension (SGIS_multisample) provides 255bd8deadSopenharmony_ci good out-of-order antialiasing via subpixel samples, multisample 265bd8deadSopenharmony_ci hardware is very expensive because it multiplies the per-pixel 275bd8deadSopenharmony_ci framebuffer memory required to maintain color, depth, and stencil 285bd8deadSopenharmony_ci state by the number of samples. 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ci The cost-sensitive Location Based Entertainment (LBE) market 315bd8deadSopenharmony_ci desires good quality antialiasing, but the cost of maintaining 325bd8deadSopenharmony_ci multisample memory for every pixel in the framebuffer managed area 335bd8deadSopenharmony_ci is often prohibitive. Low-end multi-channel visual simulation may 345bd8deadSopenharmony_ci have similar cost constraints. 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ci LBE applications typically render several channels that are output 375bd8deadSopenharmony_ci to different video display devices. For example, an LBE 385bd8deadSopenharmony_ci application may render four 800x600 resolution channels, one per 395bd8deadSopenharmony_ci game player. While the total managed area may be 1600x1200, each 405bd8deadSopenharmony_ci channel ends up being rendered serially. With traditional 415bd8deadSopenharmony_ci multisampling (as specified by SGIS_multisample), multisample 425bd8deadSopenharmony_ci memory must be retained across the entire 1600x1200 managed area 435bd8deadSopenharmony_ci though in fact the application is never using more than an 800x600 445bd8deadSopenharmony_ci rectangle of multisample pixel state at any given time. 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ci This sharing of multisample framebuffer state can result in a 475bd8deadSopenharmony_ci substantial competitive advantage for high-end multi-channel 485bd8deadSopenharmony_ci multisampling hardware for LBE applications. Unlike a "cheap PC 495bd8deadSopenharmony_ci per seat" solution, a high-end solution can be amortized by sharing 505bd8deadSopenharmony_ci both texture and multisample memory between the multiple channels 515bd8deadSopenharmony_ci (as well as host resources such as disk and CPUs). For cheap PCs 525bd8deadSopenharmony_ci to have the same amount of texture memory and quality of 535bd8deadSopenharmony_ci antialiasing, texture and multisample memory have to be replicated 545bd8deadSopenharmony_ci in every PC. 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ci In a typical windowed environment, the entire framebuffer managed 575bd8deadSopenharmony_ci area must retain multisample state because windows can be moved 585bd8deadSopenharmony_ci dynamically and resized (up to the entire size of the managed 595bd8deadSopenharmony_ci area). For LBE applications though, the layout of channel 605bd8deadSopenharmony_ci subrectangles in the framebuffer managed area is static and the 615bd8deadSopenharmony_ci LBE application monopolizes the graphics device (no other 625bd8deadSopenharmony_ci concurrent windowed apps). Because of their channel-oriented, 635bd8deadSopenharmony_ci dedicated, cost-sensitive nature, LBE applications can benefit from 645bd8deadSopenharmony_ci a means to share the available multisample memory resources among 655bd8deadSopenharmony_ci all the channels. 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ci The SGIS_shared_multisample extension specifies a single 685bd8deadSopenharmony_ci multisample buffer subrectangle sized smaller than the total 695bd8deadSopenharmony_ci managed area that is both shared among multiple windows and 705bd8deadSopenharmony_ci repositionable within in a window. 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ci Use of the SGIS_shared_multisample extension is predicated on 735bd8deadSopenharmony_ci specially configuring the window system, typically via a command 745bd8deadSopenharmony_ci line option added to the window system server's startup command. 755bd8deadSopenharmony_ci When run in this mode, OpenGL applications will see the 765bd8deadSopenharmony_ci GL_SGIS_shared_multisample string advertised in the GL_EXTENSIONS 775bd8deadSopenharmony_ci string (along with the GL_SGIS_multisample string). In this mode, 785bd8deadSopenharmony_ci the behavior of multisample extension changes. Instead of the 795bd8deadSopenharmony_ci multisample buffer memory being retained per-pixel across the 805bd8deadSopenharmony_ci entire managed area, multisample memory is shared among multisample 815bd8deadSopenharmony_ci windows and repositionable within a multisample window. 825bd8deadSopenharmony_ci 835bd8deadSopenharmony_ci Switching windows or repositioning the multisample subrectangle 845bd8deadSopenharmony_ci will make undefined the shared state within the multisample, depth, 855bd8deadSopenharmony_ci stencil, and accumulation buffers. 865bd8deadSopenharmony_ci 875bd8deadSopenharmony_ci When rendering into a multisample window, fragments that fall 885bd8deadSopenharmony_ci outside the window's multisample subrectangle are discarded 895bd8deadSopenharmony_ci (scissored). By default, the window's multisample rectangle is 905bd8deadSopenharmony_ci positioned at its window origin. 915bd8deadSopenharmony_ci 925bd8deadSopenharmony_ciIssues 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ci * As part of the pixel ownership test, when doing a ReadPixels, 955bd8deadSopenharmony_ci CopyPixels, CopyTexImage, or CopySubTexImage operation, are the 965bd8deadSopenharmony_ci sourced color pixels undefined if they are outside the 975bd8deadSopenharmony_ci multisample subrectangle, but otherwise would pass the pixel 985bd8deadSopenharmony_ci ownership test? NO, such pixel read/copies should be DEFINED. 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ci This behavior is justified because the resolved color buffer is 1015bd8deadSopenharmony_ci available for copying outside the multisample subrectangle, just 1025bd8deadSopenharmony_ci not the multisample, depth, stencil, or accumulation buffer 1035bd8deadSopenharmony_ci values. LBE applications will likely find it useful to copy 1045bd8deadSopenharmony_ci rendering results from the first channel into the others. For 1055bd8deadSopenharmony_ci example, copying a radar view shared among all the players into 1065bd8deadSopenharmony_ci each channel. 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ci Note that copies or reads of depth or stencil (or multisamples 1095bd8deadSopenharmony_ci or accumulation buffer contents if such contents were actually 1105bd8deadSopenharmony_ci readable) will NOT be expected to be defined. 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ci The specification additions below only amend this with respect 1135bd8deadSopenharmony_ci to ReadPixels, but other language in the 4.3.3 "Copying Pixels" 1145bd8deadSopenharmony_ci and 3.8 "Texturing, Alternative Texture Image Specification 1155bd8deadSopenharmony_ci Commands" sections imply that CopyPixels, CopyTexImage2D, and 1165bd8deadSopenharmony_ci CopyTexImage1D will also not include scissoring against the 1175bd8deadSopenharmony_ci multisample subrectangle as part of the pixel ownership test 1185bd8deadSopenharmony_ci when sourcing from color buffers (not depth or stencil though). 1195bd8deadSopenharmony_ci This is because these other operations read pixels as specified 1205bd8deadSopenharmony_ci by the ReadPixels operation. 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ci * Should the accumulation buffer be associated with the the 1235bd8deadSopenharmony_ci multisample subrectangle, or should the accumulation buffer be 1245bd8deadSopenharmony_ci retained (as are the color buffers) for pixels not within the 1255bd8deadSopenharmony_ci multisample subrectangle? If an accumulation buffer exists, it 1265bd8deadSopenharmony_ci should be SHARED like the multisample buffer. 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ci This behavior is justified because accumulation buffers are big 1295bd8deadSopenharmony_ci and expensive just like multisample buffers. LBE apps still may 1305bd8deadSopenharmony_ci want to use the accumulation buffer for motion blur or depth of 1315bd8deadSopenharmony_ci field. Like the multisample buffer, the accumulation buffer 1325bd8deadSopenharmony_ci should be shared and retained only within the multisample 1335bd8deadSopenharmony_ci subrectangle. 1345bd8deadSopenharmony_ci 1355bd8deadSopenharmony_ci * What about auxiliary buffers? Does the same logic for 1365bd8deadSopenharmony_ci accumulation buffers apply? UNRESOLVED. This specification is 1375bd8deadSopenharmony_ci currently written to assume that an auxiliary buffer is a color 1385bd8deadSopenharmony_ci buffer and is not shared. 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci * If multiple GL clients must use framebuffers with a shared 1415bd8deadSopenharmony_ci multisample subrectangle, how can they guarantee reliable 1425bd8deadSopenharmony_ci rendering results? WITH GLFLUSH. Keep rendering temporally 1435bd8deadSopenharmony_ci distinct with glFlush issued before rendering thread switches. 1445bd8deadSopenharmony_ci 1455bd8deadSopenharmony_ci * Does it make sense for hardware to advertise more than one 1465bd8deadSopenharmony_ci multisample subrectangle? NO. It would justified if you had 1475bd8deadSopenharmony_ci two parallel command streams updating distinct channels since 1485bd8deadSopenharmony_ci two channels would be rendering in parallel. But if this was 1495bd8deadSopenharmony_ci the case (thinking in the context of LBE applications), it 1505bd8deadSopenharmony_ci probably makes more sense simply to have two distinct pipes. 1515bd8deadSopenharmony_ci That's cheaper than trying to support a single pipe with 1525bd8deadSopenharmony_ci parallel rendering streams, plus the channels are rendering 1535bd8deadSopenharmony_ci independently (via screen space subdivision) anyway. 1545bd8deadSopenharmony_ci 1555bd8deadSopenharmony_ci * Can you clear a window using a shared multisample buffer 1565bd8deadSopenharmony_ci outside the multisample subrectangle? NO. 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci glClear is controlled by the pixel ownership test and if a 1595bd8deadSopenharmony_ci fragment is not within the multisample subrectangle, it cannot 1605bd8deadSopenharmony_ci pass the pixel ownership test when using a multisample 1615bd8deadSopenharmony_ci subrectangle. 1625bd8deadSopenharmony_ci 1635bd8deadSopenharmony_ci * What happens if you run a traditional (existing) multisample 1645bd8deadSopenharmony_ci application on a window system advertising the shared 1655bd8deadSopenharmony_ci multisample extension? VERY UNSIGHTLY FRAME BUFFER FIGHTING. 1665bd8deadSopenharmony_ci 1675bd8deadSopenharmony_ci The app runs, but its multisample rendering will be constrained 1685bd8deadSopenharmony_ci to the multisample subrectangle. Multiple concurrent apps using 1695bd8deadSopenharmony_ci multisampling will "fight" for their use of the shared 1705bd8deadSopenharmony_ci multisample rectangle. 1715bd8deadSopenharmony_ci 1725bd8deadSopenharmony_ci The expectation is that you only configure a window system 1735bd8deadSopenharmony_ci server to support shared multisample mode when running a single 1745bd8deadSopenharmony_ci dedicated LBE-style channel API. Note that you can still run 1755bd8deadSopenharmony_ci non-multisampled windowed apps just fine concurrently with a 1765bd8deadSopenharmony_ci shared multisample app. 1775bd8deadSopenharmony_ci 1785bd8deadSopenharmony_ci * As written, this extension CHANGES the semantics of the 1795bd8deadSopenharmony_ci existing GL_SGIS_multisample extension. Should this new 1805bd8deadSopenharmony_ci extension use a GLX attribute distinct from the one used by the 1815bd8deadSopenharmony_ci GLX_SGIS_multisample extension? NO. 1825bd8deadSopenharmony_ci 1835bd8deadSopenharmony_ci Users have to specially configure their window system server to 1845bd8deadSopenharmony_ci get the special overloaded sharing behavior. Plus LBE 1855bd8deadSopenharmony_ci applications monopolize the system anyway. 1865bd8deadSopenharmony_ci 1875bd8deadSopenharmony_ci The advantage of overloading the existing multisample GLX 1885bd8deadSopenharmony_ci attributes is that 3D toolkits (IRIS Performer, OpenGL++, OpenGL 1895bd8deadSopenharmony_ci Optimizer) and multisample apps themselves won't have to be 1905bd8deadSopenharmony_ci specially tweaked to try them out using the shared multisample 1915bd8deadSopenharmony_ci mode. 1925bd8deadSopenharmony_ci 1935bd8deadSopenharmony_ci * Can a single window system server be configured to advertise 1945bd8deadSopenharmony_ci an 8 sample shared multisample framebuffer configuration and an 1955bd8deadSopenharmony_ci 4 sample shared multisample framebuffer configuration? YES, 1965bd8deadSopenharmony_ci the extension would allow such a case to be advertised. 1975bd8deadSopenharmony_ci 1985bd8deadSopenharmony_ci The idea would be perhaps the 4 sample shared multisample 1995bd8deadSopenharmony_ci configuration could have a large width and height than the more 2005bd8deadSopenharmony_ci memory intensive 8 sample shared multisample configuration. 2015bd8deadSopenharmony_ci 2025bd8deadSopenharmony_ci * Both a GLX and GL extension? YES. The multisample subrectangle 2035bd8deadSopenharmony_ci dimensions can be advertised for X visuals before actually 2045bd8deadSopenharmony_ci creating an actual window. Also allows different numbers of 2055bd8deadSopenharmony_ci samples to be advertised (see above). 2065bd8deadSopenharmony_ci 2075bd8deadSopenharmony_ciNew Procedures and Functions 2085bd8deadSopenharmony_ci 2095bd8deadSopenharmony_ci void glMultisampleSubRectPosSGIS(GLint x, 2105bd8deadSopenharmony_ci GLint y); 2115bd8deadSopenharmony_ci 2125bd8deadSopenharmony_ciNew Tokens 2135bd8deadSopenharmony_ci 2145bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetBooleanv, GetDoublev, 2155bd8deadSopenharmony_ci GetIntegerv, and GetFloatv: 2165bd8deadSopenharmony_ci 2175bd8deadSopenharmony_ci MULTISAMPLE_SUB_RECT_POSITION_SGIS 2185bd8deadSopenharmony_ci MULTISAMPLE_SUB_RECT_DIMS_SGIS 2195bd8deadSopenharmony_ci 2205bd8deadSopenharmony_ci Accepted by the <attrib> parameter of glXGetConfig, and by the 2215bd8deadSopenharmony_ci <attrib_list> parameter of glXChooseVisual: 2225bd8deadSopenharmony_ci 2235bd8deadSopenharmony_ci GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 2245bd8deadSopenharmony_ci GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 2255bd8deadSopenharmony_ci 2265bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.1 Specification (OpenGL Operation) 2275bd8deadSopenharmony_ci 2285bd8deadSopenharmony_ci None 2295bd8deadSopenharmony_ci 2305bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.1 Specification (Rasterization) 2315bd8deadSopenharmony_ci 2325bd8deadSopenharmony_ci None 2335bd8deadSopenharmony_ci 2345bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations and 2355bd8deadSopenharmony_cithe Framebuffer) 2365bd8deadSopenharmony_ci 2375bd8deadSopenharmony_ci Section 4.1.1 (Pixel Ownership Test) is augmented as follows: 2385bd8deadSopenharmony_ci 2395bd8deadSopenharmony_ci 4.1.1.x "Scissoring to the Multisample Subrectangle" 2405bd8deadSopenharmony_ci 2415bd8deadSopenharmony_ci The value of MULTISAMPLE_SUB_RECT_DIMS_SGIS is an implementation 2425bd8deadSopenharmony_ci dependent constant, and is queried by calling GetIntegerv with 2435bd8deadSopenharmony_ci <pname> set to MULTISAMPLE_SUB_RECT_DIMS_SGIS. 2445bd8deadSopenharmony_ci MULTISAMPLE_SUB_RECT_DIMS_SGIS specifies the width and height of 2455bd8deadSopenharmony_ci the multisample subrectangle. Neither the 2465bd8deadSopenharmony_ci MULTISAMPLE_SUB_RECT_DIMS_SGIS width or height should be greater 2475bd8deadSopenharmony_ci than zero if SAMPLE_BUFFERS_SGIS is zero. 2485bd8deadSopenharmony_ci 2495bd8deadSopenharmony_ci If SAMPLE_BUFFERS_SGIS is one and the 2505bd8deadSopenharmony_ci MULTISAMPLE_SUB_RECT_DIMS_SGIS width and height are both greater 2515bd8deadSopenharmony_ci than zero, the pixel ownership test is augmented to also discard 2525bd8deadSopenharmony_ci fragments not within the multisample subrectangle. Otherwise, the 2535bd8deadSopenharmony_ci pixel ownership operates normally and irrespective of the 2545bd8deadSopenharmony_ci multisample subrectangle. 2555bd8deadSopenharmony_ci 2565bd8deadSopenharmony_ci The state of MULTISAMPLE_SUB_RECT_POSITION_SGIS is set by: 2575bd8deadSopenharmony_ci 2585bd8deadSopenharmony_ci void MultisampleSubRectPosSGIS(GLint x, 2595bd8deadSopenharmony_ci GLint y); 2605bd8deadSopenharmony_ci 2615bd8deadSopenharmony_ci If either MULTISAMPLE_SUB_RECT_DIMS_SGIS width or height is zero or 2625bd8deadSopenharmony_ci the GL is in color index mode, MultisampleSubRectPosSGIS generates 2635bd8deadSopenharmony_ci the error INVALID_OPERATION. 2645bd8deadSopenharmony_ci 2655bd8deadSopenharmony_ci When MultisampleSubRectPosSGIS is executed, the contents of the 2665bd8deadSopenharmony_ci multisample, depth, stencil, and accumulation buffers retained in 2675bd8deadSopenharmony_ci the multisample subrectangle (but not the contents of the resolved 2685bd8deadSopenharmony_ci color buffers) become undefined. Also when a GL client connects to 2695bd8deadSopenharmony_ci a different GL context, the multisample, depth, stencil and 2705bd8deadSopenharmony_ci accumulation buffer values for all pixels within the multisample 2715bd8deadSopenharmony_ci subrectangle (but not the resolved color buffers) become 2725bd8deadSopenharmony_ci undefined. 2735bd8deadSopenharmony_ci 2745bd8deadSopenharmony_ci The multisample subrectangle can be shared between multiple 2755bd8deadSopenharmony_ci framebuffers (windows). Whenever the multisample subrectangle 2765bd8deadSopenharmony_ci becomes undefined, the contents of the multisample, depth, stencil, 2775bd8deadSopenharmony_ci and accumulation buffers (but not the contents of the resolved 2785bd8deadSopenharmony_ci color buffers) for all GL framebuffers sharing the multisample 2795bd8deadSopenharmony_ci subrectangle state become undefined. When two or more GL clients 2805bd8deadSopenharmony_ci access (render or readback) concurrently framebuffers that share 2815bd8deadSopenharmony_ci the same multisample subrectangle (whether or not MULTISAMPLE_SGIS 2825bd8deadSopenharmony_ci is enabled), the rendering results for ALL buffers (including color 2835bd8deadSopenharmony_ci buffers) of all involved framebuffers are undefined. 2845bd8deadSopenharmony_ci 2855bd8deadSopenharmony_ci The origin of the multisample subrectangle is defined by 2865bd8deadSopenharmony_ci (msrx,msry) specified by MULTISAMPLE_SUB_RECT_POSITION_SGIS in 2875bd8deadSopenharmony_ci window coordinates. The extent of the multisample subrectangle is 2885bd8deadSopenharmony_ci defined by (msrwidth,msrheight) specified by 2895bd8deadSopenharmony_ci MULTISAMPLE_SUB_RECT_DIMS_SGIS in window coordinates. 2905bd8deadSopenharmony_ci 2915bd8deadSopenharmony_ci A fragment with window coordinates (xw,yw) is within the 2925bd8deadSopenharmony_ci multisample subrectangle if msrx <= xw < msrx + msrwidth and msry 2935bd8deadSopenharmony_ci <= yw < msry + msrheight. 2945bd8deadSopenharmony_ci 2955bd8deadSopenharmony_ci 4.2.4 "The Accumulation Buffer" 2965bd8deadSopenharmony_ci 2975bd8deadSopenharmony_ci Rewrite the sentence beginning "When the scissor test is enabled" 2985bd8deadSopenharmony_ci that describes what color buffer pixels are updated by a RETURN 2995bd8deadSopenharmony_ci Accum operation to read: 3005bd8deadSopenharmony_ci 3015bd8deadSopenharmony_ci If either of the MULTISAMPLE_SUB_RECT_DIMS_SGIS width or height is 3025bd8deadSopenharmony_ci zero, when the scissor test is enabled, then only those pixels 3035bd8deadSopenharmony_ci within the current scissor box are updated; otherwise, all pixels 3045bd8deadSopenharmony_ci in the window are updated. If the MULTISAMPLE_SUB_RECT_DIMS_SGIS 3055bd8deadSopenharmony_ci width and height are both greater than zero, only those pixels 3065bd8deadSopenharmony_ci within the current multisample subrectangle are updated; in 3075bd8deadSopenharmony_ci addition, if scissoring is enabled, the updated pixels are further 3085bd8deadSopenharmony_ci constrained to be within the scissor rectangle. 3095bd8deadSopenharmony_ci 3105bd8deadSopenharmony_ci 4.3.2 "Reading Pixels" 3115bd8deadSopenharmony_ci 3125bd8deadSopenharmony_ci In the subsection "Obtaining Pixels from the Framebuffer", follow 3135bd8deadSopenharmony_ci the sentence "Results are also undefined for individual pixels that 3145bd8deadSopenharmony_ci are not owned by the current context." with: For the purpose of 3155bd8deadSopenharmony_ci reading the color buffers (not depth and stencil though), the pixel 3165bd8deadSopenharmony_ci ownership test does not include scissoring against the multisample 3175bd8deadSopenharmony_ci subrectangle. 3185bd8deadSopenharmony_ci 3195bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.1 Specification (Special Functions) 3205bd8deadSopenharmony_ci 3215bd8deadSopenharmony_ci None 3225bd8deadSopenharmony_ci 3235bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.1 Specification (State and State Requests) 3245bd8deadSopenharmony_ci 3255bd8deadSopenharmony_ci None 3265bd8deadSopenharmony_ci 3275bd8deadSopenharmony_ciAdditions to the GLX Specification 3285bd8deadSopenharmony_ci 3295bd8deadSopenharmony_ci When called with <attribute> set to 3305bd8deadSopenharmony_ci GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGI or 3315bd8deadSopenharmony_ci GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS, glXGetConfig returns in 3325bd8deadSopenharmony_ci parameter <value> the respective multisample subrectangle width or 3335bd8deadSopenharmony_ci height of the specified visual. 3345bd8deadSopenharmony_ci 3355bd8deadSopenharmony_ci The GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGI and 3365bd8deadSopenharmony_ci GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS attributes of a visual or 3375bd8deadSopenharmony_ci framebuffer configuration determine the respective width and 3385bd8deadSopenharmony_ci height dimensions of MULTISAMPLE_SUB_RECT_DIMS_SGIS for 3395bd8deadSopenharmony_ci GLXDrawables created with the visual or framebuffer 3405bd8deadSopenharmony_ci configuration. 3415bd8deadSopenharmony_ci 3425bd8deadSopenharmony_ci glXChooseVisual accepts GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGI and 3435bd8deadSopenharmony_ci GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS in <attribList>, followed by 3445bd8deadSopenharmony_ci the respective desired (non-negative) width or height of the 3455bd8deadSopenharmony_ci multisample rectangle. The smallest width or height of at least 3465bd8deadSopenharmony_ci the specified size is preferred. If the desired value is zero, 3475bd8deadSopenharmony_ci visuals with zero multisample rectangle width or height are 3485bd8deadSopenharmony_ci preferred. 3495bd8deadSopenharmony_ci 3505bd8deadSopenharmony_ci Multisample GLXDrawables that reside on the same screen share the 3515bd8deadSopenharmony_ci same multisample subrectangle. There is at most one shared 3525bd8deadSopenharmony_ci multisample subrectangle per screen. 3535bd8deadSopenharmony_ci 3545bd8deadSopenharmony_ciGLX Protocol 3555bd8deadSopenharmony_ci 3565bd8deadSopenharmony_ci A new GL rendering command is added. The following command is sent 3575bd8deadSopenharmony_ci to the server as part of a glXRender request: 3585bd8deadSopenharmony_ci 3595bd8deadSopenharmony_ci MultisampleSubRectPosSGIS 3605bd8deadSopenharmony_ci 2 12 rendering command length 3615bd8deadSopenharmony_ci 2 ?? rendering command opcode 3625bd8deadSopenharmony_ci 4 INT32 x 3635bd8deadSopenharmony_ci 4 INT32 y 3645bd8deadSopenharmony_ci 3655bd8deadSopenharmony_ci Two new property type/property value pairs are included in the 3665bd8deadSopenharmony_ci property list of each visual returned by glXGetVisualConfigs 3675bd8deadSopenharmony_ci request. The property type/property value pairs are encoded as. 3685bd8deadSopenharmony_ci 3695bd8deadSopenharmony_ci 4 ENUM property type 3705bd8deadSopenharmony_ci 0x8026 GLX_MULTISAMPLE_SUB_RECT_WIDTH 3715bd8deadSopenharmony_ci 4 INT32 property value 3725bd8deadSopenharmony_ci 3735bd8deadSopenharmony_ci 4 ENUM property type 3745bd8deadSopenharmony_ci 0x8027 GLX_MULTISAMPLE_SUB_RECT_HEIGHT 3755bd8deadSopenharmony_ci 4 INT32 property value 3765bd8deadSopenharmony_ci 3775bd8deadSopenharmony_ciErrors 3785bd8deadSopenharmony_ci 3795bd8deadSopenharmony_ci None 3805bd8deadSopenharmony_ci 3815bd8deadSopenharmony_ciNew State 3825bd8deadSopenharmony_ci 3835bd8deadSopenharmony_ci Get Value Get Command Type Initial Value Attribute 3845bd8deadSopenharmony_ci --------- ----------- ----- ------------- --------- 3855bd8deadSopenharmony_ci MULTISAMPLE_SUB_RECT_POSITION_SGIS GetIntegerv 2 x Z 0,0 multisample 3865bd8deadSopenharmony_ci 3875bd8deadSopenharmony_ciNew Implementation Dependent State 3885bd8deadSopenharmony_ci 3895bd8deadSopenharmony_ci Get Value Get Command Type Minimum Value 3905bd8deadSopenharmony_ci --------- ----------- ----- ------------- 3915bd8deadSopenharmony_ci MULTISAMPLE_SUB_RECT_DIMS_SGIS GetIntegerv 2 x Z 0,0 3925bd8deadSopenharmony_ci 393