[HN Gopher] Nvidia Publishes 73k Lines of 3D Header Files for Fe... ___________________________________________________________________ Nvidia Publishes 73k Lines of 3D Header Files for Fermi Through Ampere GPUs Author : pantalaimon Score : 78 points Date : 2022-08-09 11:56 UTC (11 hours ago) (HTM) web link (www.phoronix.com) (TXT) w3m dump (www.phoronix.com) | pavlov wrote: | The headers are here in HTML-navigatable form: | | https://nvidia.github.io/open-gpu-doc/ | | More specifically, I guess these are the new release: | | https://nvidia.github.io/open-gpu-doc/classes/3d/ | digdugdirk wrote: | Can someone knowledgeable about the space please help me | understand why this is important? | | The article discusses this with regards to "Nouveau", which seems | to be an open source Nvidia specific driver - | https://en.wikipedia.org/wiki/Nouveau_(software) | | What do these 3d header files do, and why/how will this make life | easier for "Nouveau"? Finally, why (aside from just open source | being the best source) will this benefit people like myself who | don't understand what just happened? | [deleted] | jpollock wrote: | When looking at a binary blob for the driver, the person | writing the docs of what the driver does sees "jump $addr1" but | they don't know what's at the other end. To write the | specification for the clean room reimplementation, they need to | read the destination assembly and document that. | | This provides documentation on what is at the other end of the | address and what it does, and what the layout of each parameter | is. | | That means they will hopefully avoid having to recurse and | understand all of the binary code to write the specification. | averne_ wrote: | That's not exactly correct. This is register maps for the 3d | engine (also called class), what you describe would be closer | to the shader ISA. | | In driver code you'll see them building command buffers that | set registers in those classes to certain values. It could be | the RGBA values of the clear color, or a virtual address in | the GPU space. | | This documents the names of these registers. This makes | reverse engineering somewhat easier as you don't really have | to guess anymore. But in most cases it was pretty clear from | the start, and for some generations those were already well | documented by open source efforts. One of best known gens is | probably Maxwell since it was used in the Nintendo Switch, | see for instance [1] (or code in yuzu/Ryujinx) which is the | equivalent of those headers NV published. | | However this isn't a very big step in documenting their GPUs. | The exact functions of those registers aren't explained, but | most importantly the shader ISA isn't documented at all, | which is essential to build a good open-source driver. | | Source: I have reverse engineered some driver code for | Maxwell (and used similar headers to write drivers for nvdec | and nvjpg). | | [1] https://github.com/devkitPro/deko3d/blob/master/source/ma | xwe... | digdugdirk wrote: | You say this isn't a very big step - out of curiosity, how | much work would have been involved in getting this release | open sourced? And what might be preventing them from | releasing the shader ISA? | | Specifically curious if this inherently would "let the cat | out of the bag" about the specifics of their chip design, | for example. | averne_ wrote: | > how much work would have been involved in getting this | release open sourced | | Close to no actual effort (the headers are | autogenerated). However there was probably a lot of work | behind the scenes with their legal team/whatever to clear | the release. | | About the shader ISA, I wish I knew. It's certain that | the documentation exists, because they provide it to some | developers (I've been told the Maxwell ISA docs are part | of the Nintendo Switch SDK), so it's not like they have | to write it from scratch. | | And AMD provides full docs about it [1] (not sure about | Intel), so I don't see how it could provide a significant | edge over their competition. Maybe raytracing | instructions? But for a motivated reverse engineer this | stuff isn't impossible to figure out. I think it's down | to company culture and inertia. | | [1] https://developer.amd.com/wp- | content/resources/RDNA2_Shader_... | monocasa wrote: | > not sure about Intel | | I don't know about Arc, but Intel has historically | probably been the most open with their GPU docs. AMD's is | (while laudable, particularly compared to Nvidia) | unfortunately a bit of a autogenned dump without context. | Where as Intel's is closer to what I expect out of decent | SoC documentation; it'll be about half prose explaining | the why(!!), and half the autogenned tables of registers | and opcode formats. | stevehawk wrote: | basically they just published a large amount of API for | developers to use | monocasa wrote: | Inside just about every Nvidia GPU there's a bunch of little | engines they internally call classes. This documents the 3D | graphics rendering engines' method calls (the commands in the | physical GPU command list) and memory layout for instances of | these classes. | umanwizard wrote: | When Nvidia published their open-source GPU drivers, there was a | huge amount of moaning by free software absolutists about how it | didn't really count because they just moved a bunch of logic into | the firmware, or weren't open-sourcing CUDA, or whatever. Nvidia | folks always responded with "our open-source journey is just | beginning, but stay tuned!" | | I know Nvidia doesn't have a lot of goodwill in the open-source | community, but it's good to see that steps in the right direction | are continuing! | mort96 wrote: | Personally, my threshold for when they're off the shit-list is | when they release the userspace component open source, when | they support GBM, and when they stop actively sabotaging | Nouveau. Maybe they'll get there, but I'm not exactly holding | my breath. | | That doesn't mean what they've done so far is insignificant. | Being able to run an untainted kernel will be nice (for those | running new enough GPUs anyways). | omegalulw wrote: | CUDA is their moat and their drivers do add significant value, | seemingly more than AMD. So it's reasonable to expect that | these won't be open sourced any time soon. Honestly I'm | surprised why people expect them to just open source core IP | like this. | tendstofortytwo wrote: | eh I think it's reasonable to have assumed they would continue | to hold the stance that they had been holding for years. I'm | sure the absolutists you talk about would be happy to be proven | wrong. ___________________________________________________________________ (page generated 2022-08-09 23:00 UTC)