• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    SGIX_decimation
4
5Name Strings
6
7    GL_SGIX_decimation
8
9Version
10
11    $Date: 1997/07/18 00:49:00 $ $Revision: 1.4 $
12
13Number
14
15    125
16
17Dependencies
18
19    EXT_convolution affects the definition of this extension
20    SGI_color_table affects the definition of this extension
21
22Overview
23
24    This extension adds a decimation operation to the pixel transfer
25    path.
26
27    Decimation occurs after convolution and prior to the post-convolution
28    color table.
29
30    The operation is controlled by two positive integer parameters, stepx
31    and stepy, that specify the decimation step size in the x and y
32    directions, respectively.  During a pixel transfer, the decimation
33    operation passes only those pixels which are at a position (i*stepx,
34    j*stepy), for integers (i, j), relative to the bottom left corner of
35    the image that is being transferred.  All other pixels are discarded.
36    Decimation is applied to the image that results from convolution,
37    which may differ in size from the source image if convolution is
38    enabled.
39
40    By default, stepx and stepy are both 1.
41
42Issues
43
44    * This spec allows for future extension to 3D decimation.
45
46    * What is a reasonable minimum maximum decimation step that we should
47      enforce?  Two is probably sufficient.
48
49    * Future extensions that redefine the convolution operation at the border
50      of an image may affect this specification.
51
52    * Decimation doesn't apply to bitmaps because they are not affected
53      by the PixelTransfer state.  This is probably best.
54
55    * Decimation is related to interlacing, as defined in the
56      SGIX_interlace extension.  In fact, it provides the inverse of
57      interlacing.  It appears useful to be able to enable decimation and
58      interlacing on the same transfer.  Interactions between these
59      two extensions should be examined further.
60
61New Procedures and Functions
62
63    None
64
65New Tokens
66
67    Accepted by the <pname> parameter of glPixelTransferf,
68    glPixelTransferi, GetBooleanv, GetIntegerv,
69    GetFloatv, and GetDoublev:
70
71        DECIMATION_X_SGIX                     0xXXXX
72        DECIMATION_Y_SGIX                     0xXXXX
73
74    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
75    GetFloatv, and GetDoublev:
76
77        MAX_DECIMATION_X_SGIX                 0xXXXX
78        MAX_DECIMATION_Y_SGIX                 0xXXXX
79
80Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
81
82    None
83
84Additions to Chapter 3 of the 1.0 Specification (Rasterization)
85
86    The specification of the decimation operation is added to the GL
87    Specification in section 3.6.2, "Pixel Transfer Modes."
88
89    The decimation operation is added to the GL Specification in section
90    3.6.3, "Rasterization of Pixel Rectangles, immediately following the
91    operations described in EXT_convolution, and prior to the
92    post-convolution color table operation that is described in the
93    SGI_color_table extension.
94
95    Decimation operates on the image of pixels resulting from the
96    convolution stage of the pixel transfer path.  If stepx and stepy are
97    the  current decimation step parameters, then the decimation
98    operation passes only those pixels which are at a position (i*stepx,
99    j*stepy), for integers (i, j), relative to the bottom left corner of
100    the image.   All other pixels are discarded. If the image size prior
101    to decimation is (nx, ny), where nx >= 1 and ny >= 1, then its size
102    after decimation will be (floor((nx-1)/stepx) + 1,
103    floor((ny-1)/stepy) + 1)).
104
105    Decimation is applied to the image that results from convolution,
106    which may differ in size from the source image if convolution is
107    enabled.
108
109    In cases where errors can result from the specification of invalid
110    image dimensions, it is these resulting dimensions that are tested,
111    not the dimensions of the source image.
112
113    If this extension is implemented, decimation is always active, and is
114    applied to any pixel transfer, regardless of the command used to
115    generate it.  (There is no enable or disable of decimation.)
116
117    The x and y decimation parameters are specified by calling
118    PixelTransfer with <pname> set to DECIMATION_X_SGIX, and
119    DECIMATION_Y_SGIX, respectively.  Each parameter value must be a
120    positive integer less than or equal to MAX_DECIMATION_X_SGIX and
121    MAX_DECIMATION_Y_SGIX, respectively.
122
123Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
124and the Framebuffer)
125
126    The operation of decimation during pixel copy and query operations is
127    identical to the operation during pixel drawing and texture image
128    definition.  This operation occurs immediately after the operations
129    described by EXT_convolution, and prior to the post-convolution color
130    table operation that is described in the SGI_color_table extension,
131    which follow section 4.3.2 (Reading Pixels) of the GL Specification.
132
133Additions to Chapter 5 of the 1.0 Specification (Special Functions)
134
135    None
136
137Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
138
139    The x decimation step parameter is queried using GetIntegerv with
140    <pname> set to DECIMATION_X_SGIX.
141
142    The y decimation step parameter is queried using GetIntegerv with
143    <pname> set to DECIMATION_Y_SGIX.
144
145    The maximum allowed x decimation step parameter is queried using
146    GetIntegerv with <pname> set to MAX_DECIMATION_X_SGIX.
147
148    The maximum allowed y decimation step parameter is queried using
149    GetIntegerv with <pname> set to MAX_DECIMATION_Y_SGIX.
150
151Additions to the GLX Specification
152
153    None
154
155GLX Protocol
156
157    None
158
159Dependencies on EXT_convolution
160
161    The decimation operation follows the convolution operation (and its
162    scale and bias).  If convolution is not supported, the location of
163    the decimation operation with respect to all other pixel operations
164    remains the same.
165
166Dependencies on SGI_color_table
167
168    The decimation operation precedes the post-convolution color table
169    operation.  If the post-convolution color table operation is not
170    supported, the location of the decimation operation with respect to
171    all other pixel operations remains the same.
172
173Errors
174
175    INVALID_VALUE is generated if PixelTransfer is called with parameter
176    <pname> equal to DECIMATION_X_SGIX and parameter <param> less
177    than 1 or greater than MAX_DECIMATION_X_SGIX as queried using
178    GetIntegerv with <pname> MAX_DECIMATION_X_SGIX.
179
180    INVALID_VALUE is generated if PixelTransfer is called with parameter
181    <pname> equal to DECIMATION_Y_SGIX and parameter <param> less
182    than 1 or greater than MAX_DECIMATION_Y_SGIX as queried using
183    GetIntegerv with <pname> MAX_DECIMATION_Y_SGIX.
184
185New State
186
187    Get Value                           Get Command                     Type            Initial Value           Attribute
188    ---------                           -----------                     ----            -------------           ---------
189    DECIMATION_X_SGIX                    GetIntegerv                     Z+              1                       pixel
190    DECIMATION_Y_SGIX                    GetIntegerv                     Z+              1                       pixel
191
192New Implementation Dependent State
193
194    Get Value                           Get Command                     Type            Minimum Value
195    ---------                           -----------                     ----            -------------
196    MAX_DECIMATION_X_SGIX                GetIntegerv                     Z+              2
197    MAX_DECIMATION_Y_SGIX                GetIntegerv                     Z+              2
198
199
200