Nouveau's Big Batch Of Changes Land In Linux 3.17
Being merged into the mainline kernel code-base for Linux 3.17 was the big DRM feature pull that included enhancements to the Intel and AMD Radeon graphics drivers (among the other smaller DRM/KMS drivers), but missing from action was the open-source NVIDIA driver. The Nouveau driver changes were delayed by some last-minute bug-hunting but now a separate pull request was issued to land the Nouveau driver updates for Linux 3.17.
Among the highlights for the Linux 3.17 additions relating to Nouveau for open-source NVIDIA graphics:
- Furthering of the NVIDIA GK20A Kepler GPU that's found within the Tegra K1 SoC. Code contributed by NVIDIA for this high-performance mobile ARM GPU include probing and re-clocking support. The GK20A re-clocking doesn't bring any new magic to the Nouveau driver but is using a statically defined performance state table.
- Outside of the Tegra space, NVIDIA also helped out in fixing up Kepler GPUs on Nouveau that have their graphics engine powered off on startup.
- Removing lots of hard-coding of graphics engine setup details for Fermi/Kepler/Maxwell GPUs. This improvement should particularly help out higher-end NVIDIA graphics cards, according to Nouveau maintainer Ben Skeggs.
- Support for Zero Bandwidth Clear on Fermi/Kepler/Maxwell graphics cards. The Zero Bandwidth Clears is actually a patented NVIDIA feature, "A system and method for performing zero-bandwidth-clears reduces external memory accesses by a graphics processor when performing clears and subsequent read operations. A set of clear values is stored in the graphics processor. Each region of a color or z buffer may be configured using a zero-bandwidth-clear command to reference a clear value without writing the external memory. The clear value is provided to a requestor without accessing the external memory when a read access is performed." Ben explained that this feature also needs user-space support but some applications can benefit already from the support.
- Reviewed and exposed the full object APIs to user-space, for exposing information like performance counters, the aforementioned Zero Bandwidth Clear controls, and other events. Other interface additions are expected in future kernel revisions.
- Other fixes, including a fix for using Nouveau in a headless mode.
Overall it's a fairly nice set of changes for this kernel cycle for this largely reverse-engineered, open-source NVIDIA driver while it's great to see NVIDIA Corp providing a bit more help to the team. With the Linux 3.16 kernel came Nouveau re-clocking support for Kepler GPUs but it doesn't work for all Kepler GPUs and not for all pstates, but at least when it works, it can boost the performance a lot. With Linux 3.17 there doesn't appear to be any breakthroughs for re-clocking like adding Fermi support, dynamic re-clocking based upon load, or other long sought after features, but we can always look forward to Linux 3.18 and beyond. With Linux 3.17 they did decide to hid again the pstate sysfs file that's used for re-clocking. There's now a pstate module parameter for exposing the file on the basis the file is going to be moved in the future.
Among the highlights for the Linux 3.17 additions relating to Nouveau for open-source NVIDIA graphics:
- Furthering of the NVIDIA GK20A Kepler GPU that's found within the Tegra K1 SoC. Code contributed by NVIDIA for this high-performance mobile ARM GPU include probing and re-clocking support. The GK20A re-clocking doesn't bring any new magic to the Nouveau driver but is using a statically defined performance state table.
- Outside of the Tegra space, NVIDIA also helped out in fixing up Kepler GPUs on Nouveau that have their graphics engine powered off on startup.
- Removing lots of hard-coding of graphics engine setup details for Fermi/Kepler/Maxwell GPUs. This improvement should particularly help out higher-end NVIDIA graphics cards, according to Nouveau maintainer Ben Skeggs.
- Support for Zero Bandwidth Clear on Fermi/Kepler/Maxwell graphics cards. The Zero Bandwidth Clears is actually a patented NVIDIA feature, "A system and method for performing zero-bandwidth-clears reduces external memory accesses by a graphics processor when performing clears and subsequent read operations. A set of clear values is stored in the graphics processor. Each region of a color or z buffer may be configured using a zero-bandwidth-clear command to reference a clear value without writing the external memory. The clear value is provided to a requestor without accessing the external memory when a read access is performed." Ben explained that this feature also needs user-space support but some applications can benefit already from the support.
- Reviewed and exposed the full object APIs to user-space, for exposing information like performance counters, the aforementioned Zero Bandwidth Clear controls, and other events. Other interface additions are expected in future kernel revisions.
- Other fixes, including a fix for using Nouveau in a headless mode.
Overall it's a fairly nice set of changes for this kernel cycle for this largely reverse-engineered, open-source NVIDIA driver while it's great to see NVIDIA Corp providing a bit more help to the team. With the Linux 3.16 kernel came Nouveau re-clocking support for Kepler GPUs but it doesn't work for all Kepler GPUs and not for all pstates, but at least when it works, it can boost the performance a lot. With Linux 3.17 there doesn't appear to be any breakthroughs for re-clocking like adding Fermi support, dynamic re-clocking based upon load, or other long sought after features, but we can always look forward to Linux 3.18 and beyond. With Linux 3.17 they did decide to hid again the pstate sysfs file that's used for re-clocking. There's now a pstate module parameter for exposing the file on the basis the file is going to be moved in the future.
10 Comments