Mir

Merge lp:~albaguirre/mir/fix-1656164 into lp:mir

Proposed by Alberto Aguirre
Status: Merged
Approved by: Daniel van Vugt
Approved revision: no longer in the source branch.
Merged at revision: 3948
Proposed branch: lp:~albaguirre/mir/fix-1656164
Merge into: lp:mir
Diff against target: 255 lines (+85/-48)
7 files modified
include/platform/mir/graphics/gamma_curves.h (+11/-0)
src/platform/graphics/gamma_curves.cpp (+22/-0)
src/platform/symbols.map (+1/-0)
src/platforms/mesa/server/kms/real_kms_display_configuration.cpp (+2/-21)
src/platforms/mesa/server/kms/real_kms_display_configuration.h (+0/-1)
tests/unit-tests/graphics/test_gamma_curves.cpp (+49/-20)
tests/unit-tests/platforms/mesa/kms/test_display.cpp (+0/-6)
To merge this branch: bzr merge lp:~albaguirre/mir/fix-1656164
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Approve
Daniel van Vugt Approve
Brandon Schaefer (community) Approve
Review via email: mp+314776@code.launchpad.net

Commit message

Initialize gamma LUTs with a linear ramp.

drmModeCrtcGetGamma does not query the h/w; instead it simply returns
the previous set configured with drmModeCrtcSetGamma or zeros if
drmModeCrtcSetGamma has not been previously called. (LP: #1656164)

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

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

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

review: Approve (continuous-integration)
Revision history for this message
Brandon Schaefer (brandontschaefer) wrote :

nit

+26 LinearGammaLUTs(int size);

Should be explicit

review: Approve
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

(1) A gamma size of 1 is going to throw an exception (which we are close to fixing already so probably should):

50 + if (size < 2)
51 + BOOST_THROW_EXCEPTION(std::logic_error("gamma LUT size is too small"));

121 + if (crtc->gamma_size > 0)
122 + gamma = mg::LinearGammaLUTs(crtc->gamma_size);

(2) For more advanced desktop drivers which might have a nonlinear ramp already set, won't this clobber it?

review: Needs Fixing
Revision history for this message
Alberto Aguirre (albaguirre) wrote :

> (1) A gamma size of 1 is going to throw an exception (which we are close to
> fixing already so probably should):
>
> 50 + if (size < 2)
> 51 + BOOST_THROW_EXCEPTION(std::logic_error("gamma LUT size is too
> small"));
>

Yes a size of 1 should throw otherwise you'd get a division by zero.

> 121 + if (crtc->gamma_size > 0)
> 122 + gamma = mg::LinearGammaLUTs(crtc->gamma_size);
>
> (2) For more advanced desktop drivers which might have a nonlinear ramp
> already set, won't this clobber it?

Yeah but that's pre-existing behavior given the current design of drmModeCrtcGetGamma. This MP does not change that;

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:3936
https://mir-jenkins.ubuntu.com/job/mir-ci/2720/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/3538/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/3606
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/3596
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/3596
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/3596
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3565
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3565/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/3565
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3565/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3565
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3565/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/3565
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3565/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/3565
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/3565/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/3565/console

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:3936
https://mir-jenkins.ubuntu.com/job/mir-ci/2723/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/3543/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/3611
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/3601
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/3601
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/3601
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3570
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3570/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3570/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3570
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3570/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/3570
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3570/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/3570
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/3570/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/3570
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/3570/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Autolanding.
More details in the following jenkins job:
https://mir-jenkins.ubuntu.com/job/mir-autolanding/961/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/3549/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/1013/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/3617
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/3607
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/3607
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/3607
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3576
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3576/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/3576
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3576/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3576/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3576
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3576/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/3576
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/3576/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/3576
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/3576/artifact/output/*zip*/output.zip

review: Needs Fixing (continuous-integration)
Revision history for this message
Brandon Schaefer (brandontschaefer) wrote :

[ FAILED ] ApplicationNotRespondingDetection.failure_to_pong_is_noticed

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

I mean that we should only throw exceptions for things we don't know how to handle. We probably know how to handle the problem of a length 1 table... just log a warning/error and ignore it.

review: Needs Fixing
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Although... this probably falls into the bucket of things that might go wrong during display config changes. So yeah expect an exception in that case.

review: Approve
Revision history for this message
Mir CI Bot (mir-ci-bot) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'include/platform/mir/graphics/gamma_curves.h'
--- include/platform/mir/graphics/gamma_curves.h 2016-10-31 02:37:31 +0000
+++ include/platform/mir/graphics/gamma_curves.h 2017-01-16 15:30:49 +0000
@@ -33,16 +33,27 @@
33{33{
34public:34public:
35 GammaCurves() = default;35 GammaCurves() = default;
36 GammaCurves(GammaCurves const& other) = default;
37 GammaCurves(GammaCurves&& other) = default;
3638
37 GammaCurves(GammaCurve const& red,39 GammaCurves(GammaCurve const& red,
38 GammaCurve const& green,40 GammaCurve const& green,
39 GammaCurve const& blue);41 GammaCurve const& blue);
4042
43 GammaCurves& operator=(GammaCurves const& other) = default;
44 GammaCurves& operator=(GammaCurves&& other) = default;
45
41 GammaCurve red;46 GammaCurve red;
42 GammaCurve green;47 GammaCurve green;
43 GammaCurve blue;48 GammaCurve blue;
44};49};
4550
51class LinearGammaLUTs : public GammaCurves
52{
53public:
54 explicit LinearGammaLUTs(int size);
55};
56
46}57}
47}58}
4859
4960
=== modified file 'src/platform/graphics/gamma_curves.cpp'
--- src/platform/graphics/gamma_curves.cpp 2016-10-31 02:37:31 +0000
+++ src/platform/graphics/gamma_curves.cpp 2017-01-16 15:30:49 +0000
@@ -19,10 +19,27 @@
19#include "mir/graphics/gamma_curves.h"19#include "mir/graphics/gamma_curves.h"
2020
21#include <boost/throw_exception.hpp>21#include <boost/throw_exception.hpp>
22
23#include <algorithm>
22#include <stdexcept>24#include <stdexcept>
2325
24namespace mg = mir::graphics;26namespace mg = mir::graphics;
2527
28namespace
29{
30mg::GammaCurves make_linear_ramp(int size)
31{
32 if (size < 2)
33 BOOST_THROW_EXCEPTION(std::logic_error("gamma LUT size is too small"));
34
35 mg::GammaCurve ramp(size);
36 auto const step = std::numeric_limits<mg::GammaCurve::value_type>::max() / (size - 1);
37 mg::GammaCurve::value_type n = 0;
38 std::generate(ramp.begin(), ramp.end(), [&n, step]{ auto current = n; n += step; return current; });
39
40 return {ramp, ramp, ramp};
41}
42}
26mg::GammaCurves::GammaCurves(GammaCurve const& red,43mg::GammaCurves::GammaCurves(GammaCurve const& red,
27 GammaCurve const& green,44 GammaCurve const& green,
28 GammaCurve const& blue) :45 GammaCurve const& blue) :
@@ -36,3 +53,8 @@
36 BOOST_THROW_EXCEPTION(std::logic_error("Different gamma LUT sizes"));53 BOOST_THROW_EXCEPTION(std::logic_error("Different gamma LUT sizes"));
37 }54 }
38}55}
56
57mg::LinearGammaLUTs::LinearGammaLUTs(int size)
58 : GammaCurves(make_linear_ramp(size))
59{
60}
3961
=== modified file 'src/platform/symbols.map'
--- src/platform/symbols.map 2016-11-16 13:24:41 +0000
+++ src/platform/symbols.map 2017-01-16 15:30:49 +0000
@@ -67,6 +67,7 @@
67 mir::graphics::GraphicBufferAllocator::GraphicBufferAllocator*;67 mir::graphics::GraphicBufferAllocator::GraphicBufferAllocator*;
68 mir::graphics::GraphicBufferAllocator::operator*;68 mir::graphics::GraphicBufferAllocator::operator*;
69 mir::graphics::GraphicBufferAllocator::supported_pixel_formats*;69 mir::graphics::GraphicBufferAllocator::supported_pixel_formats*;
70 mir::graphics::LinearGammaLUTs::LinearGammaLUTs*;
70 mir::graphics::module_for_device*;71 mir::graphics::module_for_device*;
71 mir::graphics::operator*;72 mir::graphics::operator*;
72 mir::graphics::Platform::create_buffer_allocator*;73 mir::graphics::Platform::create_buffer_allocator*;
7374
=== modified file 'src/platforms/mesa/server/kms/real_kms_display_configuration.cpp'
--- src/platforms/mesa/server/kms/real_kms_display_configuration.cpp 2016-12-09 02:54:31 +0000
+++ src/platforms/mesa/server/kms/real_kms_display_configuration.cpp 2017-01-16 15:30:49 +0000
@@ -179,26 +179,6 @@
179 return conf_mode_index;179 return conf_mode_index;
180}180}
181181
182mg::GammaCurves mgm::RealKMSDisplayConfiguration::get_drm_gamma(
183 drmModeCrtc const* crtc) const
184{
185 uint32_t gamma_size = crtc->gamma_size;
186 uint16_t red[gamma_size];
187 uint16_t green[gamma_size];
188 uint16_t blue[gamma_size];
189
190 int ret;
191 if ((ret = drmModeCrtcGetGamma(drm_fd, crtc->crtc_id, gamma_size, red, green, blue)) != 0)
192 {
193 BOOST_THROW_EXCEPTION(
194 std::system_error(errno, std::system_category(), "drmModeCrtcGetGamma Failed"));
195 }
196
197 return {GammaCurve(red, red + gamma_size),
198 GammaCurve(green, green + gamma_size),
199 GammaCurve(blue, blue + gamma_size)};
200}
201
202void mgm::RealKMSDisplayConfiguration::update()182void mgm::RealKMSDisplayConfiguration::update()
203{183{
204 kms::DRMModeResources resources{drm_fd};184 kms::DRMModeResources resources{drm_fd};
@@ -327,7 +307,8 @@
327 current_mode_info = resources.crtc(encoder->crtc_id)->mode;307 current_mode_info = resources.crtc(encoder->crtc_id)->mode;
328308
329 auto crtc = resources.crtc(encoder->crtc_id);309 auto crtc = resources.crtc(encoder->crtc_id);
330 gamma = get_drm_gamma(crtc.get());310 if (crtc->gamma_size > 0)
311 gamma = mg::LinearGammaLUTs(crtc->gamma_size);
331 }312 }
332 }313 }
333314
334315
=== modified file 'src/platforms/mesa/server/kms/real_kms_display_configuration.h'
--- src/platforms/mesa/server/kms/real_kms_display_configuration.h 2016-10-12 06:03:15 +0000
+++ src/platforms/mesa/server/kms/real_kms_display_configuration.h 2017-01-16 15:30:49 +0000
@@ -53,7 +53,6 @@
53 void add_or_update_output(kms::DRMModeResources const& resources, drmModeConnector const& connector);53 void add_or_update_output(kms::DRMModeResources const& resources, drmModeConnector const& connector);
54 std::vector<DisplayConfigurationOutput>::iterator find_output_with_id(DisplayConfigurationOutputId id);54 std::vector<DisplayConfigurationOutput>::iterator find_output_with_id(DisplayConfigurationOutputId id);
55 std::vector<DisplayConfigurationOutput>::const_iterator find_output_with_id(DisplayConfigurationOutputId id) const;55 std::vector<DisplayConfigurationOutput>::const_iterator find_output_with_id(DisplayConfigurationOutputId id) const;
56 GammaCurves get_drm_gamma(drmModeCrtc const* crtc) const;
5756
58 int drm_fd;57 int drm_fd;
59 DisplayConfigurationCard card;58 DisplayConfigurationCard card;
6059
=== modified file 'tests/unit-tests/graphics/test_gamma_curves.cpp'
--- tests/unit-tests/graphics/test_gamma_curves.cpp 2016-09-27 08:16:43 +0000
+++ tests/unit-tests/graphics/test_gamma_curves.cpp 2017-01-16 15:30:49 +0000
@@ -21,47 +21,76 @@
21#include <gtest/gtest.h>21#include <gtest/gtest.h>
22#include <gmock/gmock.h>22#include <gmock/gmock.h>
2323
24#include <algorithm>
25
24namespace mg = mir::graphics;26namespace mg = mir::graphics;
2527
26namespace28namespace
27{29{
28mg::GammaCurve const r{1};30MATCHER(IsMonotonicallyIncreasing, "")
29mg::GammaCurve const g{2};31{
30mg::GammaCurve const b{3};32 return std::is_sorted(std::begin(arg), std::end(arg));
31}33}
3234}
33class MockGammaCurves : public testing::Test35class GammaCurves : public testing::Test
34{36{
35public:37public:
36 MockGammaCurves() :38 mg::GammaCurve const r{1};
37 gamma(r, g, b)39 mg::GammaCurve const g{2};
38 {40 mg::GammaCurve const b{3};
39 }41 mg::GammaCurves gamma{r, g, b};
40
41 mg::GammaCurves gamma;
42};42};
4343
44TEST_F(MockGammaCurves, test_uint16_gamma_curves_size)44TEST_F(GammaCurves, have_correct_size)
45{45{
46 EXPECT_THAT(gamma.red.size(), r.size());46 EXPECT_THAT(gamma.red.size(), r.size());
47 EXPECT_THAT(gamma.green.size(), g.size());
48 EXPECT_THAT(gamma.blue.size(), b.size());
47}49}
4850
49TEST_F(MockGammaCurves, test_uint16_gamma_curves_rgb_correct)51TEST_F(GammaCurves, have_expected_content)
50{52{
51 ASSERT_THAT(gamma.red.size(), r.size());53 using namespace testing;
52 EXPECT_THAT(gamma.red[0], r[0]);54 EXPECT_THAT(gamma.red, ContainerEq(r));
53 EXPECT_THAT(gamma.green[0], g[0]);55 EXPECT_THAT(gamma.green, ContainerEq(g));
54 EXPECT_THAT(gamma.blue[0], b[0]);56 EXPECT_THAT(gamma.blue, ContainerEq(b));
55}57}
5658
57TEST(GammaCurvesEmpty, test_gamma_curves_empty)59TEST_F(GammaCurves, are_empty_by_default)
58{60{
59 mg::GammaCurves gamma;61 mg::GammaCurves gamma;
6062
61 EXPECT_THAT(gamma.red.size(), 0);63 EXPECT_THAT(gamma.red.size(), 0);
64 EXPECT_THAT(gamma.green.size(), 0);
65 EXPECT_THAT(gamma.blue.size(), 0);
62}66}
6367
64TEST(GammaCurvesEmpty, test_invalid_lut_size_gamma_curves_throw)68TEST_F(GammaCurves, throw_with_differing_lut_sizes)
65{69{
66 EXPECT_THROW({ mg::GammaCurves({1}, {2, 3}, {4, 5, 6}); }, std::logic_error);70 EXPECT_THROW({ mg::GammaCurves({1}, {2, 3}, {4, 5, 6}); }, std::logic_error);
67}71}
72
73TEST(LinearGammaLUTs, throw_when_size_is_too_small)
74{
75 EXPECT_THROW({ mg::LinearGammaLUTs(1); }, std::logic_error);
76}
77
78TEST(LinearGammaLUTs, have_expected_size)
79{
80 int const expected_size = 10;
81 mg::LinearGammaLUTs luts(expected_size);
82
83 EXPECT_THAT(luts.red.size(), expected_size);
84 EXPECT_THAT(luts.green.size(), expected_size);
85 EXPECT_THAT(luts.blue.size(), expected_size);
86}
87
88TEST(LinearGammaLUTs, is_monotonically_increasing)
89{
90 mg::LinearGammaLUTs luts(256);
91
92 EXPECT_THAT(luts.red, IsMonotonicallyIncreasing());
93 EXPECT_THAT(luts.green, IsMonotonicallyIncreasing());
94 EXPECT_THAT(luts.blue, IsMonotonicallyIncreasing());
95}
96
6897
=== modified file 'tests/unit-tests/platforms/mesa/kms/test_display.cpp'
--- tests/unit-tests/platforms/mesa/kms/test_display.cpp 2016-11-11 07:56:09 +0000
+++ tests/unit-tests/platforms/mesa/kms/test_display.cpp 2017-01-16 15:30:49 +0000
@@ -234,12 +234,6 @@
234 EXPECT_CALL(mock_gbm, gbm_surface_create(mock_gbm.fake_gbm.device,_,_,_,_))234 EXPECT_CALL(mock_gbm, gbm_surface_create(mock_gbm.fake_gbm.device,_,_,_,_))
235 .Times(Exactly(1));235 .Times(Exactly(1));
236236
237 /* Get the DRM gamma ramp */
238 EXPECT_CALL(mock_drm, drmModeCrtcGetGamma(mock_drm.fake_drm.fd(),
239 crtc_id, fake.crtc.gamma_size,
240 _, _, _))
241 .Times(Exactly(1));
242
243 /* Create an EGL window surface backed by the gbm surface */237 /* Create an EGL window surface backed by the gbm surface */
244 EXPECT_CALL(mock_egl, eglCreateWindowSurface(mock_egl.fake_egl_display,238 EXPECT_CALL(mock_egl, eglCreateWindowSurface(mock_egl.fake_egl_display,
245 mock_egl.fake_configs[0],239 mock_egl.fake_configs[0],

Subscribers

People subscribed via source and target branches