Mir

Merge lp:~alan-griffiths/mir/fix-1696974 into lp:mir

Proposed by Alan Griffiths
Status: Merged
Merged at revision: 4195
Proposed branch: lp:~alan-griffiths/mir/fix-1696974
Merge into: lp:mir
Prerequisite: lp:~alan-griffiths/mir/remove-guest-platforms
Diff against target: 204 lines (+69/-3)
12 files modified
include/client/mir_toolkit/mir_connection.h (+13/-0)
src/client/mir_connection.cpp (+13/-0)
src/client/mir_connection.h (+4/-0)
src/client/mir_connection_api.cpp (+15/-0)
src/client/symbols.map (+1/-0)
src/platforms/mesa/server/kms/platform_symbols.cpp (+1/-1)
src/server/graphics/nested/host_connection.h (+1/-1)
src/server/graphics/nested/mir_client_host_connection.cpp (+15/-0)
src/server/graphics/nested/mir_client_host_connection.h (+1/-0)
src/server/graphics/nested/platform.cpp (+1/-1)
tests/include/mir/test/doubles/stub_host_connection.h (+2/-0)
tests/unit-tests/platforms/nested/test_nested_display.cpp (+2/-0)
To merge this branch: bzr merge lp:~alan-griffiths/mir/fix-1696974
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Approve
Alberto Aguirre (community) Approve
Review via email: mp+325392@code.launchpad.net

Commit message

