[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)