XXX - Not complete yet!!!

Name

    SGIX_async_histogram

Name Strings

    GL_SGIX_async_histogram

Version

    $Date: 1998/02/11 23:24:25 $ $Revision: 1.3 $

Number

    134

Dependencies

    SGIX_async is required.
    EXT_histogram is required.

Overview

    This extension introduces a new asynchronous mode for histogram
    and minmax readbacks.  It allows programs to get the contents of a
    histogram or minmax table without blocking and to continue issuing
    graphics commands during the readback.

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_HISTOGRAM_SGIX		0x832C

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

        MAX_ASYNC_HISTOGRAM_SGIX        0x832D

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

    None

Additions to Chapter 3 of the 1.1 Specification (Rasterization)

    Add the following to the end of the specification of histogram and
    minmax operators in section 3.6.4 ("Pixel Transfer Operations"):

    Calling Enable with the <cap> parameter set to
    ASYNC_HISTOGRAM_SGIX causes subsequent GetHistogramEXT and
    GetMinmaxEXT commands to be asynchronous (similar to the
    asynchronous DrawPixels command described earlier).  An
    implementation of these asynchronous commands may be non-blocking:
    It may return control to the program immediately rather than
    waiting for an asynchronous query command's results to be written
    into host memory.  Asynchronous histogram and minmax readback
    commands sample the OpenGL state vector at the time they are
    issued, but they may be executed at some undefined point in the
    future.  In particular, if subsequent commands change the contents
    of the histogram or minmax table then the result of the query is
    undefined.

    Calling Disable with the <cap> parameter set to
    ASYNC_HISTOGRAM_SGIX restores the default synchronous behavior.
    
Additions to Chapter 4 of the 1.1 Specification (Fragments and the
Frame Buffer)

    None
    
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 a new category of asynchronous commands to
    the framework defined by SGIX_async.

Dependencies on EXT_histogram
    
    This document changes the semantics of the query commands defined
    by EXT_histogram.

Errors

    INVALID_OPERATION is generated if GetHistogramEXT or GetMinmaxEXT
    is called and ASYNC_HISTOGRAM_SGIX is enabled and the number of
    asynchronous histogram or minmax readback commands that have been
    issued but not queried (using FinishAsyncSGIX or PollAsyncSGIX)
    exceeds MAX_ASYNC_HISTOGRAM_SGIX.

New State

    Get Value			Get Command	Type	Value	Attrib
    ---------			-----------	----	-------	------
    ASYNC_HISTOGRAM_SGIX        IsEnabled       B       False   enable

New Implementation Dependent State

								Minimum
    Get Value			Get Command	Type		Value
    ---------			-----------	----		-------
    MAX_ASYNC_HISTOGRAM_SGIX    GetIntegerv     Z+              1
