On a quest toward trying to get the game Halo Infinite running under Linux via Steam Play (Proton) with AMD GFX6 / GCN 1.0 era graphics processors, Valve’s prolific open-source driver contributor Samuel Pitoiset has added VK_NV_device_generated_commands support for these original Radeon GCN GPUs.
Samuel Pitoiset has landed Mesa RADV driver support for NV_device_generated_commands on GFX6 GPUs. VK_NV_device_generated_commands is the NVIDIA extension allowing for the generation of a number of critical graphics commands for command buffers. Per the extension spec:
“When rendering a large number of objects, the device can be leveraged to implement a number of critical functions, like updating matrices, or implementing occlusion culling, frustum culling, front to back sorting, etc. Implementing those on the device does not require any special extension, since an application is free to define its own data structures, and just process them using shaders.
However, if the application desires to quickly kick off the rendering of the final stream of objects, then unextended Vulkan forces the application to read back the processed stream and issue graphics command from the host. For very large scenes, the synchronization overhead and cost to generate the command buffer can become the bottleneck. This extension allows an application to generate a device side stream of state changes and commands, and convert it efficiently into a command buffer without having to read it back to the host.
Furthermore, it allows incremental changes to such command buffers by manipulating only partial sections of a command stream — for example pipeline bindings. Unextended Vulkan requires re-creation of entire command buffers in such a scenario, or updates synchronized on the host.”
For adding this extension on GFX6, Pitoiset commented in the merge request, “Enjoy playing Halo Infinite on GFX6. 🙂”
But he later updated the text to add, “Maybe not because it might require sparse which is gfx8+ 🙁” So it’s not clear ultimately if he will be able to get Halo Infinite running on these early GCN GPUs short of coming up with some workaround for lacking sparse textures. In any event, it’s nice to see Valve developers working to improve the support for these aging GPUs. GFX6 covers the Cape Verde, Pitcairn, Tahiti, Oland, and Hainan GPUs.
This GFX6 NV_device_generated_commands support is in Mesa 23.2-devel now for its stable release next quarter.