15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    SGIX_decimation
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_SGIX_decimation
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciVersion
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    $Date: 1997/07/18 00:49:00 $ $Revision: 1.4 $
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciNumber
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    125
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ciDependencies
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ci    EXT_convolution affects the definition of this extension
205bd8deadSopenharmony_ci    SGI_color_table affects the definition of this extension
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ciOverview
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ci    This extension adds a decimation operation to the pixel transfer
255bd8deadSopenharmony_ci    path.  
265bd8deadSopenharmony_ci
275bd8deadSopenharmony_ci    Decimation occurs after convolution and prior to the post-convolution
285bd8deadSopenharmony_ci    color table.
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ci    The operation is controlled by two positive integer parameters, stepx
315bd8deadSopenharmony_ci    and stepy, that specify the decimation step size in the x and y
325bd8deadSopenharmony_ci    directions, respectively.  During a pixel transfer, the decimation
335bd8deadSopenharmony_ci    operation passes only those pixels which are at a position (i*stepx,
345bd8deadSopenharmony_ci    j*stepy), for integers (i, j), relative to the bottom left corner of
355bd8deadSopenharmony_ci    the image that is being transferred.  All other pixels are discarded. 
365bd8deadSopenharmony_ci    Decimation is applied to the image that results from convolution,
375bd8deadSopenharmony_ci    which may differ in size from the source image if convolution is
385bd8deadSopenharmony_ci    enabled.
395bd8deadSopenharmony_ci
405bd8deadSopenharmony_ci    By default, stepx and stepy are both 1.
415bd8deadSopenharmony_ci
425bd8deadSopenharmony_ciIssues
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ci    * This spec allows for future extension to 3D decimation.
455bd8deadSopenharmony_ci    
465bd8deadSopenharmony_ci    * What is a reasonable minimum maximum decimation step that we should
475bd8deadSopenharmony_ci      enforce?  Two is probably sufficient.
485bd8deadSopenharmony_ci      
495bd8deadSopenharmony_ci    * Future extensions that redefine the convolution operation at the border
505bd8deadSopenharmony_ci      of an image may affect this specification.
515bd8deadSopenharmony_ci    
525bd8deadSopenharmony_ci    * Decimation doesn't apply to bitmaps because they are not affected
535bd8deadSopenharmony_ci      by the PixelTransfer state.  This is probably best.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    * Decimation is related to interlacing, as defined in the
565bd8deadSopenharmony_ci      SGIX_interlace extension.  In fact, it provides the inverse of
575bd8deadSopenharmony_ci      interlacing.  It appears useful to be able to enable decimation and
585bd8deadSopenharmony_ci      interlacing on the same transfer.  Interactions between these
595bd8deadSopenharmony_ci      two extensions should be examined further.
605bd8deadSopenharmony_ci
615bd8deadSopenharmony_ciNew Procedures and Functions
625bd8deadSopenharmony_ci
635bd8deadSopenharmony_ci    None
645bd8deadSopenharmony_ci    
655bd8deadSopenharmony_ciNew Tokens
665bd8deadSopenharmony_ci
675bd8deadSopenharmony_ci    Accepted by the <pname> parameter of glPixelTransferf,
685bd8deadSopenharmony_ci    glPixelTransferi, GetBooleanv, GetIntegerv,
695bd8deadSopenharmony_ci    GetFloatv, and GetDoublev:
705bd8deadSopenharmony_ci
715bd8deadSopenharmony_ci        DECIMATION_X_SGIX                     0xXXXX
725bd8deadSopenharmony_ci        DECIMATION_Y_SGIX                     0xXXXX
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
755bd8deadSopenharmony_ci    GetFloatv, and GetDoublev:
765bd8deadSopenharmony_ci
775bd8deadSopenharmony_ci        MAX_DECIMATION_X_SGIX                 0xXXXX
785bd8deadSopenharmony_ci        MAX_DECIMATION_Y_SGIX                 0xXXXX
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ci    None
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.0 Specification (Rasterization)
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ci    The specification of the decimation operation is added to the GL
875bd8deadSopenharmony_ci    Specification in section 3.6.2, "Pixel Transfer Modes."  
885bd8deadSopenharmony_ci    
895bd8deadSopenharmony_ci    The decimation operation is added to the GL Specification in section
905bd8deadSopenharmony_ci    3.6.3, "Rasterization of Pixel Rectangles, immediately following the
915bd8deadSopenharmony_ci    operations described in EXT_convolution, and prior to the
925bd8deadSopenharmony_ci    post-convolution color table operation that is described in the
935bd8deadSopenharmony_ci    SGI_color_table extension.  
945bd8deadSopenharmony_ci
955bd8deadSopenharmony_ci    Decimation operates on the image of pixels resulting from the
965bd8deadSopenharmony_ci    convolution stage of the pixel transfer path.  If stepx and stepy are
975bd8deadSopenharmony_ci    the  current decimation step parameters, then the decimation
985bd8deadSopenharmony_ci    operation passes only those pixels which are at a position (i*stepx,
995bd8deadSopenharmony_ci    j*stepy), for integers (i, j), relative to the bottom left corner of
1005bd8deadSopenharmony_ci    the image.   All other pixels are discarded. If the image size prior
1015bd8deadSopenharmony_ci    to decimation is (nx, ny), where nx >= 1 and ny >= 1, then its size
1025bd8deadSopenharmony_ci    after decimation will be (floor((nx-1)/stepx) + 1,
1035bd8deadSopenharmony_ci    floor((ny-1)/stepy) + 1)).
1045bd8deadSopenharmony_ci
1055bd8deadSopenharmony_ci    Decimation is applied to the image that results from convolution,
1065bd8deadSopenharmony_ci    which may differ in size from the source image if convolution is
1075bd8deadSopenharmony_ci    enabled.
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci    In cases where errors can result from the specification of invalid
1105bd8deadSopenharmony_ci    image dimensions, it is these resulting dimensions that are tested,
1115bd8deadSopenharmony_ci    not the dimensions of the source image.
1125bd8deadSopenharmony_ci
1135bd8deadSopenharmony_ci    If this extension is implemented, decimation is always active, and is
1145bd8deadSopenharmony_ci    applied to any pixel transfer, regardless of the command used to
1155bd8deadSopenharmony_ci    generate it.  (There is no enable or disable of decimation.)       
1165bd8deadSopenharmony_ci
1175bd8deadSopenharmony_ci    The x and y decimation parameters are specified by calling
1185bd8deadSopenharmony_ci    PixelTransfer with <pname> set to DECIMATION_X_SGIX, and
1195bd8deadSopenharmony_ci    DECIMATION_Y_SGIX, respectively.  Each parameter value must be a
1205bd8deadSopenharmony_ci    positive integer less than or equal to MAX_DECIMATION_X_SGIX and
1215bd8deadSopenharmony_ci    MAX_DECIMATION_Y_SGIX, respectively.
1225bd8deadSopenharmony_ci
1235bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
1245bd8deadSopenharmony_ciand the Framebuffer)
1255bd8deadSopenharmony_ci
1265bd8deadSopenharmony_ci    The operation of decimation during pixel copy and query operations is
1275bd8deadSopenharmony_ci    identical to the operation during pixel drawing and texture image
1285bd8deadSopenharmony_ci    definition.  This operation occurs immediately after the operations
1295bd8deadSopenharmony_ci    described by EXT_convolution, and prior to the post-convolution color
1305bd8deadSopenharmony_ci    table operation that is described in the SGI_color_table extension,
1315bd8deadSopenharmony_ci    which follow section 4.3.2 (Reading Pixels) of the GL Specification.
1325bd8deadSopenharmony_ci
1335bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.0 Specification (Special Functions)
1345bd8deadSopenharmony_ci
1355bd8deadSopenharmony_ci    None
1365bd8deadSopenharmony_ci
1375bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests)
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ci    The x decimation step parameter is queried using GetIntegerv with
1405bd8deadSopenharmony_ci    <pname> set to DECIMATION_X_SGIX.
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ci    The y decimation step parameter is queried using GetIntegerv with
1435bd8deadSopenharmony_ci    <pname> set to DECIMATION_Y_SGIX.
1445bd8deadSopenharmony_ci
1455bd8deadSopenharmony_ci    The maximum allowed x decimation step parameter is queried using
1465bd8deadSopenharmony_ci    GetIntegerv with <pname> set to MAX_DECIMATION_X_SGIX.
1475bd8deadSopenharmony_ci
1485bd8deadSopenharmony_ci    The maximum allowed y decimation step parameter is queried using
1495bd8deadSopenharmony_ci    GetIntegerv with <pname> set to MAX_DECIMATION_Y_SGIX.
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ciAdditions to the GLX Specification
1525bd8deadSopenharmony_ci
1535bd8deadSopenharmony_ci    None
1545bd8deadSopenharmony_ci    
1555bd8deadSopenharmony_ciGLX Protocol
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci    None 
1585bd8deadSopenharmony_ci                    
1595bd8deadSopenharmony_ciDependencies on EXT_convolution
1605bd8deadSopenharmony_ci
1615bd8deadSopenharmony_ci    The decimation operation follows the convolution operation (and its
1625bd8deadSopenharmony_ci    scale and bias).  If convolution is not supported, the location of
1635bd8deadSopenharmony_ci    the decimation operation with respect to all other pixel operations
1645bd8deadSopenharmony_ci    remains the same.
1655bd8deadSopenharmony_ci
1665bd8deadSopenharmony_ciDependencies on SGI_color_table
1675bd8deadSopenharmony_ci
1685bd8deadSopenharmony_ci    The decimation operation precedes the post-convolution color table
1695bd8deadSopenharmony_ci    operation.  If the post-convolution color table operation is not
1705bd8deadSopenharmony_ci    supported, the location of the decimation operation with respect to
1715bd8deadSopenharmony_ci    all other pixel operations remains the same.
1725bd8deadSopenharmony_ci
1735bd8deadSopenharmony_ciErrors
1745bd8deadSopenharmony_ci
1755bd8deadSopenharmony_ci    INVALID_VALUE is generated if PixelTransfer is called with parameter
1765bd8deadSopenharmony_ci    <pname> equal to DECIMATION_X_SGIX and parameter <param> less
1775bd8deadSopenharmony_ci    than 1 or greater than MAX_DECIMATION_X_SGIX as queried using
1785bd8deadSopenharmony_ci    GetIntegerv with <pname> MAX_DECIMATION_X_SGIX.
1795bd8deadSopenharmony_ci
1805bd8deadSopenharmony_ci    INVALID_VALUE is generated if PixelTransfer is called with parameter
1815bd8deadSopenharmony_ci    <pname> equal to DECIMATION_Y_SGIX and parameter <param> less
1825bd8deadSopenharmony_ci    than 1 or greater than MAX_DECIMATION_Y_SGIX as queried using
1835bd8deadSopenharmony_ci    GetIntegerv with <pname> MAX_DECIMATION_Y_SGIX.
1845bd8deadSopenharmony_ci
1855bd8deadSopenharmony_ciNew State
1865bd8deadSopenharmony_ci
1875bd8deadSopenharmony_ci    Get Value                           Get Command                     Type            Initial Value           Attribute
1885bd8deadSopenharmony_ci    ---------                           -----------                     ----            -------------           ---------
1895bd8deadSopenharmony_ci    DECIMATION_X_SGIX                    GetIntegerv                     Z+              1                       pixel
1905bd8deadSopenharmony_ci    DECIMATION_Y_SGIX                    GetIntegerv                     Z+              1                       pixel
1915bd8deadSopenharmony_ci
1925bd8deadSopenharmony_ciNew Implementation Dependent State
1935bd8deadSopenharmony_ci
1945bd8deadSopenharmony_ci    Get Value                           Get Command                     Type            Minimum Value
1955bd8deadSopenharmony_ci    ---------                           -----------                     ----            -------------
1965bd8deadSopenharmony_ci    MAX_DECIMATION_X_SGIX                GetIntegerv                     Z+              2
1975bd8deadSopenharmony_ci    MAX_DECIMATION_Y_SGIX                GetIntegerv                     Z+              2
1985bd8deadSopenharmony_ci    
1995bd8deadSopenharmony_ci    
200