[haiku-development] Re: Cario and Skia

  • From: Ryan Leavengood <leavengood@xxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Thu, 23 Feb 2012 15:07:28 -0500

On Thu, Feb 23, 2012 at 2:20 PM, Simon Taylor <simontaylor1@xxxxxxxxxxxx> wrote:
>
> Agreed there are some downsides, especially as far as network clients go.
> But that is in the far-off future. In the same future, imagine a BSkiaView
> that the app-server is aware of, and in network mode will forward Skia calls
> on to the client...

Actually it isn't at all in the far-off future, we already have remote
app_server functionality, it just isn't well known or super obvious to
use. But I'm sure some reasonable compromises could be made to support
remote bitmap-based drawing.

> Still, here's the current situation with Webkit:
> Webcore gfx interface [1] -> Haiku native backend [2] -> BeAPI drawing calls
> [3] -> app_server [4] -> AGG [5]
>
> [1] Fast moving interface
> [2] Incomplete and not up-to-date
> [3] Missing some functions required for full standards compliance, which
> would need to be emulated
> [4] Separate process - adds some overhead for each primitive drawn
> [5] Probably contains the missing bits mentioned in 3, but they're not
> exposed through the BeAPI. In the end, just renders into a chunk of memory

This is pretty accurate AFAIK.

> And here's how it could be:
> Webkit -> Skia/Cairo [6] -> Chunk of memory [7] -> app_server [8]
> [6] Kept up to date with Webkit by other projects
> [7] Small, stable, interface - minimal maintenance burden
> [8] Might need a new interface (shared memory?) to efficiently composite
> with BeAPI-drawn BViews

This is not a terrible idea and in fact I can recall our Haiku
"app_server master" Stephan mentioning somewhere the idea of just
moving all Haiku drawing client side. BTW BBitmaps already make use of
areas to share memory with the app_server, so [8] is pretty much
already done. Maybe some more optimization is possible, but overall it
should work.

In general I think we just need to experiment and see how things work.
I will say it probably does not make sense to compromise the much more
common local use to more easily support the relatively rare remote
connection.

-- 
Regards,
Ryan

Other related posts: