Pengaturan Mode Kernel vs. Framebuffer?

24

Dengan KMS, driver grafis dipindahkan ke kernel. Karena framebuffer sudah ada di kernel, saya tidak berharap ini mempengaruhi operasi framebuffer. Namun, saya membaca bahwa KMS menggantikan fb, menambah fb, membutuhkan fb, dan membutuhkan dukungan fb untuk dihapus. Apa apaan? Jawaban yang saya cari adalah penjelasan tentang hubungan antara KMS dan framebuffer.

Saya telah menggunakan uvesafb untuk mendapatkan resolusi asli di tty. Tujuan saya di sini adalah untuk memahami bagaimana cara kerjanya pada sistem dengan KMS. Ini juga akan membantu untuk menutupi hal-hal seperti .. Apakah menggulir lebih cepat dengan KMS? Apakah utilitas seperti fbterm dan fbida bekerja sama? Apakah stabilitas lebih baik?

pengguna5184
sumber

Jawaban:

6

Pertama-tama, pada dasarnya ada dua jenis driver framebuffer klasik:

  • Driver perangkat keras & firmware generik (mis. Vga, vesafb / uvesafb, efifb)
  • Driver khusus perangkat keras (mis. Rivafb, atyfb)

Driver framebuffer klasik semua memiliki dukungan pengaturan mode dasar, tetapi mereka sedikit mengekspos jika ada dukungan untuk akselerasi perangkat keras.

Dengan desain X klasik, ini bukan masalah: untuk mendapatkan akselerasi 2D, server X berjalan sebagai root, dan dapat mengakses perangkat keras secara langsung. Ini pada dasarnya melewati driver framebuffer sepenuhnya. Untuk dukungan 3d (dan 2d pada kartu yang lebih baru), itu juga akan menggunakan driver DRM kernel yang memediasi akses dan memori video yang dikelola.

Dalam pengaturan ini, ada dua tempat di mana pengaturan mode dilakukan: baik di driver framebuffer kernel, dan di server userspace X. Duplikasi kode ini (dan sesekali berkelahi antar pengemudi, misalnya pada VT-switch) tidak ideal.

Selain itu, ada dua driver terpisah di kernel untuk perangkat keras yang sama: driver framebuffer dan driver DRM. Dalam beberapa kasus (misalnya pre-kms intelfb), Anda dapat memuat satu atau yang lain, tetapi tidak keduanya sekaligus.

KMS adalah solusi untuk masalah ini. Saya t:

  • Menggabungkan driver framebuffer khusus perangkat keras kernel dan driver drm ke dalam satu driver.
  • Menyediakan antarmuka untuk server X untuk digunakan untuk mengontrol pengaturan mode, sehingga server X tidak harus secara langsung mengakses perangkat keras. (Memang, dengan KMS, server X tidak lagi memerlukan izin root.)

Beberapa catatan menarik: Migrasi ke tempat yang sekarang KMS sebenarnya dimulai sekitar tahun 2004; lihat email Jon Smirl di konsol rearchitecture .

Untuk menjawab pertanyaan Anda yang lebih spesifik:

  • Kecepatan pada umumnya tidak akan lebih buruk daripada salah satu driver generik yang tidak terkecuali (mis. VGA, vesafb), tetapi konsol teks framebuffer KMS dirancang untuk kenyamanan dan penggunaan darurat daripada kecepatan, dan konsol tidak sepenuhnya dipercepat pada beberapa driver. Antrian panjang yang terbungkus cukup buruk pada kartu intel, misalnya.
  • Aplikasi yang dirancang untuk menggunakan antarmuka framebuffer lama masih akan bekerja pada framebuffer KMS.
kepstin
sumber
3

KMS mengatur resolusi tampilan dan kedalaman di ruang kernel daripada ruang pengguna. Jadi ya itu menggantikannya. Ini memungkinkan resolusi asli di framebuffer.

Pengaturan Mode Kernel

wojox
sumber
4
Artikel wiki tentang KMS mudah ditemukan, tetapi penjelasannya mengerikan. Bagaimana KMS menggantikan fb dan sekaligus mengaktifkannya? Fb sudah mendukung resolusi asli, jadi apa yang berbeda? Apakah utilitas fb bekerja dengan KMS?
user5184
Saya tidak berpikir framebuffer mendukung resolusi asli, terutama ketika monitor layar lebar. misalnya, resolusi asli monitor LCD saya adalah 1680x1050, namun, framebuffer hanya mendeteksi resolusi 1280x1024
LiuYan 刘 研