fbv: add patch to support bgr555 framebuffer format.
[Peter: add header to patch, fix file permissions] Signed-off-by: Josh.Wu <josh.wu@atmel.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
parent
c03c626ecb
commit
6620ca7dfe
2
CHANGES
2
CHANGES
|
@ -11,7 +11,7 @@
|
||||||
New packages: librsync, lmbench, netperf, squid
|
New packages: librsync, lmbench, netperf, squid
|
||||||
|
|
||||||
Updated/fixed packages: busybox, dnsmasq, dosfstools,
|
Updated/fixed packages: busybox, dnsmasq, dosfstools,
|
||||||
e2fsprogs, freetype, iperf, iptables, iw, less, libdrm,
|
e2fsprogs, fbv, freetype, iperf, iptables, iw, less, libdrm,
|
||||||
libgcrypt, libglib2, libpng, libxml2, matchbox, mdadm, memstat,
|
libgcrypt, libglib2, libpng, libxml2, matchbox, mdadm, memstat,
|
||||||
mtd-utils, nano, openssl, php, pppd, qt, radvd, setserial,
|
mtd-utils, nano, openssl, php, pppd, qt, radvd, setserial,
|
||||||
squashfs, wget, xlib_libX11, xlib_libXfont
|
squashfs, wget, xlib_libX11, xlib_libXfont
|
||||||
|
|
64
package/fbv/fbv-1.0b-fix-bgr555.patch
Normal file
64
package/fbv/fbv-1.0b-fix-bgr555.patch
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
[PATCH] fbv: support bgr555 format
|
||||||
|
|
||||||
|
Signed-off-by: Josh.Wu <josh.wu@atmel.com>
|
||||||
|
diff -Naur fbv-1.0b-ori/fb_display.c fbv-1.0b/fb_display.c
|
||||||
|
--- fbv-1.0b-ori/fb_display.c 2010-04-02 09:38:15.000000000 +0800
|
||||||
|
+++ fbv-1.0b/fb_display.c 2010-04-01 18:54:15.000000000 +0800
|
||||||
|
@@ -297,6 +297,14 @@
|
||||||
|
((b >> 3) & 31) );
|
||||||
|
}
|
||||||
|
|
||||||
|
+inline static unsigned short make15color_bgr(unsigned char r, unsigned char g, unsigned char b)
|
||||||
|
+{
|
||||||
|
+ return (
|
||||||
|
+ (((b >> 3) & 31) << 10) |
|
||||||
|
+ (((g >> 3) & 31) << 5) |
|
||||||
|
+ ((r >> 3) & 31) );
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
inline static unsigned short make16color(unsigned char r, unsigned char g, unsigned char b)
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
@@ -313,6 +321,14 @@
|
||||||
|
u_int16_t *s_fbbuff;
|
||||||
|
u_int32_t *i_fbbuff;
|
||||||
|
|
||||||
|
+ int is_bgr555 = 0;
|
||||||
|
+ struct fb_var_screeninfo var;
|
||||||
|
+ getVarScreenInfo(fh, &var);
|
||||||
|
+ if(var.red.offset == 0 &&
|
||||||
|
+ var.green.offset == 5 &&
|
||||||
|
+ var.blue.offset == 10)
|
||||||
|
+ is_bgr555 = 1;
|
||||||
|
+
|
||||||
|
switch(bpp)
|
||||||
|
{
|
||||||
|
case 8:
|
||||||
|
@@ -325,15 +341,23 @@
|
||||||
|
case 15:
|
||||||
|
*cpp = 2;
|
||||||
|
s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short));
|
||||||
|
- for(i = 0; i < count ; i++)
|
||||||
|
- s_fbbuff[i] = make15color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
|
||||||
|
+ if(is_bgr555)
|
||||||
|
+ for(i = 0; i < count ; i++)
|
||||||
|
+ s_fbbuff[i] = make15color_bgr(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
|
||||||
|
+ else
|
||||||
|
+ for(i = 0; i < count ; i++)
|
||||||
|
+ s_fbbuff[i] = make15color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
|
||||||
|
fbbuff = (void *) s_fbbuff;
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
*cpp = 2;
|
||||||
|
s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short));
|
||||||
|
- for(i = 0; i < count ; i++)
|
||||||
|
- s_fbbuff[i] = make16color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
|
||||||
|
+ if(is_bgr555)
|
||||||
|
+ for(i = 0; i < count ; i++)
|
||||||
|
+ s_fbbuff[i] = make15color_bgr(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
|
||||||
|
+ else
|
||||||
|
+ for(i = 0; i < count ; i++)
|
||||||
|
+ s_fbbuff[i] = make16color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
|
||||||
|
fbbuff = (void *) s_fbbuff;
|
||||||
|
break;
|
||||||
|
case 24:
|
Loading…
Reference in New Issue
Block a user