-
Notifications
You must be signed in to change notification settings - Fork 461
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Replace GLX dependency with EGL dependency #1039
Comments
In fact, freeglut also seems to support headless rendering but has to go through a X server. |
Hi, a bit of guidance needed. In order to support headless rendering, I refactored |
Note: Discussion started in #547 |
Hi, The approach seems to be the right one, and most of the code is already using a
Here is a list of apps needing oglApp, with a transition proposal:
|
Thank you for the input. My work-around for the vendor specific problem is to use the EGL implementation of Mesa, which should be available on most if not all Linux machines. |
@ChinYing-Li, thanks for your work on this! I'm worried about relying on Mesa for non-Nvidia hardware. We have tried using Mesa several times over the years and it has resulted in large numbers of GPU unit test failures. Perhaps Mesa would work better now, but if not, we would need to find another solution. It is definitely a requirement that the GPU unit tests continue to run on AMD/ATI hardware (which apparently don't have EGL support yet?). |
These Blender threads seem to point at recent efforts to bring back EGL headless rendering, as well as comments about needing to request "Core" rather than "Compatibility" profiles from the driver. https://developer.blender.org/T54638 So perhaps some useful info to be mined there? |
System requirement: Linux Steps are as follows:
This will install the extra-cmake-module module, which contains findEGL.cmake.
|
Thanks for all the pointers! Interestingly, I did not encounter the issue mentioned in the blender posts. Result of
|
Other pull requests (#1016) are moving |
@hodoulp |
* Modified CMakeLists.txt Signed-off-by: ChinYing-Li <[email protected]> * Support headless rendering in Linux build with EGL (#1039) Signed-off-by: ChinYing-Li <[email protected]> * Fix CMakeLists bugs Made OglApp's destructor virtual Signed-off-by: ChinYing-Li <[email protected]> * Remove bugs in app's CMakeLists (#1039) Signed-off-by: ChinYing-Li <[email protected]> * Modified CMakeLists and add factory function for OglAppRcPtr (#1039) Signed-off-by: ChinYing-Li <[email protected]> * Use imported target to find EGL (#1039) Change the CI workflow to build with headless option Signed-off-by: ChinYing-Li <[email protected]> * Modify CMakeLists to properly link EGL (#1039) Remove unused variables (#1039) Include glext.h and debug print (#1039) Check GLEW initialization (#1039) Signed-off-by: ChinYing-Li <[email protected]> * Add debug print for HeadlessApp initialization (#1039) Signed-off-by: ChinYing-Li <[email protected]> * Modify CMakeLists to accomodate system that support GLVND (#1039) Remove unused variables (#1039) Define GLEW_EGL preprocessor for NVidia implementation (#1039) Signed-off-by: ChinYing-Li <[email protected]> * Fix CMakeLists (#1039) Add the factory method for creating OglAppRcPtr Modify CMakeLists (#1039) Signed-off-by: ChinYing-Li <[email protected]> * Rename the factory method OglApp::CreateOglApp (#1039) Signed-off-by: ChinYing-Li <[email protected]> * Change workflow to check the GL vendor of CI Linux build (#1039) Signed-off-by: ChinYing-Li <[email protected]> * Add proper mechanism to detect GLVND support in CmakeLists (#1039) Signed-off-by: ChinYing-Li <[email protected]> * Reformat the code (#1039) Signed-off-by: ChinYing-Li <[email protected]> * Turn off GPU unit test in CI (#1039) Signed-off-by: ChinYing-Li <[email protected]>
* Modified CMakeLists.txt Signed-off-by: ChinYing-Li <[email protected]> * Support headless rendering in Linux build with EGL (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]> * Fix CMakeLists bugs Made OglApp's destructor virtual Signed-off-by: ChinYing-Li <[email protected]> * Remove bugs in app's CMakeLists (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]> * Modified CMakeLists and add factory function for OglAppRcPtr (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]> * Use imported target to find EGL (AcademySoftwareFoundation#1039) Change the CI workflow to build with headless option Signed-off-by: ChinYing-Li <[email protected]> * Modify CMakeLists to properly link EGL (AcademySoftwareFoundation#1039) Remove unused variables (AcademySoftwareFoundation#1039) Include glext.h and debug print (AcademySoftwareFoundation#1039) Check GLEW initialization (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]> * Add debug print for HeadlessApp initialization (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]> * Modify CMakeLists to accomodate system that support GLVND (AcademySoftwareFoundation#1039) Remove unused variables (AcademySoftwareFoundation#1039) Define GLEW_EGL preprocessor for NVidia implementation (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]> * Fix CMakeLists (AcademySoftwareFoundation#1039) Add the factory method for creating OglAppRcPtr Modify CMakeLists (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]> * Rename the factory method OglApp::CreateOglApp (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]> * Change workflow to check the GL vendor of CI Linux build (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]> * Add proper mechanism to detect GLVND support in CmakeLists (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]> * Reformat the code (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]> * Turn off GPU unit test in CI (AcademySoftwareFoundation#1039) Signed-off-by: ChinYing-Li <[email protected]>
Quoting @jfpanisset :
"" Currently OpenColorIO uses GLUT in tests/gpu/GPUUnitTest.cpp to create a
window to render OpenGL tests, which in turn depends on GLX. I'm assuming
these days it's linking against FreeGLUT, and it is apparently possible to use
EGL instead of GLX for creating the rendering context. The advantage is that it
might be possible to do away with having to stand up an X server for the CI
pipeline, and whereas EGL rendering is supported inside NVIDIA containers
(with built-in support starting in Docker 19.03), GLX is not. "
The text was updated successfully, but these errors were encountered: