[Buildroot] [PATCH]Add a fbv-1.0b patch to support bgr555 framebuffer format.

Wu, Josh Josh.wu at atmel.com
Thu Apr 8 06:35:45 UTC 2010


Hi,

Here is a patch for fbv-1.0b to add support to bgr555 frame buffer format(at91sam9263ek using this format).

Best Regards,
Josh Wu


>From 42f736ba76b8ec4e0065560792af2e29c29b2c24 Mon Sep 17 00:00:00 2001
From: Josh.Wu <josh.wu at atmel.com>
Date: Fri, 2 Apr 2010 10:35:11 +0800
Subject: [PATCH] Add a fbv-1.0b patch to support bgr555 framebuffer format.


Signed-off-by: Josh.Wu <josh.wu at atmel.com>
---
 package/fbv/fbv-1.0b-fix-bgr555.patch |   61 +++++++++++++++++++++++++++++++++
 1 files changed, 61 insertions(+), 0 deletions(-)
 create mode 100755 package/fbv/fbv-1.0b-fix-bgr555.patch

diff --git a/package/fbv/fbv-1.0b-fix-bgr555.patch b/package/fbv/fbv-1.0b-fix-bgr555.patch
new file mode 100755
index 0000000..837c214
--- /dev/null
+++ b/package/fbv/fbv-1.0b-fix-bgr555.patch
@@ -0,0 +1,61 @@
+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:
-- 
1.6.5.6




More information about the buildroot mailing list