I've cc'ed the xorg mailing list, since that's a better place to ask than
the generic freedesktop mailing list.

https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/blob/master/renderproto.txt#L728
says that you'll get a BadMatch error if the specified filter is not
"one of the filters supported for the screen associated with picture".

On 2/21/22 07:11, Nikita Zlobin wrote:
I'm trying to apply convolution to pixmap:

Doing this call before to composite:

XRenderSetPictureFilter (
     display, pic_src, "convolution",
     (XFixed[]){ 3, 1, 0x2AAAAAAB, 0x2AAAAAAB, 0x2AAAAAAB },
     5 );

Found this function in the header - it's missing both in
renderproto.txt and libXrender.txt files. Parameters should be just as
described for convolution filter: N + M + N*M values in total.

Error happens right here:

X Error of failed request:  BadMatch (invalid parameter attributes)
   Major opcode of failed request:  138 (RENDER)
   Minor opcode of failed request:  30 (RenderSetPictureFilter)
   Serial number of failed request:  48
   Current serial number in output stream:  50

Tried to analyze existing code - in picom, but it uses xcb, yet I
can't anything specific. The only difference - xcb function has
different order for params number and array, plus filter name length.

I made assumption, that XFixes should take full 32bit range (signed),
so just took maximum signed 32bit value and divided by 3.

Error mentions something called parameter attributes. Can't see
anything, but values in function signature.


--
        -Alan Coopersmith-                 alan.coopersm...@oracle.com
         Oracle Solaris Engineering - https://blogs.oracle.com/solaris

Reply via email to