2009/8/31 Jim Huang <js...@0xlab.org
> While OpenGL ES cannot be used or it's in software implementation,
> copybit is used. Actually in cupcake branch,
> SurfaceFlinger always uses copybit instead of GL if copybit is
> available -- but that's an oversight.
To quote the words from pixelflinger: (from
[[ Functions ]]
copybit is just an abstraction for a basic 2D blitter with support for
rotation, scaling and
color/pixelformat conversions. These features can be supported in full
If the copybit module is present, then SurfaceFlinger will try to use
it instead of using
On the G1 copybit is used for all window compositions and video playback (CC and
scaling), on this h/w copybit is very fast and provide very good up
and down scaling.
[[ Donut Changes ]]
HOWEVER, on the release after Donut, the copybit module won't be used
directly, instead it will be used as a back-end for our software
OpenGL ES 1.x and
SurfaceFlinger will only use the OpenGL ES API. Eventually, the
copybit module will be
phased out, instead, we will ask the ISV/OEMs to implement these
features on their
OpenGL ES drivers, if they think it is necessary.
[[ Usability ]]
If your h/w doesn't have accelerated GL, but has some sort of decent
2D blitter, you can
write a copybit HAL module for it, and it will be used automatically
by SurfaceFlinger --
at least under cupcake and donut.
[[ Limitations ]]
There are no mechanism to accelerate applications at the moment. Skia
is a purely
software renderer. It can greatly benefit from newer CPUs though,
which have SIMD
instructions, often, it'll be able to operate at bus speed in that
case. We're working on
optimization in that area.
If a device has a GPU, it makes no sense to implement copybit, because
(1) it won't be used by apps
(2) SurfaceFlinger already uses the GPU for its work.
Now, if the device has an additional 2D part (like the G1), it is
useful to implement copybit,
this way application won't have to share the GPU with SurfaceFlinger.