Name

    EXT_histogram

Name Strings

    GL_EXT_histogram

Version

    $Date: 1996/04/05 19:17:02 $ $Revision: 1.24 $

Number

    11

Dependencies

    EXT_abgr affects the definition of this extension
    EXT_texture is required

Overview

    This extension defines pixel operations that count occurences of
    specific color component values (histogram) and that track the minimum
    and maximum color component values (minmax).  An optional mode allows
    pixel data to be discarded after the histogram and/or minmax operations
    are completed.  Otherwise the pixel data continue on to the next
    operation unaffected.

New Procedures and Functions

    void HistogramEXT(enum target,
                      sizei width,
                      enum internalformat,
                      boolean sink);

    void ResetHistogramEXT(enum target);

    void GetHistogramEXT(enum target,
                         boolean reset,
                         enum format,
                         enum type,
                         void* values);

    void GetHistogramParameterivEXT(enum target,
                                    enum pname,
                                    int* params);

    void GetHistogramParameterfvEXT(enum target,
                                    enum pname,
                                    float* params);

    void MinmaxEXT(enum target,
                   enum internalformat,
                   boolean sink);

    void ResetMinmaxEXT(enum target);

    void GetMinmaxEXT(enum target,
                      boolean reset,
                      enum format,
                      enum type,
                      void* values);

    void GetMinmaxParameterivEXT(enum target,
                                 enum pname,
                                 int* params);

    void GetMinmaxParameterfvEXT(enum target,
                                 enum pname,
                                 float* params);

New Tokens

    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by
    the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
    GetDoublev, and by the <target> parameter of HistogramEXT,
    ResetHistogramEXT, GetHistogramEXT, GetHistogramParameterivEXT, and
    GetHistogramParameterfvEXT:

        HISTOGRAM_EXT                       0x8024

    Accepted by the <target> parameter of HistogramEXT,
    GetHistogramParameterivEXT, and GetHistogramParameterfvEXT:

        PROXY_HISTOGRAM_EXT                 0x8025

    Accepted by the <pname> parameter of GetHistogramParameterivEXT and
    GetHistogramParameterfvEXT:

        HISTOGRAM_WIDTH_EXT                 0x8026
        HISTOGRAM_FORMAT_EXT                0x8027
        HISTOGRAM_RED_SIZE_EXT              0x8028
        HISTOGRAM_GREEN_SIZE_EXT            0x8029
        HISTOGRAM_BLUE_SIZE_EXT             0x802A
        HISTOGRAM_ALPHA_SIZE_EXT            0x802B
        HISTOGRAM_LUMINANCE_SIZE_EXT        0x802C
        HISTOGRAM_SINK_EXT                  0x802D

    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by
    the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
    GetDoublev, and by the <target> parameter of MinmaxEXT, ResetMinmaxEXT,
    GetMinmaxEXT, GetMinmaxParameterivEXT, and GetMinmaxParameterfvEXT:

        MINMAX_EXT                          0x802E

    Accepted by the <pname> parameter of GetMinmaxParameterivEXT and
    GetMinmaxParameterfvEXT:

        MINMAX_FORMAT_EXT                   0x802F
        MINMAX_SINK_EXT                     0x8030

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

    A new error token value, TABLE_TOO_LARGE_EXT, is defined and added to
    table 2.3:
                                                                           Offending
                                                                           command
        Error                   Description                                ignored?
        -----                   -----------                                ---------
        INVALID_ENUM            enum argument out of range                 Yes
        INVALID_VALUE           Numeric argument out of range              Yes
        INVALID_OPERATION       Operation illegal in current state         Yes
        STACK_OVERFLOW          Command would cause a stack overflow       Yes
        STACK_UNDERFLOW         Command would cause a stack underflow      Yes
        OUT_OF_MEMORY           Not enough memory left to execute command  Unknown
        TEXTURE_TOO_LARGE_EXT   The specified texture is too large         Yes
        TABLE_TOO_LARGE_EXT     The specified table is too large           Yes

        Table 2.3: Summary of GL errors

    and defined as follows:

        GL_TABLE_TOO_LARGE_EXT              0x8031


