簡體   English   中英

EGL應用程序可以在控制台模式下運行嗎

[英]Can EGL application run in console mode?

我想實現一個生成圖像的opengl應用程序,我通過網頁查看圖像。

該應用程序旨在運行在沒有顯示器,沒有x窗口但使用gpu的linux服務器上。

我知道egl可以使用pixmap或pbuffer作為渲染目標。

但是函數eglGetDisplay讓我擔心,聽起來我還需要附加顯示才能使它工作?

egl工作沒有顯示和xwindows或wayland?

這是一個反復出現的問題。 TL; DR:使用當前的Linux圖形驅動程序模型,如果不運行X服務器,就不可能將GPU與傳統驅動程序一起使用。 如果KMS + DRM + DRI支持GPU,則可以執行此操作。 (編輯:)同樣在2016年,Nvidia終於通過EGL在他們的驅動程序中引入了真正無頭的OpenGL支持。


從長遠來看,技術上GPU非常能夠在沒有連接顯示器或運行圖形服務器的情況下渲染到屏幕外緩沖區。 然而,由於圖形驅動程序和環境開發的歷史, 這是不可能的,但 長期以來是不可能的 當時的假設(當圖形首次引入Linux時)是:“圖形設備可以將圖像傳送到屏幕上。” 顯卡可以用作加速協處理器甚至不是一個想法。

除此之外,直到幾年前,Linux內核本身還不知道如何與圖形設備通信(除了系統地址空間某處的啞幀緩沖)。 X服務器是與GPU通信的,所以你需要運行它。 並且第一批X服務器開發人員假設鍵盤和椅子之間有人。


那你有什么選擇:

短期來說,如果您使用的是NVidia GPU: 只需啟動X服務器即可。 您不需要完整的桌面環境。 您甚至可以省去啟動窗口管理器的麻煩。 讓X服務器聲明VT並處於活動狀態。 現在通過Nvidia驅動程序中的EGL支持無頭OpenGL上下文。

如果您使用的是AMD或Intel GPU,則可以直接與它通話。 無論是通過EGL還是使用KMS(Google用於kmscube ,在嘗試時,請確保先從X服務器切換到文本VT,否則會導致X服務器崩潰)。 我還沒有嘗試過,但應該可以調整kmscube示例,它使用GPU渲染到屏幕外緩沖區,而無需將VT切換到圖形模式或在顯示幀緩沖區上有任何圖形輸出。

正如datenwolf告訴你的那樣,你可以創建一個幀緩沖區而不使用帶有AMD和Intel GPU的x。 因為我使用AMD顯卡與EGL和iam能夠創建一個幀緩沖和iam繪圖。使用Mesa Library配置無xu可以實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM