[英]Using EGL on headless server or virtual console
我正在嘗試在沒有X服務器的環境中使用EGL。 出於測試目的,我創建了一個試圖獲取EGL版本的簡單程序:
$ cat version.c
#include <stdio.h>
#include <EGL/egl.h>
int main() {
EGLDisplay eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
EGLint major;
EGLint minor;
EGLBoolean eglInitialized = eglInitialize(eglDisplay, &major, &minor);
printf("%d %d %d\n", major, minor, eglInitialized);
return 0;
}
$ gcc version.c -lEGL
當我在標准的Ubuntu機器上運行它時,它運行得很好並打印1 4 1
意味着EGL是版本1.4並且顯示器已成功初始化。
為了模擬我最終想要運行的服務器環境,我使用Ctrl + Alt + F1
切換到虛擬控制台,但現在它失敗了:
$ ./a.out
libEGL warning: DRI3: xcb_connect failed
libEGL warning: DRI2: xcb_connect failed
libEGL warning: DRI2: xcb_connect failed
0 4196000 0
遠程服務器上也發生了同樣的事情。
我不是這里的專家,但我認為我已經足夠充分地回答這個問題(盡管現在你可能已經解決了很久以前)。 您正在嘗試使用默認顯示,即系統上的X11。 對於無頭,你可能想要使用gbm,假設你使用的是一個使用相對較新的Mesa GL庫和支持它的內核(Linux或其他)的系統。
有關示例,請參閱Mesa eglinfo演示[1],有關渲染的示例,請參閱eglkms [2]。 您可能希望省略設置模式的位並創建和顯示幀緩沖區,您可能希望使用/ dev / dri / renderD128而不是/ dev / dri / card0。
[1] https://cgit.freedesktop.org/mesa/demos/tree/src/egl/opengl/eglinfo.c [2] https://cgit.freedesktop.org/mesa/demos/tree/src/egl /opengl/eglkms.c
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.