Sent out a few minutes ago was the latest batch of AMDGPU graphics and AMDKFD compute kernel driver feature patches for DRM-Next in getting ready for the Linux 6.16 merge window opening in a few weeks. This pull request contains a big new feature: the initial albeit currently experimental support for AMDGPU user mode queues.
For over two years now AMD Linux graphics driver developers have been working on user mode queues for direct workload submission from user-space. User mode queues aim to allow for better performance/throughput for exclusive full screen games and other workloads in being able to bypass the kernel/DRM schedulers. Work is submitted directly from user-space to the GPU hardware for execution.
This initial AMDGPU user mode queue support for graphics and compute workloads is being submitted for Linux 6.16. This is wired up for AMD RDNA3 (GFX11) and RDNA4 (GFX12) hardware. For Linux 6.16 though the support is being gated behind a module parameter to allow for limited testing until ensuring the necessary kernel and user-space changes are all in good shape.
This ability for user-space graphics apps to create their own workqueue and submit to the hardware can lead to a big efficiency win. The patches sum up the workflow as:
“- The application creates the following GPU objetcs:
– A queue object to hold the workload packets.
– A read pointer object.
– A write pointer object.
– A doorbell page.
– Shadow bufffer pages.
– The application picks a 32-bit offset in the doorbell page for this queue.
– The application uses the usermode_queue_create IOCTL introduced in this patch, by passing the GPU addresses of these objects (read ptr, write ptr, queue base address and 32-bit doorbell offset from the doorbell page)
– The kernel creates the queue and maps it in the HW.
– The application can start submitting the data in the queue as soon as the kernel IOCTL returns.
– After filling the workload data in the queue, the app must write the number of dwords added in the queue into the doorbell offset, and the GPU will start fetching the data.”
There is this unmerged pull request in prior form for the Mesa code to AMDGPU user-mode queues.
For Linux 6.16 there is this initial user mode queues support on RDNA3 and RDNA4 hardware behind the module parameter. Other AMDGPU changes sent out today include eDP display fixes, Display Stream Compression fixes, ReBAR debugging work, DCN 3.5 updates, workload profile power management fixes, suspend fixes, cleaner shader support for Vega GPUs, and more. The AMDKFD compute kernel driver meanwhile has reset fixes, removing support for early GC 9.4.3 bring-up silicon for Instinct, and other fixes. See this pull request for the complete list of AMD kernel/compute graphics driver changes sent out today ahead of Linux 6.16.