Additions to Chapter 3 of the 1.0 specification (Rasterization)

    The specification of histogram and minmax operators is added to
    the GL Specification in section 3.6.2, "Pixel Transfer Modes."  A
    histogram table is specified using the HistogramEXT command.  Its
    <target> parameter must be HISTOGRAM_EXT if a histogram table is
    to be specified.  (Optional target value PROXY_HISTOGRAM_EXT is
    described below.)  Its <width> parameter, which must be a power of
    2, specifies the number of entries in the histogram table, and its
    <internalformat> parameter specifies the format of each table
    entry.  <sink> specifies whether pixel groups will be consumed by
    the histogram operation (TRUE) or passed on to the minmax
    operation (FALSE).  The error INVALID_VALUE results if <width> is
    specified less than zero or is not a power of 2.  The error
    TABLE_TOO_LARGE_EXT results if the specified histogram table is
    too large for the implementation.  (See the PROXY discussion
    below.)  The error INVALID_ENUM results if <internalformat> is not
    one of the values accepted by the <components> parameter of
    TexImage2D (as defined by EXT_texture), except that values 1, 2,
    3, 4, INTENSITY_EXT, INTENSITY4_EXT, INTENSITY8_EXT,
    INTENSITY12_EXT, and INTENSITY16_EXT are not accepted.

    If no error results from the execution of HistogramEXT, the specified
    histogram table is redefined to have <width> entries, each with the
    specified internal format.  The entries are indexed zero through N-1,
    where N is the <width> of the table.  Each value in each entry is set
    to zero.  The values in the previous histogram table, if any, are lost.
    
    It is acceptable for an implementation to vary its allocation of
    internal component resolution based any HistogramEXT parameter, but the
    allocation must not be a function of any other factor, and cannot be
    changed once it is established.  In particular, allocations must be
    invariant -- the same allocation must be made each time a histogram is
    specified with the same parameter values.  Provision is made for an
    application to determine what component resolutions are available
    without having to fully specify the histogram (see below).

    A minmax table is specified using the MinmaxEXT command.  Its <target>
    parameter must be MINMAX_EXT.  <internalformat> may be any of the token
    values accepted by the <components> parameter of TexImage2D, except that
    1, 2, 3, 4, INTENSITY_EXT, INTENSITY4_EXT, INTENSITY8_EXT,
    INTENSITY12_EXT, and INTENSITY16_EXT are not accepted.  <sink> is set
    to TRUE or FALSE.  The resulting minmax table always has 2 entries,
    each with values corresponding only to the components of the internal
    format.

    The operations of the histogram and minmax are added to the GL
    Specification in section 3.6.3, "Rasterization of Pixel
    Rectangles, immediately following the subsection "Index Lookup",
    and immediately prior to the subsection "Final Conversion".
    Histogram and minmax operations are performed only for RGBA pixel
    groups, though these groups may have been specified as color
    indices and converted to RGBA by index table lookup.  Histogram
    and minmax are enabled and disabled by calling Enable or Disable
    with HISTOGRAM_EXT or MINMAX_EXT passed as the <cap> parameter.
    If HISTOGRAM_EXT is enabled and the width of the table is
    non-zero, and the pixel groups contain RGBA values, then indices
    Ri, Gi, Bi, and Ai are derived from the red, green, blue, and
    alpha components of each pixel group (without modifying these
    components) by clamping the components to [0,1], multiplying each
    by one less than the width of the histogram table, and rounding
    each to the nearest integer.  If the format of the HISTOGRAM_EXT
    table includes red or luminance, the red or luminance component of
    histogram entry Ri is incremented by one.  If the format of the
    HISTOGRAM_EXT table includes green, the green component of
    histogram entry Gi is incremented by one.  The blue and alpha
    components of histogram entries Bi and Ai are incremented in the
    same way.  If a histogram entry component is incremented beyond
    its maximum value, its value becomes undefined.  (This is not an
    error.)

    If MINMAX_EXT is enabled, and the pixel groups contain RGBA values, then
    the red, green, blue, and alpha components of each group are compared
    to the minimum and maximum values for each, which are stored in the
    2-element minmax table.  (The first element stores the minimum values,
    the second stores the maximum values.)  If the format of this table
    includes red or luminance, the red component value replaces the red or
    luminance value in the minimum table element if and only if it is less
    than that component.  Likewise, if the format includes red or luminance
    and the red component of the group is greater than the red or luminance
    value in the maximum element, the red group component replaces the red
    or luminance maximum component.  If the format of the table includes
    green, the green group component conditionally replaces the green
    minimum and/or maximum if it is smaller or larger, respectively.  The
    blue and alpha group components are similarly tested and replaced, if
    the table format includes blue and/or alpha.  The internal type of the
    minimum and maximum component values is floating point -- there are no
    semantics defined for the treatment of group component values that are
    outside the representable range of the minimum and maximum values.

    By default histogram and minmax operations have no effect on the stream
    of pixel groups being processed.  If HISTOGRAM_EXT is enabled and the
    histogram <sink> parameter was specified as TRUE, however, all RGBA
    pixel groups are discarded immediately after the histogram operation
    is completed.  Because histogram precedes minmax, no minmax operation
    is performed.  No pixel fragments are generated, no change is made to
    texture memory contents, and no pixel values are returned.  If
    MINMAX_EXT is enabled and the minmax <sink> parameter was specified
    as TRUE, all RGBA pixel groups are discarded immediately after the
    minmax operation is completed.  Because minmax follows histogram, a
    histogram operation with <sink> set to FALSE may precede such a minmax
    operation.  Again no pixel fragments are generated, no change is made
    to texture memory contents, and no pixel values are returned.

    The current contents of the histogram tables are queried using
    GetHistogramEXT.  <target> must be HISTOGRAM_EXT.  <format> must be one
    of RED, GREEN, BLUE, ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or
    LUMINANCE_ALPHA.  <type> must be UNSIGNED_BYTE, BYTE, UNSIGNED_SHORT,
    SHORT, UNSIGNED_INT, INT, or FLOAT.  A 1-dimensional image with the
    same width as the histogram is returned to <values>.  No pixel
    transfer operations are performed on this image, but pixel storage
    modes that are applicable to ReadPixels are performed.  Color
    components that are requested in the specified <format>, but which are
    not included in the internal format of the histogram, are returned as
    zero.  The assignments of internal color components to the components
    requested by <format> are

                internal component      resulting component
                ------------------      -------------------
                red                     red
                green                   green
                blue                    blue
                alpha                   alpha
                luminance               red
    
    <reset> is either TRUE or FALSE.  If TRUE, each component counter that
    is actually returned is reset to zero.  Counters that are not returned
    are not modified.  All counters of all elements of histogram <target>
    are reset to zero when ResetHistogramEXT is called.  <target> must be
    either HISTOGRAM_EXT.  It is not an error to reset or query the contents
    of a histogram table with zero entries.

    The current contents of the minmax tables are queried using
    GetMinmaxEXT.  <target> must be MINMAX_EXT.  <format> must be one
    of RED, GREEN, BLUE, ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or
    LUMINANCE_ALPHA.  <type> must be UNSIGNED_BYTE, BYTE,
    UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT.  A
    1-dimensional image with width of 2 is returned to values.  No
    pixel transfer operations are performed on this image, but pixel
    storage modes that are applicable to ReadPixels are
    performed. Color components that are requested in the specified
    <format>, but which are not included in the internal format of the
    minmax table, are returned as zero.  The assignment of internal
    color components to the components requested by <format> are the
    same as for histogram return.

    <reset> is either TRUE or FALSE.  If TRUE, each minimum value that is
    actually returned is reset to the maximum representable value, and each
    maximum value that is returned is reset to the minimum representable
    value.  Minimum and maximum values that are not returned are not
    modified.  All minimum and maximum values of minmax table <target> are
    reset to their maximum and minimum representable values, respectively,
    when ResetMinmaxEXT is called.  <target> must be MINMAX_EXT.

    Query support
    -------------

    Alternate sets of partial histogram state are defined for the
    proxy histogram PROXY_HISTOGRAM_EXT.  Specifically,
    HISTOGRAM_WIDTH_EXT, HISTOGRAM_FORMAT, HISTOGRAM_RED_SIZE_EXT,
    HISTOGRAM_GREEN_SIZE_EXT, HISTOGRAM_BLUE_SIZE_EXT,
    HISTOGRAM_ALPHA_SIZE_EXT, and HISTOGRAM_LUMINANCE_SIZE_EXT are
    maintained for the proxy histogram.  When HistogramEXT is called
    with <target> set to PROXY_HISTOGRAM_EXT, these proxy state values
    are always recomputed and updated, even if the histogram is too
    large to actually be used.  If the histogram is too large, all of
    these state variables are set to zero.  If the histogram could be
    accommodated by Histogram called with <target> HISTOGRAM_EXT,
    these values are set as though HISTOGRAM_EXT were being defined.
    All of these state values can be queried with
    GetHistogramParameterivEXT or GetHistogramParameterfvEXT with
    <target> set to PROXY_HISTOGRAM_EXT.  Calling HistogramEXT with
    <target> PROXY_HISTOGRAM_EXT has no effect on the actual
    histogram.

    There is no image associated with PROXY_HISTOGRAM_EXT.  Therefore
    PROXY_HISTOGRAM_EXT cannot be used as a histogram, and its image must
    never be queried using GetHistogramEXT.  (The error INVALID_ENUM
    results if this is attempted.)

Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
and the Framebuffer)

    The operation of histogram and minmax during pixel copy and query
    operations is identical to the operation during pixel drawing and
    texture image definition.

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

    HistogramEXT with a proxy target, GetHistogramEXT,
    GetHistogramParameterivEXT, GetHistogramParameterfvEXT, GetMinmaxEXT,
    GetMinmaxParameterivEXT, and GetMinmaxParameterfvEXT are not included in
    display lists -- they are executed immediately when called.

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

    Integer and floating point query functions GetHistogramParameterivEXT
    and GetHistogramParameterfvEXT are provided.  <target> must be
    HISTOGRAM_EXT or PROXY_HISTOGRAM_EXT.  <pname> is one of
    HISTOGRAM_FORMAT_EXT, HISTOGRAM_WIDTH_EXT, HISTOGRAM_RED_SIZE_EXT,
    HISTOGRAM_GREEN_SIZE_EXT, HISTOGRAM_BLUE_SIZE_EXT,
    HISTOGRAM_ALPHA_SIZE_EXT, HISTOGRAM_LUMINANCE_SIZE_EXT,
    or HISTOGRAM_SINK_EXT.  The value of the specified parameter is
    returned in <params>.

    Integer and floating point query functions GetMinmaxParameterivEXT and
    GetMinmaxParameterfvEXT are provided.  <target> must be MINMAX_EXT.
    <pname> is MINMAX_FORMAT_EXT or MINMAX_SINK_EXT.  The value of the
    specified parameter is returned in <params>.

