ati-vga: Fix frame buffer endianness for big endian target
The extended mode frame buffer should be little endian even when emulating big endian machine (such as PPC). This fixes color problems with MorphOS. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Message-id: 439aa85061f103446df7b42632d730971a372432.1562151410.git.balaton@eik.bme.hu Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
c799d2ee7e
commit
a38127414b
@ -89,6 +89,7 @@ static void ati_vga_switch_mode(ATIVGAState *s)
|
||||
DPRINTF("Switching to %dx%d %d %d @ %x\n", h, v, stride, bpp, offs);
|
||||
vbe_ioport_write_index(&s->vga, 0, VBE_DISPI_INDEX_ENABLE);
|
||||
vbe_ioport_write_data(&s->vga, 0, VBE_DISPI_DISABLED);
|
||||
s->vga.big_endian_fb = false;
|
||||
/* reset VBE regs then set up mode */
|
||||
s->vga.vbe_regs[VBE_DISPI_INDEX_XRES] = h;
|
||||
s->vga.vbe_regs[VBE_DISPI_INDEX_YRES] = v;
|
||||
|
@ -124,15 +124,15 @@ void ati_2d_blt(ATIVGAState *s)
|
||||
|
||||
switch (s->regs.dp_mix & GMC_ROP3_MASK) {
|
||||
case ROP3_PATCOPY:
|
||||
filler = bswap32(s->regs.dp_brush_frgd_clr);
|
||||
filler = s->regs.dp_brush_frgd_clr;
|
||||
break;
|
||||
case ROP3_BLACKNESS:
|
||||
filler = rgb_to_pixel32(s->vga.palette[0], s->vga.palette[1],
|
||||
s->vga.palette[2]) << 8 | 0xff;
|
||||
filler = 0xffUL << 24 | rgb_to_pixel32(s->vga.palette[0],
|
||||
s->vga.palette[1], s->vga.palette[2]);
|
||||
break;
|
||||
case ROP3_WHITENESS:
|
||||
filler = rgb_to_pixel32(s->vga.palette[3], s->vga.palette[4],
|
||||
s->vga.palette[5]) << 8 | 0xff;
|
||||
filler = 0xffUL << 24 | rgb_to_pixel32(s->vga.palette[3],
|
||||
s->vga.palette[4], s->vga.palette[5]);
|
||||
break;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user