Module Name:    src
Committed By:   macallan
Date:           Wed Dec 28 08:36:46 UTC 2011

Modified Files:
        src/sys/dev/rasops: rasops.c rasops.h rasops8.c

Log Message:
add a new flag for ri_flg to allow drivers to request an r3g3b2 devcmap
in 8 bit colour. Drivers are still responsible to generate an appropriate
colour map for the actual hardware.
For use with alpha blending which needs some sort of 'true' colour.


To generate a diff of this commit:
cvs rdiff -u -r1.67 -r1.68 src/sys/dev/rasops/rasops.c
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/rasops/rasops.h \
    src/sys/dev/rasops/rasops8.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/rasops/rasops.c
diff -u src/sys/dev/rasops/rasops.c:1.67 src/sys/dev/rasops/rasops.c:1.68
--- src/sys/dev/rasops/rasops.c:1.67	Thu Dec 22 04:52:45 2011
+++ src/sys/dev/rasops/rasops.c	Wed Dec 28 08:36:46 2011
@@ -1,4 +1,4 @@
-/*	 $NetBSD: rasops.c,v 1.67 2011/12/22 04:52:45 macallan Exp $	*/
+/*	 $NetBSD: rasops.c,v 1.68 2011/12/28 08:36:46 macallan Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rasops.c,v 1.67 2011/12/22 04:52:45 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rasops.c,v 1.68 2011/12/28 08:36:46 macallan Exp $");
 
 #include "opt_rasops.h"
 #include "rasops_glue.h"
@@ -809,9 +809,12 @@ rasops_init_devcmap(struct rasops_info *
 		return;
 
 	case 8:
-		for (i = 0; i < 16; i++)
-			ri->ri_devcmap[i] = i | (i<<8) | (i<<16) | (i<<24);
-		return;
+		if ((ri->ri_flg & RI_8BIT_IS_RGB) == 0) {
+			for (i = 0; i < 16; i++)
+				ri->ri_devcmap[i] =
+				    i | (i<<8) | (i<<16) | (i<<24);
+			return;
+		}
 	}
 
 	p = rasops_cmap;

Index: src/sys/dev/rasops/rasops.h
diff -u src/sys/dev/rasops/rasops.h:1.27 src/sys/dev/rasops/rasops.h:1.28
--- src/sys/dev/rasops/rasops.h:1.27	Thu Dec 22 04:52:45 2011
+++ src/sys/dev/rasops/rasops.h	Wed Dec 28 08:36:46 2011
@@ -1,4 +1,4 @@
-/* 	$NetBSD: rasops.h,v 1.27 2011/12/22 04:52:45 macallan Exp $ */
+/* 	$NetBSD: rasops.h,v 1.28 2011/12/28 08:36:46 macallan Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -61,6 +61,8 @@
  * monochrome bitmap fonts. 
  */
 #define RI_ENABLE_ALPHA	0x1000
+/* set this in order to use r3g3b2 'true' colour in 8 bit */ 
+#define RI_8BIT_IS_RGB	0x2000
 
 struct rasops_info {
 	/* These must be filled in by the caller */
Index: src/sys/dev/rasops/rasops8.c
diff -u src/sys/dev/rasops/rasops8.c:1.27 src/sys/dev/rasops/rasops8.c:1.28
--- src/sys/dev/rasops/rasops8.c:1.27	Tue May  4 04:57:34 2010
+++ src/sys/dev/rasops/rasops8.c	Wed Dec 28 08:36:46 2011
@@ -1,4 +1,4 @@
-/* 	$NetBSD: rasops8.c,v 1.27 2010/05/04 04:57:34 macallan Exp $	*/
+/* 	$NetBSD: rasops8.c,v 1.28 2011/12/28 08:36:46 macallan Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rasops8.c,v 1.27 2010/05/04 04:57:34 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rasops8.c,v 1.28 2011/12/28 08:36:46 macallan Exp $");
 
 #include "opt_rasops.h"
 
@@ -91,6 +91,14 @@ rasops8_init(struct rasops_info *ri)
 		ri->ri_ops.putchar = rasops8_putchar;
 		break;
 	}
+	if (ri->ri_flg & RI_8BIT_IS_RGB) {
+		ri->ri_rnum = 3;
+		ri->ri_rpos = 5;
+		ri->ri_gnum = 3;
+		ri->ri_gpos = 2;
+		ri->ri_bnum = 2;
+		ri->ri_bpos = 0;
+	}
 }
 
 /*

Reply via email to