Module Name:    src
Committed By:   macallan
Date:           Thu Apr 12 22:36:15 UTC 2012

Modified Files:
        src/sys/dev/wsfb: genfb.c

Log Message:
in 32 bit colour assume RGB ordering, allow override using a device property


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 src/sys/dev/wsfb/genfb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/wsfb/genfb.c
diff -u src/sys/dev/wsfb/genfb.c:1.47 src/sys/dev/wsfb/genfb.c:1.48
--- src/sys/dev/wsfb/genfb.c:1.47	Tue Feb  7 18:48:19 2012
+++ src/sys/dev/wsfb/genfb.c	Thu Apr 12 22:36:15 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: genfb.c,v 1.47 2012/02/07 18:48:19 phx Exp $ */
+/*	$NetBSD: genfb.c,v 1.48 2012/04/12 22:36:15 macallan Exp $ */
 
 /*-
  * Copyright (c) 2007 Michael Lorenz
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: genfb.c,v 1.47 2012/02/07 18:48:19 phx Exp $");
+__KERNEL_RCSID(0, "$NetBSD: genfb.c,v 1.48 2012/04/12 22:36:15 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -507,8 +507,30 @@ genfb_init_screen(void *cookie, struct v
 		ri->ri_flg |= RI_CLEAR;
 	}
 
-	if (ri->ri_depth == 32)
+	if (ri->ri_depth == 32) {
+		bool is_bgr = false;
+
 		ri->ri_flg |= RI_ENABLE_ALPHA;
+		prop_dictionary_get_bool(device_properties(sc->sc_dev),
+		    "is_bgr", &is_bgr);
+		if (is_bgr) {
+			/* someone requested BGR */
+			ri->ri_rnum = 8;
+			ri->ri_gnum = 8;
+			ri->ri_bnum = 8;
+			ri->ri_rpos = 0;
+			ri->ri_gpos = 8;
+			ri->ri_bpos = 16;
+		} else {
+			/* assume RGB */
+			ri->ri_rnum = 8;
+			ri->ri_gnum = 8;
+			ri->ri_bnum = 8;
+			ri->ri_rpos = 16;
+			ri->ri_gpos = 8;
+			ri->ri_bpos = 0;
+		}
+	}	
 
 	if (ri->ri_depth == 8 && sc->sc_cmcb != NULL)
 		ri->ri_flg |= RI_ENABLE_ALPHA | RI_8BIT_IS_RGB;

Reply via email to