Mir

Merge lp:~cemil-azizoglu/mir/fix-lp1589632 into lp:mir

Proposed by Cemil Azizoglu
Status: Merged
Approved by: Cemil Azizoglu
Approved revision: no longer in the source branch.
Merged at revision: 3541
Proposed branch: lp:~cemil-azizoglu/mir/fix-lp1589632
Merge into: lp:mir
Diff against target: 171 lines (+56/-10)
4 files modified
src/platforms/mesa/server/x11/graphics/display.cpp (+12/-5)
src/platforms/mesa/server/x11/graphics/display.h (+11/-2)
src/platforms/mesa/server/x11/graphics/platform.cpp (+2/-2)
tests/unit-tests/graphics/mesa/x11/test_display.cpp (+31/-1)
To merge this branch: bzr merge lp:~cemil-azizoglu/mir/fix-lp1589632
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Approve
Kevin DuBois (community) Approve
Review via email: mp+296877@code.launchpad.net

Commit message

Read depth and Stencil values from the GLConfig as in other platforms

Fixes lp#1589632

Description of the change

Read depth and Stencil values from the GLConfig as in other platforms

Fixes lp#1589632

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

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

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

review: Approve (continuous-integration)
Revision history for this message
Kevin DuBois (kdub) wrote :

Should we have a unit test?

+ std::shared_ptr<GLConfig> const& gl_config)
could just be a reference, we don't seem to take the shared_ptr.

94 +
unneeded addition?

review: Needs Fixing
Revision history for this message
Cemil Azizoglu (cemil-azizoglu) wrote :

> Should we have a unit test?
>
Fixed.

> + std::shared_ptr<GLConfig> const& gl_config)
> could just be a reference, we don't seem to take the shared_ptr.
Fixed.

>
> 94 +
> unneeded addition?

This is to match the blank line at the top of the class declaration.

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

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

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

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

> > 94 +
> > unneeded addition?
>
> This is to match the blank line at the top of the class declaration.

