Bagaimana cara mengatur mode video di linux dengan kms / drm?

12

Bagaimana saya dapat mengatur mode video di Linux dengan cara tingkat rendah? Sejauh yang saya tahu lapisan terendah di userspace akan meminta KMS melalui DRM. Apakah ini benar? Dan jika demikian, bagaimana saya bisa mencapai sakelar mode dan akses ke "memori video" yang terkait?

Caleb
sumber
Apa itu km? Sejauh ini saya belum pernah mendengar tentang KSM, atau mode switching.
BЈовић
Maksud saya dengan KMS: tautan Kernel-Mode-Setting .
Apakah maksud Anda untuk framebuffer / konsol? Atau untuk X11 / Xorg?
penguin359
@ penguin359. X dan fb jika memungkinkan selama saya bisa menggunakan libdrm secara langsung ... (PS: lebih disukai via C ++)
4
@ litro apa yang ingin Anda capai? dan dalam banyak km distro akan aktif sendiri jika tersedia dan tidak dimatikan.
xenoterracide

Jawaban:

3

KMS — Pengaturan Mode Kernel, bagi mereka yang belum pernah mendengarnya — dimungkinkan oleh driver video mode kernel. Driver video mode kernel ini mengonfigurasi tampilan framebuffer yang secara default adalah resolusi asli monitor yang terpasang. Jika ada lebih dari satu monitor yang terpasang, setiap monitor akan mendapatkan resolusi asli dan konsol virtual akan dibatasi oleh lebar minimum dan tinggi kedua monitor.

Karena penggunaan KMS menghasilkan framebuffer, item konfigurasi framebuffer akan berfungsi. Saya tidak dapat memverifikasi ini pada sistem yang saya gunakan saat ini, karena tidak memiliki driver KMS. Tapi saya akan berada di sistem nanti dengan KMS dan saya akan memberi tahu Anda.

Lihat dokumentasi kernel pada mode pengaturan dengan video = parameter boot up untuk pembuat bingkai untuk informasi lebih lanjut.

Michael Trausch
sumber
2

Saya tidak yakin Anda benar-benar tahu apa yang Anda minta, jika tidak, Anda akan mengatakannya dengan cara yang bisa dijawab. ... Tetapi untuk melakukan yang terbaik, menjawab pertanyaan Anda.

Anda ingin mengatur mode dan membuang 'memori video'? seperti mode dos lama X hari ?? Jika ini yang Anda inginkan, Anda perlu memprogram dengan Framebuffer. Dengan itu, akan jauh lebih baik bekerja dengan DirectFB. DirectFB seperti lapisan yang sangat tipis, dengan akselerasi, pada Framebuffer. Tingkatnya rendah, dan sejujurnya serendah yang seharusnya Anda inginkan untuk menulis aplikasi. Anda dapat mengatur mode, dan memiliki kontrol dalam gaya tingkat yang lebih rendah. Jika Anda ingin kontrol gaya langsung langsung Anda harus menulis Framebuffer mentah, Anda pada dasarnya mmap beberapa ram video. Jika Anda merasa Framebuffer berkinerja buruk, saya tidak bisa cukup menekankan, lihat DirectFB. Jika seseorang memiliki driver KMS dimuat, Framebuffer mereka diatur melalui KMS / libdrm.

Sekarang untuk libdrm, ini adalah lib userspace untuk bekerja dengan DRM kernel. Ini bukan Framebuffer, ini bukan API aplikasi, ini adalah pustaka perangkat sistem. Jika Anda ingin membuat driver perangkat baru, libdrm adalah cara mutlak untuk digunakan. Misalnya, libdrm-radeon. Linux bukan DOS, satu-satunya cara untuk berkomunikasi secara langsung dengan perangkat keras adalah melalui kernel. Semua aplikasi normal tidak pernah mengirim kode langsung ke perangkat keras, itu harus dibuang dalam beberapa lib / API / panggilan. Ada beberapa proyek yang menggunakan pendekatan in-kernel, untuk tujuan akademik / eksperimental, seperti FBUI.

Saya harap setidaknya saya bisa mengarahkan Anda ke arah yang benar, jika tidak Anda harus berkomentar dan juga memperbarui pertanyaan Anda. Saya telah mengikuti pertanyaan ini sejak konsepsi, yang setidaknya dua migrasi yang lalu dan tidak lebih dekat untuk dijawab. Tanpa informasi lebih lanjut, Sebenarnya tidak ada lagi yang bisa dikatakan.

JM Becker
sumber