ฉันจะตั้งค่าโหมดวิดีโอใน Linux ในระดับต่ำได้อย่างไร? เท่าที่ฉันทราบเลเยอร์ต่ำสุดใน userspace จะขอ KMS ผ่าน DRM ถูกต้องหรือไม่ และถ้าเป็นเช่นนั้นฉันจะเปลี่ยนโหมดและเข้าถึง "หน่วยความจำวิดีโอ" ที่เกี่ยวข้องได้อย่างไร
ฉันจะตั้งค่าโหมดวิดีโอใน Linux ในระดับต่ำได้อย่างไร? เท่าที่ฉันทราบเลเยอร์ต่ำสุดใน userspace จะขอ KMS ผ่าน DRM ถูกต้องหรือไม่ และถ้าเป็นเช่นนั้นฉันจะเปลี่ยนโหมดและเข้าถึง "หน่วยความจำวิดีโอ" ที่เกี่ยวข้องได้อย่างไร
คำตอบ:
KMS— การตั้งค่าโหมดเคอร์เนลสำหรับผู้ที่ไม่เคยได้ยิน - ทำโดยไดรเวอร์วิดีโอโหมดเคอร์เนล ไดรเวอร์วิดีโอโหมดเคอร์เนลเหล่านี้กำหนดค่าการแสดงเฟรมเฟรมโดยค่าเริ่มต้นคือความละเอียดดั้งเดิมของจอภาพที่เชื่อมต่อ หากมีจอภาพมากกว่าหนึ่งจอต่อจอภาพแต่ละจอจะได้รับความคมชัดดั้งเดิมและคอนโซลเสมือนจะถูก จำกัด ด้วยความกว้างและความสูงขั้นต่ำของจอภาพทั้งสอง
เนื่องจากการใช้ KMS ส่งผลให้ framebuffer รายการการกำหนดค่า framebuffer ควรใช้งานได้ ฉันไม่สามารถตรวจสอบสิ่งนี้ในระบบที่ฉันเปิดอยู่ในขณะนี้เนื่องจากไม่มีไดรเวอร์ KMS แต่ฉันจะอยู่ที่ระบบในภายหลังด้วย KMS และฉันจะแจ้งให้คุณทราบ
ดูเอกสารประกอบเคอร์เนลเกี่ยวกับโหมดการตั้งค่าด้วยพารามิเตอร์ video = boot up สำหรับ framebuffersสำหรับข้อมูลเพิ่มเติม
ฉันไม่แน่ใจว่าคุณรู้จริง ๆ ว่าสิ่งที่คุณถามมิฉะนั้นคุณจะต้องใช้ถ้อยคำในลักษณะที่ตอบได้ ... แต่ฉันจะทำให้ดีที่สุดเพื่อตอบคำถามของคุณ
คุณต้องการตั้งค่าโหมดและแสดง 'หน่วยความจำวิดีโอ' บางส่วนหรือไม่ ชอบโหมดดอสแบบเก่า ๆ สิบวัน ?? หากนี่คือสิ่งที่คุณต้องการคุณจะต้องโปรแกรมด้วย 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
ฉันหวังว่าอย่างน้อยฉันก็สามารถชี้ให้คุณในทิศทางที่ถูกต้องถ้าไม่คุณควรแสดงความคิดเห็นและปรับปรุงคำถามของคุณ ฉันได้ปฏิบัติตามคำถามนี้ตั้งแต่ความคิดซึ่งอย่างน้อยสองโยกย้ายมาแล้วและไม่ตอบ หากไม่มีข้อมูลเพิ่มเติมจะไม่มีใครพูดได้อีกแล้ว