Mir

Merge lp:~vanvugt/mir/resize-client-buffers into lp:mir

Proposed by Daniel van Vugt
Status: Merged
Merged at revision: 1221
Proposed branch: lp:~vanvugt/mir/resize-client-buffers
Merge into: lp:mir
Prerequisite: lp:~vanvugt/mir/resize-protocol
Diff against target: 151 lines (+50/-7)
6 files modified
src/client/android/android_client_buffer_factory.cpp (+7/-1)
src/client/gbm/gbm_client_buffer_factory.cpp (+6/-1)
tests/integration-tests/client/test_client_render.cpp (+9/-0)
tests/unit-tests/client/gbm/test_gbm_client_buffer.cpp (+21/-0)
tests/unit-tests/client/test_android_client_buffer_factory.cpp (+5/-5)
tests/unit-tests/client/test_client_mir_surface.cpp (+2/-0)
To merge this branch: bzr merge lp:~vanvugt/mir/resize-client-buffers
Reviewer Review Type Date Requested Status
Kevin DuBois (community) Approve
Alan Griffiths Approve
Review via email: mp+194825@code.launchpad.net

Commit message

Add resize support to *ClientBuffer classes. Now always get dimensions from
the latest buffer package.

Description of the change

There are some comments about some "size" parameters now being unused. They will be eliminated in later proposals.

To post a comment you must log in.
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

I'd like to see the unused parameters gone, but OK as an intermediate step.

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

good improvement after the resize protocol changes

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

