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