blob: 1a20504c679aea1489a2b1a08a4f9bc28b07dfe3 [file] [log] [blame]
[email protected]4934d362012-11-22 22:04:531// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/common/cc_messages.h"
6
7#include <string.h>
8
[email protected]032bfc42013-10-29 22:23:529#include <algorithm>
10
[email protected]7f0d825f2013-03-18 07:24:3011#include "cc/output/compositor_frame.h"
[email protected]cecc8342014-03-20 21:43:3912#include "content/public/common/common_param_traits.h"
[email protected]4934d362012-11-22 22:04:5313#include "ipc/ipc_message.h"
14#include "testing/gtest/include/gtest/gtest.h"
[email protected]645a47f22013-09-26 05:42:3215#include "third_party/khronos/GLES2/gl2ext.h"
[email protected]a1765672013-08-12 23:45:0216#include "third_party/skia/include/effects/SkBlurImageFilter.h"
[email protected]4934d362012-11-22 22:04:5317
[email protected]cecc8342014-03-20 21:43:3918#if defined(OS_POSIX)
19#include "base/file_descriptor_posix.h"
20#endif
21
[email protected]bf189f62012-12-18 03:42:1122using cc::DelegatedFrameData;
[email protected]4934d362012-11-22 22:04:5323using cc::DebugBorderDrawQuad;
24using cc::DrawQuad;
[email protected]ae6b1a72013-06-25 18:49:2925using cc::FilterOperation;
26using cc::FilterOperations;
[email protected]4934d362012-11-22 22:04:5327using cc::IOSurfaceDrawQuad;
[email protected]9ee4d3a2013-03-27 17:43:1628using cc::PictureDrawQuad;
[email protected]4934d362012-11-22 22:04:5329using cc::RenderPass;
[email protected]0cd7d6f72014-08-22 14:50:5130using cc::RenderPassId;
[email protected]4934d362012-11-22 22:04:5331using cc::RenderPassDrawQuad;
jbaumanbbd425e2015-05-19 00:33:3532using cc::ResourceId;
[email protected]4934d362012-11-22 22:04:5333using cc::ResourceProvider;
34using cc::SharedQuadState;
[email protected]4934d362012-11-22 22:04:5335using cc::SolidColorDrawQuad;
[email protected]78d30122014-01-17 06:32:3636using cc::SurfaceDrawQuad;
[email protected]4934d362012-11-22 22:04:5337using cc::TextureDrawQuad;
38using cc::TileDrawQuad;
[email protected]bca159072012-12-04 00:52:4439using cc::TransferableResource;
[email protected]4934d362012-11-22 22:04:5340using cc::StreamVideoDrawQuad;
[email protected]4934d362012-11-22 22:04:5341using cc::YUVVideoDrawQuad;
[email protected]c8686a02012-11-27 08:29:0042using gfx::Transform;
[email protected]4934d362012-11-22 22:04:5343
[email protected]bca159072012-12-04 00:52:4444namespace content {
45namespace {
46
[email protected]4934d362012-11-22 22:04:5347class CCMessagesTest : public testing::Test {
48 protected:
49 void Compare(const RenderPass* a, const RenderPass* b) {
50 EXPECT_EQ(a->id, b->id);
51 EXPECT_EQ(a->output_rect.ToString(), b->output_rect.ToString());
52 EXPECT_EQ(a->damage_rect.ToString(), b->damage_rect.ToString());
53 EXPECT_EQ(a->transform_to_root_target, b->transform_to_root_target);
54 EXPECT_EQ(a->has_transparent_background, b->has_transparent_background);
jbauman0e05ec92015-07-31 20:12:4455 EXPECT_EQ(a->referenced_surfaces, b->referenced_surfaces);
[email protected]4934d362012-11-22 22:04:5356 }
57
58 void Compare(const SharedQuadState* a, const SharedQuadState* b) {
danakj64767d902015-06-19 00:10:4359 EXPECT_EQ(a->quad_to_target_transform, b->quad_to_target_transform);
60 EXPECT_EQ(a->quad_layer_bounds, b->quad_layer_bounds);
61 EXPECT_EQ(a->visible_quad_layer_rect, b->visible_quad_layer_rect);
[email protected]4934d362012-11-22 22:04:5362 EXPECT_EQ(a->clip_rect, b->clip_rect);
63 EXPECT_EQ(a->is_clipped, b->is_clipped);
64 EXPECT_EQ(a->opacity, b->opacity);
[email protected]7bbeaf4e2013-11-26 10:27:2265 EXPECT_EQ(a->blend_mode, b->blend_mode);
[email protected]a9d4d4f2014-06-19 06:49:2866 EXPECT_EQ(a->sorting_context_id, b->sorting_context_id);
[email protected]4934d362012-11-22 22:04:5367 }
68
69 void Compare(const DrawQuad* a, const DrawQuad* b) {
70 ASSERT_NE(DrawQuad::INVALID, a->material);
71 ASSERT_EQ(a->material, b->material);
72 EXPECT_EQ(a->rect.ToString(), b->rect.ToString());
73 EXPECT_EQ(a->opaque_rect.ToString(), b->opaque_rect.ToString());
74 EXPECT_EQ(a->visible_rect.ToString(), b->visible_rect.ToString());
75 EXPECT_EQ(a->needs_blending, b->needs_blending);
76
77 Compare(a->shared_quad_state, b->shared_quad_state);
78
79 switch (a->material) {
[email protected]4934d362012-11-22 22:04:5380 case DrawQuad::DEBUG_BORDER:
81 Compare(DebugBorderDrawQuad::MaterialCast(a),
82 DebugBorderDrawQuad::MaterialCast(b));
83 break;
84 case DrawQuad::IO_SURFACE_CONTENT:
85 Compare(IOSurfaceDrawQuad::MaterialCast(a),
86 IOSurfaceDrawQuad::MaterialCast(b));
87 break;
[email protected]9ee4d3a2013-03-27 17:43:1688 case DrawQuad::PICTURE_CONTENT:
89 Compare(PictureDrawQuad::MaterialCast(a),
90 PictureDrawQuad::MaterialCast(b));
91 break;
[email protected]4934d362012-11-22 22:04:5392 case DrawQuad::RENDER_PASS:
93 Compare(RenderPassDrawQuad::MaterialCast(a),
94 RenderPassDrawQuad::MaterialCast(b));
95 break;
96 case DrawQuad::TEXTURE_CONTENT:
97 Compare(TextureDrawQuad::MaterialCast(a),
98 TextureDrawQuad::MaterialCast(b));
99 break;
100 case DrawQuad::TILED_CONTENT:
101 Compare(TileDrawQuad::MaterialCast(a),
102 TileDrawQuad::MaterialCast(b));
103 break;
104 case DrawQuad::SOLID_COLOR:
105 Compare(SolidColorDrawQuad::MaterialCast(a),
106 SolidColorDrawQuad::MaterialCast(b));
107 break;
108 case DrawQuad::STREAM_VIDEO_CONTENT:
109 Compare(StreamVideoDrawQuad::MaterialCast(a),
110 StreamVideoDrawQuad::MaterialCast(b));
111 break;
[email protected]78d30122014-01-17 06:32:36112 case DrawQuad::SURFACE_CONTENT:
113 Compare(SurfaceDrawQuad::MaterialCast(a),
114 SurfaceDrawQuad::MaterialCast(b));
115 break;
[email protected]4934d362012-11-22 22:04:53116 case DrawQuad::YUV_VIDEO_CONTENT:
117 Compare(YUVVideoDrawQuad::MaterialCast(a),
118 YUVVideoDrawQuad::MaterialCast(b));
119 break;
120 case DrawQuad::INVALID:
121 break;
122 }
123 }
124
[email protected]4934d362012-11-22 22:04:53125 void Compare(const DebugBorderDrawQuad* a, const DebugBorderDrawQuad* b) {
126 EXPECT_EQ(a->color, b->color);
127 EXPECT_EQ(a->width, b->width);
128 }
129
130 void Compare(const IOSurfaceDrawQuad* a, const IOSurfaceDrawQuad* b) {
131 EXPECT_EQ(a->io_surface_size.ToString(), b->io_surface_size.ToString());
vmpstr0eca2e82015-06-02 22:14:46132 EXPECT_EQ(a->io_surface_resource_id(), b->io_surface_resource_id());
[email protected]4934d362012-11-22 22:04:53133 EXPECT_EQ(a->orientation, b->orientation);
134 }
135
136 void Compare(const RenderPassDrawQuad* a, const RenderPassDrawQuad* b) {
[email protected]82f93fb2013-04-17 21:42:06137 EXPECT_EQ(a->render_pass_id, b->render_pass_id);
vmpstr0eca2e82015-06-02 22:14:46138 EXPECT_EQ(a->mask_resource_id(), b->mask_resource_id());
ennef6f3fbba42014-10-16 18:16:49139 EXPECT_EQ(a->mask_uv_scale.ToString(), b->mask_uv_scale.ToString());
140 EXPECT_EQ(a->mask_texture_size.ToString(), b->mask_texture_size.ToString());
[email protected]1dc7943e2013-09-26 04:41:48141 EXPECT_EQ(a->filters.size(), b->filters.size());
142 for (size_t i = 0; i < a->filters.size(); ++i) {
143 if (a->filters.at(i).type() != cc::FilterOperation::REFERENCE) {
144 EXPECT_EQ(a->filters.at(i), b->filters.at(i));
145 } else {
146 EXPECT_EQ(b->filters.at(i).type(), cc::FilterOperation::REFERENCE);
147 EXPECT_EQ(a->filters.at(i).image_filter()->countInputs(),
148 b->filters.at(i).image_filter()->countInputs());
149 }
150 }
[email protected]7ac3d492014-08-08 21:25:32151 EXPECT_EQ(a->filters_scale, b->filters_scale);
[email protected]20062042012-12-21 22:16:36152 EXPECT_EQ(a->background_filters, b->background_filters);
[email protected]4934d362012-11-22 22:04:53153 }
154
155 void Compare(const SolidColorDrawQuad* a, const SolidColorDrawQuad* b) {
156 EXPECT_EQ(a->color, b->color);
[email protected]10a30b12013-05-02 16:42:11157 EXPECT_EQ(a->force_anti_aliasing_off, b->force_anti_aliasing_off);
[email protected]4934d362012-11-22 22:04:53158 }
159
160 void Compare(const StreamVideoDrawQuad* a, const StreamVideoDrawQuad* b) {
vmpstr0eca2e82015-06-02 22:14:46161 EXPECT_EQ(a->resource_id(), b->resource_id());
achaulkf89f5942015-06-10 17:01:35162 EXPECT_EQ(a->resource_size_in_pixels(), b->resource_size_in_pixels());
[email protected]4934d362012-11-22 22:04:53163 EXPECT_EQ(a->matrix, b->matrix);
164 }
165
[email protected]78d30122014-01-17 06:32:36166 void Compare(const SurfaceDrawQuad* a, const SurfaceDrawQuad* b) {
167 EXPECT_EQ(a->surface_id, b->surface_id);
168 }
169
[email protected]4934d362012-11-22 22:04:53170 void Compare(const TextureDrawQuad* a, const TextureDrawQuad* b) {
vmpstr0eca2e82015-06-02 22:14:46171 EXPECT_EQ(a->resource_id(), b->resource_id());
achaulkf89f5942015-06-10 17:01:35172 EXPECT_EQ(a->resource_size_in_pixels(), b->resource_size_in_pixels());
[email protected]4934d362012-11-22 22:04:53173 EXPECT_EQ(a->premultiplied_alpha, b->premultiplied_alpha);
[email protected]1fd555b2013-01-18 00:13:21174 EXPECT_EQ(a->uv_top_left, b->uv_top_left);
175 EXPECT_EQ(a->uv_bottom_right, b->uv_bottom_right);
[email protected]d18b4d62013-07-12 05:33:49176 EXPECT_EQ(a->background_color, b->background_color);
[email protected]61df9d82013-01-30 02:32:42177 EXPECT_EQ(a->vertex_opacity[0], b->vertex_opacity[0]);
178 EXPECT_EQ(a->vertex_opacity[1], b->vertex_opacity[1]);
179 EXPECT_EQ(a->vertex_opacity[2], b->vertex_opacity[2]);
180 EXPECT_EQ(a->vertex_opacity[3], b->vertex_opacity[3]);
halliwellaa111282015-05-13 21:58:43181 EXPECT_EQ(a->y_flipped, b->y_flipped);
jackhou10c9af42014-12-04 05:24:44182 EXPECT_EQ(a->nearest_neighbor, b->nearest_neighbor);
[email protected]4934d362012-11-22 22:04:53183 }
184
185 void Compare(const TileDrawQuad* a, const TileDrawQuad* b) {
vmpstr0eca2e82015-06-02 22:14:46186 EXPECT_EQ(a->resource_id(), b->resource_id());
[email protected]4934d362012-11-22 22:04:53187 EXPECT_EQ(a->tex_coord_rect, b->tex_coord_rect);
188 EXPECT_EQ(a->texture_size, b->texture_size);
189 EXPECT_EQ(a->swizzle_contents, b->swizzle_contents);
jackhou24229612014-12-13 23:41:00190 EXPECT_EQ(a->nearest_neighbor, b->nearest_neighbor);
[email protected]4934d362012-11-22 22:04:53191 }
192
193 void Compare(const YUVVideoDrawQuad* a, const YUVVideoDrawQuad* b) {
revemanb71e3992015-05-12 23:01:51194 EXPECT_EQ(a->ya_tex_coord_rect, b->ya_tex_coord_rect);
195 EXPECT_EQ(a->uv_tex_coord_rect, b->uv_tex_coord_rect);
magjed7364ff92015-03-27 09:11:08196 EXPECT_EQ(a->ya_tex_size, b->ya_tex_size);
197 EXPECT_EQ(a->uv_tex_size, b->uv_tex_size);
vmpstr0eca2e82015-06-02 22:14:46198 EXPECT_EQ(a->y_plane_resource_id(), b->y_plane_resource_id());
199 EXPECT_EQ(a->u_plane_resource_id(), b->u_plane_resource_id());
200 EXPECT_EQ(a->v_plane_resource_id(), b->v_plane_resource_id());
201 EXPECT_EQ(a->a_plane_resource_id(), b->a_plane_resource_id());
[email protected]82faf5e2014-05-03 02:25:58202 EXPECT_EQ(a->color_space, b->color_space);
[email protected]4934d362012-11-22 22:04:53203 }
[email protected]bca159072012-12-04 00:52:44204
205 void Compare(const TransferableResource& a, const TransferableResource& b) {
206 EXPECT_EQ(a.id, b.id);
207 EXPECT_EQ(a.format, b.format);
[email protected]80189292013-02-28 01:59:36208 EXPECT_EQ(a.filter, b.filter);
[email protected]bca159072012-12-04 00:52:44209 EXPECT_EQ(a.size.ToString(), b.size.ToString());
[email protected]df41e252014-02-03 23:39:50210 for (size_t i = 0; i < arraysize(a.mailbox_holder.mailbox.name); ++i) {
211 EXPECT_EQ(a.mailbox_holder.mailbox.name[i],
212 b.mailbox_holder.mailbox.name[i]);
213 }
214 EXPECT_EQ(a.mailbox_holder.texture_target, b.mailbox_holder.texture_target);
215 EXPECT_EQ(a.mailbox_holder.sync_point, b.mailbox_holder.sync_point);
ccameron268c09fd2015-10-08 20:23:46216 EXPECT_EQ(a.is_overlay_candidate, b.is_overlay_candidate);
[email protected]bca159072012-12-04 00:52:44217 }
[email protected]4934d362012-11-22 22:04:53218};
219
220TEST_F(CCMessagesTest, AllQuads) {
[email protected]753bb252013-11-04 22:28:12221 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
[email protected]4934d362012-11-22 22:04:53222
danakj112d3a102015-04-14 18:24:49223 Transform arbitrary_matrix1;
224 arbitrary_matrix1.Scale(3, 3);
225 arbitrary_matrix1.Translate(-5, 20);
226 arbitrary_matrix1.Rotate(15);
227 Transform arbitrary_matrix2;
228 arbitrary_matrix2.Scale(10, -1);
229 arbitrary_matrix2.Translate(20, 3);
230 arbitrary_matrix2.Rotate(24);
[email protected]4934d362012-11-22 22:04:53231 gfx::Rect arbitrary_rect1(-5, 9, 3, 15);
[email protected]8e1da692013-10-12 17:11:30232 gfx::Rect arbitrary_rect1_inside_rect1(-4, 12, 2, 8);
233 gfx::Rect arbitrary_rect2_inside_rect1(-5, 11, 1, 2);
[email protected]4934d362012-11-22 22:04:53234 gfx::Rect arbitrary_rect2(40, 23, 11, 7);
[email protected]8e1da692013-10-12 17:11:30235 gfx::Rect arbitrary_rect1_inside_rect2(44, 23, 4, 2);
236 gfx::Rect arbitrary_rect2_inside_rect2(41, 25, 3, 5);
[email protected]4934d362012-11-22 22:04:53237 gfx::Rect arbitrary_rect3(7, -53, 22, 19);
[email protected]8e1da692013-10-12 17:11:30238 gfx::Rect arbitrary_rect1_inside_rect3(10, -40, 6, 3);
239 gfx::Rect arbitrary_rect2_inside_rect3(12, -51, 5, 12);
[email protected]4934d362012-11-22 22:04:53240 gfx::Size arbitrary_size1(15, 19);
241 gfx::Size arbitrary_size2(3, 99);
242 gfx::Size arbitrary_size3(75, 1281);
243 gfx::RectF arbitrary_rectf1(4.2f, -922.1f, 15.6f, 29.5f);
revemanb71e3992015-05-12 23:01:51244 gfx::RectF arbitrary_rectf2(2.1f, -411.05f, 7.8f, 14.75f);
[email protected]4934d362012-11-22 22:04:53245 gfx::SizeF arbitrary_sizef1(15.2f, 104.6f);
[email protected]61df9d82013-01-30 02:32:42246 gfx::PointF arbitrary_pointf1(31.4f, 15.9f);
247 gfx::PointF arbitrary_pointf2(26.5f, -35.8f);
[email protected]7ac3d492014-08-08 21:25:32248 gfx::Vector2dF arbitrary_vector2df1(16.2f, -85.1f);
ennef6f3fbba42014-10-16 18:16:49249 gfx::Vector2dF arbitrary_vector2df2(-8.3f, 0.47f);
[email protected]4934d362012-11-22 22:04:53250 float arbitrary_float1 = 0.7f;
251 float arbitrary_float2 = 0.3f;
252 float arbitrary_float3 = 0.9f;
[email protected]61df9d82013-01-30 02:32:42253 float arbitrary_float_array[4] = {3.5f, 6.2f, 9.3f, 12.3f};
[email protected]4934d362012-11-22 22:04:53254 bool arbitrary_bool1 = true;
255 bool arbitrary_bool2 = false;
[email protected]61df9d82013-01-30 02:32:42256 bool arbitrary_bool3 = true;
jackhou10c9af42014-12-04 05:24:44257 bool arbitrary_bool4 = true;
achaulkf89f5942015-06-10 17:01:35258 bool arbitrary_bool5 = false;
[email protected]a9d4d4f2014-06-19 06:49:28259 int arbitrary_context_id1 = 12;
260 int arbitrary_context_id2 = 57;
261 int arbitrary_context_id3 = -503;
[email protected]4934d362012-11-22 22:04:53262 int arbitrary_int = 5;
263 SkColor arbitrary_color = SkColorSetARGB(25, 36, 47, 58);
[email protected]7bbeaf4e2013-11-26 10:27:22264 SkXfermode::Mode arbitrary_blend_mode1 = SkXfermode::kScreen_Mode;
265 SkXfermode::Mode arbitrary_blend_mode2 = SkXfermode::kLighten_Mode;
266 SkXfermode::Mode arbitrary_blend_mode3 = SkXfermode::kOverlay_Mode;
[email protected]4934d362012-11-22 22:04:53267 IOSurfaceDrawQuad::Orientation arbitrary_orientation =
268 IOSurfaceDrawQuad::UNFLIPPED;
jbaumanbbd425e2015-05-19 00:33:35269 ResourceId arbitrary_resourceid1 = 55;
270 ResourceId arbitrary_resourceid2 = 47;
271 ResourceId arbitrary_resourceid3 = 23;
272 ResourceId arbitrary_resourceid4 = 16;
[email protected]a1765672013-08-12 23:45:02273 SkScalar arbitrary_sigma = SkFloatToScalar(2.0f);
[email protected]82faf5e2014-05-03 02:25:58274 YUVVideoDrawQuad::ColorSpace arbitrary_color_space =
275 YUVVideoDrawQuad::REC_601;
[email protected]4934d362012-11-22 22:04:53276
danakj112d3a102015-04-14 18:24:49277 RenderPassId child_id(30, 5);
278 RenderPassId root_id(10, 14);
279
[email protected]ae6b1a72013-06-25 18:49:29280 FilterOperations arbitrary_filters1;
281 arbitrary_filters1.Append(FilterOperation::CreateGrayscaleFilter(
[email protected]4934d362012-11-22 22:04:53282 arbitrary_float1));
[email protected]1dc7943e2013-09-26 04:41:48283 skia::RefPtr<SkImageFilter> arbitrary_filter = skia::AdoptRef(
[email protected]bb209bf2014-05-11 00:37:11284 SkBlurImageFilter::Create(arbitrary_sigma, arbitrary_sigma));
[email protected]1dc7943e2013-09-26 04:41:48285 arbitrary_filters1.Append(
286 cc::FilterOperation::CreateReferenceFilter(arbitrary_filter));
[email protected]4934d362012-11-22 22:04:53287
[email protected]ae6b1a72013-06-25 18:49:29288 FilterOperations arbitrary_filters2;
289 arbitrary_filters2.Append(FilterOperation::CreateBrightnessFilter(
[email protected]4934d362012-11-22 22:04:53290 arbitrary_float2));
291
danakj112d3a102015-04-14 18:24:49292 scoped_ptr<RenderPass> child_pass_in = RenderPass::Create();
293 child_pass_in->SetAll(child_id, arbitrary_rect2, arbitrary_rect3,
294 arbitrary_matrix2, arbitrary_bool2);
295
296 scoped_ptr<RenderPass> child_pass_cmp = RenderPass::Create();
297 child_pass_cmp->SetAll(child_id, arbitrary_rect2, arbitrary_rect3,
298 arbitrary_matrix2, arbitrary_bool2);
299
[email protected]2b7f3892014-05-08 01:45:18300 scoped_ptr<RenderPass> pass_in = RenderPass::Create();
danakj112d3a102015-04-14 18:24:49301 pass_in->SetAll(root_id, arbitrary_rect1, arbitrary_rect2, arbitrary_matrix1,
[email protected]2b7f3892014-05-08 01:45:18302 arbitrary_bool1);
303
304 SharedQuadState* shared_state1_in = pass_in->CreateAndAppendSharedQuadState();
danakj112d3a102015-04-14 18:24:49305 shared_state1_in->SetAll(arbitrary_matrix1, arbitrary_size1, arbitrary_rect1,
306 arbitrary_rect2, arbitrary_bool1, arbitrary_float1,
307 arbitrary_blend_mode1, arbitrary_context_id1);
[email protected]2b7f3892014-05-08 01:45:18308
309 scoped_ptr<RenderPass> pass_cmp = RenderPass::Create();
danakj112d3a102015-04-14 18:24:49310 pass_cmp->SetAll(root_id, arbitrary_rect1, arbitrary_rect2, arbitrary_matrix1,
[email protected]2b7f3892014-05-08 01:45:18311 arbitrary_bool1);
312
313 SharedQuadState* shared_state1_cmp =
314 pass_cmp->CreateAndAppendSharedQuadState();
315 shared_state1_cmp->CopyFrom(shared_state1_in);
[email protected]4934d362012-11-22 22:04:53316
[email protected]3b85fd92014-07-10 00:00:02317 DebugBorderDrawQuad* debugborder_in =
318 pass_in->CreateAndAppendDrawQuad<DebugBorderDrawQuad>();
[email protected]2b7f3892014-05-08 01:45:18319 debugborder_in->SetAll(shared_state1_in,
[email protected]4934d362012-11-22 22:04:53320 arbitrary_rect3,
[email protected]8e1da692013-10-12 17:11:30321 arbitrary_rect1_inside_rect3,
322 arbitrary_rect2_inside_rect3,
[email protected]4934d362012-11-22 22:04:53323 arbitrary_bool1,
324 arbitrary_color,
325 arbitrary_int);
[email protected]3b85fd92014-07-10 00:00:02326 pass_cmp->CopyFromAndAppendDrawQuad(debugborder_in,
327 debugborder_in->shared_quad_state);
[email protected]4934d362012-11-22 22:04:53328
[email protected]3b85fd92014-07-10 00:00:02329 IOSurfaceDrawQuad* iosurface_in =
330 pass_in->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>();
[email protected]2b7f3892014-05-08 01:45:18331 iosurface_in->SetAll(shared_state1_in,
[email protected]4934d362012-11-22 22:04:53332 arbitrary_rect2,
[email protected]8e1da692013-10-12 17:11:30333 arbitrary_rect2_inside_rect2,
334 arbitrary_rect1_inside_rect2,
[email protected]4934d362012-11-22 22:04:53335 arbitrary_bool1,
336 arbitrary_size1,
[email protected]b7cfc632013-04-10 04:44:49337 arbitrary_resourceid3,
ccameron268c09fd2015-10-08 20:23:46338 arbitrary_orientation);
[email protected]3b85fd92014-07-10 00:00:02339 pass_cmp->CopyFromAndAppendDrawQuad(iosurface_in,
340 iosurface_in->shared_quad_state);
[email protected]4934d362012-11-22 22:04:53341
[email protected]2b7f3892014-05-08 01:45:18342 SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState();
danakj112d3a102015-04-14 18:24:49343 shared_state2_in->SetAll(arbitrary_matrix2, arbitrary_size2, arbitrary_rect2,
344 arbitrary_rect3, arbitrary_bool1, arbitrary_float2,
345 arbitrary_blend_mode2, arbitrary_context_id2);
[email protected]2b7f3892014-05-08 01:45:18346 SharedQuadState* shared_state2_cmp =
347 pass_cmp->CreateAndAppendSharedQuadState();
348 shared_state2_cmp->CopyFrom(shared_state2_in);
[email protected]cbe94b7a2013-11-13 11:03:37349
[email protected]3b85fd92014-07-10 00:00:02350 RenderPassDrawQuad* renderpass_in =
351 pass_in->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
danakj112d3a102015-04-14 18:24:49352 renderpass_in->SetAll(
353 shared_state2_in, arbitrary_rect1, arbitrary_rect2_inside_rect1,
354 arbitrary_rect1_inside_rect1, arbitrary_bool1, child_id,
355 arbitrary_resourceid2, arbitrary_vector2df1, arbitrary_size1,
356 arbitrary_filters1, arbitrary_vector2df2, arbitrary_filters2);
[email protected]3b85fd92014-07-10 00:00:02357 pass_cmp->CopyFromAndAppendRenderPassDrawQuad(
358 renderpass_in,
359 renderpass_in->shared_quad_state,
360 renderpass_in->render_pass_id);
[email protected]4934d362012-11-22 22:04:53361
[email protected]2b7f3892014-05-08 01:45:18362 SharedQuadState* shared_state3_in = pass_in->CreateAndAppendSharedQuadState();
danakj112d3a102015-04-14 18:24:49363 shared_state3_in->SetAll(arbitrary_matrix1, arbitrary_size3, arbitrary_rect3,
364 arbitrary_rect1, arbitrary_bool1, arbitrary_float3,
365 arbitrary_blend_mode3, arbitrary_context_id3);
[email protected]2b7f3892014-05-08 01:45:18366 SharedQuadState* shared_state3_cmp =
367 pass_cmp->CreateAndAppendSharedQuadState();
368 shared_state3_cmp->CopyFrom(shared_state3_in);
[email protected]4934d362012-11-22 22:04:53369
[email protected]3b85fd92014-07-10 00:00:02370 SolidColorDrawQuad* solidcolor_in =
371 pass_in->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
[email protected]2b7f3892014-05-08 01:45:18372 solidcolor_in->SetAll(shared_state3_in,
[email protected]4934d362012-11-22 22:04:53373 arbitrary_rect3,
[email protected]8e1da692013-10-12 17:11:30374 arbitrary_rect1_inside_rect3,
375 arbitrary_rect2_inside_rect3,
[email protected]4934d362012-11-22 22:04:53376 arbitrary_bool1,
[email protected]10a30b12013-05-02 16:42:11377 arbitrary_color,
378 arbitrary_bool2);
[email protected]3b85fd92014-07-10 00:00:02379 pass_cmp->CopyFromAndAppendDrawQuad(solidcolor_in,
380 solidcolor_in->shared_quad_state);
[email protected]4934d362012-11-22 22:04:53381
[email protected]3b85fd92014-07-10 00:00:02382 StreamVideoDrawQuad* streamvideo_in =
383 pass_in->CreateAndAppendDrawQuad<StreamVideoDrawQuad>();
achaulkf89f5942015-06-10 17:01:35384 streamvideo_in->SetAll(
385 shared_state3_in, arbitrary_rect2, arbitrary_rect2_inside_rect2,
386 arbitrary_rect1_inside_rect2, arbitrary_bool1, arbitrary_resourceid2,
ccameron268c09fd2015-10-08 20:23:46387 arbitrary_size1, arbitrary_matrix1);
[email protected]3b85fd92014-07-10 00:00:02388 pass_cmp->CopyFromAndAppendDrawQuad(streamvideo_in,
389 streamvideo_in->shared_quad_state);
[email protected]4934d362012-11-22 22:04:53390
[email protected]16a6af152014-06-13 04:20:16391 cc::SurfaceId arbitrary_surface_id(3);
[email protected]3b85fd92014-07-10 00:00:02392 SurfaceDrawQuad* surface_in =
393 pass_in->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
[email protected]2b7f3892014-05-08 01:45:18394 surface_in->SetAll(shared_state3_in,
395 arbitrary_rect2,
396 arbitrary_rect2_inside_rect2,
397 arbitrary_rect1_inside_rect2,
398 arbitrary_bool1,
399 arbitrary_surface_id);
[email protected]3b85fd92014-07-10 00:00:02400 pass_cmp->CopyFromAndAppendDrawQuad(surface_in,
401 surface_in->shared_quad_state);
jbauman0e05ec92015-07-31 20:12:44402 pass_in->referenced_surfaces.push_back(arbitrary_surface_id);
403 pass_cmp->referenced_surfaces.push_back(arbitrary_surface_id);
[email protected]78d30122014-01-17 06:32:36404
[email protected]3b85fd92014-07-10 00:00:02405 TextureDrawQuad* texture_in =
406 pass_in->CreateAndAppendDrawQuad<TextureDrawQuad>();
achaulkf89f5942015-06-10 17:01:35407 texture_in->SetAll(shared_state3_in, arbitrary_rect2,
408 arbitrary_rect2_inside_rect2, arbitrary_rect1_inside_rect2,
409 arbitrary_bool1, arbitrary_resourceid1, arbitrary_size1,
ccameron268c09fd2015-10-08 20:23:46410 arbitrary_bool2, arbitrary_pointf1,
achaulkf89f5942015-06-10 17:01:35411 arbitrary_pointf2, arbitrary_color, arbitrary_float_array,
412 arbitrary_bool4, arbitrary_bool5);
[email protected]3b85fd92014-07-10 00:00:02413 pass_cmp->CopyFromAndAppendDrawQuad(texture_in,
414 texture_in->shared_quad_state);
[email protected]61df9d82013-01-30 02:32:42415
[email protected]3b85fd92014-07-10 00:00:02416 TileDrawQuad* tile_in = pass_in->CreateAndAppendDrawQuad<TileDrawQuad>();
[email protected]2b7f3892014-05-08 01:45:18417 tile_in->SetAll(shared_state3_in,
[email protected]61df9d82013-01-30 02:32:42418 arbitrary_rect2,
[email protected]8e1da692013-10-12 17:11:30419 arbitrary_rect2_inside_rect2,
420 arbitrary_rect1_inside_rect2,
[email protected]61df9d82013-01-30 02:32:42421 arbitrary_bool1,
[email protected]b7cfc632013-04-10 04:44:49422 arbitrary_resourceid3,
[email protected]61df9d82013-01-30 02:32:42423 arbitrary_rectf1,
424 arbitrary_size1,
jackhou24229612014-12-13 23:41:00425 arbitrary_bool2,
426 arbitrary_bool3);
[email protected]3b85fd92014-07-10 00:00:02427 pass_cmp->CopyFromAndAppendDrawQuad(tile_in, tile_in->shared_quad_state);
[email protected]61df9d82013-01-30 02:32:42428
[email protected]3b85fd92014-07-10 00:00:02429 YUVVideoDrawQuad* yuvvideo_in =
430 pass_in->CreateAndAppendDrawQuad<YUVVideoDrawQuad>();
revemanb71e3992015-05-12 23:01:51431 yuvvideo_in->SetAll(
432 shared_state3_in, arbitrary_rect1, arbitrary_rect2_inside_rect1,
433 arbitrary_rect1_inside_rect1, arbitrary_bool1, arbitrary_rectf1,
434 arbitrary_rectf2, arbitrary_size1, arbitrary_size2, arbitrary_resourceid1,
435 arbitrary_resourceid2, arbitrary_resourceid3, arbitrary_resourceid4,
436 arbitrary_color_space);
[email protected]3b85fd92014-07-10 00:00:02437 pass_cmp->CopyFromAndAppendDrawQuad(yuvvideo_in,
438 yuvvideo_in->shared_quad_state);
[email protected]4934d362012-11-22 22:04:53439
440 // Make sure the in and cmp RenderPasses match.
danakj112d3a102015-04-14 18:24:49441 Compare(child_pass_cmp.get(), child_pass_in.get());
442 ASSERT_EQ(0u, child_pass_in->shared_quad_state_list.size());
443 ASSERT_EQ(0u, child_pass_in->quad_list.size());
[email protected]4934d362012-11-22 22:04:53444 Compare(pass_cmp.get(), pass_in.get());
445 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size());
danakja8f1ac32015-08-05 18:46:57446 ASSERT_EQ(9u, pass_in->quad_list.size());
weiliangc808f70f2014-10-03 22:53:15447 for (cc::SharedQuadStateList::ConstIterator
448 cmp_iterator = pass_cmp->shared_quad_state_list.begin(),
449 in_iterator = pass_in->shared_quad_state_list.begin();
450 in_iterator != pass_in->shared_quad_state_list.end();
451 ++cmp_iterator, ++in_iterator) {
weiliangc48805fce2014-10-29 20:30:12452 Compare(*cmp_iterator, *in_iterator);
[email protected]4934d362012-11-22 22:04:53453 }
weiliangc7eb7ee62014-10-07 00:04:40454 for (auto in_iter = pass_in->quad_list.cbegin(),
455 cmp_iter = pass_cmp->quad_list.cbegin();
456 in_iter != pass_in->quad_list.cend();
weiliangc032e929d2014-09-26 01:55:01457 ++in_iter, ++cmp_iter)
weiliangc48805fce2014-10-29 20:30:12458 Compare(*cmp_iter, *in_iter);
weiliangc032e929d2014-09-26 01:55:01459
[email protected]61df9d82013-01-30 02:32:42460 for (size_t i = 1; i < pass_in->quad_list.size(); ++i) {
[email protected]4934d362012-11-22 22:04:53461 bool same_shared_quad_state_cmp =
weiliangc032e929d2014-09-26 01:55:01462 pass_cmp->quad_list.ElementAt(i)->shared_quad_state ==
463 pass_cmp->quad_list.ElementAt(i - 1)->shared_quad_state;
[email protected]4934d362012-11-22 22:04:53464 bool same_shared_quad_state_in =
weiliangc032e929d2014-09-26 01:55:01465 pass_in->quad_list.ElementAt(i)->shared_quad_state ==
466 pass_in->quad_list.ElementAt(i - 1)->shared_quad_state;
[email protected]4934d362012-11-22 22:04:53467 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_in);
468 }
469
[email protected]bf189f62012-12-18 03:42:11470 DelegatedFrameData frame_in;
danakj112d3a102015-04-14 18:24:49471 frame_in.render_pass_list.push_back(child_pass_in.Pass());
[email protected]ead39c52013-01-09 07:22:45472 frame_in.render_pass_list.push_back(pass_in.Pass());
[email protected]4934d362012-11-22 22:04:53473
[email protected]bf189f62012-12-18 03:42:11474 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in);
[email protected]bca159072012-12-04 00:52:44475
[email protected]bf189f62012-12-18 03:42:11476 DelegatedFrameData frame_out;
brettwbd4d7112015-06-03 04:29:25477 base::PickleIterator iter(msg);
[email protected]bf189f62012-12-18 03:42:11478 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg,
479 &iter, &frame_out));
[email protected]bca159072012-12-04 00:52:44480
[email protected]4934d362012-11-22 22:04:53481 // Make sure the out and cmp RenderPasses match.
danakj112d3a102015-04-14 18:24:49482 scoped_ptr<RenderPass> child_pass_out =
483 frame_out.render_pass_list.take(frame_out.render_pass_list.begin());
484 Compare(child_pass_cmp.get(), child_pass_out.get());
485 ASSERT_EQ(0u, child_pass_out->shared_quad_state_list.size());
486 ASSERT_EQ(0u, child_pass_out->quad_list.size());
487 scoped_ptr<RenderPass> pass_out =
488 frame_out.render_pass_list.take(frame_out.render_pass_list.begin() + 1);
[email protected]4934d362012-11-22 22:04:53489 Compare(pass_cmp.get(), pass_out.get());
490 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size());
danakja8f1ac32015-08-05 18:46:57491 ASSERT_EQ(9u, pass_out->quad_list.size());
weiliangc808f70f2014-10-03 22:53:15492 for (cc::SharedQuadStateList::ConstIterator
493 cmp_iterator = pass_cmp->shared_quad_state_list.begin(),
494 out_iterator = pass_out->shared_quad_state_list.begin();
495 out_iterator != pass_out->shared_quad_state_list.end();
496 ++cmp_iterator, ++out_iterator) {
weiliangc48805fce2014-10-29 20:30:12497 Compare(*cmp_iterator, *out_iterator);
[email protected]4934d362012-11-22 22:04:53498 }
weiliangc7eb7ee62014-10-07 00:04:40499 for (auto out_iter = pass_out->quad_list.cbegin(),
500 cmp_iter = pass_cmp->quad_list.cbegin();
501 out_iter != pass_out->quad_list.cend();
weiliangc032e929d2014-09-26 01:55:01502 ++out_iter, ++cmp_iter)
weiliangc48805fce2014-10-29 20:30:12503 Compare(*cmp_iter, *out_iter);
weiliangc032e929d2014-09-26 01:55:01504
[email protected]61df9d82013-01-30 02:32:42505 for (size_t i = 1; i < pass_out->quad_list.size(); ++i) {
[email protected]4934d362012-11-22 22:04:53506 bool same_shared_quad_state_cmp =
weiliangc032e929d2014-09-26 01:55:01507 pass_cmp->quad_list.ElementAt(i)->shared_quad_state ==
508 pass_cmp->quad_list.ElementAt(i - 1)->shared_quad_state;
[email protected]4934d362012-11-22 22:04:53509 bool same_shared_quad_state_out =
weiliangc032e929d2014-09-26 01:55:01510 pass_out->quad_list.ElementAt(i)->shared_quad_state ==
511 pass_out->quad_list.ElementAt(i - 1)->shared_quad_state;
[email protected]4934d362012-11-22 22:04:53512 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_out);
513 }
514}
[email protected]bca159072012-12-04 00:52:44515
[email protected]cbe94b7a2013-11-13 11:03:37516TEST_F(CCMessagesTest, UnusedSharedQuadStates) {
[email protected]cbe94b7a2013-11-13 11:03:37517 scoped_ptr<RenderPass> pass_in = RenderPass::Create();
[email protected]0cd7d6f72014-08-22 14:50:51518 pass_in->SetAll(RenderPassId(1, 1),
[email protected]cbe94b7a2013-11-13 11:03:37519 gfx::Rect(100, 100),
[email protected]b4ead7b2014-04-07 18:12:18520 gfx::Rect(),
[email protected]cbe94b7a2013-11-13 11:03:37521 gfx::Transform(),
[email protected]8590da32014-03-28 20:49:07522 false);
[email protected]cbe94b7a2013-11-13 11:03:37523
524 // The first SharedQuadState is used.
[email protected]2b7f3892014-05-08 01:45:18525 SharedQuadState* shared_state1_in = pass_in->CreateAndAppendSharedQuadState();
[email protected]7bbeaf4e2013-11-26 10:27:22526 shared_state1_in->SetAll(gfx::Transform(),
527 gfx::Size(1, 1),
528 gfx::Rect(),
529 gfx::Rect(),
530 false,
531 1.f,
[email protected]a9d4d4f2014-06-19 06:49:28532 SkXfermode::kSrcOver_Mode,
533 0);
[email protected]cbe94b7a2013-11-13 11:03:37534
danakja8f1ac32015-08-05 18:46:57535 SolidColorDrawQuad* quad1 =
536 pass_in->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
danakje1419ce2015-03-04 21:26:27537 quad1->SetAll(shared_state1_in, gfx::Rect(10, 10), gfx::Rect(10, 10),
danakja8f1ac32015-08-05 18:46:57538 gfx::Rect(10, 10), false, SK_ColorRED, false);
[email protected]cbe94b7a2013-11-13 11:03:37539
540 // The second and third SharedQuadStates are not used.
[email protected]2b7f3892014-05-08 01:45:18541 SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState();
[email protected]7bbeaf4e2013-11-26 10:27:22542 shared_state2_in->SetAll(gfx::Transform(),
543 gfx::Size(2, 2),
544 gfx::Rect(),
545 gfx::Rect(),
546 false,
547 1.f,
[email protected]a9d4d4f2014-06-19 06:49:28548 SkXfermode::kSrcOver_Mode,
549 0);
[email protected]cbe94b7a2013-11-13 11:03:37550
[email protected]2b7f3892014-05-08 01:45:18551 SharedQuadState* shared_state3_in = pass_in->CreateAndAppendSharedQuadState();
[email protected]7bbeaf4e2013-11-26 10:27:22552 shared_state3_in->SetAll(gfx::Transform(),
553 gfx::Size(3, 3),
554 gfx::Rect(),
555 gfx::Rect(),
556 false,
557 1.f,
[email protected]a9d4d4f2014-06-19 06:49:28558 SkXfermode::kSrcOver_Mode,
559 0);
[email protected]cbe94b7a2013-11-13 11:03:37560
561 // The fourth SharedQuadState is used.
[email protected]2b7f3892014-05-08 01:45:18562 SharedQuadState* shared_state4_in = pass_in->CreateAndAppendSharedQuadState();
[email protected]7bbeaf4e2013-11-26 10:27:22563 shared_state4_in->SetAll(gfx::Transform(),
564 gfx::Size(4, 4),
565 gfx::Rect(),
566 gfx::Rect(),
567 false,
568 1.f,
[email protected]a9d4d4f2014-06-19 06:49:28569 SkXfermode::kSrcOver_Mode,
570 0);
[email protected]cbe94b7a2013-11-13 11:03:37571
danakja8f1ac32015-08-05 18:46:57572 SolidColorDrawQuad* quad2 =
573 pass_in->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
danakje1419ce2015-03-04 21:26:27574 quad2->SetAll(shared_state4_in, gfx::Rect(10, 10), gfx::Rect(10, 10),
danakja8f1ac32015-08-05 18:46:57575 gfx::Rect(10, 10), false, SK_ColorRED, false);
[email protected]cbe94b7a2013-11-13 11:03:37576
577 // The fifth is not used again.
[email protected]2b7f3892014-05-08 01:45:18578 SharedQuadState* shared_state5_in = pass_in->CreateAndAppendSharedQuadState();
[email protected]7bbeaf4e2013-11-26 10:27:22579 shared_state5_in->SetAll(gfx::Transform(),
580 gfx::Size(5, 5),
581 gfx::Rect(),
582 gfx::Rect(),
583 false,
584 1.f,
[email protected]a9d4d4f2014-06-19 06:49:28585 SkXfermode::kSrcOver_Mode,
586 0);
[email protected]cbe94b7a2013-11-13 11:03:37587
[email protected]cbe94b7a2013-11-13 11:03:37588 // 5 SharedQuadStates go in.
589 ASSERT_EQ(5u, pass_in->shared_quad_state_list.size());
590 ASSERT_EQ(2u, pass_in->quad_list.size());
591
592 DelegatedFrameData frame_in;
593 frame_in.render_pass_list.push_back(pass_in.Pass());
594
595 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
596 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in);
597
598 DelegatedFrameData frame_out;
brettwbd4d7112015-06-03 04:29:25599 base::PickleIterator iter(msg);
[email protected]cbe94b7a2013-11-13 11:03:37600 EXPECT_TRUE(
601 IPC::ParamTraits<DelegatedFrameData>::Read(&msg, &iter, &frame_out));
602
603 scoped_ptr<RenderPass> pass_out =
604 frame_out.render_pass_list.take(frame_out.render_pass_list.begin());
605
606 // 2 SharedQuadStates come out. The first and fourth SharedQuadStates were
607 // used by quads, and so serialized. Others were not.
608 ASSERT_EQ(2u, pass_out->shared_quad_state_list.size());
609 ASSERT_EQ(2u, pass_out->quad_list.size());
610
danakj64767d902015-06-19 00:10:43611 EXPECT_EQ(gfx::Size(1, 1).ToString(),
612 pass_out->shared_quad_state_list.ElementAt(0)
613 ->quad_layer_bounds.ToString());
614 EXPECT_EQ(gfx::Size(4, 4).ToString(),
615 pass_out->shared_quad_state_list.ElementAt(1)
616 ->quad_layer_bounds.ToString());
[email protected]cbe94b7a2013-11-13 11:03:37617}
618
[email protected]bca159072012-12-04 00:52:44619TEST_F(CCMessagesTest, Resources) {
[email protected]753bb252013-11-04 22:28:12620 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
[email protected]bca159072012-12-04 00:52:44621 gfx::Size arbitrary_size(757, 1281);
[email protected]09831f7f2013-02-27 03:32:15622 unsigned int arbitrary_uint1 = 71234838;
623 unsigned int arbitrary_uint2 = 53589793;
[email protected]bca159072012-12-04 00:52:44624
[email protected]e0a4d732014-02-15 00:23:26625 GLbyte arbitrary_mailbox1[GL_MAILBOX_SIZE_CHROMIUM] = {
626 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2,
627 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4,
628 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4};
[email protected]bca159072012-12-04 00:52:44629
[email protected]e0a4d732014-02-15 00:23:26630 GLbyte arbitrary_mailbox2[GL_MAILBOX_SIZE_CHROMIUM] = {
631 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0, 0, 9,
632 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0, 0, 9, 8, 7,
633 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0, 0, 9, 8, 7};
[email protected]bca159072012-12-04 00:52:44634
635 TransferableResource arbitrary_resource1;
636 arbitrary_resource1.id = 2178312;
[email protected]27a41fe2013-09-19 05:05:14637 arbitrary_resource1.format = cc::RGBA_8888;
[email protected]80189292013-02-28 01:59:36638 arbitrary_resource1.filter = 53;
[email protected]bca159072012-12-04 00:52:44639 arbitrary_resource1.size = gfx::Size(37189, 123123);
[email protected]df41e252014-02-03 23:39:50640 arbitrary_resource1.mailbox_holder.mailbox.SetName(arbitrary_mailbox1);
641 arbitrary_resource1.mailbox_holder.texture_target = GL_TEXTURE_2D;
642 arbitrary_resource1.mailbox_holder.sync_point = arbitrary_uint1;
ccameron268c09fd2015-10-08 20:23:46643 arbitrary_resource1.is_overlay_candidate = true;
[email protected]bca159072012-12-04 00:52:44644
645 TransferableResource arbitrary_resource2;
646 arbitrary_resource2.id = 789132;
[email protected]27a41fe2013-09-19 05:05:14647 arbitrary_resource2.format = cc::RGBA_4444;
[email protected]645a47f22013-09-26 05:42:32648 arbitrary_resource2.filter = 47;
[email protected]bca159072012-12-04 00:52:44649 arbitrary_resource2.size = gfx::Size(89123, 23789);
[email protected]df41e252014-02-03 23:39:50650 arbitrary_resource2.mailbox_holder.mailbox.SetName(arbitrary_mailbox2);
651 arbitrary_resource2.mailbox_holder.texture_target = GL_TEXTURE_EXTERNAL_OES;
652 arbitrary_resource2.mailbox_holder.sync_point = arbitrary_uint2;
ccameron268c09fd2015-10-08 20:23:46653 arbitrary_resource2.is_overlay_candidate = false;
[email protected]bca159072012-12-04 00:52:44654
[email protected]cb7d6492013-10-03 02:40:04655 scoped_ptr<RenderPass> renderpass_in = RenderPass::Create();
656 renderpass_in->SetNew(
[email protected]0cd7d6f72014-08-22 14:50:51657 RenderPassId(1, 1), gfx::Rect(), gfx::Rect(), gfx::Transform());
[email protected]cb7d6492013-10-03 02:40:04658
[email protected]bf189f62012-12-18 03:42:11659 DelegatedFrameData frame_in;
[email protected]09831f7f2013-02-27 03:32:15660 frame_in.resource_list.push_back(arbitrary_resource1);
661 frame_in.resource_list.push_back(arbitrary_resource2);
[email protected]cb7d6492013-10-03 02:40:04662 frame_in.render_pass_list.push_back(renderpass_in.Pass());
[email protected]bca159072012-12-04 00:52:44663
[email protected]bf189f62012-12-18 03:42:11664 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in);
[email protected]bca159072012-12-04 00:52:44665
[email protected]bf189f62012-12-18 03:42:11666 DelegatedFrameData frame_out;
brettwbd4d7112015-06-03 04:29:25667 base::PickleIterator iter(msg);
[email protected]bf189f62012-12-18 03:42:11668 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg,
669 &iter, &frame_out));
[email protected]bca159072012-12-04 00:52:44670
[email protected]09831f7f2013-02-27 03:32:15671 ASSERT_EQ(2u, frame_out.resource_list.size());
672 Compare(arbitrary_resource1, frame_out.resource_list[0]);
673 Compare(arbitrary_resource2, frame_out.resource_list[1]);
[email protected]bca159072012-12-04 00:52:44674}
675
[email protected]bca159072012-12-04 00:52:44676} // namespace
677} // namespace content