AMD RADV Radeon Vulkan driver begins support for device-generated commands through NVIDIA GPUs
Michael Larabel of open-source website Phoronix reported the recent inclusion into Mesa 22.2. NVIDIA coded the VK_NV_device_generated_commands to now produce “device-generated commands to overcome the readback latency and inefficiencies when relying on the CPU for specific command generation work,” reports Larabel. Device Generated Commands, or DGC for short, also aid in situations where the graphics card hardware can process a more extensive section of the global scene to alter the shaders “on a per-draw basis.” The NVIDIA blog post from March 2020 summarizes the Vulkan extension recently added to Mesa 22.2. The extension VK_NV_device_generated_commands has purposely seen use since its origins in NVIDIA’s own GPU driver, but we are now seeing that the AMD Radeon Vulkan driver in Mesa 22.2 supports Radeon graphics cards as well. Phoronix notes that: — NVIDIA Developer blog from March 17, 2020 No feature is free of trade-offs. A device-generation approach means that some driver-side optimizations may not apply. Furthermore, the generation process can add to the overall frame time, in cases where the CPU is able to record commands without affecting the GPU time. Finally, it requires additional GPU memory. In summary, the goal of this extension is primarily to reduce the amount of actual work done on the GPU, by making decisions on the device about what and how work is generated. It is not about off-loading command generation from CPU to the GPU in general. Bas Nieuwenhuizen, co-creator of the RADV driver, was one of the developers working on the current merge. Larabel points out that the extension may be beneficial “for VKD3D support in handling D3D12’s ExecuteIndirect functionality.” News Sources: Phoronix, NVIDIA Developer Blog