Folien - Chemnitzer Linux-Tage
Folien - Chemnitzer Linux-Tage
Folien - Chemnitzer Linux-Tage
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Grafiktreiber im <strong>Linux</strong>kernel<br />
- die Außenseiter -<br />
Creative Commons by-nc-nd<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Grundlagen<br />
●<br />
Was ist eine Grafikkarte?<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Grundlagen<br />
●<br />
Was ist eine Grafikkarte?<br />
– Ausgabelogik<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Grundlagen<br />
●<br />
Was ist eine Grafikkarte?<br />
– Ausgabelogik<br />
– Coprozessor mit extrem vielen Kernen<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Grundlagen<br />
●<br />
Was ist eine Grafikkarte?<br />
– Ausgabelogik<br />
– Coprozessor mit extrem vielen Kernen<br />
●<br />
Wie wird dieser Prozessor angesteuert?<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Grundlagen<br />
●<br />
Was ist eine Grafikkarte?<br />
– Ausgabelogik<br />
– Coprozessor mit extrem vielen Kernen<br />
●<br />
Wie wird dieser Prozessor angesteuert?<br />
– PCI Adressraum (BAR)<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Grundlagen<br />
●<br />
Was ist eine Grafikkarte?<br />
– Ausgabelogik<br />
– Coprozessor mit extrem vielen Kernen<br />
●<br />
Wie wird dieser Prozessor angesteuert?<br />
– PCI Adressraum (BAR)<br />
– Direktes schreiben in Register<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Grundlagen<br />
●<br />
Was ist eine Grafikkarte?<br />
– Ausgabelogik<br />
– Coprozessor mit extrem vielen Kerne<br />
●<br />
Wie wird dieser Prozessor angesteuert?<br />
– PCI Adressraum (BAR)<br />
– Direktes schreiben in Register<br />
– Ausführen eines DMA Puffers<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
<strong>Linux</strong> Grafikstack<br />
- grundsätzlicher Aufbau -<br />
Userspace<br />
Kernel<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
<strong>Linux</strong> Grafikstack<br />
- grundsätzlicher Aufbau -<br />
Userspace<br />
Userspace<br />
Ioctrl und mmap Interface<br />
Kernel<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
<strong>Linux</strong> Grafikstack<br />
- grundsätzlicher Aufbau -<br />
Grafisches Virtual Terminal<br />
Userspace<br />
Userspace<br />
Ioctrl und mmap Interface<br />
Kernel<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
<strong>Linux</strong> Grafikstack<br />
- grundsätzlicher Aufbau -<br />
Userspace<br />
Userspace<br />
Grafisches Virtual Terminal X Server<br />
Ioctrl und mmap Interface<br />
Kernel<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
<strong>Linux</strong> Grafikstack<br />
- grundsätzlicher Aufbau -<br />
Userspace<br />
Userspace<br />
Grafisches Virtual Terminal DDX X Server<br />
Ioctrl und mmap Interface<br />
Kernel<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Userspace<br />
- indirect Rendering -<br />
Userspace<br />
2D Rendering Client<br />
DDX<br />
X Server<br />
3D Rendering Client<br />
OpenGL<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
<strong>Linux</strong> Grafikstack<br />
- direct Rendering -<br />
Userspace<br />
Graphisches<br />
Virtual Terminal<br />
X Server<br />
libdrm<br />
Ioctrl und mmap Interface<br />
Kernel<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Userspace<br />
- direct Rendering -<br />
2D Rendering Client<br />
Userspace<br />
3D Rendering Client<br />
OpenGL<br />
DDX<br />
X Server<br />
Mesa3D<br />
libdrm<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Probleme dieser Architektur<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Probleme dieser Architektur<br />
●<br />
Voller Durchgriff der Userspacekomponenten<br />
auf die Hardware<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Probleme dieser Architektur<br />
●<br />
Voller Durchgriff der Userspacekomponenten<br />
auf die Hardware<br />
– Widerspricht dem Sinn eines Betriebssystems<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Probleme dieser Architektur<br />
●<br />
Voller Durchgriff der Userspacekomponenten<br />
auf die Hardware<br />
– Widerspricht dem Sinn eines Betriebssystems<br />
– Sicherheitslücke<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Probleme dieser Architektur<br />
●<br />
Voller Durchgriff der Userspacekomponenten<br />
auf die Hardware<br />
– Widerspricht dem Sinn eines Betriebssystems<br />
– Sicherheitslücke<br />
●<br />
Jede Applikation verwaltet ihren eigenen<br />
Adressraum<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Probleme dieser Architektur<br />
●<br />
Voller Durchgriff der Userspacekomponenten<br />
auf die Hardware<br />
– Widerspricht dem Sinn eines Betriebssystems<br />
– Sicherheitslücke<br />
●<br />
Jede Applikation verwaltet ihren eigenen<br />
Adressraum<br />
– Keine Zusammenarbeit möglich<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Probleme dieser Architektur<br />
●<br />
Voller Durchgriff der Userspacekomponenten<br />
auf die Hardware<br />
– Widerspricht dem Sinn eines Betriebssystems<br />
– Sicherheitslücke<br />
●<br />
Jede Applikation verwaltet ihren eigenen<br />
Adressraum<br />
– Keine Zusammenarbeit möglich<br />
– Keine zentrale Verwaltung mit Überblick über<br />
Systemressourcen<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
<strong>Linux</strong> Grafikstack<br />
- Memory Manager -<br />
Userspace<br />
Userspace Applikationen<br />
Ioctrl und mmap Interface<br />
Graphics memory manager (TTM)<br />
Kernel<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
TTM (GEM)<br />
●<br />
Kernel übernimmt zentrale Speicherverwaltung<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
TTM (GEM)<br />
●<br />
Kernel übernimmt zentrale Speicherverwaltung<br />
– Verfügbare Ressourcen können besser an die<br />
Clients verteilt werden<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
TTM (GEM)<br />
●<br />
Kernel übernimmt zentrale Speicherverwaltung<br />
– Verfügbare Ressourcen können besser an die<br />
Clients verteilt werden<br />
– Auslagern von Bereichen des Grafikspeichers<br />
wird möglich<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
TTM (GEM)<br />
●<br />
Kernel übernimmt zentrale Speicherverwaltung<br />
– Verfügbare Ressourcen können besser an die<br />
Clients verteilt werden<br />
– Auslagern von Bereichen des Grafikspeichers<br />
wird möglich<br />
– Kernel kann eigene Kommandopuffer erstellen<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
<strong>Linux</strong> Grafikstack<br />
- Kernel Mode Setting -<br />
Userspace<br />
Userspace Applikationen<br />
Ioctrl und mmap Interface<br />
Graphics memory manager (TTM)<br />
Kernel<br />
Kernel Mode Setting (KMS)<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Modesetting<br />
●<br />
Einstellen der Auflösung bei angeschlossenen<br />
Monitoren<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Modesetting<br />
●<br />
Einstellen der Auflösung bei angeschlossenen<br />
Monitoren<br />
●<br />
Mehr Informationen zur Bootzeit<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Modesetting<br />
●<br />
Einstellen der Auflösung bei angeschlossenen<br />
Monitoren<br />
●<br />
●<br />
Mehr Informationen zur Bootzeit<br />
Grafischer Boot<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Modesetting<br />
●<br />
Einstellen der Auflösung bei angeschlossenen<br />
Monitoren<br />
●<br />
●<br />
●<br />
Mehr Informationen zur Bootzeit<br />
Grafischer Boot<br />
Schnelle Wechsel zwischen Terminals<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
<strong>Linux</strong> Grafikstack<br />
- Kernel Mode Setting -<br />
Userspace<br />
libdrm<br />
Ioctrl und mmap Interface<br />
Graphics memory manager (TTM)<br />
Kernel<br />
Kernel Mode Setting (KMS)<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Userspace<br />
- Gallium3D -<br />
2D Rendering Client<br />
Userspace<br />
3D Rendering Client<br />
OpenGL<br />
DDX<br />
X Server<br />
Mesa3D<br />
libdrm<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Userspace<br />
- Gallium3D -<br />
2D Rendering Client<br />
Userspace<br />
3D Rendering Client<br />
OpenGL<br />
DDX<br />
X Server<br />
Mesa3D<br />
Gallium3D<br />
libdrm<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Gallium3D<br />
●<br />
Winsys:<br />
– Abstrahieren Betriebssytemeigenheiten<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Gallium3D<br />
●<br />
Winsys:<br />
– Abstrahieren Betriebssytemeigenheiten<br />
●<br />
Pipedriver:<br />
– Abstrahieren Hardwareunterschiede<br />
– Stellen Gallium Interface bereit<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Gallium3D<br />
●<br />
Winsys:<br />
– Abstrahieren Betriebssytemeigenheiten<br />
●<br />
Pipedriver:<br />
– Abstrahieren Hardwareunterschiede<br />
– Stellen Gallium Interface bereit<br />
●<br />
Statetracker:<br />
– Setzen auf Gallium Interface auf<br />
– Implementieren jeweils eine Rendering API<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Gallium3D<br />
●<br />
Highlights:<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Gallium3D<br />
●<br />
Highlights:<br />
– Sehr viel gemeinsam genutzter Code trotz<br />
unterschiedlichster Hardware<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Gallium3D<br />
●<br />
Highlights:<br />
– Sehr viel gemeinsam genutzter Code trotz<br />
unterschiedlichster Hardware<br />
– Einfache Implementation neuer Rendering APIs<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Gallium3D<br />
●<br />
Highlights:<br />
– Sehr viel gemeinsam genutzter Code trotz<br />
unterschiedlichster Hardware<br />
– Einfache Implementation neuer Rendering APIs<br />
– Durch reichen des Interfaces an Gastsysteme in<br />
virtualisierten Umgebungen<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Wohin geht die Reise?<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Wohin geht die Reise?<br />
●<br />
GPGPU Computing durch OpenCL<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Wohin geht die Reise?<br />
●<br />
GPGPU Computing durch OpenCL<br />
●<br />
Überarbeitung des Gallium Interfaces<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Wohin geht die Reise?<br />
●<br />
GPGPU Computing durch OpenCL<br />
●<br />
Überarbeitung des Gallium Interfaces<br />
●<br />
„Playing Catch up“<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Mithilfe<br />
●<br />
Die Grafiktreiberentwickler sind immer auf der<br />
Suche nach neuen Helfern<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Mithilfe<br />
●<br />
Die Grafiktreiberentwickler sind immer auf der<br />
Suche nach neuen Helfern<br />
●<br />
Auch gern Leute mit weniger<br />
Programmiererfahrung und/oder weniger Zeit<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Mithilfe<br />
- Anlaufstellen -<br />
●<br />
Nouveau Treiber:<br />
– Nouveau Mailinglist<br />
●<br />
nouveau@lists.freedesktop.org<br />
– Freenode IRC Channel<br />
●<br />
●<br />
#nouveau<br />
#dri-devel<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Mithilfe<br />
- Anlaufstellen -<br />
●<br />
Radeon Treiber:<br />
– DRI Mailinglist<br />
●<br />
dri-devel@lists.freedesktop.org<br />
– Freenode IRC Channel<br />
●<br />
●<br />
#radeon<br />
#dri-devel<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Fragen / Diskussion<br />
●<br />
Fragen?<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)
Fragen / Diskussion<br />
●<br />
Fragen?<br />
●<br />
Falls später noch Fragen auftauchen:<br />
– dev@lynxeye.de<br />
20. März 2011 Lucas Stach (dev@lynxeye.de)