Die Firma Collabora hat die Fertigstellung des Open-Source-Treibers panthor bekannt gegeben, der für die zehnte Generation der Mali-GPUs (G310, G510, G710) entwickelt wurde. Dieser verwendet die CSF-Technologie (Command Stream Frontend), die einige Funktionen des Treibers an die Firmware auslagert, um die Belastung der CPU zu reduzieren, und bietet ein neues Modell zur Organisation der Arbeitsausführung auf der GPU. Der DRM-Treiber (Direct Rendering Manager) panthor wurde in den drm-misc-Zweig aufgenommen und wird voraussichtlich Teil des Linux-Kernels 6.10 sein. Änderungen zur Unterstützung des neuen Treibers wurden ebenfalls in Mesa aufgenommen und sind im Gallium-Treiber panfrost für die Mali-GPUs enthalten.
Im neuen Generation der Mali-GPUs wurde der Job-Manager-Planer durch die CSF-Schnittstelle (Command Stream Frontend) ersetzt. Hierbei wird anstelle eines auf der Kettenübertragung basierenden Modells ein auf dem Befehlsstrom basierendes Modell verwendet, das die Planung des Befehlsstroms in die Firmware verlagert. Zur Organisation der Arbeit des Planers ist ein separater Mikrocontroller Cortex-M7 in die GPU integriert, und für die Ausführung von CSF-Anweisungen gibt es eine spezielle Befehlsausführungseinheit (Command Execution Unit). Solche Merkmale erfordern eine grundlegend andere Organisation der Arbeitsübertragung in der GPU aus dem Benutzerspeicher.
Ursprünglich wurde versucht, die Unterstützung für Mali-GPUs auf der Basis von CSF im DRM-Treiber Panfrost umzusetzen. Die Entwickler kamen jedoch zu dem Schluss, dass dies zu einer erheblichen Komplexität des bestehenden Treibers führen würde. Daher ist es für CSF optimaler, einen neuen Treiber zu erstellen, der auf einer anderen Architektur basiert. Der Panthor-Treiber implementiert eine vollständig neue uAPI, eine neue Planungskomponente und eine neue Logik zur Verwaltung der MMU/GPU-VA. Grundlage für den neuen Treiber ist der bestehende Code des DRM-Treibers Panfrost, aus dem gängige Vorlagen für die Initialisierung des Treibers, die Frequenzsteuerung und das Power Management übernommen wurden.
Zunächst wurde der neue Treiber unter Verwendung von Reverse Engineering entwickelt. Doch dann trat das Unternehmen ARM dem Projekt bei, stellte Zugang zur Dokumentation bereit und beteiligte sich an der Überprüfung des Codes. Zwei Mitarbeiter von ARM erhielten den Status von Co-Maintainern des Treibers für den Linux-Kernel. Nachdem der OpenGL-Treiber fertiggestellt ist, wird die Arbeit auf die Implementierung eines Vulkan-Treibers für die neuen Mali-GPUs und die Modernisierung des bestehenden Vulkan-Treibers für die älteren Mali-GPUs konzentriert.
Es wird berichtet, dass der entwickelte panthor-Treiber die GPU-Unterstützung auf Boards mit SoC Rockchip RK3588 ermöglicht. Collabora hat auch daran gearbeitet, die Bootfähigkeit von Rockchip RK3588 Boards mit einem vollständig offenen Software-Stack zu gewährleisten. Für den Rockchip RK3588 wurde ein Systemabbild auf Debian-Basis und ein offener Bootloader zur Ersetzung proprietärer Komponenten BL31 (Boot Loader Stufe 3.1) bereitgestellt.
Quelle: opennet.ru
