2014-11-14 7 views
3

이미지를 생성하고 웹 페이지를 통해 이미지를 보는 OpenGL 애플리케이션을 구현하고 싶습니다.EGL 응용 프로그램을 콘솔 모드로 실행할 수 있습니까?

응용 프로그램은 디스플레이가없고 x 윈도우가 있지만 gpu가있는 Linux 서버에서 실행됩니다.

egl1은 pixmap 또는 pbuffer를 렌더링 타겟으로 사용할 수 있다는 것을 알고 있습니다.

하지만 기능이 eglGetDisplay는 나를 걱정합니다. 그래도 작동하도록 디스플레이가 연결되어 있어야합니다.

egl은 디스플레이 및 xwindows 또는 wayland없이 작동합니까?

+0

[이 답변보기] (http://stackoverflow.com/a/23166541/2207421). – Kalrish

답변

6

이것은 반복되는 질문입니다. TL; DR : 현재의 Linux 그래픽 드라이버 모델에서는 X 서버를 실행하지 않고 기존 드라이버에서 GPU를 사용할 수 없습니다. KMS + DRM + DRI에서 GPU를 지원하는 경우이 작업을 수행 할 수 있습니다. (편집 : :) 또한 2016 년 Nvidia는 드디어 EGL을 통해 드라이버에서 헤드리스 OpenGL 지원을 도입했습니다.


긴 이야기 기술적 GPU는 부착되는 디스플레이 나 그래픽 서버 실행하지 않고 오프 스크린 버퍼에 완벽하게 렌더링 할 수 있다는 것이다. 그러나 그래픽 드라이버 및 환경 개발의 역사로 인해 이 가능하지 않지만은 오랫동안 사용 가능하지 않았습니다.. 당시에 (그래픽이 처음 리눅스에 도입되었을 때) 가정은 : "그래픽 장치는 화면에 그림을 전달합니다." 그래픽 카드를 가속화 코 프로세서로 사용할 수 있다는 것은 아이디어가 아니 었습니다.

몇 년 전까지 만해도 Linux 커널 자체는 그래픽 장치 (시스템의 주소 공간 어딘가에있는 멍청한 프레임 버퍼가 아닌)와 대화하는 방법을 모르고있었습니다. X 서버는 GPU와 대화 한 것이므로 실행할 필요가있었습니다. 그리고 첫 번째 X 서버 개발자는 키보드와 의자 사이에 사람이 있다고 가정했습니다. 당신은 엔비디아의 GPU를 사용하는 경우,

단기 : 은 그냥 X 서버를 시작


그래서 옵션 무엇인가. 데스크탑 환경이 완전히 필요하지 않습니다. 창 관리자를 시작하는 번거 로움을 덜 수 있습니다. X 서버에 VT를 요구하고 활성화 시키십시오.Nvidia 드라이버에서 EGL을 통한 헤드리스 OpenGL 컨텍스트가 지원됩니다.

AMD 또는 Intel GPU를 사용하는 경우 직접 대화 할 수 있습니다. EGL을 사용하거나 KMS를 사용하여 (kmscube라고 불리는 Google을 시도해보십시오. 먼저 X 서버에서 텍스트 VT로 전환해야합니다. 그렇지 않으면 X 서버가 중단됩니다). 아직 시도하지는 않았지만 VT를 그래픽 모드로 전환하거나 디스플레이 프레임 버퍼에서 그래픽 출력을 전혀 사용하지 않고 GPU를 사용하여 오프 스크린 버퍼로 렌더링하는 예제를 kmscube 조정할 수 있어야합니다.

+0

궁금한데, 그 중 2 년 후에도 얼마가 유효합니까? –

+0

@VladFiroiu : NVidia 드라이버는 1 년이 조금 넘었지만 헤드없는 X없는 작업을 지원합니다. https://devblogs.nvidia.com/parallelforall/egl-eye-opengl-visualization-without-x-server/ 이것이 독점적 인 것이라고 지적해야합니다. OSS 드라이버에 관해서는 마지막 단락에서 설명한 내용을 사용할 수 있습니다. – datenwolf

+0

당신의 대답은 모순입니다 - TL에서는 불가능하다고 말하고 있습니다 만, 마지막 단락에서는 EGL * (NVidia에서도 지원됨) *으로 가능하다고 말하는 것입니다. –

0

datenwolf가 AMD와 인텔 GPU에서 x를 사용하지 않고 프레임 버퍼를 만들 수 있다고 말한 것처럼. iam이 AMD 그래픽 카드를 EGL 및 iam과 함께 사용하여 프레임 버퍼를 만들고 Ia 드로잉을 만들 수 있기 때문에 xu없이 구성하여 메사 라이브러리를 만들 수 있습니다.