> > > The only result is OSD only with videoLayer->SetLevel(-1) or
> > > video only when called with +1 ("-- with alpha .." is printed).
> >
> > Which pixelformat is your OSD? It should have an alpha channel :)
>
> osdLayer is set by:     osdLayer=dfb->GetDisplayLayer(DLID_PRIMARY);

Can you add some code to print out the _final_ layer and surface
settings for the primary layer?  If you're only seeing the OSD, I'm
convinced you do not have all of:

DLOP_ALPHACHANNEL set on the PRIMARY
DLOP_OPACITY NOT set on either layer
DSPF_ARGB or DSPF_AiRGB pixelformat on the primary (the latter being
easier to use)
Graphics in the surface that are not entirely opaque
VIA Unichrome Video layer set to level -1

> (I know it looks ugly but it is here (setting/changeing surface
> info is done in SetParams())):
> http://cvs.berlios.de/cgi-bin/viewcvs.cgi/softdevice/softdevice/video-dfb.c?rev=1.60&content-type=text/vnd.viewcvs-markup

... which doesn't set DLOP_ALPHACHANNEL on the primary anywhere, as
far as I can tell.

> So its either the sequence of settings of some capabiliies or some other 
> magic :-( .

You should be able to check whether it's the sequence of settings by
printing out the final settings that your code ends up configuring.

> From directfb code I do not understand the dfb_layers_hook_primary()
> function around line 491 in unichrome/unichrome.c .
> Does it set or retrieve function pointers.

Both.

> If it sets some function pointers I've no
> clue where member's of ucOldPrimaryFuncs were set.

By DirectFB, not the gfxdriver.

If you're convinced there's a bug in the driver and not in the client
code, put printfs in uc_overlay.c and uc_primary.c to show what gets
written to the V_ALPHA_CONTROL register.

Mark

_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to