วิธีการตั้งค่าโหมดวิดีโอใน linux ด้วย kms / drm?


12

ฉันจะตั้งค่าโหมดวิดีโอใน Linux ในระดับต่ำได้อย่างไร? เท่าที่ฉันทราบเลเยอร์ต่ำสุดใน userspace จะขอ KMS ผ่าน DRM ถูกต้องหรือไม่ และถ้าเป็นเช่นนั้นฉันจะเปลี่ยนโหมดและเข้าถึง "หน่วยความจำวิดีโอ" ที่เกี่ยวข้องได้อย่างไร


kms คืออะไร จนถึงตอนนี้ฉันไม่เคยได้ยิน KSM หรือโหมดการสลับ
BЈовић

ผมหมายถึง KMS: เคอร์เนลโหมดการตั้งค่าการเชื่อมโยง

คุณหมายถึง framebuffer / console หรือเปล่า? หรือสำหรับ X11 / Xorg
penguin359

@ penguin359 อย่างใดอย่างหนึ่ง X และ fb ถ้าเป็นไปได้ตราบเท่าที่ฉันใช้ libdrm โดยตรง ... (PS: ควรผ่าน C ++)

4
@ สว่างสิ่งที่คุณพยายามที่จะบรรลุ? และในระยะทางหลายกิโลเมตรของ distro จะเปิดใช้งานตัวเองหากมีและไม่ปิด
xenoterracide

คำตอบ:


3

KMS— การตั้งค่าโหมดเคอร์เนลสำหรับผู้ที่ไม่เคยได้ยิน - ทำโดยไดรเวอร์วิดีโอโหมดเคอร์เนล ไดรเวอร์วิดีโอโหมดเคอร์เนลเหล่านี้กำหนดค่าการแสดงเฟรมเฟรมโดยค่าเริ่มต้นคือความละเอียดดั้งเดิมของจอภาพที่เชื่อมต่อ หากมีจอภาพมากกว่าหนึ่งจอต่อจอภาพแต่ละจอจะได้รับความคมชัดดั้งเดิมและคอนโซลเสมือนจะถูก จำกัด ด้วยความกว้างและความสูงขั้นต่ำของจอภาพทั้งสอง

เนื่องจากการใช้ KMS ส่งผลให้ framebuffer รายการการกำหนดค่า framebuffer ควรใช้งานได้ ฉันไม่สามารถตรวจสอบสิ่งนี้ในระบบที่ฉันเปิดอยู่ในขณะนี้เนื่องจากไม่มีไดรเวอร์ KMS แต่ฉันจะอยู่ที่ระบบในภายหลังด้วย KMS และฉันจะแจ้งให้คุณทราบ

ดูเอกสารประกอบเคอร์เนลเกี่ยวกับโหมดการตั้งค่าด้วยพารามิเตอร์ video = boot up สำหรับ framebuffersสำหรับข้อมูลเพิ่มเติม


2

ฉันไม่แน่ใจว่าคุณรู้จริง ๆ ว่าสิ่งที่คุณถามมิฉะนั้นคุณจะต้องใช้ถ้อยคำในลักษณะที่ตอบได้ ... แต่ฉันจะทำให้ดีที่สุดเพื่อตอบคำถามของคุณ

คุณต้องการตั้งค่าโหมดและแสดง 'หน่วยความจำวิดีโอ' บางส่วนหรือไม่ ชอบโหมดดอสแบบเก่า ๆ สิบวัน ?? หากนี่คือสิ่งที่คุณต้องการคุณจะต้องโปรแกรมด้วย Framebuffer ด้วยที่กล่าวว่ามันจะดีกว่าการทำงานกับ DirectFB DirectFB เป็นเหมือนเลเยอร์ที่บางมากพร้อมความเร่งบน Framebuffer ระดับต่ำและจริง ๆ แล้วมันต่ำตามที่คุณควรจะต้องการเขียนแอปพลิเคชัน คุณจะสามารถตั้งค่าโหมดและควบคุมในสไตล์ระดับต่ำได้มากขึ้น หากคุณต้องการการควบคุมสไตล์โดยตรงโดยตรงคุณต้องเขียน Framebuffer แบบดิบๆโดยทั่วไปคุณจะทำ ramap video ram ออกมา หากคุณรู้สึกว่า Framebuffer ทำงานได้ไม่ดีฉันไม่เครียดพอลองดู DirectFB หากมีคนโหลดโปรแกรมควบคุม KMS Framebuffer จะถูกตั้งค่าผ่าน KMS / libdrm

ตอนนี้สำหรับ libdrm มันเป็น lib userpace สำหรับการทำงานกับเคอร์เนล DRM มันไม่ได้เป็น Framebuffer มันไม่ใช่แอปพลิเคชัน API มันเป็นห้องสมุดอุปกรณ์ของระบบ หากคุณต้องการสร้างไดรเวอร์อุปกรณ์ใหม่ libdrm เป็นวิธีที่สมบูรณ์ที่สุด ตัวอย่างเช่น libdrm-radeon Linux ไม่ใช่ DOS วิธีเดียวที่จะสื่อสารกับฮาร์ดแวร์โดยตรงคือผ่านเคอร์เนล แอปพลิเคชันทั่วไปทั้งหมดไม่ส่งรหัสโดยตรงไปยังฮาร์ดแวร์มันจะต้องได้รับการ thunked ในบาง lib / API / การโทร มีโครงการที่ใช้วิธีการแบบเคอร์เนลเพื่อการศึกษา / ทดลองเช่น FBUI

ฉันหวังว่าอย่างน้อยฉันก็สามารถชี้ให้คุณในทิศทางที่ถูกต้องถ้าไม่คุณควรแสดงความคิดเห็นและปรับปรุงคำถามของคุณ ฉันได้ปฏิบัติตามคำถามนี้ตั้งแต่ความคิดซึ่งอย่างน้อยสองโยกย้ายมาแล้วและไม่ตอบ หากไม่มีข้อมูลเพิ่มเติมจะไม่มีใครพูดได้อีกแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.