Additions to the GLX Specification

    None

GLX Protocol

    Ten new GL commands are added.

    The following four rendering commands are sent to the server as
    part of a glXRender request:

        HistogramEXT
            2           20              rendering command length
            2           4110            rendering command opcode
            4           ENUM            target
            4           INT32           width
            4           ENUM            internalformat
            1           BOOL            sink
            3                           unused

        ResetHistogramEXT
            2           8               rendering command length
            2           4112            rendering command opcode
            4           ENUM            target

        MinmaxEXT
            2           16              rendering command length
            2           4111            rendering command opcode
            4           ENUM            target
            4           ENUM            internalformat
            1           BOOL            sink
            3                           unused

        ResetMinmaxEXT
            2           8               rendering command length
            2           4113            rendering command opcode
            4           ENUM            target


    The remaining commands are non-rendering commands. These commands
    are sent separately (i.e., not as part of a glXRender or
    glXRenderLarge request), using the glXVendorPrivateWithReply
    request:

        GetHistogramEXT
            1           CARD8           opcode (X assigned)
            1           17              GLX opcode (glXVendorPrivateWithReply)
            2           7               request length
            4           5               vendor specific opcode
            4           GLX_CONTEXT_TAG context tag
            4           ENUM            target
            4           ENUM            format
            4           ENUM            type
            1           BOOL            swap_bytes
            1           BOOL            reset
            2                           unused
          =>
            1           1               reply
            1                           unused
            2           CARD16          sequence number
            4           n               reply length
            24                          unused
            4*n         LISTofBYTE      pixels

        If <format> or <type> is not valid then the command is
        erroneous and n=0. The structure of <pixels> is described in
        Appendix A of the GLX Protocol Specification, "Pixel Data",
        using the parameters <swap_bytes>, <format>, and <type>. No
        extra padding is needed after <pixels> because the image
        format already pads to 32 bits.


        GetHistogramParameterfvEXT
            1           CARD8           opcode (X assigned)
            1           17              GLX opcode (glXVendorPrivateWithReply)
            2           5               request length
            4           6               vendor specific opcode
            4           GLX_CONTEXT_TAG context tag
            4           ENUM            target
            4           ENUM            pname
          =>
            1           1               reply
            1                           unused
            2           CARD16          sequence number
            4           m               reply length, m = (n==1 ? 0 : n)
            4                           unused
            4           CARD32          n

            if (n=1) this follows:

            4           INT32           params
            12                          unused

            otherwise this follows:

            16                          unused
            n*4         LISTofINT32     params

        Note that n may be zero, indicating that a GL error
        occurred. Also, n>1, is for future extensibility.


        GetHistogramParameterivEXT
            1           CARD8           opcode (X assigned)
            1           17              GLX opcode (glXVendorPrivateWithReply)
            2           5               request length
            4           7               vendor specific opcode
            4           GLX_CONTEXT_TAG context tag
            4           ENUM            target
            4           ENUM            pname
          =>
            1           1               reply
            1                           unused
            2           CARD16          sequence number
            4           m               reply length, m = (n==1 ? 0 : n)
            4                           unused
            4           CARD32          n

            if (n=1) this follows:

            4           INT32           params
            12                          unused

            otherwise this follows:

            16                          unused
            n*4         LISTofINT32     params

        Note that n may be zero, indicating that a GL error
        occurred. Also, n>1, is for future extensibility.


        GetMinmaxEXT
            1           CARD8           opcode (X assigned)
            1           17              GLX opcode (glXVendorPrivateWithReply)
            2           7               request length
            4           8               vendor specific opcode
            4           GLX_CONTEXT_TAG context tag
            4           ENUM            target
            4           ENUM            format
            4           ENUM            type
            1           BOOL            swap_bytes
            1           BOOL            reset
            2                           unused
          =>
            1           1               reply
            1                           unused
            2           CARD16          sequence number
            4           n               reply length
            24                          unused
            4*n         LISTofBYTE      pixels

        If <format> or <type> is not valid then the command is
        erroneous and n=0. The structure of <pixels> is described in
        Appendix A of the GLX Protocol Specification, "Pixel Data",
        using the parameters <swap_bytes>, <format>, and <type>. No
        extra padding is needed after <pixels> because the image
        format already pads to 32 bits.


        GetMinmaxParameterfvEXT
            1           CARD8           opcode (X assigned)
            1           17              GLX opcode (glXVendorPrivateWithReply)
            2           5               request length
            4           9               vendor specific opcode
            4           GLX_CONTEXT_TAG context tag
            4           ENUM            target
            4           ENUM            pname
          =>
            1           1               reply
            1                           unused
            2           CARD16          sequence number
            4           m               reply length, m = (n==1 ? 0 : n)
            4                           unused
            4           CARD32          n

            if (n=1) this follows:

            4           INT32           params
            12                          unused

            otherwise this follows:

            16                          unused
            n*4         LISTofINT32     params

        Note that n may be zero, indicating that a GL error
        occurred. Also, n>1, is for future extensibility.


        GetMinmaxParameterivEXT
            1           CARD8           opcode (X assigned)
            1           17              GLX opcode (glXVendorPrivateWithReply)
            2           5               request length
            4           10              vendor specific opcode
            4           GLX_CONTEXT_TAG context tag
            4           ENUM            target
            4           ENUM            pname
          =>
            1           1               reply
            1                           unused
            2           CARD16          sequence number
            4           m               reply length, m = (n==1 ? 0 : n)
            4                           unused
            4           CARD32          n

            if (n=1) this follows:

            4           INT32           params
            12                          unused

            otherwise this follows:

            16                          unused
            n*4         LISTofINT32     params


        Note that n may be zero, indicating that a GL error
        occurred. Also, n>1, is for future extensibility.

