Arm Exploring IO_uring For Graphics Drivers For Better Performance & Synchronization
The IO_uring asynchronous I/O API for Linux is quite novel and has proven performance benefits. With time IO_uring has been adapted to other areas of the kernel like networking and now with a proposal raised by an Arm graphics driver engineer, it could potentially be adapted for use by Direct Rendering Manager (DRM) kernel graphics drivers.
Liviu Dudau of Arm who is currently working on the Panthor DRM driver for modern Arm Mali hardware is exploring the possibility of using IO_uring for handling job submission to graphics drivers outside the kernel.
This approach would better jive with how Vulkan drivers could ideally function, would allow for better performance by letting user-space submit jobs directly to the hardware/firmware, and easier synchronization handling.
Thus a proposal to add IO_uring support to the Direct Rendering Manager subsystem. The idea is to submit work over to the kernel drivers via a submission queue that would wrap around the actual GPU job submission. The submission queue would only contain pointers to buffers and fences, thereby eliminating kernel copies. The IO_uring submission would be done at the kernel DRM framework level and thus potentially shared by all GPU kernel drivers.
Liviu Dudau raised the proposal at XDC 2024 happening this week in Montreal. See the PDF slide deck and the presentation embedded below. It will be interesting to see where this IO_uring DRM work leads for improving job submission for Linux GPU drivers.
Liviu Dudau of Arm who is currently working on the Panthor DRM driver for modern Arm Mali hardware is exploring the possibility of using IO_uring for handling job submission to graphics drivers outside the kernel.
This approach would better jive with how Vulkan drivers could ideally function, would allow for better performance by letting user-space submit jobs directly to the hardware/firmware, and easier synchronization handling.
Thus a proposal to add IO_uring support to the Direct Rendering Manager subsystem. The idea is to submit work over to the kernel drivers via a submission queue that would wrap around the actual GPU job submission. The submission queue would only contain pointers to buffers and fences, thereby eliminating kernel copies. The IO_uring submission would be done at the kernel DRM framework level and thus potentially shared by all GPU kernel drivers.
Liviu Dudau raised the proposal at XDC 2024 happening this week in Montreal. See the PDF slide deck and the presentation embedded below. It will be interesting to see where this IO_uring DRM work leads for improving job submission for Linux GPU drivers.
14 Comments