qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [6335] remove bgr (Stefano Stabellini)


From: Anthony Liguori
Subject: [Qemu-devel] [6335] remove bgr (Stefano Stabellini)
Date: Thu, 15 Jan 2009 22:07:17 +0000

Revision: 6335
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6335
Author:   aliguori
Date:     2009-01-15 22:07:16 +0000 (Thu, 15 Jan 2009)

Log Message:
-----------
remove bgr (Stefano Stabellini)

Do not handle bgr host displays in the backends.

Right now a bgr flag exists so that sdl can set it, if the SDL_Surface
is bgr.
Afterwards the graphic device (e.g. vga.c) does the needed conversion.

With this patch series is sdl that is responsible for rendering the format
provided by the graphic device that must provide a DisplaySurface
(ds->surface) in 16 or 32 bpp, rgb.
Afterwards sdl creates a SDL_Surface from the given DisplaySurface and
blits it into the main SDL_Surface using SDL_BlitSurface.

Everything is handled by sdl transparently, because SDL_BlitSurface is
perfectly capable of handling bgr displays by itself.

Signed-off-by: Stefano Stabellini <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>

Modified Paths:
--------------
    trunk/console.h
    trunk/hw/musicpal.c
    trunk/hw/sm501.c
    trunk/hw/tcx.c
    trunk/hw/vga.c
    trunk/sdl.c

Modified: trunk/console.h
===================================================================
--- trunk/console.h     2009-01-15 21:57:30 UTC (rev 6334)
+++ trunk/console.h     2009-01-15 22:07:16 UTC (rev 6335)
@@ -139,6 +139,11 @@
     return ds->depth;
 }
 