Enable nested platforms to pass through extensions. This enables EGL when Mir is nested on Mir-on-X (LP: #1696974)

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

PASSED: Continuous integration, rev:4194
https://mir-jenkins.ubuntu.com/job/mir-ci/3452/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4708
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4847
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/4837
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/4837
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4837
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4745
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4745/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4745
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4745/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4745
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4745/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4745
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4745/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4745
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4745/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4745
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4745/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/4745
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4745/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4745
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4745/artifact/output/*zip*/output.zip

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

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

PASSED: Continuous integration, rev:4195
https://mir-jenkins.ubuntu.com/job/mir-ci/3453/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4709
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4848
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/4838
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/4838
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4838
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4746
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4746/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4746
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4746/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4746
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4746/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4746
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4746/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4746
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4746/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4746
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4746/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/4746
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4746/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4746
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4746/artifact/output/*zip*/output.zip

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

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

LGTM.

Works on my intel haswell laptop (with intel graphics) on top of Unity7.

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

PASSED: Continuous integration, rev:4196
https://mir-jenkins.ubuntu.com/job/mir-ci/3455/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4711
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4850
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/4840
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/4840
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4840
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4748
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4748/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4748
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4748/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4748
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4748/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4748
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4748/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4748
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4748/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4748
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4748/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/4748
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4748/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4748
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4748/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'include/client/mir_toolkit/mir_connection.h'
--- include/client/mir_toolkit/mir_connection.h 2017-05-25 08:58:03 +0000
+++ include/client/mir_toolkit/mir_connection.h 2017-06-09 16:26:42 +0000
@@ -487,6 +487,19 @@
487 */487 */
488unsigned mir_get_client_api_version();488unsigned mir_get_client_api_version();
489489
490/**
491 * Enumerates the supported extensions
492 *
493 * \param [in] connection The connection
494 * \param [out] context User data passed to the enumerator function
495 * \param [in] enumerator The function to be called for each extension
496 *
497 */
498void mir_connection_enumerate_extensions(
499 MirConnection* connection,
500 void* context,
501 void (*enumerator)(void* context, char const* extension, int version));
502
490#ifdef __cplusplus503#ifdef __cplusplus
491}504}
492/**@}*/505/**@}*/
493506
=== modified file 'src/client/mir_connection.cpp'
--- src/client/mir_connection.cpp 2017-05-25 06:28:52 +0000
+++ src/client/mir_connection.cpp 2017-06-09 16:26:42 +0000
@@ -1503,3 +1503,16 @@
1503 store_error_result->result.get(),1503 store_error_result->result.get(),
1504 gp::NewCallback(&handle_structured_error, store_error_result));1504 gp::NewCallback(&handle_structured_error, store_error_result));
1505}1505}
1506
1507void MirConnection::enumerate_extensions(
1508 void* context,
1509 void (*enumerator)(void* context, char const* extension, int version))
1510{
1511 for(auto const& extension : extensions)
1512 {
1513 for(auto const version : extension.version)
1514 {
1515 enumerator(context, extension.name.c_str(), version);
1516 }
1517 }
1518}
15061519
=== modified file 'src/client/mir_connection.h'
--- src/client/mir_connection.h 2017-05-17 04:48:46 +0000
+++ src/client/mir_connection.h 2017-06-09 16:26:42 +0000
@@ -226,6 +226,10 @@
226226
227 void* request_interface(char const* name, int version);227 void* request_interface(char const* name, int version);
228228
229 void enumerate_extensions(
230 void* context,
231 void (*enumerator)(void* context, char const* extension, int version));
232
229private:233private:
230 //google cant have callbacks with more than 2 args234 //google cant have callbacks with more than 2 args
231 struct SurfaceCreationRequest235 struct SurfaceCreationRequest
232236
=== modified file 'src/client/mir_connection_api.cpp'
--- src/client/mir_connection_api.cpp 2017-05-08 03:04:26 +0000
+++ src/client/mir_connection_api.cpp 2017-06-09 16:26:42 +0000
@@ -438,3 +438,18 @@
438{438{
439 MIR_LOG_UNCAUGHT_EXCEPTION(ex);439 MIR_LOG_UNCAUGHT_EXCEPTION(ex);
440}440}
441
442void mir_connection_enumerate_extensions(
443 MirConnection* connection,
444 void* context,
445 void (*enumerator)(void* context, char const* extension, int version))
446try
447{
448 mir::require(mir_connection_is_valid(connection));
449 connection->enumerate_extensions(context, enumerator);
450}
451catch (std::exception const& ex)
452{
453 MIR_LOG_UNCAUGHT_EXCEPTION(ex);
454}
455
441456
=== modified file 'src/client/symbols.map'
--- src/client/symbols.map 2017-06-06 19:54:54 +0000
+++ src/client/symbols.map 2017-06-09 16:26:42 +0000
@@ -583,6 +583,7 @@
583 global:583 global:
584 mir_buffer_stream_get_microseconds_till_vblank;584 mir_buffer_stream_get_microseconds_till_vblank;
585 mir_connection_apply_session_input_config;585 mir_connection_apply_session_input_config;
586 mir_connection_enumerate_extensions;
586 mir_connection_set_base_input_config;587 mir_connection_set_base_input_config;
587 mir_screencast_capture_to_buffer;588 mir_screencast_capture_to_buffer;
588 mir_screencast_capture_to_buffer_sync;589 mir_screencast_capture_to_buffer_sync;
589590
=== modified file 'src/platforms/mesa/server/kms/platform_symbols.cpp'
--- src/platforms/mesa/server/kms/platform_symbols.cpp 2017-06-09 16:26:42 +0000
+++ src/platforms/mesa/server/kms/platform_symbols.cpp 2017-06-09 16:26:42 +0000
@@ -275,7 +275,7 @@
275 mir::assert_entry_point_signature<mg::CreateRenderingPlatform>(&create_rendering_platform);275 mir::assert_entry_point_signature<mg::CreateRenderingPlatform>(&create_rendering_platform);
276276
277 auto bypass_option = mgm::BypassOption::allowed;277 auto bypass_option = mgm::BypassOption::allowed;
278 if (!options->get<bool>(bypass_option_name))278 if (options->is_set(bypass_option_name) && !options->get<bool>(bypass_option_name))
279 bypass_option = mgm::BypassOption::prohibited;279 bypass_option = mgm::BypassOption::prohibited;
280 return mir::make_module_ptr<mgm::GBMPlatform>(280 return mir::make_module_ptr<mgm::GBMPlatform>(
281 bypass_option, mgm::BufferImportMethod::gbm_native_pixmap, platform_authentication);281 bypass_option, mgm::BufferImportMethod::gbm_native_pixmap, platform_authentication);
282282
=== modified file 'src/server/graphics/nested/host_connection.h'
--- src/server/graphics/nested/host_connection.h 2017-05-08 03:04:26 +0000
+++ src/server/graphics/nested/host_connection.h 2017-06-09 16:26:42 +0000
@@ -82,7 +82,7 @@
82 virtual std::shared_ptr<NativeBuffer> create_buffer(geometry::Size, uint32_t format, uint32_t flags) = 0;82 virtual std::shared_ptr<NativeBuffer> create_buffer(geometry::Size, uint32_t format, uint32_t flags) = 0;
83 virtual bool supports_passthrough(graphics::BufferUsage) = 0;83 virtual bool supports_passthrough(graphics::BufferUsage) = 0;
84 virtual void apply_input_configuration(MirInputConfig const* config) = 0;84 virtual void apply_input_configuration(MirInputConfig const* config) = 0;
8585 virtual std::vector<ExtensionDescription> extensions() const = 0;
86protected:86protected:
87 HostConnection() = default;87 HostConnection() = default;
88 HostConnection(HostConnection const&) = delete;88 HostConnection(HostConnection const&) = delete;
8989
=== modified file 'src/server/graphics/nested/mir_client_host_connection.cpp'
--- src/server/graphics/nested/mir_client_host_connection.cpp 2017-05-25 04:36:14 +0000
+++ src/server/graphics/nested/mir_client_host_connection.cpp 2017-06-09 16:26:42 +0000
@@ -709,6 +709,21 @@
709 mir_connection_apply_session_input_config(mir_connection, config);709 mir_connection_apply_session_input_config(mir_connection, config);
710}710}
711711
712std::vector<mir::ExtensionDescription> mgn::MirClientHostConnection::extensions() const
713{
714 std::vector<ExtensionDescription> result;
715
716 auto enumerator = [](void* context, char const* extension, int version)
717 {
718 auto result = static_cast<std::vector<ExtensionDescription>*>(context);
719 result->push_back(ExtensionDescription{extension, {version}});
720 };
721
722 mir_connection_enumerate_extensions(mir_connection, &result, enumerator);
723
724 return result;
725}
726
712namespace727namespace
713{728{
714template<typename T>729template<typename T>
715730
=== modified file 'src/server/graphics/nested/mir_client_host_connection.h'
--- src/server/graphics/nested/mir_client_host_connection.h 2017-05-08 03:04:26 +0000
+++ src/server/graphics/nested/mir_client_host_connection.h 2017-06-09 16:26:42 +0000
@@ -90,6 +90,7 @@
90 std::shared_ptr<NativeBuffer> create_buffer(geometry::Size, uint32_t format, uint32_t flags) override;90 std::shared_ptr<NativeBuffer> create_buffer(geometry::Size, uint32_t format, uint32_t flags) override;
91 bool supports_passthrough(BufferUsage usage) override;91 bool supports_passthrough(BufferUsage usage) override;
92 void apply_input_configuration(MirInputConfig const* config) override;92 void apply_input_configuration(MirInputConfig const* config) override;
93 std::vector<ExtensionDescription> extensions() const override;
9394
94 optional_value<std::shared_ptr<MesaAuthExtension>> auth_extension() override;95 optional_value<std::shared_ptr<MesaAuthExtension>> auth_extension() override;
95 optional_value<std::shared_ptr<SetGbmExtension>> set_gbm_extension() override;96 optional_value<std::shared_ptr<SetGbmExtension>> set_gbm_extension() override;
9697
=== modified file 'src/server/graphics/nested/platform.cpp'
--- src/server/graphics/nested/platform.cpp 2017-05-31 17:56:19 +0000
+++ src/server/graphics/nested/platform.cpp 2017-06-09 16:26:42 +0000
@@ -175,7 +175,7 @@
175175
176std::vector<mir::ExtensionDescription> mgn::NestedDisplayPlatform::extensions() const176std::vector<mir::ExtensionDescription> mgn::NestedDisplayPlatform::extensions() const
177{177{
178 return {}; // TODO can we support extensions transitively?178 return connection->extensions();
179}179}
180180
181mir::UniqueModulePtr<mg::PlatformAuthentication> mgn::NestedDisplayPlatform::create_platform_authentication()181mir::UniqueModulePtr<mg::PlatformAuthentication> mgn::NestedDisplayPlatform::create_platform_authentication()
182182
=== modified file 'tests/include/mir/test/doubles/stub_host_connection.h'
--- tests/include/mir/test/doubles/stub_host_connection.h 2017-05-08 03:04:26 +0000
+++ tests/include/mir/test/doubles/stub_host_connection.h 2017-06-09 16:26:42 +0000
@@ -197,6 +197,7 @@
197 return {};197 return {};
198 }198 }
199 void* request_interface(char const*, int) { return nullptr; }199 void* request_interface(char const*, int) { return nullptr; }
200 std::vector<mir::ExtensionDescription> extensions() const { return {}; }
200};201};
201202
202struct MockHostConnection : StubHostConnection203struct MockHostConnection : StubHostConnection
@@ -216,6 +217,7 @@
216 if (event_callback)217 if (event_callback)
217 event_callback(event, source_frame);218 event_callback(event, source_frame);
218 }219 }
220 std::vector<ExtensionDescription> extensions() const { return {}; }
219221
220 MockHostConnection()222 MockHostConnection()
221 {223 {
222224
=== modified file 'tests/unit-tests/platforms/nested/test_nested_display.cpp'
--- tests/unit-tests/platforms/nested/test_nested_display.cpp 2017-05-31 17:56:19 +0000
+++ tests/unit-tests/platforms/nested/test_nested_display.cpp 2017-06-09 16:26:42 +0000
@@ -52,6 +52,8 @@
52 {52 {
53 return mt::build_trivial_configuration();53 return mt::build_trivial_configuration();
54 }54 }
55
56 std::vector<mir::ExtensionDescription> extensions() const { return {}; }
55};57};
5658
57class MockApplyDisplayConfigHostConnection : public SingleDisplayHostConnection59class MockApplyDisplayConfigHostConnection : public SingleDisplayHostConnection

Subscribers

People subscribed via source and target branches