I know where you are comming from, but to draw a single pixel even with a function call overhead totally spoils the performance. Actually using IPC to do the same thing will be orders of magnitudes slower, no matter how efficiently it is implemented. The larger the bitmaps to draw, the less the impact of the overhead, but since you brought up the example of drawing thousands of 1 by 1 pixel bitmaps, I just don't see how that would be doable with IPC even close to the performance of simply asigning the bytes. Even if the drawing was done client side (something to consider actually), even then it would totally suck compared to doing it "manually". That being said, I believe the current way the communication works should still have some potential for optimization. It's certainly on my list of things I want to do at some point, but seing how nicely everything performs, it's just not a very priority right now, because there is still so much other stuff to look into. I am just saying I hear you, but at the same time I believe this optimization makes a lot of sense for Firefox no matter what.
I just couldn't compare if drawing on offscreen BBitmaps is more effective on Haiku, than on BeOS, but that's my main point - it will be nice to have complete drawing methods in API, which perform tasks for those more "locally" by default.