Daniel Laird wrote:
> On STB810 (pnx8950 based) and STB225 DFB1.0 we used virtual surfaces.  
> These had no associated memory  but reported sizes etc and this was done by 
> using the allocate surface function for video layers:
> 
> dfb_surface_create_preallocated(core, config->width, config->height,
>                                 config->format, CSP_SYSTEMONLY,
>                                 Caps, NULL, NULL, NULL, 0, 0, ret_surface);
> 
> This AFAIK meant we had a surface but no memory attached.
> 
> This allowed us to call GetSurface on a VideoLayer and then we used the 
> surface handle 
> to look up what video layer we really meant and make sure our decoder output 
> to that layer.
> Also solved issues where our HW always has layer 0 = video.  Whereas DFB has 
> Primary FB layer as 0
> 
> I am now trying to move to DFB1.2 and did not like V1 of my DFB1.0 driver as 
> it relied on FBDev system.
> So I used your rather nice davinci driver as a basis.  
> This also will make it Open and more supportable in the future.

Great!

Are you going to use devmem for the OSD and offscreen surfaces?

I guess you're at least keeping the kernel module for acceleration.

> However I now want to handle virtual surfaces and this is a difference to the 
> davinci.

Well, you can still do the same and simply set lock.addr to NULL or at least 
allocate on dummy line
and set lock.pitch to 0 :)

> I am happy passing a NULL surface to PlayTo but I have no way of getting the 
> Source etc as you indicated above.  This means I have
> no easy way of specifiying which of the 2 video layers I am rendering to.  I 
> could hack the ctx parameter but this is a dirty hack.

True, the virtual surface is a nicer solution, at least for DirectFB 1.x...

> Should PlayTo be modified to take either a surface or a Layer?

I'm planning to change the API anyhow, moving away from the strong 
layer-surface binding,
allowing to call something like IDirectFBDisplayLayer::SetSurface() or even 
more advanced.

This will also allow showing one surface on different layers,
allowing different positioning and scaling on different screens.

> Could we move CreateVideoProvider from top level interface to Surface/Layer 
> so that either can create a VideoProvider.
> i.e DisplayLayer->CreateVideoProvider and Surface->CreateVideoProvider.
> The Video Provider could then be passed the 'parent' creator in the Construct 
> call and then we would be able to handle both Layer or Surface.
> 
> I am looking for some advice and am happy to try things out as we try to make 
> a better version of the DFB1.2 driver.

Let's keep the virtual surfaces with 1.2 and do heavier changes in 1.3 (->1.4) 
or better in 1.5 (->2.0).

Those changes would better match the virtual surfaces anyhow :)

-- 
Best regards,
   Denis Oliver Kropp

.------------------------------------------.
| DirectFB - Hardware accelerated graphics |
| http://www.directfb.org/                 |
"------------------------------------------"

_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to