15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci SGI_fft 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_SGI_fft 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciStatus 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci XXX - Not complete yet!!! 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciVersion 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci Last Modified Date: April 24, 2000 165bd8deadSopenharmony_ci Author Revision: $Header: //depot/main/doc/registry/extensions/SGI/fft.spec#11 $ 175bd8deadSopenharmony_ci 185bd8deadSopenharmony_ciNumber 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ci 99 215bd8deadSopenharmony_ci 225bd8deadSopenharmony_ciDependencies 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ci SGI_complex is required 255bd8deadSopenharmony_ci SGI_complex_type is required 265bd8deadSopenharmony_ci SGI_color_table affects the definition of this extension 275bd8deadSopenharmony_ci EXT_convolution affects the definition of this extension 285bd8deadSopenharmony_ci 295bd8deadSopenharmony_ciOverview 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ci The Fast Fourier Transform (FFT) is a set of efficient algorithms for 325bd8deadSopenharmony_ci computing the discrete Fourier transform (DFT) that are based on the 335bd8deadSopenharmony_ci fundamental principle of decomposing the computation of the Fourier 345bd8deadSopenharmony_ci transform of a sequence into successively smaller discrete Fourier 355bd8deadSopenharmony_ci transforms. 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci This extension defines complex to complex pixel formats 1-dimensional 385bd8deadSopenharmony_ci fast Fourier transforms in the pixel transfer process. Pixel drawing, 395bd8deadSopenharmony_ci reading and copying are all candidates for FFTs. Note that it is possible 405bd8deadSopenharmony_ci to compute the forward DFT, inverse DFT, multi-dimensional DFT, real to 415bd8deadSopenharmony_ci complex DFT, and any combination of the above efficiently, using the complex 425bd8deadSopenharmony_ci to complex 1-dimensional forward FFT only. 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ci The number of input elements must be a power of two. If the original 455bd8deadSopenharmony_ci series size is not a power of two, the data can be padded with zeros or 465bd8deadSopenharmony_ci resampled to meet this prerequisite. It is the user's responsibility to 475bd8deadSopenharmony_ci satisfy this constraint. 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ci FFT precision is implementation dependent. 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci This extension replaces the convolution block of the pixel pipeline 525bd8deadSopenharmony_ci with a new pixel transform block. The pixel transform block 535bd8deadSopenharmony_ci can be configured to be the convolution operation defined by the 545bd8deadSopenharmony_ci EXT_convolution extension or the fft operation defined in this extension. 555bd8deadSopenharmony_ci It also can be enabled or disabled all together. 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ciIssues 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ci * some platforms (i.e Moosehead and MG) may initially only implement 1D and 605bd8deadSopenharmony_ci 2D FFT's, if this is the case, should we break up the 3D extension as a 615bd8deadSopenharmony_ci separate one? Will these machines be forced to say that this extension 625bd8deadSopenharmony_ci is not 'fully' supported if they do not implement 3D? 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ci resolved: we will only support 1D ffts and allow later 655bd8deadSopenharmony_ci expandibility to 2D and 3D. still need to resolve whether we 665bd8deadSopenharmony_ci support 1D in row, column, and depth order on 2D and 3D images 675bd8deadSopenharmony_ci to make it easier to build 2D and 3D ffts. 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ci * We also have to take in account a possible broadening of the restricted 705bd8deadSopenharmony_ci list of input sizes of powers of 2, to sizes whos prime factors are 2, 3, 715bd8deadSopenharmony_ci and maybe even 5. The motivation is induced by standard video image sizes 725bd8deadSopenharmony_ci that are not always powers of 2. The FFT of the zero padded series and 735bd8deadSopenharmony_ci the FFT of the original series are not always equivalent 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci resolved: we will only support power of 2 input sizes 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ci * 1D FFTs are defined on images of all dimensions. This is different from 785bd8deadSopenharmony_ci the way CONVOLUTIONS are defined. We might need a parameter or name that 795bd8deadSopenharmony_ci specifies in what dimension does a 1D FFT applied to an incoming n-D 805bd8deadSopenharmony_ci image. 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci * we refer to the new pixel processing block which can be configured 835bd8deadSopenharmony_ci as either convolution or fft as the pixel transform. Is there a better 845bd8deadSopenharmony_ci name for this. 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci * it seems the way the spec is defined, that only way to disable the 875bd8deadSopenharmony_ci scale and bias is to select convolve as the transform and use disable 885bd8deadSopenharmony_ci the convolve using Disable. Is there a better way? 895bd8deadSopenharmony_ci 905bd8deadSopenharmony_ci * Even though the algorithm is not described in the spec, this 915bd8deadSopenharmony_ci knowledge might have some importance to the user, because 925bd8deadSopenharmony_ci precision becomes a more important issue, and the size of the 935bd8deadSopenharmony_ci FFT directly supported will typically be limited. In order to 945bd8deadSopenharmony_ci provide operators that can be used as basic blocks for computing 955bd8deadSopenharmony_ci larger size of FFTs, some extra parameters might be appropriate. 965bd8deadSopenharmony_ci 975bd8deadSopenharmony_ci This is a low priority issue, as the suggested parameters can be added 985bd8deadSopenharmony_ci later, if the need arises. 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ci FFT_TYPE_UNKNOWN_SGI 1015bd8deadSopenharmony_ci FFT_TYPE_RADIX4_DIF_NIO_SGI 1025bd8deadSopenharmony_ci FFT_TYPE_RADIX4_DIT_NOO_SGI 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ci DIF - Decimation in Frequency 1055bd8deadSopenharmony_ci DIT - Decimation in Time 1065bd8deadSopenharmony_ci NIO - Normal Input Order 1075bd8deadSopenharmony_ci NOO - Normal Output Order 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ci The FFT_SORT_SGI parameter can be used to suppress sorting into digit 1105bd8deadSopenharmony_ci reverse order. 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ci * The TRANSPOSE_SGI parameter can be used to transpose a 2-D image after 1135bd8deadSopenharmony_ci performing 1-D fft on the image rows before it is placed at the 1145bd8deadSopenharmony_ci destination color buffer, in order to expedite the 2-D fft. 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci HP has already an extension in effect, I'm told, that does those kind of 1175bd8deadSopenharmony_ci operations on images. It make sense to place it immediately before the 1185bd8deadSopenharmony_ci zoom operation. 1195bd8deadSopenharmony_ci 1205bd8deadSopenharmony_ciNew Procedures and Functions 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ci void PixelTransformSGI(enum target); 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci void PixelTransformParameterfSGI(enum target, 1255bd8deadSopenharmony_ci enum pname, 1265bd8deadSopenharmony_ci float param); 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ci void PixelTransformParameterfvSGI(enum target, 1295bd8deadSopenharmony_ci enum pname, 1305bd8deadSopenharmony_ci const float* params); 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ci void PixelTransformParameteriSGI(enum target, 1335bd8deadSopenharmony_ci enum pname, 1345bd8deadSopenharmony_ci int param); 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ci void PixelTransformParameterivSGI(enum target, 1375bd8deadSopenharmony_ci enum pname, 1385bd8deadSopenharmony_ci const int* params); 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci void GetPixelTransformParameterfvSGI(enum target, 1415bd8deadSopenharmony_ci enum pname, 1425bd8deadSopenharmony_ci float* params); 1435bd8deadSopenharmony_ci 1445bd8deadSopenharmony_ci void GetPixelTransformParameterivSGI(enum target, 1455bd8deadSopenharmony_ci enum pname, 1465bd8deadSopenharmony_ci int* params); 1475bd8deadSopenharmony_ci 1485bd8deadSopenharmony_ciNew Tokens 1495bd8deadSopenharmony_ci 1505bd8deadSopenharmony_ci Accepted by the <target> parameter of PixelTransformSGI: 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ci CONVOLUTION_SGI 0x81C5 1535bd8deadSopenharmony_ci FFT_1D_SGI 0x81C6 1545bd8deadSopenharmony_ci 1555bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, 1565bd8deadSopenharmony_ci and GetDoublev: 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci PIXEL_TRANSFORM_OPERATOR_SGI 0x81C4 1595bd8deadSopenharmony_ci 1605bd8deadSopenharmony_ci Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, 1615bd8deadSopenharmony_ci and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, 1625bd8deadSopenharmony_ci and GetDoublev: 1635bd8deadSopenharmony_ci 1645bd8deadSopenharmony_ci PIXEL_TRANSFORM_SGI 0x81C7 1655bd8deadSopenharmony_ci 1665bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetPixelTransformParameterfvSGI 1675bd8deadSopenharmony_ci and GetPixelTransformParameterivSGI: 1685bd8deadSopenharmony_ci 1695bd8deadSopenharmony_ci MAX_FFT_WIDTH_SGI 0x81C8 1705bd8deadSopenharmony_ci 1715bd8deadSopenharmony_ci Accepted by the <pname> parameter of PixelTransferi, PixelTransferf, 1725bd8deadSopenharmony_ci and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, 1735bd8deadSopenharmony_ci and GetDoublev: 1745bd8deadSopenharmony_ci 1755bd8deadSopenharmony_ci POST_TRANSFORM_RED_SCALE_SGI ???? 1765bd8deadSopenharmony_ci POST_TRANSFORM_GREEN_SCALE_SGI ???? 1775bd8deadSopenharmony_ci POST_TRANSFORM_BLUE_SCALE_SGI ???? 1785bd8deadSopenharmony_ci POST_TRANSFORM_ALPHA_SCALE_SGI ???? 1795bd8deadSopenharmony_ci POST_TRANSFORM_RED_BIAS_SGI ???? 1805bd8deadSopenharmony_ci POST_TRANSFORM_GREEN_BIAS_SGI ???? 1815bd8deadSopenharmony_ci POST_TRANSFORM_BLUE_BIAS_SGI ???? 1825bd8deadSopenharmony_ci POST_TRANSFORM_ALPHA_BIAS_SGI ???? 1835bd8deadSopenharmony_ci 1845bd8deadSopenharmony_ci *Note* - values defined in the spec, but not documented below 1855bd8deadSopenharmony_ci 1865bd8deadSopenharmony_ci SORT_SGI = 0x81C9 1875bd8deadSopenharmony_ci TRANSPOSE_SGI = 0x81CA 1885bd8deadSopenharmony_ci 1895bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL Specification (OpenGL Operation) 1905bd8deadSopenharmony_ci 1915bd8deadSopenharmony_ci None 1925bd8deadSopenharmony_ci 1935bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL Specification (Rasterization) 1945bd8deadSopenharmony_ci 1955bd8deadSopenharmony_ci The specification of pixel operators is added to the GL Specification in 1965bd8deadSopenharmony_ci section 3.6.2, "Pixel Transfer Modes." 1975bd8deadSopenharmony_ci 1985bd8deadSopenharmony_ci The operations of the pixel transforms are added to the GL Specification in 1995bd8deadSopenharmony_ci section 3.6.3, "Rasterization of Pixel Rectangles, immediately following the 2005bd8deadSopenharmony_ci subsection "Index Lookup", and immediately prior to the operations described 2015bd8deadSopenharmony_ci by EXT_histogram. Transforms are enabled, disabled, and queried by calling 2025bd8deadSopenharmony_ci Enable, Disable and IsEnabled respectively. The pixel transform is enabled 2035bd8deadSopenharmony_ci by default. A particular transform is selected by calling PixelTransformSGI 2045bd8deadSopenharmony_ci with the <target> parameter set to one of: CONVOLUTION_SGI, or FFT_1D_SGI. 2055bd8deadSopenharmony_ci The pixel transform is performed only for RGBA groups, though these groups 2065bd8deadSopenharmony_ci may have been specified as color indexes and converted to RGBA by index 2075bd8deadSopenharmony_ci table lookup. 2085bd8deadSopenharmony_ci 2095bd8deadSopenharmony_ci The convolution transform is described in the EXT_convolution 2105bd8deadSopenharmony_ci specification. 2115bd8deadSopenharmony_ci 2125bd8deadSopenharmony_ci If pixel transform is enabled and FFT_1D_SGI is selected, the 1-dimensional 2135bd8deadSopenharmony_ci fft is applied to the image passed to TexImage1D, and to 1-dimensional 2145bd8deadSopenharmony_ci textures queried by GetTexImage. It is applied on a per-row basis to 2155bd8deadSopenharmony_ci the 2-dimensional images passed to DrawPixels, CopyPixels, ReadPixels, 2165bd8deadSopenharmony_ci TexImage2D, TexSubImage2DEXT, CopyTexImage2DEXT, CopyTexSubImage2DEXT, 2175bd8deadSopenharmony_ci and to 2-dimensional images queried by GetTexImage. It is also applied 2185bd8deadSopenharmony_ci on a per-row basis to the 3-dimensional images passed to CopyTexSubImage3DEXT, 2195bd8deadSopenharmony_ci TexImage3DEXT, and TexSubImage3DEXT, and to 3-dimensional images queried by 2205bd8deadSopenharmony_ci GetTexImage. 2215bd8deadSopenharmony_ci 2225bd8deadSopenharmony_ci The discrete fourier transform is a complex valued sum of products of 2235bd8deadSopenharmony_ci source image pixels and the discretely sampled function exp(2PIikn/N). 2245bd8deadSopenharmony_ci [exp(2PIix) == sin(x)+icos(x)] 2255bd8deadSopenharmony_ci 2265bd8deadSopenharmony_ci Source image pixels always have four components: red, green, blue, 2275bd8deadSopenharmony_ci and alpha. Individual color components of each source image pixel 2285bd8deadSopenharmony_ci are always independently processed as part of the transform. 2295bd8deadSopenharmony_ci The discrete fourier transform is defined differently for each of 2305bd8deadSopenharmony_ci the three transform types. In the following equations the 2315bd8deadSopenharmony_ci 2325bd8deadSopenharmony_ci SUM{}{}equation 2335bd8deadSopenharmony_ci 2345bd8deadSopenharmony_ci notation indicates the sum of the equation evaluated for all 2355bd8deadSopenharmony_ci combinations of conditions indicated within the curly brackets. The 2365bd8deadSopenharmony_ci variables Ws, Hs, and Ds refer to the dimensions of the source 2375bd8deadSopenharmony_ci pixel image. 2385bd8deadSopenharmony_ci 2395bd8deadSopenharmony_ci The discrete fourier transform equation is: 2405bd8deadSopenharmony_ci 2415bd8deadSopenharmony_ci 1-dimensional transform: 2425bd8deadSopenharmony_ci 2435bd8deadSopenharmony_ci C[n] = SUM{k = 0 through Ws-1} 2445bd8deadSopenharmony_ci 2455bd8deadSopenharmony_ci Cs[k]*exp(2PIikn/Ws) 2465bd8deadSopenharmony_ci 2475bd8deadSopenharmony_ci The inverse transform equation is: 2485bd8deadSopenharmony_ci 2495bd8deadSopenharmony_ci 1-dimensional transform: 2505bd8deadSopenharmony_ci 2515bd8deadSopenharmony_ci C[n] = SUM{k = 0 through Ws-1} 2525bd8deadSopenharmony_ci 2535bd8deadSopenharmony_ci Cs[k]*exp(-2PIikn/Ws) 2545bd8deadSopenharmony_ci ----- 2555bd8deadSopenharmony_ci Ws 2565bd8deadSopenharmony_ci 2575bd8deadSopenharmony_ci The particular fft algorithm is left unspecified to allow greater 2585bd8deadSopenharmony_ci flexibility for implementations. 2595bd8deadSopenharmony_ci 2605bd8deadSopenharmony_ci If a pixel transform operation is performed, the resulting image is scaled 2615bd8deadSopenharmony_ci and biased by parameters specified using the PixelTransfer command. 2625bd8deadSopenharmony_ci These operations are: 2635bd8deadSopenharmony_ci 2645bd8deadSopenharmony_ci red = red * POST_TRANSFORM_RED_SCALE_SGI 2655bd8deadSopenharmony_ci + POST_TRANSFORM_RED_BIAS_SGI 2665bd8deadSopenharmony_ci 2675bd8deadSopenharmony_ci green = green * POST_TRANSFORM_GREEN_SCALE_SGI 2685bd8deadSopenharmony_ci + POST_TRANSFORM_GREEN_BIAS_SGI 2695bd8deadSopenharmony_ci 2705bd8deadSopenharmony_ci blue = blue * POST_TRANSFORM_BLUE_SCALE_SGI 2715bd8deadSopenharmony_ci + POST_TRANSFORM_BLUE_BIAS_SGI 2725bd8deadSopenharmony_ci 2735bd8deadSopenharmony_ci alpha = alpha * POST_TRANSFORM_ALPHA_SCALE_SGI 2745bd8deadSopenharmony_ci + POST_TRANSFORM_ALPHA_BIAS_SGI 2755bd8deadSopenharmony_ci 2765bd8deadSopenharmony_ci If no fft operation is performed, the scale and bias are not 2775bd8deadSopenharmony_ci performed either. 2785bd8deadSopenharmony_ci 2795bd8deadSopenharmony_ci 2805bd8deadSopenharmony_ciAdditions to Chapter 4 of the GL Specification (Per-Fragment Operations 2815bd8deadSopenharmony_ciand the Framebuffer) 2825bd8deadSopenharmony_ci 2835bd8deadSopenharmony_ci The operation of fft during pixel copy and query operations is 2845bd8deadSopenharmony_ci identical to the operation during pixel drawing and texture image 2855bd8deadSopenharmony_ci definition. 2865bd8deadSopenharmony_ci 2875bd8deadSopenharmony_ciAdditions to Chapter 5 of the GL Specification (Special Functions) 2885bd8deadSopenharmony_ci 2895bd8deadSopenharmony_ci Commands GetPixelTransformParameterfvSGI and 2905bd8deadSopenharmony_ci GetPixelTransformParameterivSGI are not include in display lists. 2915bd8deadSopenharmony_ci They are always executed immediately. 2925bd8deadSopenharmony_ci 2935bd8deadSopenharmony_ciAdditions to Chapter 6 of the GL Specification (State and State Requests) 2945bd8deadSopenharmony_ci 2955bd8deadSopenharmony_ci Integer and floating point query functions 2965bd8deadSopenharmony_ci GetPixelTransformParameterivSGI and 2975bd8deadSopenharmony_ci GetPixelTransformParameterfvSGI are provided. <target> must be 2985bd8deadSopenharmony_ci FFT_1D_SGI. <pname> must be MAX_FFT_WIDTH_SGI. The value of the 2995bd8deadSopenharmony_ci specified parameter is returned in <params>. 3005bd8deadSopenharmony_ci 3015bd8deadSopenharmony_ciAdditions to the GLX Specification 3025bd8deadSopenharmony_ci 3035bd8deadSopenharmony_ci None 3045bd8deadSopenharmony_ci 3055bd8deadSopenharmony_ciGLX Protocol 3065bd8deadSopenharmony_ci 3075bd8deadSopenharmony_ci None 3085bd8deadSopenharmony_ci 3095bd8deadSopenharmony_ciDependencies on EXT_convolution 3105bd8deadSopenharmony_ci 3115bd8deadSopenharmony_ci If EXT_convolution is defined, then the post convolution scale and 3125bd8deadSopenharmony_ci bias enumerants POST_CONVOLUTION_RED_SCALE_EXT, 3135bd8deadSopenharmony_ci POST_CONVOLUTION_GREEN_SCALE_EXT, POST_CONVOLUTION_BLUE_SCALE_EXT, 3145bd8deadSopenharmony_ci POST_CONVOLUTION_ALPHA_SCALE_EXT, POST_CONVOLUTION_RED_BIAS_EXT, 3155bd8deadSopenharmony_ci POST_CONVOLUTION_GREEN_BIAS_EXT, POST_CONVOLUTION_BLUE_BIAS_EXT, 3165bd8deadSopenharmony_ci and POST_CONVOLUTION_ALPHA_BIAS_EXT are aliased with the 3175bd8deadSopenharmony_ci corresponding POST_TRANSFORM scale and biases in the obvious way. 3185bd8deadSopenharmony_ci The commands ConvolutionParameterfEXT, ConvolutionParameterfvEXT, 3195bd8deadSopenharmony_ci ConvolutionParameteriEXT, ConvolutionParameterivEXT, 3205bd8deadSopenharmony_ci GetConvolutionParameterfvEXT, and GetConvolutionParameterivEXT are 3215bd8deadSopenharmony_ci equivalent to the corresponding PixelTransformParameterfSGI, 3225bd8deadSopenharmony_ci PixelTransformParameterfvSGI, PixelTransformParameteriSGI, 3235bd8deadSopenharmony_ci PixelTransformParameterivSGI, GetPixelTransformParameterfvSGI, and 3245bd8deadSopenharmony_ci GetPixelTransformParameterivSGI commands and should be superseded 3255bd8deadSopenharmony_ci by the PixelTransform versions of the commands. 3265bd8deadSopenharmony_ci 3275bd8deadSopenharmony_ci If EXT_convolution is not defined, then specifying CONVOLUTION_SGI for the 3285bd8deadSopenharmony_ci <target> parameter to the command PixelTransformSGI will result in an 3295bd8deadSopenharmony_ci INVALID_OPERATION error. 3305bd8deadSopenharmony_ci 3315bd8deadSopenharmony_ciErrors 3325bd8deadSopenharmony_ci 3335bd8deadSopenharmony_ci INVALID_ENUM is generated if PixelTransformParameteriSGI, 3345bd8deadSopenharmony_ci PixelTransformParameterfSGI, PixelTransformParameterivSGI, 3355bd8deadSopenharmony_ci PixelTransformParameterfvSGI, GetPixelTransformParameterivSGI, or 3365bd8deadSopenharmony_ci GetPixelTransformParameterfvSGI parameter <target> is not 3375bd8deadSopenharmony_ci FFT_1D_SGI. 3385bd8deadSopenharmony_ci 3395bd8deadSopenharmony_ci INVALID_ENUM is generated if PixelTransformParameteriSGI, 3405bd8deadSopenharmony_ci PixelTransformParameterfSGI, PixelTransformParameterivSGI, or 3415bd8deadSopenharmony_ci PixelTransformParameterfvSGI, parameter <target> is GL_FFT_1D_SGI, and 3425bd8deadSopenharmony_ci parameter <pname> is not TRANSPOSE_SGI. 3435bd8deadSopenharmony_ci 3445bd8deadSopenharmony_ci INVALID_ENUM is generated if GetPixelTransformParameterivSGI, 3455bd8deadSopenharmony_ci or GetPixelTransformParameterfvSGI, parameter <target> is GL_FFT_1D_SGI, and 3465bd8deadSopenharmony_ci parameter <pname> is not MAX_FFT_WIDTH_SGI or TRANSPOSE_SGI. 3475bd8deadSopenharmony_ci 3485bd8deadSopenharmony_ci INVALID_VALUE is generated if the width, <x> specified in DrawPixels, 3495bd8deadSopenharmony_ci TexImage1D or TexImage2D is less than zero, or greater than 3505bd8deadSopenharmony_ci MAX_FFT_WIDTH_SGI or not a power or two. 3515bd8deadSopenharmony_ci 3525bd8deadSopenharmony_ci INVALID_OPERATION is generated if PixelTransformParameterfSGI, 3535bd8deadSopenharmony_ci PixelTransformParameterfvSGI, PixelTransformParameteriSGI, 3545bd8deadSopenharmony_ci PixelTransformParameterivSGI, GetPixelTransformParameterfvSGI, or 3555bd8deadSopenharmony_ci GetPixelTransformParameterivSGI is executed between execution of 3565bd8deadSopenharmony_ci Begin and the corresponding execution of End. 3575bd8deadSopenharmony_ci 3585bd8deadSopenharmony_ci 3595bd8deadSopenharmony_ciNew State 3605bd8deadSopenharmony_ci 3615bd8deadSopenharmony_ci Get Value Get Command Type Initial Value Attribute 3625bd8deadSopenharmony_ci --------- ----------- ---- ------------- --------- 3635bd8deadSopenharmony_ci POST_TRANSFORM_RED_SCALE_SGI GetFloatv R 1 pixel 3645bd8deadSopenharmony_ci POST_TRANSFORM_GREEN_SCALE_SGI GetFloatv R 1 pixel 3655bd8deadSopenharmony_ci POST_TRANSFORM_BLUE_SCALE_SGI GetFloatv R 1 pixel 3665bd8deadSopenharmony_ci POST_TRANSFORM_ALPHA_SCALE_SGI GetFloatv R 1 pixel 3675bd8deadSopenharmony_ci POST_TRANSFORM_RED_BIAS_SGI GetFloatv R 0 pixel 3685bd8deadSopenharmony_ci POST_TRANSFORM_GREEN_BIAS_SGI GetFloatv R 0 pixel 3695bd8deadSopenharmony_ci POST_TRANSFORM_BLUE_BIAS_SGI GetFloatv R 0 pixel 3705bd8deadSopenharmony_ci POST_TRANSFORM_ALPHA_BIAS_SGI GetFloatv R 0 pixel 3715bd8deadSopenharmony_ci PIXEL_TRANSFORM_OPERATOR_SGI GetIntegerv Z2 CONVOLUTION pixel 3725bd8deadSopenharmony_ci PIXEL_TRANSFORM_SGI IsEnabled B TRUE pixel/enable 3735bd8deadSopenharmony_ci 3745bd8deadSopenharmony_ciNew Implementation Dependent State 3755bd8deadSopenharmony_ci 3765bd8deadSopenharmony_ci Get Value Get Command Type Minimum Value 3775bd8deadSopenharmony_ci --------- ----------- ---- ------------- 3785bd8deadSopenharmony_ci MAX_FFT_WIDTH_SGI GetPixelTransformParameterivSGI 1 x Z+ 256 379