qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Bartosz Fabianowski <bartosz@fabianowski.de>
To: bobb@absamail.co.za, qemu-devel@nongnu.org
Subject: Re: Subject: Re: [Qemu-devel] VGA BIOS source code
Date: Mon, 31 May 2004 22:17:21 +0200	[thread overview]
Message-ID: <40BB92D1.6040508@fabianowski.de> (raw)
In-Reply-To: <200405312200.03734.bobb@absamail.co.za>

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	other threads:[~2004-05-31 20:17 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-05-31 20:00 Subject: Re: [Qemu-devel] VGA BIOS source code Bob Barry
2004-05-31 20:17 ` Bartosz Fabianowski [this message]
2004-06-01  4:14   ` Kyle Hayes
2004-06-01  5:48     ` Bartosz Fabianowski
2004-06-01 10:30       ` Fabrice Bellard
2004-06-01 11:44       ` Derek Fawcus
2004-06-01 18:05         ` Bartosz Fabianowski
2004-06-01 19:09           ` John R. Hogerhuis
2004-06-01 20:53             ` Derek Fawcus
2004-06-01 21:51           ` Hetz Ben Hamo
2004-06-01 22:23             ` Jan Fabianowski
2004-06-02  8:28               ` Johannes Schindelin
2004-06-02  9:19                 ` Bartosz Fabianowski
2004-06-01 18:42         ` Daniel Serpell
2004-06-01 20:46           ` Derek Fawcus
2004-06-01 20:59             ` Daniel Serpell
  -- strict thread matches above, loose matches on Subject: below --
2004-06-02 11:41 Vladimir N. Oleynik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=40BB92D1.6040508@fabianowski.de \
    --to=bartosz@fabianowski.de \
    --cc=bobb@absamail.co.za \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).