[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