qemu-devel
[Top][All Lists]
Advanced

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

Re: [RFC 0/1] ATI R300 emulated grpahics card V2


From: BALATON Zoltan
Subject: Re: [RFC 0/1] ATI R300 emulated grpahics card V2
Date: Sat, 30 Nov 2019 13:11:44 +0100 (CET)
User-agent: Alpine 2.21.99999 (BSF 352 2019-06-22)

On Fri, 29 Nov 2019, BALATON Zoltan wrote:
If the microcode of the microengine/CCE could be reversed or is documented somewhere it may be easier to implement emulation of that instead of doing the packet parsing for all possible command packets of which there are quite a lot, but in the real GPU all those are handled by the small microcode. The ME/CCE is probably some VLIW processor with 40 bit instructions which likely have ops to read and write memory and access registers and maybe some branching and synchronisation but I have no idea how to find out which opcode means what. This microengine is probably very similar throughout the early Radeons, only the microcode changes so if we could implement that it might work for several cards (also even for Rage128Pro).

This is the microcode that the driver uploads to the card that the ME should execute and presumably implements the PM4 way of programming the GPU via packets read from memory:

https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/radeon/R100_cp.bin

This one is for R100 which is also used for RV100 I think; R300 has a different one but probably very similar:

https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/radeon/R300_cp.bin

(and I've seen that even the MacOS driver for Rage128Pro uses a similar microcode but Linux does not implement DRM for that card so it's not in the kernel sources).

Does this make sense to anyone?

Later Radeons (after R600) have a different microengine with different microcode but some Adreno GPUs seem to be based on that. Those microcodes were reversed for the Linux Adreno driver and the freedreno project has some results but it does not match up with these older Radeons so I'm not sure if that's any use for understanding these microcodes.

That's all I could find out so far, any help to get further is  appreciated.

Regards,
BALATON Zoltan



reply via email to

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