Qtopia coming for Neo1973

David Pottage david at electric-spoon.com
Tue Sep 25 16:48:38 CEST 2007


On Tue, September 25, 2007 3:14 pm, Dani Anon wrote:

> It's either one of the following:
>
> 1) Application asks to draw a line and waits. X sees that request and
> uses a driver to draw the line, then sends confirmation. Now the
> application waits and when the confirmation is received it's ready
> for the next operation.
>
> 2) Application uses a driver to print the line.

I think you are misrepresenting the difference. I would write that as:

1. Application asks X to draw a line, then gets on with other stuff, or
makes other calls while it waits. X calls the device driver which talks
to the hardware GPU (using around 20 bytes of API call) which uses
accelerated hardware to draw the line in the screen buffer. A few
microseconds later X informs the application that the line has been
drawn.

2. Application (via compiled in or dynamically linked libraries) talks
directly to the memory mapped frame buffer. It does it's own geometry,
area fill and transparency calculations, (wasting the perfectly good
GPU that the hardware has) then directly updates several thousand
memory locations to make the line appear on the screen. (flushing the
CPU's cache in the process) While it is doing that it cannot do any
other useful work.

> Which one would you choose for performance? Apparently most of the
> phones are using the second. The mind boggles...

Interesting point. The advantage of the first (via X) is that it uses a
standard API, and if the GPU device drivers are well written then most
of the hard work can be offloaded, making screen updates very fast,
even if the screen is very big (=lots of memory buffer to move around).

The advantage of the second (direct frame buffer) is that it is much
quicker to implement on new hardware, and uses slightly less memory.

The way I see it, using a direct frame buffer system such as Qtopia is
sensible in an early version before the GPU device drivers are working,
but after that there is little benefit.

-- 
David Pottage

Error compiling committee.c To many arguments to function.






More information about the community mailing list