+static inline int ds_get_bytes_per_pixel(DisplayState *ds)
+{
+    return (ds->depth / 8);
+}
+
 typedef unsigned long console_ch_t;
 static inline void console_write_ch(console_ch_t *dest, uint32_t ch)
 {

Modified: trunk/hw/musicpal.c
===================================================================
--- trunk/hw/musicpal.c 2009-01-15 21:57:30 UTC (rev 6334)
+++ trunk/hw/musicpal.c 2009-01-15 22:07:16 UTC (rev 6335)
@@ -829,7 +829,7 @@
         break;
     LCD_REFRESH(8, rgb_to_pixel8)
     LCD_REFRESH(16, rgb_to_pixel16)
-    LCD_REFRESH(32, (s->ds->bgr ? rgb_to_pixel32bgr : rgb_to_pixel32))
+    LCD_REFRESH(32, rgb_to_pixel32)
     default:
         cpu_abort(cpu_single_env, "unsupported colour depth %i\n",
                   ds_get_bits_per_pixel(s->ds));

Modified: trunk/hw/sm501.c
===================================================================
--- trunk/hw/sm501.c    2009-01-15 21:57:30 UTC (rev 6334)
+++ trunk/hw/sm501.c    2009-01-15 22:07:16 UTC (rev 6335)
@@ -940,25 +940,16 @@
 
 static inline int get_depth_index(DisplayState *s)
 {
-    switch(s->depth) {
+    switch(ds_get_bits_per_pixel(s)) {
     default:
     case 8:
        return 0;
     case 15:
-       if (s->bgr)
-           return 5;
-       else
-           return 1;
+        return 1;
     case 16:
-       if (s->bgr)
-           return 6;
-       else
-           return 2;
+        return 2;
     case 32:
-       if (s->bgr)
-           return 4;
-       else
-           return 3;
+        return 3;
     }
 }
 
@@ -970,7 +961,7 @@
 
     uint8_t  * src = s->local_mem;
     int src_bpp = 0;
-    int dst_bpp = s->ds->depth / 8 + (s->ds->depth % 8 ? 1 : 0);
+    int dst_bpp = ds_get_bytes_per_pixel(s->ds) + 
(ds_get_bits_per_pixel(s->ds) % 8 ? 1 : 0);
     uint32_t * palette = (uint32_t *)&s->dc_palette[SM501_DC_CRT_PALETTE
                                                    - SM501_DC_PANEL_PALETTE];
     int ds_depth_index = get_depth_index(s->ds);
@@ -1024,7 +1015,7 @@
 
        /* draw line and change status */
        if (update) {
-           draw_line(&s->ds->data[y * width * dst_bpp], src, width, palette);
+           draw_line(&(ds_get_data(s->ds)[y * width * dst_bpp]), src, width, 
palette);
            if (y_start < 0)
                y_start = y;
            if (page0 < page_min)

Modified: trunk/hw/tcx.c
===================================================================
--- trunk/hw/tcx.c      2009-01-15 21:57:30 UTC (rev 6334)
+++ trunk/hw/tcx.c      2009-01-15 22:07:16 UTC (rev 6335)
@@ -61,22 +61,13 @@
             s->palette[i] = rgb_to_pixel8(s->r[i], s->g[i], s->b[i]);
             break;
         case 15:
-            if (s->ds->bgr)
-                s->palette[i] = rgb_to_pixel15bgr(s->r[i], s->g[i], s->b[i]);
-            else
-                s->palette[i] = rgb_to_pixel15(s->r[i], s->g[i], s->b[i]);
+            s->palette[i] = rgb_to_pixel15(s->r[i], s->g[i], s->b[i]);
             break;
         case 16:
-            if (s->ds->bgr)
-                s->palette[i] = rgb_to_pixel16bgr(s->r[i], s->g[i], s->b[i]);
-            else
-                s->palette[i] = rgb_to_pixel16(s->r[i], s->g[i], s->b[i]);
+            s->palette[i] = rgb_to_pixel16(s->r[i], s->g[i], s->b[i]);
             break;
         case 32:
-            if (s->ds->bgr)
-                s->palette[i] = rgb_to_pixel32bgr(s->r[i], s->g[i], s->b[i]);
-            else
-                s->palette[i] = rgb_to_pixel32(s->r[i], s->g[i], s->b[i]);
+            s->palette[i] = rgb_to_pixel32(s->r[i], s->g[i], s->b[i]);
             break;
         }
     }
@@ -134,12 +125,11 @@
                                      const uint32_t *cplane,
                                      const uint32_t *s24)
 {
-    int x, bgr, r, g, b;
+    int x, r, g, b;
     uint8_t val, *p8;
     uint32_t *p = (uint32_t *)d;
     uint32_t dval;
 
-    bgr = s1->ds->bgr;
     for(x = 0; x < width; x++, s++, s24++) {
         if ((be32_to_cpu(*cplane++) & 0xff000000) == 0x03000000) {
             // 24-bit direct, BGR order
@@ -148,10 +138,7 @@
             b = *p8++;
             g = *p8++;
             r = *p8++;
-            if (bgr)
-                dval = rgb_to_pixel32bgr(r, g, b);
-            else
-                dval = rgb_to_pixel32(r, g, b);
+            dval = rgb_to_pixel32(r, g, b);
         } else {
             val = *s;
             dval = s1->palette[val];

Modified: trunk/hw/vga.c
===================================================================
--- trunk/hw/vga.c      2009-01-15 21:57:30 UTC (rev 6334)
+++ trunk/hw/vga.c      2009-01-15 22:07:16 UTC (rev 6335)
@@ -1157,20 +1157,11 @@
     case 8:
         return 0;
     case 15:
-        if (s->bgr)
-            return 5;
-        else
-            return 1;
+        return 1;
     case 16:
-        if (s->bgr)
-            return 6;
-        else
-            return 2;
+        return 2;
     case 32:
-        if (s->bgr)
-            return 4;
-        else
-            return 3;
+        return 3;
     }
 }
 

Modified: trunk/sdl.c
===================================================================
--- trunk/sdl.c 2009-01-15 21:57:30 UTC (rev 6334)
+++ trunk/sdl.c 2009-01-15 22:07:16 UTC (rev 6335)
@@ -100,11 +100,6 @@
         if ((mask & 0x8000) == 0)
             ds->depth = 15;
     }
-    if (ds->depth == 32 && screen->format->Rshift == 0) {
-        ds->bgr = 1;
-    } else {
-        ds->bgr = 0;
-    }
     ds->width = w;
     ds->height = h;
 }






reply via email to

[Prev in Thread] Current Thread [Next in Thread]