簡體   English   中英

在無頭服務器或虛擬控制台上使用EGL

[英]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.

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