Mir

Merge lp:~raof/mir/better-eglstream-detection into lp:mir

Proposed by Chris Halse Rogers
Status: Merged
Approved by: Alan Griffiths
Approved revision: no longer in the source branch.
Merged at revision: 4176
Proposed branch: lp:~raof/mir/better-eglstream-detection
Merge into: lp:mir
Prerequisite: lp:~raof/mir/remove-never-used-code
Diff against target: 57 lines (+31/-3)
1 file modified
src/platforms/eglstream-kms/server/platform_symbols.cpp (+31/-3)
To merge this branch: bzr merge lp:~raof/mir/better-eglstream-detection
Reviewer Review Type Date Requested Status
Alan Griffiths Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+324597@code.launchpad.net

Commit message

platform-eglstream: Return “unsupported” when we can't claim DRM master.

This matches what mesa-kms does.

To post a comment you must log in.
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4182
https://mir-jenkins.ubuntu.com/job/mir-ci/3411/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4639
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4771
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4760
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4760
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4671
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4671/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4671
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4671/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4671
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4671/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4671
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4671/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4671
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4671/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3411/rebuild

review: Approve (continuous-integration)
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

Sure

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/platforms/eglstream-kms/server/platform_symbols.cpp'
--- src/platforms/eglstream-kms/server/platform_symbols.cpp 2017-05-08 03:04:26 +0000
+++ src/platforms/eglstream-kms/server/platform_symbols.cpp 2017-05-25 06:24:14 +0000
@@ -105,6 +105,19 @@
105 mir::assert_entry_point_signature<mg::AddPlatformOptions>(&add_graphics_platform_options);105 mir::assert_entry_point_signature<mg::AddPlatformOptions>(&add_graphics_platform_options);
106}106}
107107
108namespace
109{
110char const* drm_node_for_device(EGLDeviceEXT device)
111{
112 auto const device_path = eglQueryDeviceStringEXT(device, EGL_DRM_DEVICE_FILE_EXT);
113 if (!device_path)
114 {
115 BOOST_THROW_EXCEPTION(mg::egl_error("Failed to determine DRM device node path from EGLDevice"));
116 }
117 return device_path;
118}
119}
120
108mg::PlatformPriority probe_graphics_platform(mo::ProgramOption const& /*options*/)121mg::PlatformPriority probe_graphics_platform(mo::ProgramOption const& /*options*/)
109{122{
110 mir::assert_entry_point_signature<mg::PlatformProbe>(&probe_graphics_platform);123 mir::assert_entry_point_signature<mg::PlatformProbe>(&probe_graphics_platform);
@@ -158,7 +171,22 @@
158 {171 {
159 mir::log_debug("Found EGLDeviceEXT with device extensions: %s",172 mir::log_debug("Found EGLDeviceEXT with device extensions: %s",
160 device_extensions);173 device_extensions);
161 return strstr(device_extensions, "EGL_EXT_device_drm") != NULL;174 // TODO: This test is not strictly correct (will incorrectly match
175 // EGL_EXT_device_drmish_but_not_drm)
176 if (strstr(device_extensions, "EGL_EXT_device_drm") != NULL)
177 {
178 // Check if we can acquire DRM master
179 int const drm_fd = open(drm_node_for_device(device), O_RDWR | O_CLOEXEC);
180 if (drmSetMaster(drm_fd))
181 {
182 mir::log_debug(
183 "EGL_EXT_device_drm found, but can't acquire DRM master.");
184 return false;
185 }
186 drmDropMaster(drm_fd);
187 return true;
188 }
189 return false;
162 }190 }
163 else191 else
164 {192 {
@@ -167,8 +195,8 @@
167 }195 }
168 }))196 }))
169 {197 {
170 mir::log_debug("EGLDeviceEXTs found, but none support required "198 mir::log_debug(
171 "EGL_EXT_device_drm extension");199 "EGLDeviceEXTs found, but none are suitable for Mir");
172 return mg::PlatformPriority::unsupported;200 return mg::PlatformPriority::unsupported;
173 }201 }
174202

Subscribers

People subscribed via source and target branches