Mir

Merge lp:~vanvugt/mir/fix-1638220 into lp:mir

Proposed by Daniel van Vugt
Status: Merged
Approved by: Daniel van Vugt
Approved revision: no longer in the source branch.
Merged at revision: 3798
Proposed branch: lp:~vanvugt/mir/fix-1638220
Merge into: lp:mir
Diff against target: 60 lines (+33/-6)
2 files modified
src/platforms/mesa/server/kms/real_kms_output.cpp (+8/-6)
tests/unit-tests/platforms/mesa/kms/test_real_kms_output.cpp (+25/-0)
To merge this branch: bzr merge lp:~vanvugt/mir/fix-1638220
Reviewer Review Type Date Requested Status
Alan Griffiths Approve
Cemil Azizoglu (community) Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+309734@code.launchpad.net

Commit message

Avoid crashing on systems that don't have hardware gamma ramps,
like VirtualBox (LP: #1638220)

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

PASSED: Continuous integration, rev:3798
https://mir-jenkins.ubuntu.com/job/mir-ci/2091/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/2688
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2751
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2743
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2743
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2743
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2717
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2717/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/2717
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2717/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2717
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2717/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2717
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2717/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2717
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2717/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/2717
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2717/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Revision history for this message
Cemil Azizoglu (cemil-azizoglu) wrote :

ok

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

Code is a little verbose, but OK

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/platforms/mesa/server/kms/real_kms_output.cpp'
--- src/platforms/mesa/server/kms/real_kms_output.cpp 2016-10-12 13:31:04 +0000
+++ src/platforms/mesa/server/kms/real_kms_output.cpp 2016-11-01 09:40:38 +0000
@@ -296,15 +296,17 @@
296 std::invalid_argument("set_gamma: mismatch gamma LUT sizes"));296 std::invalid_argument("set_gamma: mismatch gamma LUT sizes"));
297 }297 }
298298
299 if (drmModeCrtcSetGamma(299 int ret = drmModeCrtcSetGamma(
300 drm_fd,300 drm_fd,
301 current_crtc->crtc_id,301 current_crtc->crtc_id,
302 gamma.red.size(),302 gamma.red.size(),
303 const_cast<uint16_t*>(gamma.red.data()),303 const_cast<uint16_t*>(gamma.red.data()),
304 const_cast<uint16_t*>(gamma.green.data()),304 const_cast<uint16_t*>(gamma.green.data()),
305 const_cast<uint16_t*>(gamma.blue.data())) != 0)305 const_cast<uint16_t*>(gamma.blue.data()));
306 {306
307 BOOST_THROW_EXCEPTION(307 int err = -ret;
308 std::system_error(errno, std::system_category(), "drmModeCrtcSetGamma Failed"));308 if (err)
309 }309 mir::log_warning("drmModeCrtcSetGamma failed: %s", strerror(err));
310
311 // TODO: return bool in future? Then do what with it?
310}312}
311313
=== modified file 'tests/unit-tests/platforms/mesa/kms/test_real_kms_output.cpp'
--- tests/unit-tests/platforms/mesa/kms/test_real_kms_output.cpp 2016-10-12 13:31:04 +0000
+++ tests/unit-tests/platforms/mesa/kms/test_real_kms_output.cpp 2016-11-01 09:40:38 +0000
@@ -397,3 +397,28 @@
397 EXPECT_TRUE(output.set_crtc(fb_id));397 EXPECT_TRUE(output.set_crtc(fb_id));
398 output.set_gamma(gamma);398 output.set_gamma(gamma);
399}399}
400
401TEST_F(RealKMSOutputTest, drm_set_gamma_failure_does_not_throw)
402{ // Regression test for LP: #1638220
403 using namespace testing;
404
405 uint32_t const fb_id{67};
406
407 setup_outputs_connected_crtc();
408
409 mgm::RealKMSOutput output{mock_drm.fake_drm.fd(), connector_ids[0],
410 mt::fake_shared(mock_page_flipper)};
411
412 mg::GammaCurves gamma{{1}, {2}, {3}};
413
414 EXPECT_CALL(mock_drm, drmModeCrtcSetGamma(mock_drm.fake_drm.fd(), crtc_ids[0],
415 gamma.red.size(),
416 const_cast<uint16_t*>(gamma.red.data()),
417 const_cast<uint16_t*>(gamma.green.data()),
418 const_cast<uint16_t*>(gamma.blue.data())))
419 .WillOnce(Return(-ENOSYS));
420
421 EXPECT_TRUE(output.set_crtc(fb_id));
422
423 EXPECT_NO_THROW(output.set_gamma(gamma););
424}

Subscribers

People subscribed via source and target branches