15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_convolution
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_EXT_convolution
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciVersion
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Date: June 27, 2002 Version: 1.32
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciNumber
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    12
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ciDependencies
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ci    EXT_abgr affects the definition of this extension
205bd8deadSopenharmony_ci    EXT_texture is required
215bd8deadSopenharmony_ci    EXT_copy_texture affects the definition of this extension
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciOverview
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    This extension defines 1 and 2 dimensional convolution operations
265bd8deadSopenharmony_ci    at a fixed location in the pixel transfer process.  Thus pixel drawing,
275bd8deadSopenharmony_ci    reading, and copying, as well as texture image definition, are all
285bd8deadSopenharmony_ci    candidates for convolution.  The convolution kernels are themselves
295bd8deadSopenharmony_ci    treated as 1 and 2 dimensional images, which can be loaded from
305bd8deadSopenharmony_ci    application memory or from the framebuffer.
315bd8deadSopenharmony_ci
325bd8deadSopenharmony_ci    This extension is designed to accommodate 3D convolution, but the
335bd8deadSopenharmony_ci    API is left for a future extension.
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ciNew Procedures and Functions
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ci    void ConvolutionFilter1DEXT(enum target,
385bd8deadSopenharmony_ci                                enum internalformat,
395bd8deadSopenharmony_ci                                sizei width,
405bd8deadSopenharmony_ci                                enum format,
415bd8deadSopenharmony_ci                                enum type,
425bd8deadSopenharmony_ci                                const void* image);
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ci    void ConvolutionFilter2DEXT(enum target,
455bd8deadSopenharmony_ci                                enum internalformat,
465bd8deadSopenharmony_ci                                sizei width,
475bd8deadSopenharmony_ci                                sizei height,
485bd8deadSopenharmony_ci                                enum format,
495bd8deadSopenharmony_ci                                enum type,
505bd8deadSopenharmony_ci                                const void* image);
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci    void CopyConvolutionFilter1DEXT(enum target,
535bd8deadSopenharmony_ci                                    enum internalformat,
545bd8deadSopenharmony_ci                                    int x,
555bd8deadSopenharmony_ci                                    int y,
565bd8deadSopenharmony_ci                                    sizei width);
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ci    void CopyConvolutionFilter2DEXT(enum target,
595bd8deadSopenharmony_ci                                    enum internalformat,
605bd8deadSopenharmony_ci                                    int x,
615bd8deadSopenharmony_ci                                    int y,
625bd8deadSopenharmony_ci                                    sizei width,
635bd8deadSopenharmony_ci                                    sizei height);
645bd8deadSopenharmony_ci
655bd8deadSopenharmony_ci    void GetConvolutionFilterEXT(enum target,
665bd8deadSopenharmony_ci                                 enum format,
675bd8deadSopenharmony_ci                                 enum type,
685bd8deadSopenharmony_ci                                 void* image);
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ci    void SeparableFilter2DEXT(enum target,
715bd8deadSopenharmony_ci                              enum internalformat,
725bd8deadSopenharmony_ci                              sizei width,
735bd8deadSopenharmony_ci                              sizei height,
745bd8deadSopenharmony_ci                              enum format,
755bd8deadSopenharmony_ci                              enum type,
765bd8deadSopenharmony_ci                              const void* row,
775bd8deadSopenharmony_ci                              const void* column);
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ci    void GetSeparableFilterEXT(enum target,
805bd8deadSopenharmony_ci                               enum format,
815bd8deadSopenharmony_ci                               enum type,
825bd8deadSopenharmony_ci                               void* row,
835bd8deadSopenharmony_ci                               void* column,
845bd8deadSopenharmony_ci                               void* span);
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ci    void ConvolutionParameteriEXT(enum target,
875bd8deadSopenharmony_ci                                  enum pname,
885bd8deadSopenharmony_ci                                  int param);
895bd8deadSopenharmony_ci
905bd8deadSopenharmony_ci    void ConvolutionParameterivEXT(enum target,
915bd8deadSopenharmony_ci                                   enum pname,
925bd8deadSopenharmony_ci                                   const int* params);
935bd8deadSopenharmony_ci
945bd8deadSopenharmony_ci    void ConvolutionParameterfEXT(enum target,
955bd8deadSopenharmony_ci                                  enum pname,
965bd8deadSopenharmony_ci                                  float param);
975bd8deadSopenharmony_ci
985bd8deadSopenharmony_ci    void ConvolutionParameterfvEXT(enum target,
995bd8deadSopenharmony_ci                                   enum pname,
1005bd8deadSopenharmony_ci                                   const float* params);
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci    void GetConvolutionParameterivEXT(enum target,
1035bd8deadSopenharmony_ci                                      enum pname,
1045bd8deadSopenharmony_ci                                      int* params);
1055bd8deadSopenharmony_ci
1065bd8deadSopenharmony_ci    void GetConvolutionParameterfvEXT(enum target,
1075bd8deadSopenharmony_ci                                      enum pname,
1085bd8deadSopenharmony_ci                                      float* params);
1095bd8deadSopenharmony_ci
1105bd8deadSopenharmony_ciNew Tokens
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by
1135bd8deadSopenharmony_ci    the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
1145bd8deadSopenharmony_ci    GetDoublev, and by the <target> parameter of ConvolutionFilter1DEXT,
1155bd8deadSopenharmony_ci    CopyConvolutionFilter1DEXT, GetConvolutionFilterEXT,
1165bd8deadSopenharmony_ci    ConvolutionParameteriEXT, ConvolutionParameterfEXT,
1175bd8deadSopenharmony_ci    ConvolutionParameterivEXT, ConvolutionParameterfvEXT,
1185bd8deadSopenharmony_ci    GetConvolutionParameterivEXT, and GetConvolutionParameterfvEXT:
1195bd8deadSopenharmony_ci
1205bd8deadSopenharmony_ci        CONVOLUTION_1D_EXT               0x8010
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by
1235bd8deadSopenharmony_ci    the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
1245bd8deadSopenharmony_ci    GetDoublev, and by the <target> parameter of ConvolutionFilter2DEXT,
1255bd8deadSopenharmony_ci    CopyConvolutionFilter2DEXT, GetConvolutionFilterEXT,
1265bd8deadSopenharmony_ci    ConvolutionParameteriEXT, ConvolutionParameterfEXT,
1275bd8deadSopenharmony_ci    ConvolutionParameterivEXT, ConvolutionParameterfvEXT,
1285bd8deadSopenharmony_ci    GetConvolutionParameterivEXT, and GetConvolutionParameterfvEXT:
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ci        CONVOLUTION_2D_EXT               0x8011
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by
1335bd8deadSopenharmony_ci    the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
1345bd8deadSopenharmony_ci    GetDoublev, and by the <target> parameter of SeparableFilter2DEXT,
1355bd8deadSopenharmony_ci    SeparableFilter2DEXT, GetSeparableFilterEXT,
1365bd8deadSopenharmony_ci    ConvolutionParameteriEXT, ConvolutionParameterfEXT,
1375bd8deadSopenharmony_ci    ConvolutionParameterivEXT, ConvolutionParameterfvEXT,
1385bd8deadSopenharmony_ci    GetConvolutionParameterivEXT, and GetConvolutionParameterfvEXT:
1395bd8deadSopenharmony_ci
1405bd8deadSopenharmony_ci        SEPARABLE_2D_EXT                 0x8012
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ci    Accepted by the <pname> parameter of ConvolutionParameteriEXT,
1435bd8deadSopenharmony_ci    ConvolutionParameterfEXT, ConvolutionParameterivEXT,
1445bd8deadSopenharmony_ci    ConvolutionParameterfvEXT, GetConvolutionParameterivEXT, and
1455bd8deadSopenharmony_ci    GetConvolutionParameterfvEXT:
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ci        CONVOLUTION_BORDER_MODE_EXT      0x8013
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci    Accepted by the <pname> parameter of ConvolutionParameterivEXT,
1505bd8deadSopenharmony_ci    ConvolutionParameterfvEXT, GetConvolutionParameterivEXT, and
1515bd8deadSopenharmony_ci    GetConvolutionParameterfvEXT:
1525bd8deadSopenharmony_ci
1535bd8deadSopenharmony_ci        CONVOLUTION_FILTER_SCALE_EXT     0x8014
1545bd8deadSopenharmony_ci        CONVOLUTION_FILTER_BIAS_EXT      0x8015
1555bd8deadSopenharmony_ci
1565bd8deadSopenharmony_ci    Accepted by the <param> parameter of ConvolutionParameteriEXT,
1575bd8deadSopenharmony_ci    and ConvolutionParameterfEXT, and by the <params> parameter of
1585bd8deadSopenharmony_ci    ConvolutionParameterivEXT and ConvolutionParameterfvEXT, when the
1595bd8deadSopenharmony_ci    <pname> parameter is CONVOLUTION_BORDER_MODE_EXT:
1605bd8deadSopenharmony_ci
1615bd8deadSopenharmony_ci        REDUCE_EXT                       0x8016
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci    Accepted by the <pname> parameter of GetConvolutionParameterivEXT and
1645bd8deadSopenharmony_ci    GetConvolutionParameterfvEXT:
1655bd8deadSopenharmony_ci
1665bd8deadSopenharmony_ci        CONVOLUTION_FORMAT_EXT           0x8017
1675bd8deadSopenharmony_ci        CONVOLUTION_WIDTH_EXT            0x8018
1685bd8deadSopenharmony_ci        CONVOLUTION_HEIGHT_EXT           0x8019
1695bd8deadSopenharmony_ci        MAX_CONVOLUTION_WIDTH_EXT        0x801A
1705bd8deadSopenharmony_ci        MAX_CONVOLUTION_HEIGHT_EXT       0x801B
1715bd8deadSopenharmony_ci
1725bd8deadSopenharmony_ci    Accepted by the <pname> parameter of PixelTransferi, PixelTransferf,
1735bd8deadSopenharmony_ci    and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
1745bd8deadSopenharmony_ci    and GetDoublev:
1755bd8deadSopenharmony_ci
1765bd8deadSopenharmony_ci        POST_CONVOLUTION_RED_SCALE_EXT   0x801C
1775bd8deadSopenharmony_ci        POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D
1785bd8deadSopenharmony_ci        POST_CONVOLUTION_BLUE_SCALE_EXT  0x801E
1795bd8deadSopenharmony_ci        POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F
1805bd8deadSopenharmony_ci        POST_CONVOLUTION_RED_BIAS_EXT    0x8020
1815bd8deadSopenharmony_ci        POST_CONVOLUTION_GREEN_BIAS_EXT  0x8021
1825bd8deadSopenharmony_ci        POST_CONVOLUTION_BLUE_BIAS_EXT   0x8022
1835bd8deadSopenharmony_ci        POST_CONVOLUTION_ALPHA_BIAS_EXT  0x8023
1845bd8deadSopenharmony_ci
1855bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
1865bd8deadSopenharmony_ci
1875bd8deadSopenharmony_ci    None
1885bd8deadSopenharmony_ci
1895bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.0 Specification (Rasterization)
1905bd8deadSopenharmony_ci
1915bd8deadSopenharmony_ci    The specification of convolution operators is added to the GL
1925bd8deadSopenharmony_ci    Specification in section 3.6.2, "Pixel Transfer Modes."  A 2-dimensional
1935bd8deadSopenharmony_ci    convolution filter image is specified using the ConvolutionFilter2DEXT
1945bd8deadSopenharmony_ci    command.  Its <target> parameter must be CONVOLUTION_2D_EXT.  Its
1955bd8deadSopenharmony_ci    <internalformat> parameter specifies the format of image that will be
1965bd8deadSopenharmony_ci    retained; it must be one of ALPHA, LUMINANCE, LUMINANCE_ALPHA,
1975bd8deadSopenharmony_ci    INTENSITY_EXT, RGB, or RGBA.  Its <width>, <height>, <format>, <type>,
1985bd8deadSopenharmony_ci    and <image> parameters specify an image in memory with exactly the same
1995bd8deadSopenharmony_ci    semantics of the corresponding parameters to DrawPixels.  
2005bd8deadSopenharmony_ci
2015bd8deadSopenharmony_ci    The specified image is extracted from memory and processed just as if
2025bd8deadSopenharmony_ci    DrawPixels were called, stopping after the Final Expansion to RGBA step
2035bd8deadSopenharmony_ci    is completed. The R, G, B, and A components of each pixel are then scaled
2045bd8deadSopenharmony_ci    by the four 2D CONVOLUTION_FILTER_SCALE_EXT parameters, then biased by the
2055bd8deadSopenharmony_ci    four 2D CONVOLUTION_FILTER_BIAS_EXT parameters.  These parameters are
2065bd8deadSopenharmony_ci    themselves specified by calling ConvolutionParameterivEXT or 
2075bd8deadSopenharmony_ci    ConvolutionParameterfvEXT with <target> CONVOLUTION_2D_EXT, <pname>
2085bd8deadSopenharmony_ci    CONVOLUTION_FILTER_SCALE_EXT or CONVOLUTION_FILTER_BIAS_EXT, and <params>
2095bd8deadSopenharmony_ci    pointing to a vector of four values: red, green, blue, and alpha, in that
2105bd8deadSopenharmony_ci    order.  The R, G, B, and A values are not clamped to [0,1] at any time 
2115bd8deadSopenharmony_ci    during this process.
2125bd8deadSopenharmony_ci
2135bd8deadSopenharmony_ci    Each pixel is then converted to have the specified internal format.
2145bd8deadSopenharmony_ci    This conversion simply maps the component values of the pixel (R, G, B,
2155bd8deadSopenharmony_ci    and A) to the values included in the internal format (red, green, blue,
2165bd8deadSopenharmony_ci    alpha, luminance, and intensity).  The mapping is as follows:
2175bd8deadSopenharmony_ci
2185bd8deadSopenharmony_ci        Internal Format         red     green   blue    alpha   luminance intensity
2195bd8deadSopenharmony_ci        ---------------         ---     -----   ----    -----   --------- ---------
2205bd8deadSopenharmony_ci
2215bd8deadSopenharmony_ci        ALPHA                                           A
2225bd8deadSopenharmony_ci        LUMINANCE                                               R
2235bd8deadSopenharmony_ci        LUMINANCE_ALPHA                                 A       R
2245bd8deadSopenharmony_ci        INTENSITY_EXT                                                     R
2255bd8deadSopenharmony_ci        RGB                     R       G       B
2265bd8deadSopenharmony_ci        RGBA                    R       G       B       A
2275bd8deadSopenharmony_ci
2285bd8deadSopenharmony_ci
2295bd8deadSopenharmony_ci    Pixel Organization
2305bd8deadSopenharmony_ci
2315bd8deadSopenharmony_ci    The red, green, blue, alpha, luminance, and/or intensity components of
2325bd8deadSopenharmony_ci    the pixels are stored in floating point, rather than integer format.
2335bd8deadSopenharmony_ci    They form a 2-dimensional image indexed with coordinates i,j such that i
2345bd8deadSopenharmony_ci    increases from left to right, starting at zero, and j increases from
2355bd8deadSopenharmony_ci    bottom to top, also starting at zero.  Image location i,j is specified
2365bd8deadSopenharmony_ci    by the Nth pixel, counting from zero, where N is i+j*width.
2375bd8deadSopenharmony_ci
2385bd8deadSopenharmony_ci    The error INVALID_VALUE is generated if <width> or <height> is greater
2395bd8deadSopenharmony_ci    than the maximum supported value.  This value is queried with
2405bd8deadSopenharmony_ci    GetConvolutionParameterivEXT, setting <target> to CONVOLUTION_2D_EXT and
2415bd8deadSopenharmony_ci    <pname> to MAX_CONVOLUTION_WIDTH_EXT or MAX_CONVOLUTION_HEIGHT_EXT,
2425bd8deadSopenharmony_ci    respectively.
2435bd8deadSopenharmony_ci
2445bd8deadSopenharmony_ci    A 1-dimensional convolution filter is defined using ConvolutionFilter1DEXT.
2455bd8deadSopenharmony_ci    Its <target> parameter must be CONVOLUTION_1D_EXT.  Its <internalformat>,
2465bd8deadSopenharmony_ci    <format>, and <type> parameters have identical semantics and accept the
2475bd8deadSopenharmony_ci    same values as do their 2D counterparts.  <image> must point to a
2485bd8deadSopenharmony_ci    1-dimensional image, however.  
2495bd8deadSopenharmony_ci
2505bd8deadSopenharmony_ci    The 1-dimensional image is taken from memory and processed as if
2515bd8deadSopenharmony_ci    ConvolutionFilter2DEXT were called with a height of 1, except that it is
2525bd8deadSopenharmony_ci    scaled and biased by the two 1D vectors, rather than the 2D vectors.
2535bd8deadSopenharmony_ci    (The 1D scale and bias vectors are specified using
2545bd8deadSopenharmony_ci    ConvolutionParameterivEXT with <target> CONVOLUTION_1D_EXT and <pname>
2555bd8deadSopenharmony_ci    CONVOLUTION_FILTER_SCALE_EXT or CONVOLUTION_FILTER_BIAS_EXT.) The
2565bd8deadSopenharmony_ci    1-dimensional image is formed with coordinates i such that i increases
2575bd8deadSopenharmony_ci    from left to right, starting at zero.  Image location i is specified by
2585bd8deadSopenharmony_ci    the ith pixel, counting from zero.
2595bd8deadSopenharmony_ci
2605bd8deadSopenharmony_ci    The error INVALID_VALUE is generated if <width> is greater than the
2615bd8deadSopenharmony_ci    maximum supported value, which is queried using
2625bd8deadSopenharmony_ci    GetConvolutionParameterivEXT, setting <target> to CONVOLUTION_1D_EXT
2635bd8deadSopenharmony_ci    and <pname> to MAX_CONVOLUTION_WIDTH_EXT.
2645bd8deadSopenharmony_ci
2655bd8deadSopenharmony_ci    If EXT_copy_texture is supported, one and 2-dimensional filters can also
2665bd8deadSopenharmony_ci    be defined using image data in the framebuffer.  Rather than accepting
2675bd8deadSopenharmony_ci    image data from memory, they copy image data from the color buffer
2685bd8deadSopenharmony_ci    specified by the current ReadBuffer mode.  CopyConvolutionFilter2DEXT
2695bd8deadSopenharmony_ci    accepts image data from a <width> pixel wide by <height> pixel high
2705bd8deadSopenharmony_ci    color buffer region whose lower-left pixel has window coordinates <x>,<y>.
2715bd8deadSopenharmony_ci    If any pixels within this region are outside the window that is
2725bd8deadSopenharmony_ci    associated with the GL context, the values obtained for those pixels
2735bd8deadSopenharmony_ci    are undefined.  
2745bd8deadSopenharmony_ci
2755bd8deadSopenharmony_ci    These pixel values are obtained from the framebuffer exactly as if
2765bd8deadSopenharmony_ci    ReadPixels had been called with <format> set to RGBA, with processing
2775bd8deadSopenharmony_ci    continuing through Conversion of RGBA values.  At this point all pixel
2785bd8deadSopenharmony_ci    component values are treated exactly as if ConvolutionFilter2DEXT had
2795bd8deadSopenharmony_ci    been called, beginning with the scaling of the color components by
2805bd8deadSopenharmony_ci    CONVOLUTION_FILTER_SCALE_SGI.  Pixel ordering is such that lower X
2815bd8deadSopenharmony_ci    screen coordinates correspond to lower i filter image coordinates, and
2825bd8deadSopenharmony_ci    lower Y screen coordinates correspond to lower j filter image
2835bd8deadSopenharmony_ci    coordinates.  The semantics and accepted values of the <target> and
2845bd8deadSopenharmony_ci    <internalformat> parameters are exactly equivalent to their
2855bd8deadSopenharmony_ci    ConvolutionFilter2DEXT counterparts.
2865bd8deadSopenharmony_ci
2875bd8deadSopenharmony_ci    CopyConvolutionFilter1DEXT accepts image data from a <width> pixel wide
2885bd8deadSopenharmony_ci    by 1 pixel high color buffer region whose left-most pixel has window
2895bd8deadSopenharmony_ci    coordinates <x>,<y>.  If any pixels within this region are outside the
2905bd8deadSopenharmony_ci    window that is associated with the GL context, the values obtained for
2915bd8deadSopenharmony_ci    those pixels are undefined.
2925bd8deadSopenharmony_ci
2935bd8deadSopenharmony_ci    The pixels are processed just as those of CopyConvolutionFilter2DEXT are, 
2945bd8deadSopenharmony_ci    and they define a filter image such that lower X window coordinates
2955bd8deadSopenharmony_ci    correspond to lower i filter image coordinates.  The semantics and
2965bd8deadSopenharmony_ci    accepted values of the <target> and <internalformat> parameters are
2975bd8deadSopenharmony_ci    exactly equivalent to their ConvolutionFilter1DEXT counterparts.
2985bd8deadSopenharmony_ci
2995bd8deadSopenharmony_ci    Special facilities are provided for the definition of 2-dimensional
3005bd8deadSopenharmony_ci    separable filters -- filters whose image can be represented as the
3015bd8deadSopenharmony_ci    product of two 1-dimensional images, rather than as full
3025bd8deadSopenharmony_ci    2-dimensional images.  A 2-dimensional convolution filter is specified
3035bd8deadSopenharmony_ci    using SeparableFilter2DEXT.  Its <target> parameter must be
3045bd8deadSopenharmony_ci    SEPARABLE_2D_EXT.  Its <internalformat> parameter specifies the formats
3055bd8deadSopenharmony_ci    of two 1-dimensional images that will be retained; it must be one of
3065bd8deadSopenharmony_ci    ALPHA, LUMINANCE, LUMINANCE_ALPHA, INTENSITY_EXT, RGB, or RGBA.  <row>
3075bd8deadSopenharmony_ci    and <column> point to two 1-dimensional images in memory.  The <row>
3085bd8deadSopenharmony_ci    image is <width> pixels wide, and is defined by <format> and <type>.
3095bd8deadSopenharmony_ci    The <column> image is <height> pixels wide, and is also defined by
3105bd8deadSopenharmony_ci    <format> and <type>.
3115bd8deadSopenharmony_ci
3125bd8deadSopenharmony_ci    The two images are extracted from memory and processed just as if
3135bd8deadSopenharmony_ci    ConvolutionFilter1DEXT were called separately for each, with the resulting
3145bd8deadSopenharmony_ci    retained images replacing the current 2D separable filter images, except
3155bd8deadSopenharmony_ci    that each image is scaled and biased using the 2D separable scale and bias
3165bd8deadSopenharmony_ci    vectors.  (These vectors are specified using ConvolutionParameterivEXT with
3175bd8deadSopenharmony_ci    <target> SEPARABLE_2D_EXT and <pname> CONVOLUTION_FILTER_SCALE_EXT or
3185bd8deadSopenharmony_ci    CONVOLUTION_FILTER_BIAS_EXT.)
3195bd8deadSopenharmony_ci
3205bd8deadSopenharmony_ci    The operations of the convolution filters are added to the GL
3215bd8deadSopenharmony_ci    Specification in section 3.6.3, "Rasterization of Pixel Rectangles,
3225bd8deadSopenharmony_ci    immediately following the subsection "Index Lookup", and immediately
3235bd8deadSopenharmony_ci    prior to the operations described by EXT_histogram.  Filters are
3245bd8deadSopenharmony_ci    enabled and disabled by calling Enable and Disable with filter name
3255bd8deadSopenharmony_ci    passed as the <cap> parameter.  Convolution is performed only for RGBA
3265bd8deadSopenharmony_ci    groups, though these groups may have been specified as color indexes
3275bd8deadSopenharmony_ci    and converted to RGBA by index table lookup.  
3285bd8deadSopenharmony_ci
3295bd8deadSopenharmony_ci    If CONVOLUTION_1D_EXT is enabled, the 1-dimensional convolution filter
3305bd8deadSopenharmony_ci    is applied only to the image passed to TexImage1D, and to 1-dimensional
3315bd8deadSopenharmony_ci    textures queried by GetTexImage.  If CONVOLUTION_2D_EXT is enabled, the
3325bd8deadSopenharmony_ci    2-dimensional convolution filter is applied only to the 2D images passed
3335bd8deadSopenharmony_ci    to DrawPixels, CopyPixels, ReadPixels, TexImage2D, TexSubImage2DEXT,
3345bd8deadSopenharmony_ci    CopyTexImage2DEXT, CopyTexSubImage2DEXT, and GetTexImage, and to
3355bd8deadSopenharmony_ci    2-dimensional images queried by GetTexImage.  If SEPARABLE_2D_EXT is
3365bd8deadSopenharmony_ci    enabled, and CONVOLUTION_2D_EXT is disabled, the separable 2-dimensional
3375bd8deadSopenharmony_ci    convolution filter is applied only to these same images.
3385bd8deadSopenharmony_ci
3395bd8deadSopenharmony_ci    The convolution operation is a sum of products of source image pixels
3405bd8deadSopenharmony_ci    and convolution filter pixels.  Source image pixels always have four
3415bd8deadSopenharmony_ci    components: red, green, blue, and alpha, denoted in the equations below
3425bd8deadSopenharmony_ci    as Rs, Gs, Bs, and As.  Filter pixels may be stored in one of five
3435bd8deadSopenharmony_ci    formats, with 1, 2, 3, or 4 components.  These components are denoted
3445bd8deadSopenharmony_ci    as Rf, Gf, Bf, Af, Lf, and If in the equations below.  The result of the
3455bd8deadSopenharmony_ci    convolution operation is the 4-tuple R,G,B,A.  Depending on the internal
3465bd8deadSopenharmony_ci    format of the filter, individual color components of each source image
3475bd8deadSopenharmony_ci    pixel are convolved with one filter component, or are passed unmodified.
3485bd8deadSopenharmony_ci    The rules for this are:
3495bd8deadSopenharmony_ci
3505bd8deadSopenharmony_ci        Filter format           
3515bd8deadSopenharmony_ci        -------------
3525bd8deadSopenharmony_ci        ALPHA                   R = Rs                  G = Gs                  B = Bs                  A = convolve(As,Af)
3535bd8deadSopenharmony_ci        LUMINANCE               R = convolve(Rs,Lf)     G = convolve(Gs,Lf)     B = convolve(Bs,Lf)     A = As
3545bd8deadSopenharmony_ci        LUMINANCE_ALPHA         R = convolve(Rs,Lf)     G = convolve(Gs,Lf)     B = convolve(Bs,Lf)     A = convolve(As,Af)
3555bd8deadSopenharmony_ci        INTENSITY               R = convolve(Rs,If)     G = convolve(Gs,If)     B = convolve(Bs,If)     A = convolve(As,If)
3565bd8deadSopenharmony_ci        RGB                     R = convolve(Rs,Rf)     G = convolve(Gs,Gf)     B = convolve(Bs,Bf)     A = As
3575bd8deadSopenharmony_ci        RGBA                    R = convolve(Rs,Rf)     G = convolve(Gs,Gf)     B = convolve(Bs,Bf)     A = convolve(As,Af)
3585bd8deadSopenharmony_ci
3595bd8deadSopenharmony_ci    The convolution operation is defined differently for each of the three
3605bd8deadSopenharmony_ci    convolution filters.  In the following equations the
3615bd8deadSopenharmony_ci    
3625bd8deadSopenharmony_ci        SUM{}{}equation
3635bd8deadSopenharmony_ci        
3645bd8deadSopenharmony_ci    notation indicate the sum of the equation evaluated for all combinations
3655bd8deadSopenharmony_ci    of conditions indicated within the sets of curly brackets.  The
3665bd8deadSopenharmony_ci    variables Wf and Hf refer to the dimensions of the convolution filter.
3675bd8deadSopenharmony_ci    The variables Ws and Hs refer to the dimensions of the source pixel
3685bd8deadSopenharmony_ci    image. The pixel indexing nomenclature is decribed in the Pixel
3695bd8deadSopenharmony_ci    Organization section, above.
3705bd8deadSopenharmony_ci
3715bd8deadSopenharmony_ci    The convolution equations are:
3725bd8deadSopenharmony_ci
3735bd8deadSopenharmony_ci        1-dimensional filter:
3745bd8deadSopenharmony_ci
3755bd8deadSopenharmony_ci            C[i] = SUM{n = 0 through Wf-1}
3765bd8deadSopenharmony_ci            
3775bd8deadSopenharmony_ci                      Cs[i+n] * Cf[n]
3785bd8deadSopenharmony_ci
3795bd8deadSopenharmony_ci        2-dimensional filter:
3805bd8deadSopenharmony_ci
3815bd8deadSopenharmony_ci            C[i,j] = SUM{n = 0 through Wf-1}
3825bd8deadSopenharmony_ci                        {m = 0 through Hf-1}
3835bd8deadSopenharmony_ci                        
3845bd8deadSopenharmony_ci                        Cs[i+n,j+m] * Cf[n,m]
3855bd8deadSopenharmony_ci
3865bd8deadSopenharmony_ci        2-dimensional separable filter:
3875bd8deadSopenharmony_ci
3885bd8deadSopenharmony_ci            C[i,j] = SUM{n = 0 through Wf-1}
3895bd8deadSopenharmony_ci                        {m = 0 through Hf-1}
3905bd8deadSopenharmony_ci
3915bd8deadSopenharmony_ci                        Cs[i+n,j+m] * Crow[n] * Ccolumn[m]
3925bd8deadSopenharmony_ci
3935bd8deadSopenharmony_ci    If Wf of a 1-dimensional filter is zero, then C[i] is always set to
3945bd8deadSopenharmony_ci    zero.  Likewise, if either Wf or Hf of a 2-dimensional filter is zero,
3955bd8deadSopenharmony_ci    then C[i,j] is always set to zero.
3965bd8deadSopenharmony_ci
3975bd8deadSopenharmony_ci    The convolution border mode for a specific convolution filter is
3985bd8deadSopenharmony_ci    specified using ConvolutionParameteriEXT with the <target> parameter
3995bd8deadSopenharmony_ci    set to the name of the filter, the <pname> parameter set to
4005bd8deadSopenharmony_ci    CONVOLUTION_BORDER_MODE_EXT, and <param> set to REDUCE_EXT.  (This
4015bd8deadSopenharmony_ci    extension defines only a single border mode.)  The width and height of
4025bd8deadSopenharmony_ci    source images convolved with border mode REDUCE_EXT are reduced by
4035bd8deadSopenharmony_ci    Wf-1 and Hf-1, respectively.  If this reduction would generate a
4045bd8deadSopenharmony_ci    resulting image with zero or negative width and/or height, the output
4055bd8deadSopenharmony_ci    is simply null, with no error generated.  The coordinates of the image
4065bd8deadSopenharmony_ci    that results from a convolution with border mode REDUCE_EXT are zero
4075bd8deadSopenharmony_ci    through Ws-Wf in width, and zero through Hs-Hf in height.  In
4085bd8deadSopenharmony_ci    cases where errors can result from the specification of invalid image
4095bd8deadSopenharmony_ci    dimensions, it is these resulting dimensions that are tested, not the
4105bd8deadSopenharmony_ci    dimensions of the source image.  (A specific example is TexImage1D and
4115bd8deadSopenharmony_ci    TexImage2D, which specify constraints for image dimensions.  Even if
4125bd8deadSopenharmony_ci    TexImage1D or TexImage2D is called with a null pixel pointer, the
4135bd8deadSopenharmony_ci    dimensions of the resulting texture image are those that would result
4145bd8deadSopenharmony_ci    from the convolution of the specified image.)  
4155bd8deadSopenharmony_ci
4165bd8deadSopenharmony_ci    If a convolution operation is performed, the resulting image is scaled
4175bd8deadSopenharmony_ci    and biased by parameters specified using the PixelTransfer command.
4185bd8deadSopenharmony_ci    These operations are:
4195bd8deadSopenharmony_ci
4205bd8deadSopenharmony_ci        red = red * POST_CONVOLUTION_RED_SCALE_EXT
4215bd8deadSopenharmony_ci            + POST_CONVOLUTION_RED_BIAS_EXT
4225bd8deadSopenharmony_ci
4235bd8deadSopenharmony_ci        green = green * POST_CONVOLUTION_GREEN_SCALE_EXT
4245bd8deadSopenharmony_ci              + POST_CONVOLUTION_GREEN_BIAS_EXT
4255bd8deadSopenharmony_ci
4265bd8deadSopenharmony_ci        blue = blue * POST_CONVOLUTION_BLUE_SCALE_EXT
4275bd8deadSopenharmony_ci             + POST_CONVOLUTION_BLUE_BIAS_EXT
4285bd8deadSopenharmony_ci
4295bd8deadSopenharmony_ci        alpha = alpha * POST_CONVOLUTION_ALPHA_SCALE_EXT
4305bd8deadSopenharmony_ci              + POST_CONVOLUTION_ALPHA_BIAS_EXT
4315bd8deadSopenharmony_ci
4325bd8deadSopenharmony_ci    If no convolution operation is performed, the scale and bias are not
4335bd8deadSopenharmony_ci    performed either.
4345bd8deadSopenharmony_ci
4355bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
4365bd8deadSopenharmony_ciand the Framebuffer)
4375bd8deadSopenharmony_ci
4385bd8deadSopenharmony_ci    The operation of convolution during pixel copy and query operations is
4395bd8deadSopenharmony_ci    identical to the operation during pixel drawing and texture image
4405bd8deadSopenharmony_ci    definition.
4415bd8deadSopenharmony_ci
4425bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.0 Specification (Special Functions)
4435bd8deadSopenharmony_ci
4445bd8deadSopenharmony_ci    Commands GetConvolutionFilterEXT, GetSeparableFilterEXT,
4455bd8deadSopenharmony_ci    GetConvolutionParameterivEXT, and GetConvolutionParameterfvEXT are not
4465bd8deadSopenharmony_ci    included in display lists.  They are always executed immediately.
4475bd8deadSopenharmony_ci
4485bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests)
4495bd8deadSopenharmony_ci
4505bd8deadSopenharmony_ci    Integer and floating point query functions GetConvolutionParameterivEXT
4515bd8deadSopenharmony_ci    and GetConvolutionParameterfvEXT are provided.  <target> must be
4525bd8deadSopenharmony_ci    CONVOLUTION_1D_EXT, CONVOLUTION_2D_EXT, or SEPARABLE_2D_EXT.  <pname>
4535bd8deadSopenharmony_ci    is one of CONVOLUTION_FORMAT_EXT, CONVOLUTION_WIDTH_EXT,
4545bd8deadSopenharmony_ci    CONVOLUTION_HEIGHT_EXT, MAX_CONVOLUTION_WIDTH_EXT, or
4555bd8deadSopenharmony_ci    MAX_CONVOLUTION_HEIGHT_EXT.  The value of the specified parameter is
4565bd8deadSopenharmony_ci    returned in <params>.
4575bd8deadSopenharmony_ci
4585bd8deadSopenharmony_ci    The current contents of a convolution filter image are queried using
4595bd8deadSopenharmony_ci    GetConvolutionFilterEXT.  <target> must be CONVOLUTION_1D_EXT or
4605bd8deadSopenharmony_ci    CONVOLUTION_2D_EXT.  <format> must be one of RED, GREEN, BLUE, ALPHA, RGB,
4615bd8deadSopenharmony_ci    RGBA, ABGR_EXT, LUMINANCE, or LUMINANCE_ALPHA.  <type> must be
4625bd8deadSopenharmony_ci    UNSIGNED_BYTE, BYTE, UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT.
4635bd8deadSopenharmony_ci    The 1-dimensional or 2-dimensional image is returned to <image>.  No pixel
4645bd8deadSopenharmony_ci    transfer operations are performed on this image, but pixel storage modes
4655bd8deadSopenharmony_ci    that are applicable to ReadPixels are performed.  Color components are
4665bd8deadSopenharmony_ci    converted from the internal floating point representation to <type>
4675bd8deadSopenharmony_ci    according to table 2.4. Prior to the conversion, if <type> is one of
4685bd8deadSopenharmony_ci    UNSIGNED_BYTE, UNSIGNED_SHORT, or UNSIGNED_INT, the color components are
4695bd8deadSopenharmony_ci    clamped to 0..1, if <type> is one of BYTE, SHORT, or INT, the components are
4705bd8deadSopenharmony_ci    clamped to -1..1.  No clamping is performed if <type> is FLOAT.  Color
4715bd8deadSopenharmony_ci    components that are requested in the specified <format>, but which are not
4725bd8deadSopenharmony_ci    included in the internal format of the filter image, are returned as zero.
4735bd8deadSopenharmony_ci    The assignments of internal color components to the components requested by
4745bd8deadSopenharmony_ci    <format> are
4755bd8deadSopenharmony_ci
4765bd8deadSopenharmony_ci                internal component      resulting component
4775bd8deadSopenharmony_ci                ------------------      -------------------
4785bd8deadSopenharmony_ci                red                     red
4795bd8deadSopenharmony_ci                green                   green
4805bd8deadSopenharmony_ci                blue                    blue
4815bd8deadSopenharmony_ci                alpha                   alpha
4825bd8deadSopenharmony_ci                luminance               red
4835bd8deadSopenharmony_ci                intensity               red
4845bd8deadSopenharmony_ci
4855bd8deadSopenharmony_ci    The current contents of a separable filter image are queried using
4865bd8deadSopenharmony_ci    GetSeparableFilterEXT.  <target> must be SEPARABLE_2D_EXT.  <format>
4875bd8deadSopenharmony_ci    and <type> accept the same values as do the corresponding parameters
4885bd8deadSopenharmony_ci    of GetConvolutionFilterEXT.  The row and column images are returned to
4895bd8deadSopenharmony_ci    <row> and <column> respectively.  No change is made to any location
4905bd8deadSopenharmony_ci    related to <span>.  Pixel processing and component mapping are
4915bd8deadSopenharmony_ci    identical to those of GetConvolutionFilterEXT.
4925bd8deadSopenharmony_ci
4935bd8deadSopenharmony_ciAdditions to the GLX Specification
4945bd8deadSopenharmony_ci
4955bd8deadSopenharmony_ci    None
4965bd8deadSopenharmony_ci    
4975bd8deadSopenharmony_ciGLX Protocol
4985bd8deadSopenharmony_ci
4995bd8deadSopenharmony_ci    Thirteen new GL commands are added.
5005bd8deadSopenharmony_ci
5015bd8deadSopenharmony_ci    The following six rendering commands are sent to the server as part of
5025bd8deadSopenharmony_ci    a glXRender request:
5035bd8deadSopenharmony_ci
5045bd8deadSopenharmony_ci        CopyConvolutionFilter1DEXT
5055bd8deadSopenharmony_ci            2           24              rendering command length
5065bd8deadSopenharmony_ci            2           4107            rendering command opcode
5075bd8deadSopenharmony_ci            4           ENUM            target
5085bd8deadSopenharmony_ci            4           ENUM            internalformat
5095bd8deadSopenharmony_ci            4           INT32           x
5105bd8deadSopenharmony_ci            4           INT32           y
5115bd8deadSopenharmony_ci            4           INT32           width
5125bd8deadSopenharmony_ci
5135bd8deadSopenharmony_ci        CopyConvolutionFilter2DEXT
5145bd8deadSopenharmony_ci            2           28              rendering command length
5155bd8deadSopenharmony_ci            2           4108            rendering command opcode
5165bd8deadSopenharmony_ci            4           ENUM            target
5175bd8deadSopenharmony_ci            4           ENUM            internalformat
5185bd8deadSopenharmony_ci            4           INT32           x
5195bd8deadSopenharmony_ci            4           INT32           y
5205bd8deadSopenharmony_ci            4           INT32           width
5215bd8deadSopenharmony_ci            4           INT32           height
5225bd8deadSopenharmony_ci
5235bd8deadSopenharmony_ci        ConvolutionParameteriEXT
5245bd8deadSopenharmony_ci            2           16              rendering command length
5255bd8deadSopenharmony_ci            2           4105            rendering command opcode
5265bd8deadSopenharmony_ci            4           ENUM            target
5275bd8deadSopenharmony_ci            4           ENUM            pname
5285bd8deadSopenharmony_ci                        0x8013          CONVOLUTION_BORDER_MODE_EXT
5295bd8deadSopenharmony_ci            4           INT32           param
5305bd8deadSopenharmony_ci
5315bd8deadSopenharmony_ci        ConvolutionParameterivEXT
5325bd8deadSopenharmony_ci            2           12+4*n          rendering command length
5335bd8deadSopenharmony_ci            2           4106            rendering command opcode
5345bd8deadSopenharmony_ci            4           ENUM            target
5355bd8deadSopenharmony_ci            4           ENUM            pname
5365bd8deadSopenharmony_ci                        0x8013    n=1   CONVOLUTION_BORDER_MODE_EXT
5375bd8deadSopenharmony_ci                        0x8014    n=4   CONVOLUTION_FILTER_SCALE_EXT
5385bd8deadSopenharmony_ci                        0x8015    n=4   CONVOLUTION_FILTER_BIAS_EXT
5395bd8deadSopenharmony_ci                        0x8017    n=1   CONVOLUTION_FORMAT_EXT
5405bd8deadSopenharmony_ci                        0x8018    n=1   CONVOLUTION_WIDTH_EXT  
5415bd8deadSopenharmony_ci                        0x8019    n=1   CONVOLUTION_HEIGHT_EXT  
5425bd8deadSopenharmony_ci                        0x801A    n=1   MAX_CONVOLUTION_WIDTH_EXT
5435bd8deadSopenharmony_ci                        0x801B    n=1   MAX_CONVOLUTION_HEIGHT_EXT
5445bd8deadSopenharmony_ci            4*n         LISTofINT32     params
5455bd8deadSopenharmony_ci
5465bd8deadSopenharmony_ci        ConvolutionParameterfEXT
5475bd8deadSopenharmony_ci            2           16              rendering command length
5485bd8deadSopenharmony_ci            2           4103            rendering command opcode
5495bd8deadSopenharmony_ci            4           ENUM            target
5505bd8deadSopenharmony_ci            4           ENUM            pname
5515bd8deadSopenharmony_ci                        0x8013          CONVOLUTION_BORDER_MODE_EXT
5525bd8deadSopenharmony_ci            4           FLOAT32         param
5535bd8deadSopenharmony_ci
5545bd8deadSopenharmony_ci        ConvolutionParameterfvEXT
5555bd8deadSopenharmony_ci            2           12+4*n          rendering command length
5565bd8deadSopenharmony_ci            2           4104            rendering command opcode
5575bd8deadSopenharmony_ci            4           ENUM            target
5585bd8deadSopenharmony_ci            4           ENUM            pname
5595bd8deadSopenharmony_ci                        0x8013    n=1   CONVOLUTION_BORDER_MODE_EXT
5605bd8deadSopenharmony_ci                        0x8014    n=4   CONVOLUTION_FILTER_SCALE_EXT
5615bd8deadSopenharmony_ci                        0x8015    n=4   CONVOLUTION_FILTER_BIAS_EXT
5625bd8deadSopenharmony_ci                        0x8017    n=1   CONVOLUTION_FORMAT_EXT
5635bd8deadSopenharmony_ci                        0x8018    n=1   CONVOLUTION_WIDTH_EXT  
5645bd8deadSopenharmony_ci                        0x8019    n=1   CONVOLUTION_HEIGHT_EXT  
5655bd8deadSopenharmony_ci                        0x801A    n=1   MAX_CONVOLUTION_WIDTH_EXT
5665bd8deadSopenharmony_ci                        0x801B    n=1   MAX_CONVOLUTION_HEIGHT_EXT
5675bd8deadSopenharmony_ci            4*n         LISTofFLOAT32   params
5685bd8deadSopenharmony_ci
5695bd8deadSopenharmony_ci    The following three rendering commands contain pixel data and are thus
5705bd8deadSopenharmony_ci    sent to the server as part of a glXRender request or as part of a
5715bd8deadSopenharmony_ci    glXRenderLarge request:
5725bd8deadSopenharmony_ci
5735bd8deadSopenharmony_ci        ConvolutionFilter1DEXT
5745bd8deadSopenharmony_ci            2           48+n+p          rendering command length
5755bd8deadSopenharmony_ci            2           4101            rendering command opcode
5765bd8deadSopenharmony_ci            1           BOOL            swap_bytes
5775bd8deadSopenharmony_ci            1           BOOL            lsb_first
5785bd8deadSopenharmony_ci            2                           unused
5795bd8deadSopenharmony_ci            4           CARD32          row_length
5805bd8deadSopenharmony_ci            4           CARD32          skip_rows
5815bd8deadSopenharmony_ci            4           CARD32          skip_pixels
5825bd8deadSopenharmony_ci            4           CARD32          alignment
5835bd8deadSopenharmony_ci            4           ENUM            target
5845bd8deadSopenharmony_ci            4           ENUM            internalformat
5855bd8deadSopenharmony_ci            4           INT32           width
5865bd8deadSopenharmony_ci            4           INT32           height
5875bd8deadSopenharmony_ci            4           ENUM            format
5885bd8deadSopenharmony_ci            4           ENUM            type
5895bd8deadSopenharmony_ci            n           LISTofBYTE      pixels
5905bd8deadSopenharmony_ci            p                           unused, p=pad(n)
5915bd8deadSopenharmony_ci
5925bd8deadSopenharmony_ci            If the command is encoded in a glXRenderLarge request, the
5935bd8deadSopenharmony_ci            command opcode and command length fields above are expanded to
5945bd8deadSopenharmony_ci            4 bytes each:
5955bd8deadSopenharmony_ci            4           52+n+p          rendering command length
5965bd8deadSopenharmony_ci            4           4101            rendering command opcode
5975bd8deadSopenharmony_ci
5985bd8deadSopenharmony_ci        If <width> < 0, <format> is invalid or <type> is invalid, then the
5995bd8deadSopenharmony_ci        command is erroneous and n=0. The structure of <pixels> is described
6005bd8deadSopenharmony_ci        in Appendix A of the GLX Protocol Specification, "Pixel Data", using
6015bd8deadSopenharmony_ci        the parameters <swap_bytes>, <lsb_first>, <row_length>, <skip_rows>,
6025bd8deadSopenharmony_ci        <skip_pixels>, <alignment>, <width>, <format>, and <type> as given
6035bd8deadSopenharmony_ci        in the request, and a height of 1.
6045bd8deadSopenharmony_ci
6055bd8deadSopenharmony_ci        ConvolutionFilter2DEXT
6065bd8deadSopenharmony_ci            2           48+n+p          rendering command length
6075bd8deadSopenharmony_ci            2           4102            rendering command opcode
6085bd8deadSopenharmony_ci            1           BOOL            swap_bytes
6095bd8deadSopenharmony_ci            1           BOOL            lsb_first
6105bd8deadSopenharmony_ci            2                           unused
6115bd8deadSopenharmony_ci            4           CARD32          row_length
6125bd8deadSopenharmony_ci            4           CARD32          skip_rows
6135bd8deadSopenharmony_ci            4           CARD32          skip_pixels
6145bd8deadSopenharmony_ci            4           CARD32          alignment
6155bd8deadSopenharmony_ci            4           ENUM            target
6165bd8deadSopenharmony_ci            4           ENUM            internalformat
6175bd8deadSopenharmony_ci            4           INT32           width
6185bd8deadSopenharmony_ci            4           INT32           height
6195bd8deadSopenharmony_ci            4           ENUM            format
6205bd8deadSopenharmony_ci            4           ENUM            type
6215bd8deadSopenharmony_ci            n           LISTofBYTE      pixels
6225bd8deadSopenharmony_ci            p                           unused, p=pad(n)
6235bd8deadSopenharmony_ci
6245bd8deadSopenharmony_ci            If the command is encoded in a glXRenderLarge request, the
6255bd8deadSopenharmony_ci            command opcode and command length fields above are expanded to
6265bd8deadSopenharmony_ci            4 bytes each:
6275bd8deadSopenharmony_ci            4           52+n+p          rendering command length
6285bd8deadSopenharmony_ci            4           4102            rendering command opcode
6295bd8deadSopenharmony_ci
6305bd8deadSopenharmony_ci        If <width> < 0, <height> < 0, <format> is invalid or <type> is
6315bd8deadSopenharmony_ci        invalid, then the command is erroneous and n=0. The structure of
6325bd8deadSopenharmony_ci        <pixels> is described in Appendix A of the GLX Protocol
6335bd8deadSopenharmony_ci        Specification, "Pixel Data", using the parameters <swap_bytes>, 
6345bd8deadSopenharmony_ci        <lsb_first>, <row_length>, <skip_rows>, <skip_pixels>, <alignment>,
6355bd8deadSopenharmony_ci        <width>, <height>, <format>, and <type> as given in the request.
6365bd8deadSopenharmony_ci
6375bd8deadSopenharmony_ci        SeparableFilter2DEXT
6385bd8deadSopenharmony_ci            2           48+n1+p1+n2+p2  rendering command length
6395bd8deadSopenharmony_ci            2           4109            rendering command opcode
6405bd8deadSopenharmony_ci            1           BOOL            swap_bytes
6415bd8deadSopenharmony_ci            1           BOOL            lsb_first
6425bd8deadSopenharmony_ci            2                           unused
6435bd8deadSopenharmony_ci            4           CARD32          row_length
6445bd8deadSopenharmony_ci            4           CARD32          skip_rows
6455bd8deadSopenharmony_ci            4           CARD32          skip_pixels
6465bd8deadSopenharmony_ci            4           CARD32          alignment
6475bd8deadSopenharmony_ci            4           ENUM            target
6485bd8deadSopenharmony_ci            4           ENUM            internalformat
6495bd8deadSopenharmony_ci            4           INT32           width
6505bd8deadSopenharmony_ci            4           INT32           height
6515bd8deadSopenharmony_ci            4           ENUM            format
6525bd8deadSopenharmony_ci            4           ENUM            type
6535bd8deadSopenharmony_ci            n1          LISTofBYTE      row
6545bd8deadSopenharmony_ci            p1                          unused, p=pad(n)
6555bd8deadSopenharmony_ci            n2          LISTofBYTE      column
6565bd8deadSopenharmony_ci            p2                          unused, p=pad(n)
6575bd8deadSopenharmony_ci
6585bd8deadSopenharmony_ci            If the command is encoded in a glXRenderLarge request, the
6595bd8deadSopenharmony_ci            command opcode and command length fields above are expanded
6605bd8deadSopenharmony_ci            to 4 bytes each:
6615bd8deadSopenharmony_ci            4           52+n+p          rendering command length
6625bd8deadSopenharmony_ci            4           4109            rendering command opcode
6635bd8deadSopenharmony_ci
6645bd8deadSopenharmony_ci        If <width> < 0, <height> < 0, <format> is invalid or <type> is
6655bd8deadSopenharmony_ci        invalid, then the command is erroneous and n=0. The structure of
6665bd8deadSopenharmony_ci        <row> is described in Appendix A of the GLX Protocol Specification,
6675bd8deadSopenharmony_ci        "Pixel Data", using the parameters <swap_bytes>, <lsb_first>,
6685bd8deadSopenharmony_ci        <row_length>, <skip_rows>, <skip_pixels>, <alignment>, <width>, 
6695bd8deadSopenharmony_ci        <format>, and <type> as given in the request, and and a height of 1.
6705bd8deadSopenharmony_ci        The structure of <column> is the same (it is also a one-dimensional
6715bd8deadSopenharmony_ci        image) except that it is <height> pixels wide, instead of <width>
6725bd8deadSopenharmony_ci        pixels wide.
6735bd8deadSopenharmony_ci
6745bd8deadSopenharmony_ci    The remaining commands are non-rendering commands. These commands are
6755bd8deadSopenharmony_ci    sent separately (i.e., not as part of a glXRender or glXRenderLarge
6765bd8deadSopenharmony_ci    request), using the glXVendorPrivateWithReply request:
6775bd8deadSopenharmony_ci
6785bd8deadSopenharmony_ci        GetConvolutionParameterivEXT
6795bd8deadSopenharmony_ci            1           CARD8           opcode (X assigned)
6805bd8deadSopenharmony_ci            1           17              GLX opcode (glXVendorPrivateWithReply)
6815bd8deadSopenharmony_ci            2           5               request length
6825bd8deadSopenharmony_ci            4           3               vendor specific opcode
6835bd8deadSopenharmony_ci            4           GLX_CONTEXT_TAG context tag
6845bd8deadSopenharmony_ci            4           ENUM            target
6855bd8deadSopenharmony_ci            4           ENUM            pname
6865bd8deadSopenharmony_ci          =>
6875bd8deadSopenharmony_ci            1           1               reply
6885bd8deadSopenharmony_ci            1                           unused
6895bd8deadSopenharmony_ci            2           CARD16          sequence number
6905bd8deadSopenharmony_ci            4           m               reply length, m = (n==1 ? 0 : n)
6915bd8deadSopenharmony_ci            4                           unused
6925bd8deadSopenharmony_ci            4           CARD32          n
6935bd8deadSopenharmony_ci
6945bd8deadSopenharmony_ci            if (n=1) this follows:
6955bd8deadSopenharmony_ci
6965bd8deadSopenharmony_ci            4           INT32           params
6975bd8deadSopenharmony_ci            12                          unused
6985bd8deadSopenharmony_ci
6995bd8deadSopenharmony_ci            otherwise this follows:
7005bd8deadSopenharmony_ci
7015bd8deadSopenharmony_ci            16                          unused
7025bd8deadSopenharmony_ci            n*4         LISTofINT32     params
7035bd8deadSopenharmony_ci
7045bd8deadSopenharmony_ci        Note that n may be zero, indicating that a GL error occurred. 
7055bd8deadSopenharmony_ci
7065bd8deadSopenharmony_ci
7075bd8deadSopenharmony_ci        GetConvolutionParameterfvEXT
7085bd8deadSopenharmony_ci            1           CARD8           opcode (X assigned)
7095bd8deadSopenharmony_ci            1           17              GLX opcode (glXVendorPrivateWithReply)
7105bd8deadSopenharmony_ci            2           5               request length
7115bd8deadSopenharmony_ci            4           2               vendor specific opcode
7125bd8deadSopenharmony_ci            4           GLX_CONTEXT_TAG context tag
7135bd8deadSopenharmony_ci            4           ENUM            target
7145bd8deadSopenharmony_ci            4           ENUM            pname
7155bd8deadSopenharmony_ci          =>
7165bd8deadSopenharmony_ci            1           1               reply
7175bd8deadSopenharmony_ci            1                           unused
7185bd8deadSopenharmony_ci            2           CARD16          sequence number
7195bd8deadSopenharmony_ci            4           m               reply length, m = (n==1 ? 0 : n)
7205bd8deadSopenharmony_ci            4                           unused
7215bd8deadSopenharmony_ci            4           CARD32          n
7225bd8deadSopenharmony_ci
7235bd8deadSopenharmony_ci            if (n=1) this follows:
7245bd8deadSopenharmony_ci
7255bd8deadSopenharmony_ci            4           FLOAT32         params
7265bd8deadSopenharmony_ci            12                          unused
7275bd8deadSopenharmony_ci
7285bd8deadSopenharmony_ci            otherwise this follows:
7295bd8deadSopenharmony_ci
7305bd8deadSopenharmony_ci            16                          unused
7315bd8deadSopenharmony_ci            n*4         LISTofFLOAT32   params
7325bd8deadSopenharmony_ci
7335bd8deadSopenharmony_ci        Note that n may be zero, indicating that a GL error occurred. 
7345bd8deadSopenharmony_ci
7355bd8deadSopenharmony_ci
7365bd8deadSopenharmony_ci        GetConvolutionFilterEXT
7375bd8deadSopenharmony_ci            1           CARD8           opcode (X assigned)
7385bd8deadSopenharmony_ci            1           17              GLX opcode (glXVendorPrivateWithReply)
7395bd8deadSopenharmony_ci            2           7               request length
7405bd8deadSopenharmony_ci            4           1               vendor specific opcode
7415bd8deadSopenharmony_ci            4           GLX_CONTEXT_TAG context tag
7425bd8deadSopenharmony_ci            4           ENUM            target
7435bd8deadSopenharmony_ci            4           ENUM            format
7445bd8deadSopenharmony_ci            4           ENUM            type
7455bd8deadSopenharmony_ci            1           BOOL            swap_bytes
7465bd8deadSopenharmony_ci            3                           unused
7475bd8deadSopenharmony_ci          =>
7485bd8deadSopenharmony_ci            1           1               reply
7495bd8deadSopenharmony_ci            1                           unused
7505bd8deadSopenharmony_ci            2           CARD16          sequence number
7515bd8deadSopenharmony_ci            4           n               reply length
7525bd8deadSopenharmony_ci            8                           unused
7535bd8deadSopenharmony_ci            4           INT32           width
7545bd8deadSopenharmony_ci            4           INT32           height
7555bd8deadSopenharmony_ci            8                           unused
7565bd8deadSopenharmony_ci            4*n         LISTofBYTE      pixels
7575bd8deadSopenharmony_ci
7585bd8deadSopenharmony_ci        Note that n may be zero, indicating that a GL error occurred.
7595bd8deadSopenharmony_ci
7605bd8deadSopenharmony_ci        If <format> or <type> is invalid then the command is erroneous and
7615bd8deadSopenharmony_ci        n=0. The structure of <pixels> is described in Appendix A of the GLX
7625bd8deadSopenharmony_ci        Protocol Specification, "Pixel Data", using the parameters
7635bd8deadSopenharmony_ci        <swap_bytes>, <format>, and <type>. No extra padding is needed after
7645bd8deadSopenharmony_ci        <pixels> because the image format already pads to 32 bits.
7655bd8deadSopenharmony_ci
7665bd8deadSopenharmony_ci 
7675bd8deadSopenharmony_ci        GetSeparableFilterEXT
7685bd8deadSopenharmony_ci            1           CARD8           opcode (X assigned)
7695bd8deadSopenharmony_ci            1           17              GLX opcode (glXVendorPrivateWithReply)
7705bd8deadSopenharmony_ci            2           7               request length
7715bd8deadSopenharmony_ci            4           4               vendor specific opcode
7725bd8deadSopenharmony_ci            4           GLX_CONTEXT_TAG context tag
7735bd8deadSopenharmony_ci            4           ENUM            target
7745bd8deadSopenharmony_ci            4           ENUM            format
7755bd8deadSopenharmony_ci            4           ENUM            type
7765bd8deadSopenharmony_ci            1           BOOL            swap_bytes
7775bd8deadSopenharmony_ci            3                           unused
7785bd8deadSopenharmony_ci          =>
7795bd8deadSopenharmony_ci            1           1               reply
7805bd8deadSopenharmony_ci            1                           unused
7815bd8deadSopenharmony_ci            2           CARD16          sequence number
7825bd8deadSopenharmony_ci            4           n               reply length
7835bd8deadSopenharmony_ci            8                           unused
7845bd8deadSopenharmony_ci            4           INT32           width
7855bd8deadSopenharmony_ci            4           INT32           height
7865bd8deadSopenharmony_ci            8                           unused
7875bd8deadSopenharmony_ci            4*n         LISTofBYTE      row followed by column
7885bd8deadSopenharmony_ci
7895bd8deadSopenharmony_ci        Note that n may be zero, indicating that a GL error occurred.
7905bd8deadSopenharmony_ci
7915bd8deadSopenharmony_ci        If <format> or <type> is invalid then the command is erroneous and
7925bd8deadSopenharmony_ci        n=0. The structure of <pixels> is described in Appendix A of the GLX
7935bd8deadSopenharmony_ci        Protocol Specification, "Pixel Data", using the parameters
7945bd8deadSopenharmony_ci        <swap_bytes>, <format>, and <type>. No extra padding is needed after
7955bd8deadSopenharmony_ci        <pixels> because the image format already pads to 32 bits.
7965bd8deadSopenharmony_ci
7975bd8deadSopenharmony_ciDependencies on EXT_abgr
7985bd8deadSopenharmony_ci
7995bd8deadSopenharmony_ci    If EXT_abgr is supported, the <format> parameters of
8005bd8deadSopenharmony_ci    ConvolutionFilter1DEXT, ConvolutionFilter2DEXT, GetConvolutionFilterEXT,
8015bd8deadSopenharmony_ci    SeparableFilter2DEXT, and GetSeparableFilterEXT accept ABGR_EXT.
8025bd8deadSopenharmony_ci    Otherwise they do not.
8035bd8deadSopenharmony_ci
8045bd8deadSopenharmony_ciDependencies on EXT_texture
8055bd8deadSopenharmony_ci
8065bd8deadSopenharmony_ci    EXT_texture is required.  This extension builds on the notion of
8075bd8deadSopenharmony_ci    internal image format, which is defined by EXT_texture.
8085bd8deadSopenharmony_ci
8095bd8deadSopenharmony_ciDependencies on EXT_copy_texture
8105bd8deadSopenharmony_ci
8115bd8deadSopenharmony_ci    If EXT_copy_texture is not supported, commands CopyConvolutionFilter1DEXT
8125bd8deadSopenharmony_ci    and CopyConvolutionFilter2DEXT are not supported.
8135bd8deadSopenharmony_ci
8145bd8deadSopenharmony_ciErrors
8155bd8deadSopenharmony_ci
8165bd8deadSopenharmony_ci    INVALID_ENUM is generated if ConvolutionFilter1DEXT parameter <target>
8175bd8deadSopenharmony_ci    is not CONVOLUTION_1D_EXT.
8185bd8deadSopenharmony_ci
8195bd8deadSopenharmony_ci    INVALID_ENUM is generated if ConvolutionFilter2DEXT parameter <target>
8205bd8deadSopenharmony_ci    is not CONVOLUTION_2D_EXT.
8215bd8deadSopenharmony_ci
8225bd8deadSopenharmony_ci    INVALID_ENUM is generated if CopyConvolutionFilter1DEXT parameter
8235bd8deadSopenharmony_ci    <target> is not CONVOLUTION_1D_EXT.
8245bd8deadSopenharmony_ci
8255bd8deadSopenharmony_ci    INVALID_ENUM is generated if CopyConvolutionFilter2DEXT parameter
8265bd8deadSopenharmony_ci    <target> is not CONVOLUTION_2D_EXT.
8275bd8deadSopenharmony_ci
8285bd8deadSopenharmony_ci    INVALID_ENUM is generated if SeparableFilter2DEXT parameter <target>
8295bd8deadSopenharmony_ci    is not SEPARABLE_2D_EXT.
8305bd8deadSopenharmony_ci
8315bd8deadSopenharmony_ci    INVALID_ENUM is generated if GetConvolutionFilterEXT parameter <target>
8325bd8deadSopenharmony_ci    is not CONVOLUTION_1D_EXT or CONVOLUTION_2D_EXT.
8335bd8deadSopenharmony_ci
8345bd8deadSopenharmony_ci    INVALID_ENUM is generated if GetSeparableFilterEXT parameter <target>
8355bd8deadSopenharmony_ci    is not SEPARABLE_2D_EXT.
8365bd8deadSopenharmony_ci
8375bd8deadSopenharmony_ci    INVALID_ENUM is generated if ConvolutionParameteriEXT,
8385bd8deadSopenharmony_ci    ConvolutionParameterfEXT, ConvolutionParameterivEXT,
8395bd8deadSopenharmony_ci    ConvolutionParameterfvEXT, GetConvolutionParameterivEXT, or
8405bd8deadSopenharmony_ci    GetConvolutionParameterfvEXT parameter <target> is not
8415bd8deadSopenharmony_ci    CONVOLUTION_1D_EXT, CONVOLUTION_2D_EXT, or SEPARABLE_2D_EXT.
8425bd8deadSopenharmony_ci
8435bd8deadSopenharmony_ci    INVALID_ENUM is generated if ConvolutionFilter1DEXT,
8445bd8deadSopenharmony_ci    ConvolutionFilter2DEXT, CopyConvolutionFilter1DEXT,
8455bd8deadSopenharmony_ci    CopyConvolutionFilter2DEXT, or SeparableFilter2DEXT parameter
8465bd8deadSopenharmony_ci    <internalformat> is not ALPHA, LUMINANCE, LUMINANCE_ALPHA, INTENSITY,
8475bd8deadSopenharmony_ci    RGB, or RGBA.
8485bd8deadSopenharmony_ci
8495bd8deadSopenharmony_ci    INVALID_VALUE is generated if ConvolutionFilter1DEXT parameter <width>
8505bd8deadSopenharmony_ci    is less than zero, or greater than MAX_CONVOLUTION_WIDTH_EXT as queried
8515bd8deadSopenharmony_ci    using GetConvolutionParameterivEXT with <target> CONVOLUTION_1D_EXT.
8525bd8deadSopenharmony_ci
8535bd8deadSopenharmony_ci    INVALID_VALUE is generated if ConvolutionFilter2DEXT parameter <width>
8545bd8deadSopenharmony_ci    is less than zero, or greater than MAX_CONVOLUTION_WIDTH_EXT as queried
8555bd8deadSopenharmony_ci    using GetConvolutionParameterivEXT with <target> CONVOLUTION_2D_EXT.
8565bd8deadSopenharmony_ci
8575bd8deadSopenharmony_ci    INVALID_VALUE is generated if CopyConvolutionFilter1DEXT parameter
8585bd8deadSopenharmony_ci    <width> is less than zero, or greater than MAX_CONVOLUTION_WIDTH_EXT
8595bd8deadSopenharmony_ci    as queried using GetConvolutionParameterivEXT with <target>
8605bd8deadSopenharmony_ci    CONVOLUTION_1D_EXT.
8615bd8deadSopenharmony_ci
8625bd8deadSopenharmony_ci    INVALID_VALUE is generated if CopyConvolutionFilter2DEXT parameter
8635bd8deadSopenharmony_ci    <width> is less than zero, or greater than MAX_CONVOLUTION_WIDTH_EXT
8645bd8deadSopenharmony_ci    as queried using GetConvolutionParameterivEXT with <target>
8655bd8deadSopenharmony_ci    CONVOLUTION_2D_EXT.
8665bd8deadSopenharmony_ci
8675bd8deadSopenharmony_ci    INVALID_VALUE is generated if SeparableFilter2DEXT parameter <width>
8685bd8deadSopenharmony_ci    is less than zero, or greater than MAX_CONVOLUTION_WIDTH_EXT as queried
8695bd8deadSopenharmony_ci    using GetConvolutionParameterivEXT with <target> SEPARABLE_2D_EXT.
8705bd8deadSopenharmony_ci
8715bd8deadSopenharmony_ci    INVALID_VALUE is generated if ConvolutionFilter2DEXT parameter <height>
8725bd8deadSopenharmony_ci    is less than zero, or greater than MAX_CONVOLUTION_HEIGHT_EXT as queried
8735bd8deadSopenharmony_ci    using GetConvolutionParameterivEXT with <target> CONVOLUTION_2D_EXT.
8745bd8deadSopenharmony_ci
8755bd8deadSopenharmony_ci    INVALID_VALUE is generated if CopyConvolutionFilter2DEXT parameter
8765bd8deadSopenharmony_ci    <height> is less than zero, or greater than MAX_CONVOLUTION_HEIGHT_EXT
8775bd8deadSopenharmony_ci    as queried using GetConvolutionParameterivEXT with <target>
8785bd8deadSopenharmony_ci    CONVOLUTION_2D_EXT.
8795bd8deadSopenharmony_ci
8805bd8deadSopenharmony_ci    INVALID_VALUE is generated if SeparableFilter2DEXT parameter <height>
8815bd8deadSopenharmony_ci    is less than zero, or greater than MAX_CONVOLUTION_HEIGHT_EXT as queried
8825bd8deadSopenharmony_ci    using GetConvolutionParameterivEXT with <target> SEPARABLE_2D_EXT.
8835bd8deadSopenharmony_ci
8845bd8deadSopenharmony_ci    INVALID_ENUM is generated if ConvolutionFilter1DEXT,
8855bd8deadSopenharmony_ci    ConvolutionFilter2DEXT, GetConvolutionFilterEXT, SeparableFilter2DEXT,
8865bd8deadSopenharmony_ci    or GetSeparableFilterEXT parameter <format> is not RED, GREEN, BLUE,
8875bd8deadSopenharmony_ci    ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or LUMINANCE_ALPHA.
8885bd8deadSopenharmony_ci
8895bd8deadSopenharmony_ci    INVALID_ENUM is generated if ConvolutionFilter1DEXT,
8905bd8deadSopenharmony_ci    ConvolutionFilter2DEXT, GetConvolutionFilterEXT, SeparableFilter2DEXT,
8915bd8deadSopenharmony_ci    or GetSeparableFilterEXT parameter <type> is not UNSIGNED_BYTE, BYTE,
8925bd8deadSopenharmony_ci    UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT.
8935bd8deadSopenharmony_ci
8945bd8deadSopenharmony_ci    INVALID_ENUM is generated if ConvolutionParameterivEXT or
8955bd8deadSopenharmony_ci    ConvolutionParameterfvEXT parameter <pname> is not
8965bd8deadSopenharmony_ci    CONVOLUTION_FILTER_SCALE_EXT, CONVOLUTION_FILTER_BIAS_EXT,
8975bd8deadSopenharmony_ci    or CONVOLUTION_BORDER_MODE_EXT.
8985bd8deadSopenharmony_ci
8995bd8deadSopenharmony_ci    INVALID_ENUM is generated if ConvolutionParameteriEXT or
9005bd8deadSopenharmony_ci    ConvolutionParameterfEXT parameter <pname> is not
9015bd8deadSopenharmony_ci    CONVOLUTION_BORDER_MODE_EXT.
9025bd8deadSopenharmony_ci
9035bd8deadSopenharmony_ci    INVALID_ENUM is generated if ConvolutionParameteriEXT,
9045bd8deadSopenharmony_ci    ConvolutionParameterfEXT, ConvolutionParameterivEXT, or
9055bd8deadSopenharmony_ci    ConvolutionParameterfvEXT parameter <pname> is
9065bd8deadSopenharmony_ci    CONVOLUTION_BORDER_MODE_EXT and parameter <params> is not REDUCE_EXT.
9075bd8deadSopenharmony_ci
9085bd8deadSopenharmony_ci    INVALID_ENUM is generated if GetConvolutionParameterivEXT or
9095bd8deadSopenharmony_ci    GetConvolutionParameterfvEXT parameter <pname> is not
9105bd8deadSopenharmony_ci    CONVOLUTION_FILTER_SCALE_EXT, CONVOLUTION_FILTER_BIAS_EXT,
9115bd8deadSopenharmony_ci    CONVOLUTION_BORDER_MODE_EXT, CONVOLUTION_FORMAT_EXT,
9125bd8deadSopenharmony_ci    CONVOLUTION_WIDTH_EXT, CONVOLUTION_HEIGHT_EXT, MAX_CONVOLUTION_WIDTH_EXT
9135bd8deadSopenharmony_ci    or MAX_CONVOLUTION_HEIGHT_EXT.
9145bd8deadSopenharmony_ci
9155bd8deadSopenharmony_ci    INVALID_ENUM is generated if GetConvolutionParameterivEXT or
9165bd8deadSopenharmony_ci    GetConvolutionParameterfvEXT parameter <target> is CONVOLUTION_1D_EXT
9175bd8deadSopenharmony_ci    and <pname> is CONVOLUTION_HEIGHT_EXT or MAX_CONVOLUTION_HEIGHT_EXT.
9185bd8deadSopenharmony_ci
9195bd8deadSopenharmony_ci    INVALID_OPERATION is generated if ConvolutionFilter1DEXT,
9205bd8deadSopenharmony_ci    ConvolutionFilter2DEXT, CopyConvolutionFilter1DEXT,
9215bd8deadSopenharmony_ci    CopyConvolutionFilter2DEXT, GetConvolutionFilterEXT, SeparableFilter2DEXT,
9225bd8deadSopenharmony_ci    GetSeparableFilterEXT, ConvolutionParameteriEXT,
9235bd8deadSopenharmony_ci    ConvolutionParameterivEXT, ConvolutionParameterfEXT,
9245bd8deadSopenharmony_ci    ConvolutionParameterfvEXT, GetConvolutionParameterivEXT, or
9255bd8deadSopenharmony_ci    GetConvolutionParameterfvEXT is executed between execution of Begin and
9265bd8deadSopenharmony_ci    the corresponding execution of End.
9275bd8deadSopenharmony_ci
9285bd8deadSopenharmony_ciNew State
9295bd8deadSopenharmony_ci
9305bd8deadSopenharmony_ci    Get Value                           Get Command                     Type            Initial Value           Attribute
9315bd8deadSopenharmony_ci    ---------                           -----------                     ----            -------------           ---------
9325bd8deadSopenharmony_ci    CONVOLUTION_1D_EXT                  IsEnabled                       B               False                   pixel/enable
9335bd8deadSopenharmony_ci    CONVOLUTION_2D_EXT                  IsEnabled                       B               False                   pixel/enable
9345bd8deadSopenharmony_ci    SEPARABLE_2D_EXT                    IsEnabled                       B               False                   pixel/enable
9355bd8deadSopenharmony_ci    CONVOLUTION_FILTER_SCALE_EXT        GetConvolutionParameterivEXT    3 x R4          (1,1,1,1)               pixel
9365bd8deadSopenharmony_ci    CONVOLUTION_FILTER_BIAS_EXT         GetConvolutionParameterivEXT    3 x R4          (0,0,0,0)               pixel
9375bd8deadSopenharmony_ci    CONVOLUTION_BORDER_MODE_EXT         GetConvolutionParameterivEXT    3 x Z1          REDUCE_EXT              pixel
9385bd8deadSopenharmony_ci
9395bd8deadSopenharmony_ci    CONVOLUTION_xD (x is 1 or 2)        GetConvolutionFilterEXT         2 x I           empty                       -
9405bd8deadSopenharmony_ci    SEPARABLE_2D                        GetSeparableFilterEXT           1 x I           empty                       -
9415bd8deadSopenharmony_ci    CONVOLUTION_FORMAT_EXT              GetConvolutionParameterivEXT    3 x Z8          RGBA                        -
9425bd8deadSopenharmony_ci    CONVOLUTION_WIDTH_EXT               GetConvolutionParameterivEXT    3 x Z+          0                           -
9435bd8deadSopenharmony_ci    CONVOLUTION_HEIGHT_EXT              GetConvolutionParameterivEXT    2 x Z+          0                           -
9445bd8deadSopenharmony_ci
9455bd8deadSopenharmony_ci    POST_CONVOLUTION_RED_SCALE_EXT      GetFloatv                       R               1                       pixel
9465bd8deadSopenharmony_ci    POST_CONVOLUTION_GREEN_SCALE_EXT    GetFloatv                       R               1                       pixel
9475bd8deadSopenharmony_ci    POST_CONVOLUTION_BLUE_SCALE_EXT     GetFloatv                       R               1                       pixel
9485bd8deadSopenharmony_ci    POST_CONVOLUTION_ALPHA_SCALE_EXT    GetFloatv                       R               1                       pixel
9495bd8deadSopenharmony_ci    POST_CONVOLUTION_RED_BIAS_EXT       GetFloatv                       R               0                       pixel
9505bd8deadSopenharmony_ci    POST_CONVOLUTION_GREEN_BIAS_EXT     GetFloatv                       R               0                       pixel
9515bd8deadSopenharmony_ci    POST_CONVOLUTION_BLUE_BIAS_EXT      GetFloatv                       R               0                       pixel
9525bd8deadSopenharmony_ci    POST_CONVOLUTION_ALPHA_BIAS_EXT     GetFloatv                       R               0                       pixel
9535bd8deadSopenharmony_ci
9545bd8deadSopenharmony_ciNew Implementation Dependent State
9555bd8deadSopenharmony_ci
9565bd8deadSopenharmony_ci    Get Value                           Get Command                     Type            Minimum Value
9575bd8deadSopenharmony_ci    ---------                           -----------                     ----            -------------
9585bd8deadSopenharmony_ci    MAX_CONVOLUTION_WIDTH_EXT           GetConvolutionParameterivEXT    3 x Z+          3
9595bd8deadSopenharmony_ci    MAX_CONVOLUTION_HEIGHT_EXT          GetConvolutionParameterivEXT    2 x Z+          3
9605bd8deadSopenharmony_ci
9615bd8deadSopenharmony_ciRevision History
9625bd8deadSopenharmony_ci
9635bd8deadSopenharmony_ci    Version 1.32, 2002/06/27 - fixed targets for GetConvolutionFilter and
9645bd8deadSopenharmony_ci        GetSeparableFilter.
965