Yeah sorry about the double patches. That was because of a botched rebase. It applied my commits twice. I am working on cleaning up the header files and other fixes.
> Are you aware of my project page for ATI VGA emulation here: Yes I am. Your code got me through the initial setup. On Tue, Nov 26, 2019 at 5:33 PM BALATON Zoltan <bala...@eik.bme.hu> wrote: > Hello, > > On Tue, 26 Nov 2019, aaron.zakh...@gmail.com wrote: > > From: Aaron Dominick <aaron.zakh...@gmail.com> > > > > 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 >