[Vm-dev] About BitBlt on the Raspberry Pie VM

tim Rowledge tim at rowledge.org
Thu Feb 5 21:17:05 UTC 2015

On 05-02-2015, at 12:43 PM, Clément Bera <bera.clement at gmail.com> wrote:

> Hello Tim,
> Thanks for your answers. Yeah I definitely had misunderstood what you did.

That’s ok. I generally misunderstand what I did, too.

> I thought my VM builds got slower on the Pie because of the lack of the fast BitBlt you did with Ben Avison. Seemingly this is not the reason so I'll check why, it's probably another issue (I'm very busy right now but in a few weeks).

A possible problem is the gcc optimiser doing weird stuff. I’m not a fan.

> I'm glad you contributed your code to the main branch. Anyone improving the Cog should do that so we share the improvements and it'll get better. I'm looking from time to time to your commits on the CogARMCompiler and I can't wait to have an ARM JIT too.

Soon, young man, soon. 

> About vector graphics, I know many people are using a Cairo binding made by Igor in the Pharo community and they're quite happy about it. A guy (Ronie Salgado) also implemented some openCL support for GPU, but there are not that many users. 

I use a very simple connection to Cairo/Pango in nuScratch on the Pi to render text, since it does mostly the right thing for NAAWIUT[1] script. It works pretty well and is a lot simpler than trying to do the whole job in bitblt…

> In any case, I was just wondering if a good JIT compiler could translate Bit based graphics to vector based graphics. 

Ah, now that sounds like the opposite I what I thought you said originally. Taking a bitblt and converting it to calls to a vector lib (like cairo?) would be interesting for some important cases, but I can’t help thinking that doing the job at the higher level makes a lot more sense. An easy case would be a bitblt that was about to fill a rectangular area with a simple pattern and a simple combination rule; sure, we could trap that and convert it to a GrungoLibv2.1a call to drawboxThingExtended(left, bottom, width, height-1, borderwidth, &pattern, &clut[x*3]) but why not make a Canvas that goes more directly? Canvases - for all that they frequently confuse and exasperate me when I use them - are a good way of abstracting out the intent of a drawing operation. 

Actually this is possibly a good place to point to Gezira/Nile

I want that on my Pi. A Pi 2 has 4 cores. Making use of them to render like that would be just lovely.

tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
Who is General Failure and why is he reading my disk?

More information about the Vm-dev mailing list