이 글에서는 Asahi 드라이버를 위한 사용자 공간 API(User-Space API, UAPI)의 도입에 대해 논의합니다. 이 API는 애플의 M1 및 M2 시리즈 시스템 온 칩의 GPU를 타겟으로 하며, 현대적인 Vulkan 지원 드라이버인 Xe와 Panthor를 기반으로 설계되었습니다. UAPI는 명시적인 가상 메모리(Virtual Memory, VM) 관리 및 동기화를 특징으로 합니다.
UAPI는 OpenGL 4.6, OpenGL ES 3.2, OpenCL 3.0, Vulkan 1.4 등 여러 그래픽 표준을 준수하는 오픈 소스 Mesa 스택에 대해 검증되었습니다. 특히, Vulkan 드라이버는 VM_BIND 메커니즘을 활용하여 희소 메모리 관리를 지원합니다.
독립적인 UAPI 헤더가 추가되었으며, 이는 Rust로 작성된 오픈 소스 DRM 드라이버에 의해 구현되었습니다. 개발자들은 이 드라이버를 업스트림으로 올릴 계획이지만, 현재는 여러 Rust 추상화에 의존하고 있어 통합하는 데 시간이 걸릴 것입니다. 그동안 사용자 공간은 Mesa에서 사용할 수 있지만, UAPI가 검토되고 업스트림 커널에 병합되지 않았기 때문에 업스트림 Mesa와 함께 사용할 수 없습니다. 이 상황은 Mesa와 virglrenderer의 포크 유지 관리에 복잡성을 더하며, 업스트림 Flatpak 및 Waydroid 런타임 사용자에게 문제를 일으킵니다.
이 패치를 배포하는 주요 목표는 UAPI에 대한 철저한 검토를 촉진하는 것입니다. DRM 커뮤니티가 UAPI에 만족하게 되면, 이는 안정적인 것으로 간주되며 오직 하위 호환 방식으로만 발전할 것입니다. 이러한 안정성은 업스트림 Mesa를 가능하게 하여, 필요한 Rust 추상화가 개발되는 동안 기존 문제를 해결하는 데 중요합니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.