qemu-devel
[Top][All Lists]
Advanced

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

Re: Subject: Re: [Qemu-devel] VGA BIOS source code


From: Bartosz Fabianowski
Subject: Re: Subject: Re: [Qemu-devel] VGA BIOS source code
Date: Mon, 31 May 2004 22:17:21 +0200
User-agent: Mozilla Thunderbird 0.6 (X11/20040517)

Alright, after digging into QEMU's graphics card emulation and into the VGA BIOS source, I came to a few conclusions:

a) SDD 6.53 is doing something utterly wrong. It switches the graphics card into a banked graphics mode (it specifically requests banked and not LFB) and then simply "forgets" to switch banks. I checked and double-checked, there is simply no call to the bank switching function. I guess this also means the problem with SDD 6.53 can't be fixed by tinkering with QEMU and/or the BIOS.

c) The fact that SDD does something wrong doesn't mean that only SDD is at fault if graphics modes don't work as advertised. The entire VESA VBE implementation is rather broken, shaky and incomplete.

b) The way the graphics card is emulated by QEMU (and Bochs and plex86 for that matter) is totally inefficient, error-prone and overly complicated. The card's logic is split between a few C files (vl.c, hw/vga.c) that get compiled and executed natively and a bunch of C files containing heaps of x86 assembly that get compiled into a VGA BIOS. The host emulator and the BIOS work together in a very complicated way and it is never obvious why a certain function is implemented in the BIOS or on the host.

d) Finally, as a conclusion from a) to c), I believe it would be best to ditch the entire VGA BIOS and implement all functions of the graphics card in C, natively, inside QEMU. This will be more efficient and less error prone. Now, I haven't seen the patches mentioned by Fabrice that emulate a CLGD54xx. But I certainly hope it is all native and not a half-native half-emulated solution like the current one.

- Bartosz




reply via email to

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