Dependencies on EXT_abgr

    If EXT_abgr is supported, the <format> parameters of GetHistogramEXT
    and GetMinmaxEXT accept ABGR_EXT.  Otherwise they do not.

Dependencies on EXT_texture

    EXT_texture is required.  This extension builds on the notion of
    internal image format, which is defined by EXT_texture.

Errors

    INVALID_ENUM is generated if HistogramEXT parameter <target> is not
    HISTOGRAM_EXT or PROXY_HISTOGRAM_EXT.

    INVALID_VALUE is generated if HistogramEXT parameter <width> is less
    than zero or is not a power of 2.

    INVALID_ENUM is generated if HistogramEXT parameter <internalformat> is
    not ALPHA, RGB, RGBA, LUMINANCE, LUMINANCE_ALPHA, or one of the tokens
    defined by the EXT_texture extension.  (Values 1, 2, 3, and 4 are not
    accepted as internal formats by HistogramEXT).

    TABLE_TOO_LARGE_EXT is generated if HistogramEXT is called with
    parameter <target> of HISTOGRAM_EXT and the histogram as specified is
    too large for the implementation.

    INVALID_ENUM is generated if ResetHistogramEXT parameter <target> is
    not HISTOGRAM_EXT.

    INVALID_ENUM is generated if GetHistogramEXT parameter <target> is not
    HISTOGRAM_EXT.

    INVALID_ENUM is generated if GetHistogramEXT parameter <format> is not
    RED, GREEN, BLUE, ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or
    LUMINANCE_ALPHA.

    INVALID_ENUM is generated if GetHistogramEXT parameter <type> is not
    UNSIGNED_BYTE, BYTE, UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT.

    INVALID_ENUM is generated if GetHistogramParameterivEXT or
    GetHistogramParameterfvEXT parameter <target> is not HISTOGRAM_EXT or
    PROXY_HISTOGRAM_EXT.

    INVALID_ENUM is generated if GetHistogramParameterivEXT or
    GetHistogramParameterfvEXT parameter <pname> is not
    HISTOGRAM_FORMAT_EXT, HISTOGRAM_WIDTH_EXT, HISTOGRAM_RED_SIZE_EXT,
    HISTOGRAM_GREEN_SIZE_EXT, HISTOGRAM_BLUE_SIZE_EXT,
    HISTOGRAM_ALPHA_SIZE_EXT, HISTOGRAM_LUMINANCE_SIZE_EXT, or
    HISTOGRAM_SINK_EXT.  INVALID_ENUM is also generated if
    GetHistogramParameterivEXT or GetHistogramParameterfvEXT parameter
    <target> specifies the proxy histogram and <pname> specifies a
    piece of state which is not maintained for the proxy histogram.

    INVALID_OPERATION is generated if HistogramEXT, ResetHistogramEXT,
    GetHistogramEXT, GetHistogramParameterivEXT, or
    GetHistogramParameterfvEXT is called between execution of Begin and the
    corresponding execution of End.

    INVALID_ENUM is generated if MinmaxEXT parameter <target> is not
    MINMAX_EXT.

    INVALID_ENUM is generated if MinmaxEXT parameter <internalformat> is
    not ALPHA, RGB, RGBA, LUMINANCE, LUMINANCE_ALPHA, or one of the tokens
    defined by the EXT_texture extension.  (Values 1, 2, 3, and 4 are not
    accepted as internal formats by MinmaxEXT).

    INVALID_ENUM is generated if ResetMinmaxEXT parameter <target> is not
    MINMAX_EXT.

    INVALID_ENUM is generated if GetMinmaxEXT parameter <target> is not
    MINMAX_EXT.

    INVALID_ENUM is generated if GetMinmaxEXT parameter <format> is not
    RED, GREEN, BLUE, ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or
    LUMINANCE_ALPHA.

    INVALID_ENUM is generated if GetMinmaxEXT parameter <type> is not
    UNSIGNED_BYTE, BYTE, UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT.

    INVALID_ENUM is generated if GetMinmaxParameterivEXT or
    GetMinmaxParameterfvEXT parameter <target> is not MINMAX_EXT.

    INVALID_ENUM is generated if GetMinmaxParameterivEXT or
    GetMinmaxParameterfvEXT parameter <pname> is not MINMAX_FORMAT_EXT or
    MINMAX_SINK_EXT.

    INVALID_OPERATION is generated if MinmaxEXT, ResetMinmaxEXT,
    GetMinmaxEXT, GetMinmaxParameterivEXT, or GetMinmaxParameterfvEXT is
    called between execution of Begin and the corresponding execution of End.

