From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1FSzCq-0000px-JD for qemu-devel@nongnu.org; Mon, 10 Apr 2006 12:25:36 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1FSzCq-0000pd-5T for qemu-devel@nongnu.org; Mon, 10 Apr 2006 12:25:36 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1FSzCp-0000pa-UO for qemu-devel@nongnu.org; Mon, 10 Apr 2006 12:25:35 -0400 Received: from [204.127.192.83] (helo=rwcrmhc13.comcast.net) by monty-python.gnu.org with esmtp (Exim 4.52) id 1FSzHV-0008UD-Pt for qemu-devel@nongnu.org; Mon, 10 Apr 2006 12:30:26 -0400 Message-ID: <443A86FC.9010302@win4lin.com> Date: Mon, 10 Apr 2006 12:25:32 -0400 From: "Leonardo E. Reiter" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070405040309050303050405" Subject: [Qemu-devel] Updated BGR vs. RGB vga patch... Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------070405040309050303050405 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hello, attached is an updated version (against today's CVS) of a patch to enable B/G/R color encoding rather than R/G/B with the command-line option -bgr. I found the original here (post by Martin Bochnig): http://lists.nongnu.org/archive/html/qemu-devel/2005-09/msg00059.html It's main intention is to deal with some 24-bit Sun/SPARC X servers, including SunRays. But you can also mimic this behavior with a VNC server if you want. Anyway, it may not be too interesting to most, but it is to me at the moment, so I figured I'd share. To use it, you can pass in the -bgr command line option to qemu. You can get some psychadelic colors if you're really bored and want to try it on an R/G/B 24-bit X server, like XFree86 or X.org :) Regards, Leo Reiter -- Leonardo E. Reiter Vice President of Product Development, CTO Win4Lin, Inc. Virtual Computing from Desktop to Data Center Main: +1 512 339 7979 Fax: +1 512 532 6501 http://www.win4lin.com --------------070405040309050303050405 Content-Type: text/x-patch; name="qemu-vga-bgr.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="qemu-vga-bgr.patch" Index: vl.c =================================================================== RCS file: /cvsroot/qemu/qemu/vl.c,v retrieving revision 1.168 diff -a -u -r1.168 vl.c --- vl.c 9 Apr 2006 01:32:52 -0000 1.168 +++ vl.c 10 Apr 2006 14:07:26 -0000 @@ -128,6 +128,7 @@ int vm_running; int rtc_utc = 1; int cirrus_vga_enabled = 1; +int bgr_display_enabled = 0; #ifdef TARGET_SPARC int graphic_width = 1024; int graphic_height = 768; @@ -4131,6 +4132,7 @@ "-m megs set virtual RAM size to megs MB [default=%d]\n" "-smp n set the number of CPUs to 'n' [default=1]\n" "-nographic disable graphical output and redirect serial I/Os to console\n" + "-bgr invert colors for HOSTS using certain SPARC frame buffers\n" #ifndef _WIN32 "-k language use keyboard layout (for example \"fr\" for French)\n" #endif @@ -4283,6 +4285,7 @@ QEMU_OPTION_cirrusvga, QEMU_OPTION_g, QEMU_OPTION_std_vga, + QEMU_OPTION_bgr, QEMU_OPTION_monitor, QEMU_OPTION_serial, QEMU_OPTION_parallel, @@ -4360,6 +4363,7 @@ { "full-screen", 0, QEMU_OPTION_full_screen }, { "pidfile", HAS_ARG, QEMU_OPTION_pidfile }, { "win2k-hack", 0, QEMU_OPTION_win2k_hack }, + { "bgr", 0, QEMU_OPTION_bgr }, { "usbdevice", HAS_ARG, QEMU_OPTION_usbdevice }, { "smp", HAS_ARG, QEMU_OPTION_smp }, @@ -4850,6 +4854,9 @@ case QEMU_OPTION_std_vga: cirrus_vga_enabled = 0; break; + case QEMU_OPTION_bgr: + bgr_display_enabled = 1; + break; case QEMU_OPTION_g: { const char *p; Index: vl.h =================================================================== RCS file: /cvsroot/qemu/qemu/vl.h,v retrieving revision 1.107 diff -a -u -r1.107 vl.h --- vl.h 9 Apr 2006 01:32:52 -0000 1.107 +++ vl.h 10 Apr 2006 14:07:26 -0000 @@ -130,6 +130,7 @@ extern int bios_size; extern int rtc_utc; extern int cirrus_vga_enabled; +extern int bgr_display_enabled; extern int graphic_width; extern int graphic_height; extern int graphic_depth; Index: hw/vga.c =================================================================== RCS file: /cvsroot/qemu/qemu/hw/vga.c,v retrieving revision 1.42 diff -a -u -r1.42 vga.c --- hw/vga.c 9 Apr 2006 01:06:34 -0000 1.42 +++ hw/vga.c 10 Apr 2006 14:07:26 -0000 @@ -790,23 +790,43 @@ static inline unsigned int rgb_to_pixel8(unsigned int r, unsigned int g, unsigned b) { +if (bgr_display_enabled) { + return ((b >> 5) << 5) | ((g >> 5) << 2) | (r >> 6); +} +else { return ((r >> 5) << 5) | ((g >> 5) << 2) | (b >> 6); } +} static inline unsigned int rgb_to_pixel15(unsigned int r, unsigned int g, unsigned b) { +if (bgr_display_enabled) { + return ((b >> 3) << 10) | ((g >> 3) << 5) | (r >> 3); +} +else { return ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3); } +} static inline unsigned int rgb_to_pixel16(unsigned int r, unsigned int g, unsigned b) { +if (bgr_display_enabled) { + return ((b >> 3) << 11) | ((g >> 2) << 5) | (r >> 3); +} +else { return ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3); } +} static inline unsigned int rgb_to_pixel32(unsigned int r, unsigned int g, unsigned b) { +if (bgr_display_enabled) { + return (b << 16) | (g << 8) | r; +} +else { return (r << 16) | (g << 8) | b; } +} #define DEPTH 8 #include "vga_template.h" --------------070405040309050303050405--