LWN.net Logo

NVIDIA to provide documentation for Nouveau

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 9:47 UTC (Tue) by moggers87 (subscriber, #86573)
Parent article: NVIDIA to provide documentation for Nouveau

How long until they demand Nouveau run the source code through a C preprocessor? :P

I hope my snide comment turns out to be just that. It would be nice to consider NVidia cards again.


(Log in to post comments)

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 9:59 UTC (Tue) by rvfh (subscriber, #31018) [Link]

I think this marks a turn in the way NVIDIA consider the community. I just can't find the quote where they said that OSS developers would not be good enough to develop a graphics card driver. Enter Nouveau!

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 15:12 UTC (Tue) by HelloWorld (subscriber, #56129) [Link]

> I just can't find the quote where they said that OSS developers would not be good enough to develop a graphics card driver.
Well, are they? Mesa is limited to OpenGL 3.2 (instead of 4.4) and Nouveau's performance doesn't begin to approach that of nvidia's driver.

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 15:26 UTC (Tue) by mpr22 (subscriber, #60784) [Link]

nvidia's own driver is written by people with rather better access to hardware information than has historically been the case for the Nouveau development effort. It is not surprising - nor enlightening about the relative competence of the two drivers' developers - that there is a disparity between them in favour of the internally developed driver.

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 15:33 UTC (Tue) by rvfh (subscriber, #31018) [Link]

Don't bother feeding the troll :-)

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 15:43 UTC (Tue) by higuita (guest, #32245) [Link]

Then look at the ATI/AMD radeon driver, where in many places is already as fast as the closed driver. Nouveau can reuse most of AMD work on the gallium3d and mesa, that in turns can reuse many of the intel work in the mesa (intel don't directly uses gallium3d). This will help nouveau recover faster from being this late to the FLOSS game.

Mesa is limited to OpenGL 3.2, but already have many features from above versions implemented. it stil have a big backlog of TODO items, still recovering of years of slow developing and lack of developers, but now, with paid developers from various companies, it manage to reduce that backlog by a huge amount.

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 16:48 UTC (Tue) by rahvin (subscriber, #16953) [Link]

Galium3D last I looked is a VMWare project with them supporting the vast majority of the dev's working on it. Maybe if nVidia, AMD and Intel would donate some developer time it could move along quicker.

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 19:28 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link]

No. Gallium3D is also used by AMD's drivers and other projects are also looking at it (mostly ARM reverse engineering projects).

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 20:21 UTC (Tue) by rahvin (subscriber, #16953) [Link]

No.
What a well thought out and comprehensive reply. Galium3d is:
Gallium3D is a framework intended to ease the programming of device drivers for 3D graphics chipsets by splitting the graphics device driver into three parts. This is accomplished by the introduction of two interfaces: Gallium3D State Tracker Interface and the Gallium3D WinSys Interface. The three components are called

Gallium3D State Tracker – each graphical API by which a device driver is being addressed has its own State Tracker, e.g. there is a Gallium3D State Tracker for OpenGL and a different ones for Direct3D or GLX. Each State Tracker contains an implementation of the Gallium3D State Tracker Interface, and is unique, this means is shared by all existent Gallium3D device drivers.

Gallium3D hardware device driver – this is the actual code, that is specific to the underlying 3D graphic accelerator chip, but only as far as the Gallium3D WinSys Interface allows. There is a unique Gallium3D hardware device driver for each available graphics chip and each implements the Gallium3D State Tracker Interface as well as the Gallium3D WinSys Interface.

Gallium3D WinSys – is specific to the underlying kernel of the operating system and each one implements the Gallium3D WinSys Interface to interface with all available Gallium3D hardware device drivers.
http://en.wikipedia.org/wiki/Gallium3D

Whether or not AMD is assisting in the development of the hardware device driver for AMD hardware of Galium3D has little bearing on the entirety of Galium3D. This hardware driver has almost no code reuse with other hardware. This is because the device driver portion is a relatively small part of the entirety of Galium3D though it is a very important part. As I said, the last I saw the bulk of the Galium3D development is being funded by VmWare (I believe to advance their goal of desktop virtualization, though I could never find official company statements acknowledging it). Though hardware vendors have provided some assistance to development of the small graphics driver portion there is far more to G3D than just the hardware driver.

The whole point of the G3D setup is to abstract the hardware. This is where the bulk of the work in G3D is. Yes you still need hardware drivers that talk the hardware's language but the abstraction allows you to build the pipeline and interface with hardware independence. It is my understanding that the state tracker and winsys portion of the driver compose the vast majority of G3D with the hardware driver composing essentially just shim between the hardware and G3D. Last I saw none of the graphics OEMs except for intel had paid for development time on the state tracker or winsys. I haven't looked for a year so maybe that's changed (and google wasn't helpful, probably because my google-fu is week) but I would be surprised if much has changed on the G3D development front.

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 21:09 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link]

AMD _does_ support Gallium3D development. Just look at the mesa3d-devel mailing list.

And it's also well-known that Intel does NOT use Gallium3D infrastructure at all. They prefer to use their own completely custom infrastructure.

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 22:13 UTC (Tue) by SEJeff (subscriber, #51588) [Link]

Yup GEM aka Graphics Execution Manager. Intel didn't like Gallium3D and decided to NIH.

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 22:16 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link]

Nope.

GEM is the kernel-level interface. And in fact, other drivers _also_ use it. Except Intel implements GEM directly and other drivers use TTM (Translation Tables Mapping) instead.

There's a similar story with Mesa - there's a 'classic mesa' (drivers directly implement OpenGL spec) and Gallium3D (common infrastructure is used for OpenGL and drivers simply translate the resulting TGSI stream). And Intel is the only major remaining 'classic' Mesa user.

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 23:42 UTC (Tue) by airlied (subscriber, #9104) [Link]

The Gallium 3D OpenGL state tracker is developed my lots of companies and non-companies alike.

Tungsten Graphics wrote the original, consumed into the VMware, I think since the initial import the biggest contribution to it was an independent who wrote the GLSL to TGSI translator.

Other contributors are Marek who worked on radeon in his spare time and is now employed my AMD, and myself at Red Hat.

That layer is under constant development, a lot of it isn't done by VMware anymore, VMware are currently focused on the llvmpipe sw renderer pipe driver code and their closed direct3d implementations from what I can see.

Also a lot of work is required to write a gallium 3D driver its not trivial code to map to hw as you think,

Apart from all that there is also a gallium video decoding layer using vdpau that AMD has contributed a lot of, a gallium compute interface for OpenCL that AMD and VMware (initially) along with independents put a lot of work into.

NVIDIA to provide documentation for Nouveau

Posted Sep 25, 2013 7:28 UTC (Wed) by gioele (subscriber, #61675) [Link]

> Also a lot of work is required to write a gallium 3D driver its not trivial code to map to hw as you think,

Is the amount of functionality brought by the independent state trackers enough to justify the investment in writing Gallium 3D drivers instead of classic Mesa drivers?

Once you write a Gallium 3D driver for your HW, what do you get "for free" from the rest of the Gallium 3D infrastructure?

NVIDIA to provide documentation for Nouveau

Posted Sep 25, 2013 7:57 UTC (Wed) by Cyberax (✭ supporter ✭, #52523) [Link]

Not having to write complicated OpenGL state trackers, for one thing. And OpenCL in near future.

NVIDIA to provide documentation for Nouveau

Posted Sep 25, 2013 9:25 UTC (Wed) by airlied (subscriber, #9104) [Link]

Not having to rewrite DRI interface code, having to worry about OpenGL state tracking semantics (GL does things different for rendering to windows and FBOs, and every driver has to repeat the mistake in classic), abstracted a bit from the OpenGL GLSL compiler. Free mipmap generation, lots of utility helpers.

Just a lot less boilerplate and cut-n-pasting all over the place.

NVIDIA to provide documentation for Nouveau

Posted Sep 24, 2013 19:26 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link]

Here's the state of OpenGL support in Mesa: http://cgit.freedesktop.org/mesa/mesa/tree/docs/GL3.txt As you see, GL3.3 is probably going to be finished pretty soon and GL4 is not that far in the future.

Nouveau's performance is really hobbled by the inability to do video card reclocking. In effect, Nouveau always works in the lowest power mode which kinda beats the purpose of a high-end videocard :(

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds