On 18/02/17 16:52, Jd Lyons wrote:
I’ve been trying to add graphics acceleration to
Qume-PPC and have a few questions about how Open Bios deals with FCode option roms.
I noticed when I build Openbios, it creates a file called QEMU,VGA.bin. Is this file the
video console driver for Openbios?
Yes, it is. It mostly does the low-level setup for the card (resolution,
PCI bus mapping) and then falls back to a set of internal console APIs
for handling the VGA console.
I’d like to replace it with an FCode option rom from
one of the proprietary Video cards supported by the Mac OS, is this feasible?
In theory yes, however I suspect you'd hit a couple of obstacles.
Firstly the QEMU,VGA.bin file isn't (yet) used by QEMU, i.e. it's not
mapped into the option ROM by QEMU so you'd need to do some work there.
Secondly I suspect that the driver has some code specific to
QEMU/OpenBIOS to it, i.e. it uses the Bochs VBE API to set the screen
size which won't be present on real hardware. And it could also be that
the proprietary FCode tries to call special registers that only exist on
the card itself.
What parts of Openbios would need to be changed to
support proprietary FCode option roms from cards like the ATI,Rage 128 Pro?
Would I need to rewrite some part of Openbios to support the VGA?
I'd suggest that trying to boot a proprietary VGA FCode ROM is likely to
be long route to getting the emulation running. The good thing here is
that all video cards start up in a standard VGA mode regardless, so you
might as well use the in-built VGA FCode ROM for OpenBIOS and then let
the OS drivers enable the HW-specific parts of the card which they will
do as soon as they match the information found in the DT.
The file QEMU,VGA doesn’t appear to be Tokenized, can
Openbios deal with Tokenized option roms, or do I need to pass it a Detokenized Rom?
QEMU,VGA.bin is tokenised, i.e. tok is used to compile the
drivers/vga.fs driver into FCode. All FCode options ROMs must be
tokenized (almost compiled) as per the IEEE-1275 bindings.
I noticed Fcode-Utils has a detoke tool, I’d like to
use it to detoke FCode roms, but I’m not sure of it’s usage, do I need to remove the PCI
Header from the FCode rom?
If so, how long is the header, is it a standard length, or does it vary from Rom to Rom?
I'm not sure exactly, but if you do have an FCode ROM from a real card
then find a way to extract it via the serial port or other (Google is
your friend) and then you should be able to run it through "detok" in
order to see what the source looks like which will give you plenty of clues.