Well, since I've succeeded in lowering the GPU emulation to the push-buffer level, there's that little detail called "implementation"... and since we're at a junction here, I thought it would be wise to investigate if OpenGL could be a better suited API for the NV2A (before I start investing lots of time in a D3D implementation).Patrick, what is cooking in the GL area? Can't help reading the SF change logs!!!
Especially considering that Dxbx currently has several issues with Windows 7, let alone will even work on 7 64bit, which is more popular than 7 32bit.Off course, this would impose even biger problems 'couse it will make WinXp useless.
Can you tell me how / where you found 313 operations?I don't know about other GPUs, but until now I've seen 313 pushbuffer commands (although some are replicated to multiple instances, so the total is about 1900 commands). I suspect that around a 100 to 150 commands will be enough to support most of the XDK samples, and perhaps a 100 more for games.
Lets just see how far we can take this; It's certainly going to be a lot of work, so that's what we'll be focussing on right now.
The number 313 came from the Renouveau NV20 header files, a chip that closely matches the NV2A. Meanwhile I've extended the list for the NV2A to 322 entries (not counting constants for shifts, bit-masks and sizes) by inferring the meaning of empty slots and actual push-buffer contents.Can you tell me how / where you found 313 operations?
I have 2 independent sources saying that there are only 267 operations supported by the MS D3D Driver in 5933. So unless MS decided to remove some, 313 sounds strange to me.
Rev-Engineered from the libs: NV2A Operations - Pastebin.com
There's more info about the operations which I didn't parse yet though.
Personally I didn't come accross any other operations so far either [except for some using flags]. Obviously that's not very good double-checking because my emu only runs very few samples right now - I guess the more advanced emus like Dxbx and Cxbx can find the pushbuffer CMDs more easily where apps actually submit those very often
0x1FFC seems to be the opcode mask by the way.