qemu-devel
[Top][All Lists]
Advanced

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

Re: [RFC 0/8] ATI R300 emulated graphics card


From: BALATON Zoltan
Subject: Re: [RFC 0/8] ATI R300 emulated graphics card
Date: Tue, 26 Nov 2019 13:03:14 +0100 (CET)
User-agent: Alpine 2.21.99999 (BSF 352 2019-06-22)

Hello,

On Tue, 26 Nov 2019, address@hidden wrote:
From: Aaron Dominick <address@hidden>

Hello,
I thought of working on an emulated R300 GPU for QEMU video acceleration on 
vintage operating systems (Windows 9x-XP)

Good idea, :-) I very welcome any contribution to this.

The following patch series contains the initial QEMU device and some register 
read/write operations.

At first look you have pathces twice in the series (so each patch appears twice, I haven't checked if they are identical or different) and also the first (and 5th) patch adds a lot of probably unused files which makes review difficult. Could you please fix these and resend with only adding the headers really needed and each patch only once so we know what are the actual changes that are relevant?

Also is it possible to keep everything in ati-vga only adding another device model there rather than fully duplicating it as r300* ? Although for development it's probably OK to keep it separate but unless there are enough differences having a single file at the end may be better. (Also changes are clearer that way but if you have a patch only copying ati-vga files first then separate patches that changes it can be reviewed that way too.)

In short I think this series needs some cleanup first for us to be able to revies it better.

Testing it on an OpenSUSE Linux guest and the kernel correctly detects the card 
and loads the radeon DRM driver.

So I think this gets a bit further than my ati-vga rv100 which does not work with DRM yet. I've thought about targeting RV100 first then moving on to later radeons as those probably have more features and differences from R128 which is the starting point for ati-vga but if you need R300 for some reason specifically targeting that is OK too.

It gets as far as the CRTC probing before crashing with an error that there is 
not enough bandwidth.

Getting DRM to load is one thing but likely you'll need to implement microengine/command processor (also referred to as PM4 or programming mode 4 sometimes) to get it fully working as that's how DRM and Windows ATI drivers likely send commands to the card. I've looked at it but couldn't find documentation on how the microengine works. We get a microcode uploaded by no idea how to run that. If we can't figure out how the microengine works anther approach could be what xenia.jp XBox 360 emulator does and directly parse the packets not using the microcode. It could be possible to copy code from Xenia for that but we need to convert C++ to C. The difficult part is probably figuring out how to run it in a different thread so the device emulation does not block the machine and it works in parallel like real hardware does.

I know next to nothing about hardware emulation and would like to know if what 
I have got so far is on the right track.

Are you aware of my project page for ATI VGA emulation here:

https://osdn.net/projects/qmiga/wiki/SubprojectAti

where I have collected some knowledge that I could gather so far? I have some experience in implementing devices in QEMU but know next to nothing about GPUs so hopefully you know more about those which is more needed for ati-vga. The QEMU knowledge can be picked up by looking at existing devices and asking here or on IRC (if you prefer that, I don't use it but I know some do).

Regards,
BALATON Zoltan



reply via email to

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