Re: FB_VISUAL_TRUECOLOR vs. FB_VISUAL_DIRECTCOLOR

"Antonino A. Daplas" <[email protected]> Sun, 06 Aug 2006 08:02:15 +0800
Newsgroups gmane.linux.fbdev.user
Message-ID <[email protected]>
Antonino A. Daplas wrote:
> James Lehman wrote:
>> Can someone please explain the difference between these two display types?
>>
>> FB_VISUAL_TRUECOLOR
>> FB_VISUAL_DIRECTCOLOR
>>
>> My frame buffer API, ezfb, works well with cards that are
>> FB_VISUAL_TRUECOLOR, but not so well with cards that are
>> FB_VISUAL_DIRECTCOLOR.
>>
>> http://www.akrobiz.com/ezfb/
> 
> Truecolor:
> 
> pixel = red << offset | green << offset | blue << offset | alpha << offset;
> 
> where red, green, blue, alpha are the actual values of each pixel component
> 
> Directcolor:
> 
> pixel = red_index << offset | green_index << offset |
> 	blue_index << offset | alpha_index << offset;
> 
> where *_index's are the index to the Hardware LUT, ie:
> 
> red = red_map[red_index];
> 
> Thusly:  In Directcolor, you have to initialize the LUT first, by
> sending an FBIOPUTCMAP ioctl. If you want Directcolor to behave like
> Truecolor, then send a linear colormap where:
> 
> {red|green|blue|alpha}_map[i] = i;

One more note, the above is fine if each color component is 8-bits in
size (RGB888, for instance), but for RGB555, you have
to downscale. So the untested code below will work better:

red_map[i/(1 << (8 - red_length))] = i;
red_map[i/(1 << (8 - 5))] = i;
red_map[i/8] = i;

Tony

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV