XXX - Not complete yet!!!

Name

    SGIX_async_pixel

Name Strings

    GL_SGIX_async_pixel

Version

    $Date: 1998/06/04 20:57:38 $ $Revision: 1.7 $

Number

    133

Dependencies

    SGIX_async is required.
    EXT_texture3D affects the definition of this extension
    SGIS_texture4D affects the definition of this extension

Overview

    This extension introduces a new asynchronous mode for texture
    download, pixel download and pixel readback commands.  It allows
    programs to transfer textures or images between the host and the
    graphics accelerator in parallel with the execution of other
    graphics commands (possibly taking advantage of a secondary path
    to the graphics accelerator).  It also allows programs to issue
    non-blocking pixel readback commands that return immediately after
    they are issued so that the program can issue other commands while
    the readback takes place.

New Procedures and Functions

    None

New Tokens

    Accepted by the <cap> parameter of Enable, Disable and IsEnabled,
    and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
    and GetDoublev:

        ASYNC_TEX_IMAGE_SGIX		0x835C
	ASYNC_DRAW_PIXELS_SGIX		0x835D
	ASYNC_READ_PIXELS_SGIX		0x835E

    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
    GetFloatv, and GetDoublev:

        MAX_ASYNC_TEX_IMAGE_SGIX	0x835F
        MAX_ASYNC_DRAW_PIXELS_SGIX	0x8360
        MAX_ASYNC_READ_PIXELS_SGIX	0x8361

Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)

    None

Additions to Chapter 3 of the 1.1 Specification (Rasterization)

    Add a section following 3.6.3 ("Rasterization of Pixel
    Rectangles") entitled "Asynchronous Pixel Downloads":

    Normally the DrawPixels command is synchronous: OpenGL executes a
    DrawPixels command in the order it is issued in the OpenGL command
    stream.  Calling Enable with the <cap> parameter set to
    ASYNC_DRAW_PIXELS_SGIX causes subsequent DrawPixels commands to be
    asynchronous as defined in the SGIX_async extension spec.  An
    asynchronous DrawPixels command samples the OpenGL state vector at
    the point in the OpenGL command stream where the command is
    issued, but the results of the command (e.g. updates to the frame
    buffer) do not happen until some unspecified time in the future.
    In particular, the order of the asynchronous command relative to
    other OpenGL commands issued later in the command stream is
    undefined.  An implementation may choose to execute asynchronous
    commands in parallel with the normal command stream or at some
    convenient time in the future.
    
    Calling Disable with the <cap> parameter set to
    ASYNC_DRAW_PIXELS_SGIX restores the default synchronous behavior
    for subsequent DrawPixels commands.  It does not affect any
    pending asynchronous DrawPixels commands, or wait for their
    completion.

    When an asynchronous DrawPixels command is issued, it is
    associated with the current value of ASYNC_MARKER_SGIX as
    described in the SGIX_async extension specification.  A program
    can determine if an asynchronous DrawPixels command has completed
    using the FinishAsyncSGIX or PollAsyncSGIX commands.

    Add a subsection to section 3.8 ("Texturing") entitled
    "Asynchronous Texture Downloads":

    Calling Enable with the <cap> parameter set to
    ASYNC_TEX_IMAGE_SGIX causes subsequent TexImage1D, TexSubImage1D,
    TexImage2D, TexSubImage2D, TexImage3DEXT, TexSubImage3DEXT,
    TexImage4DSGIS and TexSubImage4DSGIS commands to be asynchronous
    (similar to the asynchronous DrawPixels command described
    earlier).  Calling Disable with the <cap> parameter set to
    ASYNC_TEX_IMAGE_SGIX restores the default synchronous behavior for
    subsequent TexImage commands.

Additions to Chapter 4 of the 1.1 Specification (Fragments and the
Frame Buffer)

    Add to section 4.3.2 ("Reading Pixels"):

    Calling Enable with the <cap> parameter set to
    ASYNC_READ_PIXELS_SGIX causes subsequent ReadPixels commands to be
    asynchronous (similar to the asynchronous DrawPixels command
    described earlier).  An implementation of the asynchronous
    ReadPixels command may be non-blocking: It may return control to
    the program immediately rather than waiting for the command's
    results to be written into the destination rectangle in host
    memory.  The ReadPixels command samples the OpenGL state vector at
    the time it is issued, but it may be executed at some undefined
    point in the future.  In particular, if subsequent commands change
    the contents of the source rectangle in the framebuffer then the
    result of the ReadPixels is undefined.

    Calling Disable with the <cap> parameter set to
    ASYNC_READ_PIXELS_SGIX restores the default synchronous behavior
    for subsequent ReadPixels commands.

Additions to Chapter 5 of the 1.1 Specification (Special Functions)

    None

Additions to Chapter 6 of the 1.1 Specification (State and State Requests)

    None

Additions to the GLX Specification

    None

GLX Protocol

    None

Dependencies on SGIX_async

    This document adds three categories of asynchronous commands to
    the framework defined by SGIX_async.

Dependencies on EXT_texture3D

    If EXT_texture3D is not implemented then the references to
    TexImage3DEXT and TexSubImage3DEXT should be ignored.

Dependencies on SGIS_texture4D

    If SGIS_texture4D is not implemented then the references to
    TexImage4DSGIS and TexSubImage4DSGIS should be ignored.

Errors

    INVALID_OPERATION is generated if DrawPixels is called and
    ASYNC_DRAW_PIXELS_SGIX is enabled and the number of asynchronous
    DrawPixels commands that have been issued but not queried (using
    FinishAsyncSGIX or PollAsyncSGIX) exceeds MAX_ASYNC_DRAW_PIXELS_SGIX.

    INVALID_OPERATION is generated if TexImage1D, TexSubImage1D,
    TexImage2D, TexSubImage2D, TexImage3DEXT, TexSubImage3DEXT,
    TexImage4DSGIS or TexSubImage4DSGIS is called and
    ASYNC_TEX_IMAGE_SGIX is enabled and the number of asynchronous
    TexImage commands that have been issued but not queried (using
    FinishAsyncSGIX or PollAsyncSGIX) exceeds
    MAX_ASYNC_TEX_IMAGE_SGIX.

    INVALID_OPERATION is generated if ReadPixels is called and
    ASYNC_READ_PIXELS_SGIX is enabled and the number of asynchronous
    ReadPixels commands that have been issued but not queried (using
    FinishAsyncSGIX or PollAsyncSGIX) exceeds
    MAX_ASYNC_READ_PIXELS_SGIX.

New State

    Get Value			Get Command	Type	Value	Attrib
    ---------			-----------	----	-------	------
    ASYNC_TEX_IMAGE_SGIX        IsEnabled       B       False   enable
    ASYNC_DRAW_PIXELS_SGIX      IsEnabled       B       False   enable
    ASYNC_READ_PIXELS_SGIX      IsEnabled       B       False   enable

New Implementation Dependent State

								Minimum
    Get Value			Get Command	Type		Value
    ---------			-----------	----		-------
    MAX_ASYNC_TEX_IMAGE_SGIX    GetIntegerv     Z+              1
    MAX_ASYNC_DRAW_PIXELS_SGIX  GetIntegerv     Z+              1
    MAX_ASYNC_READ_PIXELS_SGIX  GetIntegerv     Z+              1
