Display Server vs Window Manager vs. Driver Grafik?

8

Saya mencoba menyortir pemahaman saya tentang berbagai bagian grafik di Linux, dan saya bingung dengan peran yang dimainkan oleh masing-masing konsep berikut.

  • Server Display
  • Pengelola Jendela
  • Driver Grafik

Pertanyaan saya:

  • Apakah driver grafis diimplementasikan di dalam Kernel Linux atau di luar? Jika di luar kernel mengapa mereka dikeluarkan ketika jaringan, disk, sistem file semua ada di dalam kernel?
  • X Windows, Gnome, Ubuntu Unity, KDE, Mir, Wayland yang melakukan apa dalam hal Display Server, Window Manager, dan Driver Grafik?

Tujuan saya untuk pertanyaan ini adalah untuk memahami proyek mana yang berkontribusi pada pengalaman Linux Graphics apa?

UPDATE http://blog.mecheye.net/2012/06/the-linux-graphics-stack/ memiliki banyak detail yang saya cari.

am
sumber

Jawaban:

3

Istilah "driver grafis" digunakan untuk merujuk pada beberapa hal berbeda. Salah satunya adalah driver kernel. Driver kernel kebanyakan hanya mengatur mode video dan memfasilitasi pengiriman data ke / dari kartu. Biasanya juga mengunduh firmware ke GPU pada kartu. Firmware adalah program yang dijalankan GPU sendiri, tetapi sayangnya, vendor grafis hanya menyediakannya sebagai gumpalan biner sehingga Anda tidak dapat melihat kode sumbernya.

Di atas itu Anda biasanya menjalankan Xorg, yang memiliki driver sendiri yang menerjemahkan X11 generik atau panggilan gambar OpenGL menjadi perintah yang dimengerti kartu, dan mengirimkannya ke kartu untuk dieksekusi. Ini juga dapat melakukan beberapa pekerjaan itu sendiri tergantung pada perintah apa yang GPU lakukan dan tidak mendukung. Dalam kasus panggilan OpenGL, Direct Rendering Infrastructure memungkinkan bagian pengemudi ini untuk benar-benar mengeksekusi langsung di aplikasi klien daripada server X, untuk mendapatkan kinerja yang dapat diterima. Ini juga memungkinkan driver dalam aplikasi klien untuk mengirim perintahnya langsung ke gpu, berkat koordinasi dengan dan bantuan dari Xorg dan driver kernel saat startup.

Wayland dan Mir seharusnya menggantikan Xorg sebagai jenis tampilan server yang disederhanakan.

Unity adalah sebuah shell (menyediakan desktop / launcher) dan membuat window manager menjadi satu.

GNOME dan KDE adalah lingkungan desktop. Mereka adalah proyek besar yang terdiri dari banyak komponen. Inti dari mereka adalah toolkit aplikasi masing-masing, yaitu GTK untuk GNOME dan Qt untuk KDE. Ini adalah kerangka perpustakaan tempat aplikasi ditulis dan menyediakan fondasi tempat segala sesuatu dibangun. Beberapa layanan dasar yang mereka sediakan adalah event dan penanganan objek, Windows, fungsi menggambar dasar, I / O, dan banyak lagi.

psusi
sumber
4
  • Driver grafis diimplementasikan sebagai modul kernel yang harus dimuat ke dalamnya. Jadi, pada dasarnya, mereka di luar kernel. Apakah kernel dapat dibangun atau tidak untuk memuatnya adalah masalah yang tersisa dari seseorang yang lebih berpengetahuan daripada saya untuk menjawab. Saya pikir mereka dikecualikan dari kernel karena jika kernel dibangun dengan, katakanlah, nouveaudriver itu akan mengalami konflik memuat driver NVIDIA berpemilik nanti.
  • X Windows, Wayland, dan Mir adalah server tampilan.
  • Gnome, Ubuntu Unity dan KDE adalah semua lingkungan desktop bukan manajer jendela. Window manager adalah bagian dari lingkungan desktop (misalnya penggunaan Gnome metacity). Yang mengatakan, Anda dapat menjalankan window manager mandiri (tanpa lingkungan desktop) seperti awesome , xmonad atau openbox

Mengenai komponen mana yang memainkan bagian mana:

  • Driver grafis adalah bagaimana kernel "berbicara dengan" kartu grafis.
  • Server tampilan adalah apa yang menciptakan dan mengelola windows dan elemen grafis lainnya dari tampilan Anda.
  • Lingkungan desktop atau manajer jendela bertindak sebagai klien ke server tampilan dan menginstruksikannya tentang cara menggambar / menghias jendela, panel, ...
Joseph R.
sumber
Modul-modul kernel sudah pasti dianggap "di dalam" kernel.
psusi
@psusi Saya memilih untuk membaca "di dalam" dan "luar" OP sebagai makna yang dibangun ke dalam kernel vs dimuat ke dalamnya dari "luar". Anda mungkin berarti "di dalam" kernel dalam arti bahwa mereka bukan bagian dari userspace, kan?
Joseph R.
Ya, begitulah cara saya menerjemahkan "di dalam" vs "di luar".
psusi