Skip to content
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

[GL3+] Add EGL Headless support #177

Merged
merged 19 commits into from
Jan 31, 2021
Merged

[GL3+] Add EGL Headless support #177

merged 19 commits into from
Jan 31, 2021

Conversation

darksylinc
Copy link
Member

The main goal of this PR is to run Ogre in cloud and other VM environments without X11 running or even installed.

New CMake flags:

  • OGRE_GLSUPPORT_USE_EGL_HEADLESS
  • OGRE_GLSUPPORT_USE_GLX
  • OGRE_GLSUPPORT_USE_WGL
  • OGRE_GLSUPPORT_USE_COCOA
  • OGRE_CONFIG_UNIX_NO_X11

Add EGL Headless support via EGL PBuffers (not to be confused with old and deprecated OpenGL PBuffers that competed with FBO in the 2000's)

Add GlSwitchableSupport which allows toggling between GLX and EGL PBuffers at runtime.

See Samples/2.0/Tutorials/Tutorial_EglHeadless/README.md for more information

It's already working but there's a lot of duct-taped code
CMake options added:
- OGRE_GLSUPPORT_USE_GLX
- OGRE_GLSUPPORT_USE_WGL
- OGRE_GLSUPPORT_USE_EGL_HEADLESS

When more than one of these options is enabled, it becomes possible to
switch between them at runtime (WIP)

Also add RenderSystem::getPriorityConfigOption &
getNumPriorityConfigOptions so that important settings get set first
On Linux it would crash without an explanation of what's wrong
Fix texture copies from/to headless windows
Building with OGRE_CONFIG_UNIX_NO_X11 will avoid all X11 dependencies.
@darksylinc darksylinc added the enhancement New feature or request label Jan 31, 2021
@darksylinc darksylinc self-assigned this Jan 31, 2021
@darksylinc darksylinc merged commit f1bd97f into v2-2 Jan 31, 2021
@darksylinc darksylinc deleted the v2-2-egl branch July 10, 2021 23:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant