[cairo] my quest for 565
David.Hill at Sun.COM
Fri May 18 17:38:19 PDT 2007
So after a long chat on IRC and plenty of playing around, it would seem
that there are several somewhat unrelated issues here. I thought I would
summarize and hope that more feedback would come out of it.
1) Xlib and goofy visual depths:
In cairo-image-surface.c, I added default return for case16, returning
CAIRO_INTERNAL_FORMAT_BGR24 which is a lie, but NO ONE really uses that
value...... and it made various versions of Xvnc show the right thing
for RGB555, and it probably worked for BGR565.
As C. Worth said in the IRC: Supporting crazy xlib visuals, (here, we
can take advantage of mask-based image formats in pixman all we want
without exposing anything to the public cairo interface)
2) PNG and pixman mask depths that dont match. This is probably best
accomplished by copying the image to a supported surface and then saving
that. I have code that does it on the fly for 565, and could be made
mask based, but that is probably not what is really wanted for this problem.
3) In Carl's words: Providing a new, public 565 format for
cairo-image-surface, (here, I'm inclined not to provide a fully general
mask-based format yet).
It is case 3 that really affects me. We started using Cairo a while back
and I was hoping to update my code base, and this particular choice is
holding me up. Of course in my view it is more like restoring support
but that is a nit. My default screen depth is usually RGB565 (a common
depth in mobile space). We are currently only using the Image backend.
I would be quite happy with an #ifdef RGB565 if that would make things
any easier, but I doubt it really does.
This certainly has pixman implications.
Thoughts, ideas, corrections ?
More information about the cairo