15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_scene_marker
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_EXT_scene_marker
85bd8deadSopenharmony_ci    GLX_EXT_scene_marker
95bd8deadSopenharmony_ci
105bd8deadSopenharmony_ciVersion
115bd8deadSopenharmony_ci
125bd8deadSopenharmony_ci    $Date: 1997/09/08 21:31:59 $ $Revision: 1.4 $
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciNumber
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    120
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ciDependencies
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ci    OpenGL 1.1 is required.
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ciOverview
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ci    This extension provides BeginScene/EndScene markers to allow buffering
255bd8deadSopenharmony_ci    and sorting of the OpenGL command sequence needed to construct and
265bd8deadSopenharmony_ci    entire frame. Scene markers are useful for region (aka tile) rendering
275bd8deadSopenharmony_ci    architectures, in which all of the geometry for a region a window must
285bd8deadSopenharmony_ci    be known before any can be rasterized. It may also be applicable to
295bd8deadSopenharmony_ci    other architectures requiring a scene database, such as scanline depth
305bd8deadSopenharmony_ci    buffers.
315bd8deadSopenharmony_ci
325bd8deadSopenharmony_ciIssues
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ci    *  Region architectures usually generate only a color buffer. Depth,
355bd8deadSopenharmony_ci       stencil, and other ancillary buffers, if they exist, are instantiated
365bd8deadSopenharmony_ci       only for the screen region being rasterized at any given time, and
375bd8deadSopenharmony_ci       are not retained after all geometry for that region has been
385bd8deadSopenharmony_ci       processed. As a consequence, ancillary buffers are usually
395bd8deadSopenharmony_ci       inaccessible via Read/Copy/Draw operations. Implementations may
405bd8deadSopenharmony_ci       choose to relax this restriction.
415bd8deadSopenharmony_ci
425bd8deadSopenharmony_ci    *  State changes affecting primitives are buffered and may need to be
435bd8deadSopenharmony_ci       processed for every screen region. This makes "large" state changes,
445bd8deadSopenharmony_ci       such as DrawPixels or TexImage2D, likely to be prohibitively
455bd8deadSopenharmony_ci       expensive within a scene.
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    *  State queries within a scene may also be very expensive, if they are
485bd8deadSopenharmony_ci       deferred to hardware which normally would not process them until
495bd8deadSopenharmony_ci       EndSceneEXT. As with large state changes, it seems preferable to
505bd8deadSopenharmony_ci       allow state queries within a scene, but document that they may be
515bd8deadSopenharmony_ci       costly.
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ci    *  Initial buffer state after BeginSceneEXT is undefined, forcing the
545bd8deadSopenharmony_ci       application to overwrite all pixels. This implies that multiple
555bd8deadSopenharmony_ci       scenes may not be merged into a single visible frame without software
565bd8deadSopenharmony_ci       intervention to read back and combine scenes.
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ci    *  SCENE_REQUIRED_EXT is a property of the visual or pixel format,
595bd8deadSopenharmony_ci       rather than an Enable. Making it an Enable would probably force a
605bd8deadSopenharmony_ci       switch between hardware and software paths.
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ci    *  2D (X or GDI or Quickdraw) rendering is probably only allowed after
635bd8deadSopenharmony_ci       EndSceneEXT, to prevent synchronization issues. It's unclear how to
645bd8deadSopenharmony_ci       phrase this in the spec, however.
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ci    *  Reads and copies between BeginSceneEXT and EndSceneEXT are made
675bd8deadSopenharmony_ci       illegal, since there are many sensible interpretations of what the
685bd8deadSopenharmony_ci       buffer contents might be during this period.
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ci    *  Add mechanism to allow out-of-order rendering, etc.
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ci        No.
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ciNew Procedures and Functions
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci    void BeginSceneEXT(void);
775bd8deadSopenharmony_ci    void EndSceneEXT(void);
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ciNew Tokens
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci    Accepted by the <attribList> parameter of glXChooseVisual, and by the
825bd8deadSopenharmony_ci    <attrib> parameter of glXGetConfig:
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ci        GLX_SCENE_REQUIRED_EXT
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ci    Accepted by the <pname> parameters of GetBooleanv, GetIntegerv,
875bd8deadSopenharmony_ci    GetFloatv, and GetDoublev:
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ci        SCENE_REQUIRED_EXT
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ci    None
945bd8deadSopenharmony_ci
955bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.1 Specification (Rasterization)
965bd8deadSopenharmony_ci
975bd8deadSopenharmony_ci    None
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
1005bd8deadSopenharmony_ciand the Frame buffer)
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.1 Specification (Special Functions)
1035bd8deadSopenharmony_ci
1045bd8deadSopenharmony_ci    <Insert before Section 5.6 Hints>
1055bd8deadSopenharmony_ci
1065bd8deadSopenharmony_ci    5.5.5 Scene Markers
1075bd8deadSopenharmony_ci
1085bd8deadSopenharmony_ci    Some OpenGL implementations may benefit from having delimiters which
1095bd8deadSopenharmony_ci    mark the start and end of a command sequence which draws an entire
1105bd8deadSopenharmony_ci    scene. These implementations may process commands in such a way that it
1115bd8deadSopenharmony_ci    is impractical to allow certain commands such as reading the color
1125bd8deadSopenharmony_ci    buffer to occur during the course of rendering the scene. When
1135bd8deadSopenharmony_ci    SCENE_REQUIRED_EXT is TRUE, OpenGL command processing is modified as
1145bd8deadSopenharmony_ci    follows:
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ci    A scene is started by issuing the command BeginSceneEXT; the contents of
1175bd8deadSopenharmony_ci    the selected color, stencil, and depth buffers are undefined after
1185bd8deadSopenharmony_ci    BeginSceneEXT. A scene is marked complete by issuing the command
1195bd8deadSopenharmony_ci    EndSceneEXT. BeginSceneEXT and EndSceneEXT must be matched and do not
1205bd8deadSopenharmony_ci    nest.
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci    When issued between BeginSceneEXT and the corresponding EndSceneEXT, the
1235bd8deadSopenharmony_ci    commands ReadPixels, CopyPixels, CopyTexImage, CopyTexSubImage,
1245bd8deadSopenharmony_ci    DrawBuffer, Accum, Flush, and Finish generate an INVALID_OPERATION
1255bd8deadSopenharmony_ci    error.
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ci    A ReadPixels or CopyPixels call requesting stencil, alpha, or depth
1285bd8deadSopenharmony_ci    values may generate an INVALID_OPERATION error if the implementation
1295bd8deadSopenharmony_ci    does not store those buffers in a form visible to the application.
1305bd8deadSopenharmony_ci
1315bd8deadSopenharmony_ci    When outside of a BeginSceneEXT/EndSceneEXT sequence, the fragments
1325bd8deadSopenharmony_ci    generated from the command DrawPixels and from geometry issued during a
1335bd8deadSopenharmony_ci    Begin/End sequence have an undefined effect on the color and ancillary
1345bd8deadSopenharmony_ci    buffers, but their changes to OpenGL state are processed as normal. All
1355bd8deadSopenharmony_ci    other commands are unaffected.
1365bd8deadSopenharmony_ci
1375bd8deadSopenharmony_ci    When SCENE_REQUIRED_EXT is FALSE, BeginSceneEXT and EndSceneEXT have no
1385bd8deadSopenharmony_ci    effect, and none of the restrictions above are in force.
1395bd8deadSopenharmony_ci
1405bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.1 Specification (State and State Requests)
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ci    None
1435bd8deadSopenharmony_ci
1445bd8deadSopenharmony_ciAdditions to the GLX Specification
1455bd8deadSopenharmony_ci
1465bd8deadSopenharmony_ci    The parameter GLX_SCENE_REQUIRED_EXT is added to glXGetConfig. When
1475bd8deadSopenharmony_ci    queried, by calling glXGetConfig with <attrib> set to
1485bd8deadSopenharmony_ci    GLX_SCENE_REQUIRED_EXT, it returns True if the visual requires scene
1495bd8deadSopenharmony_ci    markers. For a normal visual, the return value is False.
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ci    glXChooseVisual accepts GLX_SCENE_REQUIRED_EXT in <attribList>. Visuals
1525bd8deadSopenharmony_ci    that require scene markers are preferred.
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ciGLX Protocol
1555bd8deadSopenharmony_ci
1565bd8deadSopenharmony_ci    XXX - not done yet
1575bd8deadSopenharmony_ci
1585bd8deadSopenharmony_ciAdditions to WGL
1595bd8deadSopenharmony_ci
1605bd8deadSopenharmony_ci    The flag PFD_SCENE_REQUIRED_EXT is added to ChoosePixelFormat, to allow
1615bd8deadSopenharmony_ci    selecting a pixel format which requires scene markers.
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci    XXX - not done yet (no extension query mechanism for WGL at present).
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ciErrors
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ci    INVALID_OPERATION if BeginSceneEXT or EndSceneEXT is issued between
1685bd8deadSopenharmony_ci    execution of Begin and the corresponding execution of End.
1695bd8deadSopenharmony_ci
1705bd8deadSopenharmony_ci    INVALID_OPERATION if BeginSceneEXT is issued between execution of
1715bd8deadSopenharmony_ci    BeginSceneEXT and the corresponding execution of EndSceneEXT or
1725bd8deadSopenharmony_ci    EndSceneEXT is issued when no BeginSceneEXT preceded it.
1735bd8deadSopenharmony_ci
1745bd8deadSopenharmony_ci    INVALID_OPERATION if ReadPixels, CopyPixels, CopyTexImage,
1755bd8deadSopenharmony_ci    CopyTexSubImage, DrawBuffer, Accum, Flush, or Finish is issued between
1765bd8deadSopenharmony_ci    execution of BeginSceneEXT and the corresponding execution of
1775bd8deadSopenharmony_ci    EndSceneEXT.
1785bd8deadSopenharmony_ci
1795bd8deadSopenharmony_ci    INVALID_OPERATION if ReadPixels or CopyPixels is issued requesting
1805bd8deadSopenharmony_ci    alpha, stencil, or depth components, and the implementation does not
1815bd8deadSopenharmony_ci    store those buffers in a form visible to the application.
1825bd8deadSopenharmony_ci
1835bd8deadSopenharmony_ciNew State
1845bd8deadSopenharmony_ci
1855bd8deadSopenharmony_ci    Get Value           Get Command     Type    Initial Value   Attribute
1865bd8deadSopenharmony_ci    ---------           -----------     ----    -------------   ---------
1875bd8deadSopenharmony_ci    SCENE_REQUIRED_EXT  GetBooleanv     B       -               -
1885bd8deadSopenharmony_ci
1895bd8deadSopenharmony_ciNew Implementation Dependent State
1905bd8deadSopenharmony_ci
1915bd8deadSopenharmony_ci    None
1925bd8deadSopenharmony_ci
1935bd8deadSopenharmony_ciRevision History
1945bd8deadSopenharmony_ci
1955bd8deadSopenharmony_ciChanges due to IHV feedback, revision 1.3, September 2, 1997 (ljp)
1965bd8deadSopenharmony_ci
1975bd8deadSopenharmony_ci    Made scene_marker a property of the visual or pixel format, rather than
1985bd8deadSopenharmony_ci    an enable. Made DrawBuffer within a scene, or ReadPixels/CopyPixels of
1995bd8deadSopenharmony_ci    depth or stencil, illegal.
200