Chris Wilson wrote: > > Do you mind describing you use-case for alphamaps and could you create a > little benchmark for your workload? > -Chris >
I´am programming a animated crossfade from one window to another. Both windows are not created by my application. The content of both windows is previously stored in a ARGB32 picture (without a usable alpha channel). To apply an alpha channel, I use: uint16_t v = a->Fade * 600 ; XRenderColor Fade = {.red = v, .green = v, .blue = v, .alpha = v} ; Pixmap Map = XCreatePixmap(s->Dpy, f->Win, 1, 1, 8) ; XRenderPictFormat *Format8 = XRenderFindStandardFormat(s->Dpy, PictStandardA8) ; XRenderPictureAttributes Rep = {.repeat = RepeatNormal, .subwindow_mode = IncludeInferiors} ; Picture Alpha = XRenderCreatePicture(s->Dpy, Map, Format8, CPRepeat, &Rep) ; Picture Dest = XRenderCreatePicture(s->Dpy, f->Win, s->RenderFormat, CPSubwindowMode, &Rep) ; XRenderPictureAttributes Att = {.alpha_map = Alpha} ; XRenderFillRectangle(s->Dpy, PictOpSrc, Alpha, &Fade, 0, 0, 1, 1) ; XRenderChangePicture(s->Dpy, a->OldPic, CPAlphaMap, &Att) ; XRenderChangePicture(s->Dpy, a->NewPic, CPAlphaMap, &Att) ; XRenderChangePicture(s->Dpy, Dest, CPAlphaMap, &Att) ; Rendering to 'Dest' cause the described crash (even PictOpClear). I tried out 'PictStandardARGB32' alpha maps and maps with the same size as the windows (no 'RepeatNormal'). But that makes no difference. Unfortunately a copy of a 'PictStandardA8' picture to a 'PictStandardARGB32' (via PictOpSrc) does not only modifies the alpha values (it also clears the RGB values). Peter _______________________________________________ xorg@lists.freedesktop.org: X.Org support Archives: http://lists.freedesktop.org/archives/xorg Info: http://lists.freedesktop.org/mailman/listinfo/xorg Your subscription address: arch...@mail-archive.com