New State

    Get Value                       Get Command                 Type    Initial Value           Attribute
    ---------                       -----------                 ----    -------------           ---------
    HISTOGRAM_EXT                   IsEnabled                   B       False                   pixel/enable
    HISTOGRAM                       GetHistogramEXT             I       empty                       -
    HISTOGRAM_WIDTH_EXT             GetHistogramParameterivEXT  Z+      0                           -
    HISTOGRAM_FORMAT_EXT            GetHistogramParameterivEXT  Z33     RGBA                        -
    HISTOGRAM_RED_SIZE_EXT          GetHistogramParameterivEXT  Z+      0                           -
    HISTOGRAM_GREEN_SIZE_EXT        GetHistogramParameterivEXT  Z+      0                           -
    HISTOGRAM_BLUE_SIZE_EXT         GetHistogramParameterivEXT  Z+      0                           -
    HISTOGRAM_ALPHA_SIZE_EXT        GetHistogramParameterivEXT  Z+      0                           -
    HISTOGRAM_LUMINANCE_SIZE_EXT    GetHistogramParameterivEXT  Z+      0                           -
    HISTOGRAM_SINK_EXT              GetHistogramParameterivEXT  B       False                       -

    MINMAX_EXT                      IsEnabled                   B       False                   pixel/enable
    MINMAX                          GetMinmaxEXT                Rn      (M,M,M,M),(m,m,m,m)         -
    MINMAX_FORMAT_EXT               GetMinmaxParameterivEXT     Z33     RGBA                        -
    MINMAX_SINK_EXT                 GetMinmaxParameterivEXT     B       False                       -

    Note, M and m are the maximum and minimum representable values of the
    minmax components.

New Implementation Dependent State

    None
