[enhancement] Add support for full OpenGL compositing
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical System Image |
Fix Released
|
Medium
|
Daniel van Vugt | ||
Mir |
Fix Released
|
Medium
|
Daniel van Vugt | ||
mir (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
[enhancement] Add support for full OpenGL compositing.
libmirserver/
There are a few pending reasons to compile for full OpenGL on desktop (and/or switch at runtime!):
1. Qt only understands full OpenGL on desktop. Presently we use a hack that makes it call ES functions pretending to be full OpenGL, but this hack will fail when we support non-Mesa desktop drivers.
2. Proprietary desktop drivers sometimes don't support ES.
3. Proprietary desktop drivers often (last I checked) perform better with full OpenGL. Not sure why, probably just driver maturity.
4. There is evidence (bug 1420574) that ES doesn't work at all on some older chipsets and regular OpenGL is required.
Related branches
- Cemil Azizoglu (community): Approve
- Mir CI Bot: Approve (continuous-integration)
-
Diff: 954 lines (+153/-53)46 files modifiedCMakeLists.txt (+34/-0)
debian/control (+1/-0)
examples/CMakeLists.txt (+3/-2)
examples/graphics_utils.cpp (+2/-0)
examples/image_renderer.cpp (+2/-0)
examples/server_example_adorning_compositor.cpp (+4/-2)
include/test/mir/test/doubles/mock_egl.h (+2/-0)
playground/demo-shell/demo_renderer.cpp (+4/-0)
playground/demo-shell/typo/CMakeLists.txt (+1/-3)
playground/demo-shell/typo/typo_glcache.cpp (+1/-1)
src/gl/program.cpp (+2/-0)
src/include/gl/mir/gl/primitive.h (+1/-1)
src/include/gl/mir/gl/program.h (+1/-1)
src/include/gl/mir/gl/texture.h (+1/-1)
src/include/platform/mir/graphics/egl_extensions.h (+2/-3)
src/platform/CMakeLists.txt (+1/-1)
src/platform/graphics/CMakeLists.txt (+1/-1)
src/platform/graphics/egl_extensions.cpp (+7/-0)
src/platforms/android/include/egl_sync_extensions.h (+2/-0)
src/platforms/android/server/buffer.h (+2/-0)
src/platforms/android/server/hwc_fallback_gl_renderer.cpp (+2/-0)
src/platforms/common/server/CMakeLists.txt (+2/-2)
src/platforms/common/server/shm_buffer.cpp (+5/-3)
src/platforms/mesa/server/buffer_allocator.cpp (+4/-2)
src/platforms/mesa/server/display_helpers.cpp (+15/-3)
src/platforms/mesa/server/kms/CMakeLists.txt (+2/-2)
src/platforms/mesa/server/kms/display_buffer.cpp (+1/-1)
src/platforms/mesa/server/x11/CMakeLists.txt (+1/-1)
src/platforms/mesa/server/x11/graphics/CMakeLists.txt (+1/-1)
src/platforms/mesa/server/x11/graphics/display.cpp (+5/-1)
src/renderers/gl/program_family.cpp (+2/-1)
src/renderers/gl/program_family.h (+1/-1)
src/renderers/gl/renderer.cpp (+5/-0)
src/renderers/gl/renderer.h (+1/-1)
src/server/CMakeLists.txt (+2/-2)
src/server/compositor/screencast_display_buffer.h (+2/-1)
src/server/graphics/CMakeLists.txt (+1/-1)
src/server/graphics/nested/display.cpp (+9/-4)
src/server/graphics/nested/display.h (+1/-1)
src/server/graphics/nested/display_buffer.cpp (+1/-1)
src/server/graphics/offscreen/display.cpp (+2/-0)
src/server/graphics/offscreen/display_buffer.cpp (+4/-2)
src/server/graphics/surfaceless_egl_context.cpp (+5/-1)
src/server/scene/gl_pixel_buffer.cpp (+2/-2)
src/server/scene/gl_pixel_buffer.h (+1/-1)
tests/unit-tests/graphics/test_shm_buffer.cpp (+2/-2)
- Mir CI Bot: Approve (continuous-integration)
- Cemil Azizoglu (community): Approve
- Chris Halse Rogers: Pending requested
-
Diff: 39 lines (+5/-13)2 files modifiedCMakeLists.txt (+5/-3)
src/platforms/common/server/shm_buffer.cpp (+0/-10)
Changed in mir: | |
assignee: | nobody → Daniel van Vugt (vanvugt) |
Changed in mir: | |
milestone: | none → 0.24.0 |
status: | Triaged → In Progress |
Changed in canonical-devices-system-image: | |
status: | New → Fix Committed |
importance: | Undecided → Medium |
milestone: | none → 13 |
Changed in mir: | |
status: | Fix Committed → Fix Released |
Changed in canonical-devices-system-image: | |
assignee: | nobody → Daniel van Vugt (vanvugt) |
Changed in canonical-devices-system-image: | |
status: | Fix Committed → Fix Released |
On point #4 it's worth noting that such older chipsets possibly also don't have hardware shaders. But we could at least make basic Mir viable for them by writing an OpenGL 1.x renderer.