Mir

Merge lp:~kdub/mir/log-more-egl-info into lp:mir

Proposed by Kevin DuBois
Status: Merged
Approved by: Alberto Aguirre
Approved revision: no longer in the source branch.
Merged at revision: 4147
Proposed branch: lp:~kdub/mir/log-more-egl-info
Merge into: lp:mir
Diff against target: 106 lines (+40/-9)
2 files modified
src/server/report/logging/display_report.cpp (+17/-0)
tests/unit-tests/logging/test_display_report.cpp (+23/-9)
To merge this branch: bzr merge lp:~kdub/mir/log-more-egl-info
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Approve
Alberto Aguirre (community) Approve
Daniel van Vugt Approve
Review via email: mp+321981@code.launchpad.net

Commit message

logging: log the egl extensions in the --display-report log option.

Description of the change

logging: log the egl extensions in the --display-report log option.

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

FAILED: Continuous integration, rev:4141
No commit message was specified in the merge proposal. Click on the following link and set the commit message (if you want a jenkins rebuild you need to trigger it yourself):
https://code.launchpad.net/~kdub/mir/log-more-egl-info/+merge/321981/+edit-commit-message

https://mir-jenkins.ubuntu.com/job/mir-ci/3315/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4480/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4597
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/4586
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/4586
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4586
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4586
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4511
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4511/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/4511
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4511/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4511
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4511/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4511/console
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4511/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/4511
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4511/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/4511
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4511/artifact/output/*zip*/output.zip

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

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

Sounds good.

Nits:

1. Needless string copy could just remain a pointer: std::string extensions { ext ? ext : "" };

2. Tests like this are low value and probably need not exist...
+ EXPECT_CALL(mock_egl, eglQueryString(disp, EGL_EXTENSIONS)).WillOnce(Return(ext_str));

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

OK.

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

FAILED: Autolanding.
No commit message was specified in the merge proposal. Hit 'Add commit message' on the merge proposal web page or follow the link below. You can approve the merge proposal yourself to rerun.
https://code.launchpad.net/~kdub/mir/log-more-egl-info/+merge/321981/+edit-commit-message

review: Needs Fixing (continuous-integration)
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
1=== modified file 'src/server/report/logging/display_report.cpp'
2--- src/server/report/logging/display_report.cpp 2017-01-18 02:29:37 +0000
3+++ src/server/report/logging/display_report.cpp 2017-04-05 12:16:38 +0000
4@@ -90,6 +90,23 @@
5
6 void mrl::DisplayReport::report_egl_configuration(EGLDisplay disp, EGLConfig config)
7 {
8+ auto ext = eglQueryString(disp, EGL_EXTENSIONS);
9+ std::string extensions { ext ? ext : "" };
10+ logger->log(ml::Severity::informational, "Display EGL Extensions: " + extensions, component());
11+
12+ auto client_ext = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
13+ if (client_ext)
14+ {
15+ logger->log(ml::Severity::informational,
16+ "EGL_EXT_client_extensions: " + std::string{client_ext}, component());
17+ }
18+ else
19+ {
20+ logger->log(ml::Severity::informational, "EGL_EXT_client_extensions not supported", component());
21+ //clear out error
22+ eglGetError();
23+ }
24+
25 #define STRMACRO(X) {#X, X}
26 struct {std::string name; EGLint val;} egl_string_mapping [] =
27 {
28
29=== modified file 'tests/unit-tests/logging/test_display_report.cpp'
30--- tests/unit-tests/logging/test_display_report.cpp 2017-01-18 02:29:37 +0000
31+++ tests/unit-tests/logging/test_display_report.cpp 2017-04-05 12:16:38 +0000
32@@ -28,6 +28,7 @@
33 namespace ml = mir::logging;
34 namespace mrl = mir::report::logging;
35 namespace mtd = mir::test::doubles;
36+using namespace testing;
37
38 namespace
39 {
40@@ -41,7 +42,9 @@
41 struct DisplayReport : public testing::Test
42 {
43 std::shared_ptr<MockLogger> logger{std::make_shared<MockLogger>()};
44- mtd::MockEGL mock_egl;
45+ testing::NiceMock<mtd::MockEGL> mock_egl;
46+ EGLDisplay disp = reinterpret_cast<EGLDisplay>(9);
47+ EGLConfig config = reinterpret_cast<EGLConfig>(8);
48 };
49
50 char const* const component = "graphics";
51@@ -95,18 +98,22 @@
52
53 TEST_F(DisplayReport, eglconfig)
54 {
55- using namespace testing;
56- EGLDisplay disp = reinterpret_cast<EGLDisplay>(9);
57- EGLConfig config = reinterpret_cast<EGLConfig>(8);
58 int dummy_value = 7;
59+ auto ext_str = "EGL_EXT_imaginary";
60+ auto client_ext_str = "EGL_EXT_oil_platform";
61+
62+ EXPECT_CALL(mock_egl, eglQueryString(disp, EGL_EXTENSIONS)).WillOnce(Return(ext_str));
63+ EXPECT_CALL(mock_egl, eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)).WillOnce(Return(client_ext_str));
64 EXPECT_CALL(mock_egl, eglGetConfigAttrib(disp, config,_,_))
65 .Times(AnyNumber())
66 .WillRepeatedly(DoAll(SetArgPointee<3>(dummy_value),Return(EGL_TRUE)));
67
68 EXPECT_CALL(*logger, log(
69- ml::Severity::informational,
70- "Display EGL Configuration:",
71- component));
72+ ml::Severity::informational, "Display EGL Extensions: " + std::string{ext_str}, component));
73+ EXPECT_CALL(*logger, log(
74+ ml::Severity::informational, "EGL_EXT_client_extensions: " + std::string{client_ext_str}, component));
75+ EXPECT_CALL(*logger, log(
76+ ml::Severity::informational, "Display EGL Configuration:", component));
77 for(auto &i : egl_string_mapping)
78 {
79 EXPECT_CALL(*logger, log(
80@@ -119,9 +126,17 @@
81 report.report_egl_configuration(disp, config);
82 }
83
84+TEST_F(DisplayReport, eglconfig_clears_eglerror_when_there_are_no_extensions)
85+{
86+ EXPECT_CALL(mock_egl, eglQueryString(disp, EGL_EXTENSIONS)).WillOnce(Return(nullptr));
87+ EXPECT_CALL(mock_egl, eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)).WillOnce(Return(nullptr));
88+ EXPECT_CALL(mock_egl, eglGetError());
89+ mrl::DisplayReport report(logger);
90+ report.report_egl_configuration(disp, config);
91+}
92+
93 TEST_F(DisplayReport, reports_vsync)
94 {
95- using namespace testing;
96 std::chrono::nanoseconds const nanos_per_frame{16666666};
97 std::string const interval_str{"interval 16.666ms"};
98 unsigned int display1_id {1223};
99@@ -149,7 +164,6 @@
100
101 TEST_F(DisplayReport, reports_vsync_steady_interval_despite_missed_frames)
102 {
103- using namespace testing;
104 int const hz = 60;
105 std::string const interval_str{"interval 16.666ms (60.00Hz)"};
106 unsigned const id{123};

Subscribers

People subscribed via source and target branches