AMD's 2016 Linux Driver Plans & GPUOpen Family of Dev Tools: Investing In Open Source
by Ryan Smith on December 15, 2015 9:00 AM ESTEarlier this month AMD’s Radeon Technologies Group held an event to brief the press of their plans for 2016. Part of a larger shift for RTG as they work to develop their own identity and avoid the mistakes of the past, RTG has set about being more transparent and forthcoming in their roadmap plans, offering the press and ultimately the public a high-level overview of what the group plans to accomplish in 2016. The first part of this look into RTG’s roadmap was released last week, when the company unveiled their plans for their visual technologies – DisplayPort/HDMI, FreeSync, and HDR support.
Following up on that, today RTG is unveiling the next part of their roadmap. Today's release is focused around Linux and RTG’s developer relations strategy, with RTG’s laying out their plans to improve support on the former and to better empower developers on the latter. Both RTG’s Linux support and developer relations have suffered some from RTG’s much smaller market share and more limited resources compared to NVIDIA, and while I don’t think even RTG expects to right everything overnight, they do have a clear idea over where they have gone wrong and what are some of the things they can do to correct this.
Linux Driver Support: AMDGPU for Open & Closed Source
The story of RTG’s Linux driver support is a long one, and to put it kindly it has frequently not been a happy story. Both in the professional space and the consumer space RTG has struggled to put out solid drivers that are competitive with their Windows drivers, which has served to only further cement the highly favorable view of NVIDIA’s driver quality in the Linux market. Though I don’t expect RTG will agree with this, there has certainly been a very consistent element of their Linux driver being a second-class citizen in recent years.
To that end, RTG has been embarking on developing a new driver over the past year to serve their needs in both the consumer and professional spaces, and for this driver to be a true first-class driver. This driver, AMDGPU, was released in its earliest form back in April, but it’s only this month that RTG has finally begun discussing it with the larger (non-Linux) technical press. As such there’s not a great deal of new information here, but I do want to spend a moment highlighting RTG’s plans thus far.
AMDGPU is part of a larger effort for RTG to unify all of their Linux graphic driver needs behind a single driver. AMDGPU itself is an open source kernel space driver – the heart of a graphics driver in terms of Linux driver design – and is intended to be used for all RTG/AMD GPUs, consumer and professional. On the consumer side it replaces the previously awkward arrangement of RTG maintaining two different drivers, their open source driver and their proprietary driver, with the open source driver often suffering for it.
With AMDGPU, RTG will be producing both a fully open source and a mixed open/closed source driver, both using the AMDGPU kernel space driver as their core. The pure open source driver will fulfill the need for a fully open driver for distros that only ship open source or for users who specifically want/need all open source. Meanwhile RTG’s closed driver, the successor to the previous Catalyst/fglrx driver, will build off of AMDGPU but add RTG’s closed user mode driver components such as their (typically superior) OpenGL and multimedia runtimes.
The significant change here is that by having the RTG closed source driver based around the open source driver, the company is now only maintaining a single code base, is pushing as much as possible into open source, and that the open source driver is receiving these features far sooner than it was previously. This greatly improves the quality of life for open source driver users, but it’s also reciprocal for RTG: it’s a lot easier to keep up to date with Linux kernel changes with an open source kernel mode driver than a closed source driver, and quickly integrate improvements submitted by other developers.
This driver is also at the heart of RTG’s plans for the professional and HPC markets. At SC15 AMD announced their Boltzmann initiative to develop a CUDA source code shim and the Heterogeneous Compute Compiler for their GPUs, all of which will be built on top of their new Linux driver and the headless + HSA abilities it will be able to provide. And it’s also here where RTG is also looking to capitalize on the open source nature of the driver, giving HPC users and developers far greater access than what they’re accustomed to with NVIDIA’s closed-source driver and allowing them to see the code behind the driver that’s interpreting and executing their programs.
GPUOpen: RTG’s SDKs, Libraries, & Tools To Go Open Source
The second half of RTG’s briefing was focused on developer relations. Here the company has several needs and initiatives, ranging from countering NVIDIA and their GameWorks SDKs/libraries to developing tools to better utilize RTG’s hardware and the heterogeneous system architecture. At the same time the group is also looking to better leverage their sweep of the current generation consoles, and turn those wins into a distinct advantage within the PC space.
To that end, not unlike the RTG’s Linux efforts, the group is embarking on a new, more open direction for GPU SDK and library development. Being announced today is RTG’s GPUOpen initiative, which will combine RTG’s various SDKs and libraries under the single GPUOpen umbrella, and then take all of these components open source.
Starting first with the umbrella aspect of GPUOpen, with GPUOpen we’re going to see RTG travel down the same path of bundled tools and developer portals that NVIDIA has been following for the last couple of years with GameWorks. To NVIDIA’s credit they have been very successful in reaching developers via this method – both in terms of SDKs and in terms of branding – so it makes a great deal of sense for RTG to develop something similar. Consequently, GPUOpen will be bringing RTG’s various SDKs, tools, and libraries such as TressFX, LiquidVR, CodeXL, and their DirectX code samples underneath the GPUOpen branding umbrella. At the same time the RTG is developing a GPUOpen portal to make all of these resources available from a single location, and will also be using that portal to publish news and industry updates for game developers.
But more interesting than just bringing all of RTG’s developer resources under the GPUOpen brand is what RTG is going to do with those resources: set it free. While the group has dabbled with open source over the last several years, beginning with GPUOpen in 2016 they will be fully committed to it. Everything at the GPUOpen portal will be open source and licensed under the highly permissive MIT license, allowing developers to not only see the code behind RTG’s tools and libraries, but to integrate that code into open and closed source projects as they see fit.
Previously RTG had offered some bits and pieces of their code on an open source basis, but those projects were typically using more restrictive licenses than MIT. GPUOpen on the other hand will see the code behind these projects become available to developers under one of the most permissive licenses out there (short of public domain), which in turn allows developers to essentially do whatever they please while also avoiding any compatibility issues with other open source licenses (e.g. GPL).
Otherwise the fact that RTG is going to be placing so much of their code into the open source ecosystem is a big step for the group. Ultimately they believe that there is much to gain both from letting developers freely use this code, and from allowing them to submit their own improvements and additions back to RTG. In a sense this is the anti-GameWorks: whereas NVIDIA favors closed source libraries or limited sharing, RTG is placing everything out there in hope that their development efforts coupled with the ability for other developers to contribute via open source development will produce a better product.
Finally, as part of the GPUOpen portal and RTG’s open source efforts, the company will be hosting these projects on the ever-popular GitHub platform, allowing developers to fork the projects and submit changes as they see fit. The portal and the GitHub repositories for the initial projects will be launching in January. And though RTG didn’t offer much in the way of details for their future plans, they have strongly hinted that this is just the beginning for them, and that they are developing additional effects libraries and code samples that will be made available in the not-too-distant future. Ultimately with the first DirectX 12 games shipping next year and with Vulkan expected to be finalized in 2016 as well, I wouldn’t be surprised to see the GPUOpen portal become the focal-point of RTG’s developer relations efforts for low-level GPU programming, while further leveraging the similarities between console development and low-level PC developer.
49 Comments
View All Comments
Jtaylor1986 - Tuesday, December 15, 2015 - link
Seems like they are making some sensible changes on the driver front all around. The proof of the pudding is in the eating thoughniva - Tuesday, December 15, 2015 - link
There has been talks about doing this in the past. At this stage I've reached the point of "I'll believe it when I see it."Atari2600 - Wednesday, December 16, 2015 - link
Yeah, I heard all this before about 4 years ago - I'll wait till they actually start doing it before praising them.As good 'ol Dubya would say; "Fool me once, shame on you.... fool me..... can't get fooled again".
Flunk - Tuesday, December 15, 2015 - link
Only for their Linux drivers, with the majority of users running Windows this doesn't change much. It would be nice to see those drivers opened up.przemo_li - Wednesday, December 16, 2015 - link
Yes, and No.OpenSource driver is accompanied by ISA documentation for GCN too. Game devs on Windows still benefit, by great transparency into how GPUs actually work. Sure they may still not know what quirks Catalyst have, but they will be prepared for hardware quirks.
ToTTenTranz - Tuesday, December 15, 2015 - link
Having secured the hardware for all consoles (so almost all developers will inevitably work with GCN), it makes sense that AMD is trying to make this into a competition over "pure" hardware, instead of vendor-specific software optimizations like nVidia has been doing with Gameworks.Dribble - Tuesday, December 15, 2015 - link
AMD puts out another bunch of power point slides proclaiming open source will solve all their problems. What this translates into is "we know our competitor does X, so we will just announce we can do it too, only free to all and then hope the open source fairies do all the work". Previous experience shows this goes no-where.Merkin Mustache - Tuesday, December 15, 2015 - link
So salty.DigitalFreak - Tuesday, December 15, 2015 - link
No, so true.BurntMyBacon - Wednesday, December 16, 2015 - link
@Merkin MustacheIt depends on what your expectations are. If you are expecting that open sourcing the driver will fix all the problems that the previous closed source drivers had, then you are relying on @Dribble: "open source faires" and "Previous experience shows this goes no-where." If you are expecting that this will benefit the open source driver and not so much the closed source driver, then you may not be so disappointed.
As I see it, their are two extremes:
Pessimistically, by using the same open source kernel space driver for both their partially closed and fully open source drivers, the quality of the closed source driver will drop to match that of the open source driver as ATi relies on the open source community almost entirely to write a driver that they don't have the hardware knowledge to properly optimize.
Optimistically, the open source driver quality will go up to match the quality of the closed source driver given the same code will be used as a base for both. There may even be a slight improvement compared to previous closed source efforts as the workforce that was once divided and replicating each others work will now be unified and more effort can be put into the single driver base. They may even get something useful from the open source community at large to fold back into the driver.
Most likely, the end result will be somewhere in between. I don't think that RTG will rely on the open source community to develop its driver. Rather, they will now have the same people, who were once working closed source only, working the same code that will be used in the open source driver. I suspect that the workforce that was once working the open source only driver will reassigned to some of the surrounding modules or dismissed to cut cost. The open source community may in time make some suggestions and/or contributions to UI, ease of use, or feature to be used in the windowing system, but I wouldn't expect much in the way of optimization. Meaningful optimization may come out of the HSA and HPC efforts, but I wouldn't expect that to pay off any time soon. More HSA enabled software is needed before the benefit could even be seen.
Any way you dice it, though, this will not be the same as the previous endeavors into open source. By using they same base for the open and closed source drivers, they have for better or for worse eliminated the disparity between them (at least as far as the base code is concerned). Given that OpenGL maintains open and closed source separation, we will still see disparity in gaming. That said, it remains to be seen how quickly the OpenCL and Vulkan evolve to open source. It may be that gaming parity will eventually be achieved through Vulkan, but that is an optimistic view.