Revision 8927bcfd

b/console.h
139 139
    return ds->depth;
140 140
}
141 141

  
142
static inline int ds_get_bytes_per_pixel(DisplayState *ds)
143
{
144
    return (ds->depth / 8);
145
}
146

  
142 147
typedef unsigned long console_ch_t;
143 148
static inline void console_write_ch(console_ch_t *dest, uint32_t ch)
144 149
{
b/hw/musicpal.c
829 829
        break;
830 830
    LCD_REFRESH(8, rgb_to_pixel8)
831 831
    LCD_REFRESH(16, rgb_to_pixel16)
832
    LCD_REFRESH(32, (s->ds->bgr ? rgb_to_pixel32bgr : rgb_to_pixel32))
832
    LCD_REFRESH(32, rgb_to_pixel32)
833 833
    default:
834 834
        cpu_abort(cpu_single_env, "unsupported colour depth %i\n",
835 835
                  ds_get_bits_per_pixel(s->ds));
b/hw/sm501.c
940 940

  
941 941
static inline int get_depth_index(DisplayState *s)
942 942
{
943
    switch(s->depth) {
943
    switch(ds_get_bits_per_pixel(s)) {
944 944
    default:
945 945
    case 8:
946 946
	return 0;
947 947
    case 15:
948
	if (s->bgr)
949
	    return 5;
950
	else
951
	    return 1;
948
        return 1;
952 949
    case 16:
953
	if (s->bgr)
954
	    return 6;
955
	else
956
	    return 2;
950
        return 2;
957 951
    case 32:
958
	if (s->bgr)
959
	    return 4;
960
	else
961
	    return 3;
952
        return 3;
962 953
    }
963 954
}
964 955

  
......
970 961

  
971 962
    uint8_t  * src = s->local_mem;
972 963
    int src_bpp = 0;
973
    int dst_bpp = s->ds->depth / 8 + (s->ds->depth % 8 ? 1 : 0);
964
    int dst_bpp = ds_get_bytes_per_pixel(s->ds) + (ds_get_bits_per_pixel(s->ds) % 8 ? 1 : 0);
974 965
    uint32_t * palette = (uint32_t *)&s->dc_palette[SM501_DC_CRT_PALETTE
975 966
						    - SM501_DC_PANEL_PALETTE];
976 967
    int ds_depth_index = get_depth_index(s->ds);
......
1024 1015

  
1025 1016
	/* draw line and change status */
1026 1017
	if (update) {
1027
	    draw_line(&s->ds->data[y * width * dst_bpp], src, width, palette);
1018
	    draw_line(&(ds_get_data(s->ds)[y * width * dst_bpp]), src, width, palette);
1028 1019
	    if (y_start < 0)
1029 1020
		y_start = y;
1030 1021
	    if (page0 < page_min)
b/hw/tcx.c
61 61
            s->palette[i] = rgb_to_pixel8(s->r[i], s->g[i], s->b[i]);
62 62
            break;
63 63
        case 15:
64
            if (s->ds->bgr)
65
                s->palette[i] = rgb_to_pixel15bgr(s->r[i], s->g[i], s->b[i]);
66
            else
67
                s->palette[i] = rgb_to_pixel15(s->r[i], s->g[i], s->b[i]);
64
            s->palette[i] = rgb_to_pixel15(s->r[i], s->g[i], s->b[i]);
68 65
            break;
69 66
        case 16:
70
            if (s->ds->bgr)
71
                s->palette[i] = rgb_to_pixel16bgr(s->r[i], s->g[i], s->b[i]);
72
            else
73
                s->palette[i] = rgb_to_pixel16(s->r[i], s->g[i], s->b[i]);
67
            s->palette[i] = rgb_to_pixel16(s->r[i], s->g[i], s->b[i]);
74 68
            break;
75 69
        case 32:
76
            if (s->ds->bgr)
77
                s->palette[i] = rgb_to_pixel32bgr(s->r[i], s->g[i], s->b[i]);
78
            else
79
                s->palette[i] = rgb_to_pixel32(s->r[i], s->g[i], s->b[i]);
70
            s->palette[i] = rgb_to_pixel32(s->r[i], s->g[i], s->b[i]);
80 71
            break;
81 72
        }
82 73
    }
......
134 125
                                     const uint32_t *cplane,
135 126
                                     const uint32_t *s24)
136 127
{
137
    int x, bgr, r, g, b;
128
    int x, r, g, b;
138 129
    uint8_t val, *p8;
139 130
    uint32_t *p = (uint32_t *)d;
140 131
    uint32_t dval;
141 132

  
142
    bgr = s1->ds->bgr;
143 133
    for(x = 0; x < width; x++, s++, s24++) {
144 134
        if ((be32_to_cpu(*cplane++) & 0xff000000) == 0x03000000) {
145 135
            // 24-bit direct, BGR order
......
148 138
            b = *p8++;
149 139
            g = *p8++;
150 140
            r = *p8++;
151
            if (bgr)
152
                dval = rgb_to_pixel32bgr(r, g, b);
153
            else
154
                dval = rgb_to_pixel32(r, g, b);
141
            dval = rgb_to_pixel32(r, g, b);
155 142
        } else {
156 143
            val = *s;
157 144
            dval = s1->palette[val];
b/hw/vga.c
1157 1157
    case 8:
1158 1158
        return 0;
1159 1159
    case 15:
1160
        if (s->bgr)
1161
            return 5;
1162
        else
1163
            return 1;
1160
        return 1;
1164 1161
    case 16:
1165
        if (s->bgr)
1166
            return 6;
1167
        else
1168
            return 2;
1162
        return 2;
1169 1163
    case 32:
1170
        if (s->bgr)
1171
            return 4;
1172
        else
1173
            return 3;
1164
        return 3;
1174 1165
    }
1175 1166
}
1176 1167

  
b/sdl.c
100 100
        if ((mask & 0x8000) == 0)
101 101
            ds->depth = 15;
102 102
    }
103
    if (ds->depth == 32 && screen->format->Rshift == 0) {
104
        ds->bgr = 1;
105
    } else {
106
        ds->bgr = 0;
107
    }
108 103
    ds->width = w;
109 104
    ds->height = h;
110 105
}

Also available in: Unified diff