Speakers
Description
Until recently, freedreno, the upstream kernel driver for Qualcomm Adreno GPUs, has been using the same legacy memory management paradigm as other upstream DRM drivers. While this worked well for the gallium/GL driver, it was a poor fit for Vulkan, where memory is managed explicitly by the user, resulting in unnecessary complexity and CPU overhead, and it couldn't handle the more sophisticated use-cases required by "sparse textures" that are used by some of the latest games. In order to fix this we embarked on a major project across the entire stack to rewrite the internals of the kernel driver to use the recently-upstreamed gpuvm subsystem, expose a completely new "VM_BIND" uAPI for managing memory, and take advantage of it in turnip, the upstream Vulkan driver. This then finally allowed us to implement sparse textures in turnip. In this talk we'll go over the challenges of retrofitting VM_BIND into a mature production driver and dealing with the quirks of sparse textures on Adreno.
GSoC, EVoC or Outreachy | No |
---|---|
Code of Conduct | Yes |
In-person or virtual presentation | In-person |