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