"mesa" platform is no longer accurate and needs renaming
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Medium
|
Cemil Azizoglu | ||
mir (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Our "mesa" code and packages mostly represents support for DRM/DRI output. And the only use case for this till now also used Mesa for the libGL* implementation.
This is no longer true however. With Nvidia and AMD soon to release DRM support in their proprietary drivers, we will be supporting them. These drivers will provide DRM display access, but as usual will probably provide their own custom libGL* implementations. So won't use Mesa.
This should work for Mir. However when a vendor provides their own libGL*, we are technically no longer using Mesa at all. We will still be using the "mesa" code path in Mir though. So that all needs renaming to something more accurate like "drm" or "dri" etc. Not "mesa".
Related branches
- Daniel van Vugt: Abstain
- Alexandros Frantzis (community): Approve
- PS Jenkins bot (community): Approve (continuous-integration)
- Alan Griffiths: Approve
- Chris Halse Rogers: Approve
-
Diff: 586 lines (+125/-56)31 files modifiedsrc/platforms/mesa/server/CMakeLists.txt (+5/-0)
src/platforms/mesa/server/common/CMakeLists.txt (+17/-0)
src/platforms/mesa/server/common/buffer_allocator.h (+1/-1)
src/platforms/mesa/server/common/platform_common.h (+38/-0)
src/platforms/mesa/server/kms/CMakeLists.txt (+9/-15)
src/platforms/mesa/server/kms/platform.h (+1/-5)
tests/include/mir_test_doubles/mock_virtual_terminal.h (+1/-1)
tests/include/mir_test_doubles/null_virtual_terminal.h (+1/-1)
tests/include/mir_test_doubles/stub_gbm_native_buffer.h (+1/-1)
tests/integration-tests/CMakeLists.txt (+6/-0)
tests/mir_test_doubles/CMakeLists.txt (+6/-1)
tests/mir_test_doubles/platform_factory.cpp (+1/-1)
tests/unit-tests/CMakeLists.txt (+7/-0)
tests/unit-tests/graphics/mesa/mock_kms_output.h (+1/-1)
tests/unit-tests/graphics/mesa/test_anonymous_shm_file.cpp (+1/-1)
tests/unit-tests/graphics/mesa/test_buffer_allocator.cpp (+2/-2)
tests/unit-tests/graphics/mesa/test_bypass.cpp (+1/-1)
tests/unit-tests/graphics/mesa/test_cursor.cpp (+4/-4)
tests/unit-tests/graphics/mesa/test_display.cpp (+3/-3)
tests/unit-tests/graphics/mesa/test_display_buffer.cpp (+2/-2)
tests/unit-tests/graphics/mesa/test_display_configuration.cpp (+2/-2)
tests/unit-tests/graphics/mesa/test_drm_helper.cpp (+1/-1)
tests/unit-tests/graphics/mesa/test_gbm_buffer.cpp (+3/-2)
tests/unit-tests/graphics/mesa/test_guest_platform.cpp (+1/-1)
tests/unit-tests/graphics/mesa/test_ipc_operations.cpp (+2/-2)
tests/unit-tests/graphics/mesa/test_kms_page_flipper.cpp (+1/-1)
tests/unit-tests/graphics/mesa/test_linux_virtual_terminal.cpp (+1/-1)
tests/unit-tests/graphics/mesa/test_nested_authentication.cpp (+1/-1)
tests/unit-tests/graphics/mesa/test_platform.cpp (+1/-1)
tests/unit-tests/graphics/mesa/test_real_kms_output.cpp (+2/-2)
tests/unit-tests/graphics/mesa/test_shm_buffer.cpp (+2/-2)
- PS Jenkins bot (community): Approve (continuous-integration)
- Alan Griffiths: Approve
- Daniel van Vugt: Abstain
- Alexandros Frantzis (community): Needs Information
- Chris Halse Rogers: Approve
-
Diff: 573 lines (+84/-69)28 files modifiedCMakeLists.txt (+6/-6)
cmake/ABICheck.cmake (+4/-4)
cross-compile-chroot.sh (+1/-1)
debian/control (+23/-11)
debian/create_postinst_prerm_scripts.sh (+2/-2)
debian/install_ld_so_conf.sh (+2/-3)
debian/mir-platform-graphics-mesa-kms2.install (+1/-1)
debian/rules (+3/-3)
doc/kernel_requirements.md (+1/-1)
src/platforms/CMakeLists.txt (+2/-2)
src/platforms/mesa/server/CMakeLists.txt (+1/-1)
src/platforms/mesa/server/kms/CMakeLists.txt (+7/-7)
src/platforms/mesa/server/kms/platform.cpp (+1/-1)
tests/CMakeLists.txt (+2/-2)
tests/acceptance-tests/CMakeLists.txt (+1/-1)
tests/integration-tests/CMakeLists.txt (+2/-2)
tests/integration-tests/graphics/mesa/CMakeLists.txt (+1/-1)
tests/mir_test_doubles/CMakeLists.txt (+1/-1)
tests/unit-tests/CMakeLists.txt (+3/-3)
tests/unit-tests/client/CMakeLists.txt (+1/-1)
tests/unit-tests/client/test_client_platform.cpp (+1/-1)
tests/unit-tests/client/test_probing_client_platform_factory.cpp (+2/-2)
tests/unit-tests/graphics/CMakeLists.txt (+1/-1)
tests/unit-tests/graphics/mesa/CMakeLists.txt (+1/-1)
tests/unit-tests/graphics/mesa/test_platform.cpp (+2/-2)
tests/unit-tests/graphics/test_platform_prober.cpp (+5/-5)
tools/run_abi_compliance_checker.sh (+1/-1)
tools/update_package_abis.sh (+6/-2)
summary: |
- "mesa" is no longer accurate and needs renaming + "mesa" platform is no longer accurate and needs renaming |
Changed in mir: | |
assignee: | nobody → Cemil Azizoglu (cemil-azizoglu) |
Changed in mir: | |
status: | Fix Committed → Fix Released |
> This is no longer true however. With Nvidia and AMD soon to release DRM support in their proprietary drivers,
> we will be supporting them. These drivers will provide DRM display access, but as usual will probably provide
> their own custom libGL* implementations. So won't use Mesa.
Will they provide gbm too?
> Our "mesa" code and packages mostly represents support for DRM/DRI output.
Our mesa code is a mix of DRM/KMS, EGL and gbm. The important point for this discussion is that gbm is a mesa-specific technology.
> So that all needs renaming to something more accurate like "drm" or "dri" etc. Not "mesa".
I think "drm" is not specific enough, and "dri" is an implementation detail we never interact with directly.
If other vendors implement the full DRM, EGL, gbm triad, they are essentially implementing the "mesa" interface,
so I still think "mesa" is the most appropriate name. If they diverge, e.g., don't have gbm, we would need a new platform anyway.
Alternatives we could consider are drm-mesa, so that we could then have drm-nvidia etc for diverging implementations all based on drm.
But let's wait and see what the drivers have to offer in terms of APIs before making any decisions.