Is this explanation a thinko? The line is added at the end of the X namespace, not the end of any class. (I don't see a need for it in either case.)

Revision history for this message
Kevin DuBois (kdub) wrote :

Still don't think the line is necessary, but primary topics addressed, so lgtm

review: Approve
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/315/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/1287/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/341/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/1337
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/1328
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/1328
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/1297
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/1297/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/1297/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/1297
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/1297/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/1297
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/1297/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/1297
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/1297/artifact/output/*zip*/output.zip

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

Failure appears unrelated. Filed lp:1591354

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 'src/platforms/mesa/server/x11/graphics/display.cpp'
--- src/platforms/mesa/server/x11/graphics/display.cpp 2016-06-02 05:33:50 +0000
+++ src/platforms/mesa/server/x11/graphics/display.cpp 2016-06-09 14:11:22 +0000
@@ -21,6 +21,7 @@
21#include "mir/graphics/egl_resources.h"21#include "mir/graphics/egl_resources.h"
22#include "mir/graphics/egl_error.h"22#include "mir/graphics/egl_error.h"
23#include "mir/graphics/virtual_output.h"23#include "mir/graphics/virtual_output.h"
24#include "mir/graphics/gl_config.h"
24#include "display_configuration.h"25#include "display_configuration.h"
25#include "display.h"26#include "display.h"
26#include "display_buffer.h"27#include "display_buffer.h"
@@ -60,7 +61,10 @@
60 return egl_dpy;61 return egl_dpy;
61}62}
6263
63mgx::X11Window::X11Window(::Display* x_dpy, EGLDisplay egl_dpy, geom::Size const size)64mgx::X11Window::X11Window(::Display* x_dpy,
65 EGLDisplay egl_dpy,
66 geom::Size const size,
67 GLConfig const& gl_config)
64 : x_dpy{x_dpy}68 : x_dpy{x_dpy}
65{69{
66 EGLint const att[] = {70 EGLint const att[] = {
@@ -69,8 +73,8 @@
69 EGL_GREEN_SIZE, 8,73 EGL_GREEN_SIZE, 8,
70 EGL_BLUE_SIZE, 8,74 EGL_BLUE_SIZE, 8,
71 EGL_ALPHA_SIZE, 8,75 EGL_ALPHA_SIZE, 8,
72 EGL_DEPTH_SIZE, 0,76 EGL_DEPTH_SIZE, gl_config.depth_buffer_bits(),
73 EGL_STENCIL_SIZE, 0,77 EGL_STENCIL_SIZE, gl_config.stencil_buffer_bits(),
74 EGL_RENDERABLE_TYPE, MIR_SERVER_EGL_OPENGL_BIT,78 EGL_RENDERABLE_TYPE, MIR_SERVER_EGL_OPENGL_BIT,
75 EGL_NONE79 EGL_NONE
76 };80 };
@@ -242,12 +246,15 @@
242 return egl_surf;246 return egl_surf;
243}247}
244248
245mgx::Display::Display(::Display* x_dpy, geom::Size const size)249mgx::Display::Display(::Display* x_dpy,
250 geom::Size const size,
251 GLConfig const& gl_config)
246 : egl_display{X11EGLDisplay(x_dpy)},252 : egl_display{X11EGLDisplay(x_dpy)},
247 size{size},253 size{size},
248 win{X11Window(x_dpy,254 win{X11Window(x_dpy,
249 egl_display,255 egl_display,
250 size)},256 size,
257 gl_config)},
251 egl_context{X11EGLContext(egl_display,258 egl_context{X11EGLContext(egl_display,
252 win.egl_config())},259 win.egl_config())},
253 egl_surface{X11EGLSurface(egl_display,260 egl_surface{X11EGLSurface(egl_display,
254261
=== modified file 'src/platforms/mesa/server/x11/graphics/display.h'
--- src/platforms/mesa/server/x11/graphics/display.h 2016-04-22 02:39:57 +0000
+++ src/platforms/mesa/server/x11/graphics/display.h 2016-06-09 14:11:22 +0000
@@ -32,6 +32,9 @@
32{32{
33namespace graphics33namespace graphics
34{34{
35
36class GLConfig;
37
35namespace X38namespace X
36{39{
3740
@@ -50,7 +53,10 @@
50class X11Window53class X11Window
51{54{
52public:55public:
53 X11Window(::Display* const x_dpy, EGLDisplay egl_dpy, mir::geometry::Size const size);56 X11Window(::Display* const x_dpy,
57 EGLDisplay egl_dpy,
58 geometry::Size const size,
59 GLConfig const& gl_config);
54 ~X11Window();60 ~X11Window();
5561
56 operator Window() const;62 operator Window() const;
@@ -93,7 +99,9 @@
93class Display : public graphics::Display99class Display : public graphics::Display
94{100{
95public:101public:
96 explicit Display(::Display* x_dpy, mir::geometry::Size const size);102 explicit Display(::Display* x_dpy,
103 geometry::Size const size,
104 GLConfig const& gl_config);
97 ~Display() noexcept;105 ~Display() noexcept;
98106
99 void for_each_display_sync_group(std::function<void(graphics::DisplaySyncGroup&)> const& f) override;107 void for_each_display_sync_group(std::function<void(graphics::DisplaySyncGroup&)> const& f) override;
@@ -129,6 +137,7 @@
129};137};
130138
131}139}
140
132}141}
133}142}
134#endif /* MIR_GRAPHICS_X_DISPLAY_H_ */143#endif /* MIR_GRAPHICS_X_DISPLAY_H_ */
135144
=== modified file 'src/platforms/mesa/server/x11/graphics/platform.cpp'
--- src/platforms/mesa/server/x11/graphics/platform.cpp 2016-01-29 08:18:22 +0000
+++ src/platforms/mesa/server/x11/graphics/platform.cpp 2016-06-09 14:11:22 +0000
@@ -46,9 +46,9 @@
4646
47mir::UniqueModulePtr<mg::Display> mgx::Platform::create_display(47mir::UniqueModulePtr<mg::Display> mgx::Platform::create_display(
48 std::shared_ptr<DisplayConfigurationPolicy> const& /*initial_conf_policy*/,48 std::shared_ptr<DisplayConfigurationPolicy> const& /*initial_conf_policy*/,
49 std::shared_ptr<GLConfig> const& /*gl_config*/)49 std::shared_ptr<GLConfig> const& gl_config)
50{50{
51 return make_module_ptr<mgx::Display>(x11_connection.get(), size);51 return make_module_ptr<mgx::Display>(x11_connection.get(), size, *gl_config);
52}52}
5353
54mir::UniqueModulePtr<mg::PlatformIpcOperations> mgx::Platform::make_ipc_operations() const54mir::UniqueModulePtr<mg::PlatformIpcOperations> mgx::Platform::make_ipc_operations() const
5555
=== modified file 'tests/unit-tests/graphics/mesa/x11/test_display.cpp'
--- tests/unit-tests/graphics/mesa/x11/test_display.cpp 2016-01-29 08:18:22 +0000
+++ tests/unit-tests/graphics/mesa/x11/test_display.cpp 2016-06-09 14:11:22 +0000
@@ -22,6 +22,7 @@
22#include "src/platforms/mesa/server/x11/graphics/display.h"22#include "src/platforms/mesa/server/x11/graphics/display.h"
23#include "mir/test/doubles/mock_egl.h"23#include "mir/test/doubles/mock_egl.h"
24#include "mir/test/doubles/mock_x11.h"24#include "mir/test/doubles/mock_x11.h"
25#include "mir/test/doubles/mock_gl_config.h"
2526
26namespace mg=mir::graphics;27namespace mg=mir::graphics;
27namespace mgx=mg::X;28namespace mgx=mg::X;
@@ -78,11 +79,15 @@
7879
79 std::shared_ptr<mgx::Display> create_display()80 std::shared_ptr<mgx::Display> create_display()
80 {81 {
81 return std::make_shared<mgx::Display>(mock_x11.fake_x11.display, size);82 return std::make_shared<mgx::Display>(
83 mock_x11.fake_x11.display,
84 size,
85 mock_gl_config);
82 }86 }
8387
84 ::testing::NiceMock<mtd::MockEGL> mock_egl;88 ::testing::NiceMock<mtd::MockEGL> mock_egl;
85 ::testing::NiceMock<mtd::MockX11> mock_x11;89 ::testing::NiceMock<mtd::MockX11> mock_x11;
90 mtd::MockGLConfig mock_gl_config;
86};91};
8792
88}93}
@@ -111,3 +116,28 @@
111116
112 auto display = create_display();117 auto display = create_display();
113}118}
119
120TEST_F(X11DisplayTest, respects_gl_config)
121{
122 using namespace testing;
123
124 EGLint const depth_bits{24};
125 EGLint const stencil_bits{8};
126
127 EXPECT_CALL(mock_gl_config, depth_buffer_bits())
128 .Times(AtLeast(1))
129 .WillRepeatedly(Return(depth_bits));
130 EXPECT_CALL(mock_gl_config, stencil_buffer_bits())
131 .Times(AtLeast(1))
132 .WillRepeatedly(Return(stencil_bits));
133
134 EXPECT_CALL(mock_egl,
135 eglChooseConfig(
136 _,
137 AllOf(mtd::EGLConfigContainsAttrib(EGL_DEPTH_SIZE, depth_bits),
138 mtd::EGLConfigContainsAttrib(EGL_STENCIL_SIZE, stencil_bits)),
139 _,_,_))
140 .Times(AtLeast(1));
141
142 auto display = create_display();
143}

Subscribers

People subscribed via source and target branches