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