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