The unused "size" parameters... I started removing and found the resulting diff from that cleanup work to be much bigger that this proposal. And it's only this one that contains the useful functionality change.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/client/android/android_client_buffer_factory.cpp'
--- src/client/android/android_client_buffer_factory.cpp 2013-06-21 21:36:56 +0000
+++ src/client/android/android_client_buffer_factory.cpp 2013-11-13 10:28:01 +0000
@@ -31,6 +31,12 @@
3131
32std::shared_ptr<mcl::ClientBuffer> mcla::AndroidClientBufferFactory::create_buffer(std::shared_ptr<MirBufferPackage> const& package, geom::Size size, geom::PixelFormat pf)32std::shared_ptr<mcl::ClientBuffer> mcla::AndroidClientBufferFactory::create_buffer(std::shared_ptr<MirBufferPackage> const& package, geom::Size size, geom::PixelFormat pf)
33{33{
34 (void)size; // TODO: remove this unused parameter
34 auto handle = registrar->register_buffer(package);35 auto handle = registrar->register_buffer(package);
35 return std::make_shared<mcla::AndroidClientBuffer>(registrar, handle, size, pf, geom::Stride{package->stride});36 return std::make_shared<mcla::AndroidClientBuffer>(
37 registrar,
38 handle,
39 geometry::Size{package->width, package->height},
40 pf,
41 geometry::Stride{package->stride});
36}42}
3743
=== modified file 'src/client/gbm/gbm_client_buffer_factory.cpp'
--- src/client/gbm/gbm_client_buffer_factory.cpp 2013-04-24 05:22:20 +0000
+++ src/client/gbm/gbm_client_buffer_factory.cpp 2013-11-13 10:28:01 +0000
@@ -31,5 +31,10 @@
3131
32std::shared_ptr<mcl::ClientBuffer> mclg::GBMClientBufferFactory::create_buffer(std::shared_ptr<MirBufferPackage> const& package, geometry::Size size, geometry::PixelFormat pf)32std::shared_ptr<mcl::ClientBuffer> mclg::GBMClientBufferFactory::create_buffer(std::shared_ptr<MirBufferPackage> const& package, geometry::Size size, geometry::PixelFormat pf)
33{33{
34 return std::make_shared<mclg::GBMClientBuffer>(drm_fd_handler, package, size, pf);34 (void)size; // TODO: remove this unused parameter
35 return std::make_shared<mclg::GBMClientBuffer>(
36 drm_fd_handler,
37 package,
38 geometry::Size{package->width, package->height},
39 pf);
35}40}
3641
=== modified file 'tests/integration-tests/client/test_client_render.cpp'
--- tests/integration-tests/client/test_client_render.cpp 2013-11-11 19:08:47 +0000
+++ tests/integration-tests/client/test_client_render.cpp 2013-11-13 10:28:01 +0000
@@ -213,6 +213,10 @@
213 //note about the stride. Mir protocol sends stride in bytes, android uses stride in pixels213 //note about the stride. Mir protocol sends stride in bytes, android uses stride in pixels
214 response->mutable_buffer()->set_stride(client_buffer->stride().as_uint32_t());214 response->mutable_buffer()->set_stride(client_buffer->stride().as_uint32_t());
215215
216 auto const& size = client_buffer->size();
217 response->mutable_buffer()->set_width(size.width.as_int());
218 response->mutable_buffer()->set_height(size.height.as_int());
219
216 response->mutable_buffer()->set_fds_on_side_channel(1);220 response->mutable_buffer()->set_fds_on_side_channel(1);
217 native_handle_t const* native_handle = buf->handle();221 native_handle_t const* native_handle = buf->handle();
218 for(auto i=0; i<native_handle->numFds; i++)222 for(auto i=0; i<native_handle->numFds; i++)
@@ -242,6 +246,11 @@
242 response->set_fds_on_side_channel(1);246 response->set_fds_on_side_channel(1);
243 native_handle_t const* native_handle = buf->handle();247 native_handle_t const* native_handle = buf->handle();
244 response->set_stride(client_buffer->stride().as_uint32_t());248 response->set_stride(client_buffer->stride().as_uint32_t());
249
250 auto const& size = client_buffer->size();
251 response->set_width(size.width.as_int());
252 response->set_height(size.height.as_int());
253
245 for(auto i=0; i<native_handle->numFds; i++)254 for(auto i=0; i<native_handle->numFds; i++)
246 response->add_fd(native_handle->data[i]);255 response->add_fd(native_handle->data[i]);
247 for(auto i=0; i<native_handle->numInts; i++)256 for(auto i=0; i<native_handle->numInts; i++)
248257
=== modified file 'tests/unit-tests/client/gbm/test_gbm_client_buffer.cpp'
--- tests/unit-tests/client/gbm/test_gbm_client_buffer.cpp 2013-05-02 20:57:20 +0000
+++ tests/unit-tests/client/gbm/test_gbm_client_buffer.cpp 2013-11-13 10:28:01 +0000
@@ -18,6 +18,7 @@
1818
19#include "mir_toolkit/mir_client_library.h"19#include "mir_toolkit/mir_client_library.h"
20#include "src/client/gbm/gbm_client_buffer.h"20#include "src/client/gbm/gbm_client_buffer.h"
21#include "src/client/gbm/gbm_client_buffer_factory.h"
21#include "mock_drm_fd_handler.h"22#include "mock_drm_fd_handler.h"
2223
23#include <xf86drm.h>24#include <xf86drm.h>
@@ -42,6 +43,9 @@
4243
43 package = std::make_shared<MirBufferPackage>();44 package = std::make_shared<MirBufferPackage>();
44 package->stride = stride.as_uint32_t();45 package->stride = stride.as_uint32_t();
46 package->width = width.as_int();
47 package->height = height.as_int();
48
45 package_copy = std::make_shared<MirBufferPackage>(*package.get());49 package_copy = std::make_shared<MirBufferPackage>(*package.get());
46 }50 }
47 geom::Width width;51 geom::Width width;
@@ -212,3 +216,20 @@
212216
213 mclg::GBMClientBuffer buffer(drm_fd_handler, package, size, pf);217 mclg::GBMClientBuffer buffer(drm_fd_handler, package, size, pf);
214}218}
219
220TEST_F(MirGBMBufferTest, factory_gets_size_from_package)
221{
222 using namespace testing;
223
224 mclg::GBMClientBufferFactory factory(drm_fd_handler);
225
226 geom::Size unused_size{0, 0};
227 auto buffer = factory.create_buffer(package, unused_size, pf);
228
229 auto const& buf_size = buffer->size();
230 EXPECT_EQ(package->width, buf_size.width.as_int());
231 EXPECT_EQ(package->height, buf_size.height.as_int());
232
233 EXPECT_NE(unused_size, buf_size);
234}
235
215236
=== modified file 'tests/unit-tests/client/test_android_client_buffer_factory.cpp'
--- tests/unit-tests/client/test_android_client_buffer_factory.cpp 2013-04-24 05:22:20 +0000
+++ tests/unit-tests/client/test_android_client_buffer_factory.cpp 2013-11-13 10:28:01 +0000
@@ -39,9 +39,10 @@
39 pf = geom::PixelFormat::abgr_8888;39 pf = geom::PixelFormat::abgr_8888;
4040
41 mock_registrar = std::make_shared<mtd::MockAndroidRegistrar>();41 mock_registrar = std::make_shared<mtd::MockAndroidRegistrar>();
42
42 package1 = std::make_shared<MirBufferPackage>();43 package1 = std::make_shared<MirBufferPackage>();
43 package2 = std::make_shared<MirBufferPackage>();44 package1->width = width.as_int();
4445 package1->height = height.as_int();
45 }46 }
46 geom::Width width;47 geom::Width width;
47 geom::Height height;48 geom::Height height;
@@ -51,7 +52,6 @@
51 std::shared_ptr<mtd::MockAndroidRegistrar> mock_registrar;52 std::shared_ptr<mtd::MockAndroidRegistrar> mock_registrar;
5253
53 std::shared_ptr<MirBufferPackage> package1;54 std::shared_ptr<MirBufferPackage> package1;
54 std::shared_ptr<MirBufferPackage> package2;
5555
56};56};
5757
@@ -68,7 +68,7 @@
6868
69 auto buffer = buffer_factory.create_buffer(package1, size, pf);69 auto buffer = buffer_factory.create_buffer(package1, size, pf);
7070
71 EXPECT_EQ(buffer->size().height, height);71 EXPECT_EQ(package1->width, buffer->size().width.as_int());
72 EXPECT_EQ(buffer->size().width, width);72 EXPECT_EQ(package1->height, buffer->size().height.as_int());
73 EXPECT_EQ(buffer->pixel_format(), pf);73 EXPECT_EQ(buffer->pixel_format(), pf);
74}74}
7575
=== modified file 'tests/unit-tests/client/test_client_mir_surface.cpp'
--- tests/unit-tests/client/test_client_mir_surface.cpp 2013-10-24 14:22:27 +0000
+++ tests/unit-tests/client/test_client_mir_surface.cpp 2013-11-13 10:28:01 +0000
@@ -148,6 +148,8 @@
148 }148 }
149149
150 response->set_stride(server_package.stride);150 response->set_stride(server_package.stride);
151 response->set_width(server_package.width);
152 response->set_height(server_package.height);
151 }153 }
152154
153 void create_surface_response(mir::protobuf::Surface* response)155 void create_surface_response(mir::protobuf::Surface* response)

Subscribers

People subscribed via source and target branches