blob: 1b663fdc2912b6c4f1f232eee820954fb7535f98 [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
avia9aa7a82015-12-25 03:06:315#include <stddef.h>
[email protected]4934d362012-11-22 22:04:536#include <string.h>
[email protected]032bfc42013-10-29 22:23:527#include <algorithm>
dchengf63a1252015-12-26 20:43:138#include <utility>
[email protected]032bfc42013-10-29 22:23:529
avia9aa7a82015-12-25 03:06:3110#include "base/macros.h"
11#include "build/build_config.h"
fsamuel812b8482016-05-16 18:52:1812#include "cc/ipc/cc_param_traits.h"
[email protected]7f0d825f2013-03-18 07:24:3013#include "cc/output/compositor_frame.h"
fsamuel812b8482016-05-16 18:52:1814#include "cc/quads/picture_draw_quad.h"
15#include "cc/quads/render_pass_draw_quad.h"
[email protected]4934d362012-11-22 22:04:5316#include "ipc/ipc_message.h"
17#include "testing/gtest/include/gtest/gtest.h"
[email protected]a1765672013-08-12 23:45:0218#include "third_party/skia/include/effects/SkBlurImageFilter.h"
[email protected]4934d362012-11-22 22:04:5319
[email protected]cecc8342014-03-20 21:43:3920#if defined(OS_POSIX)
21#include "base/file_descriptor_posix.h"
22#endif
23
samansce5c3c32016-11-18 13:47:3424using cc::CompositorFrame;
[email protected]4934d362012-11-22 22:04:5325using cc::DebugBorderDrawQuad;
26using cc::DrawQuad;
[email protected]ae6b1a72013-06-25 18:49:2927using cc::FilterOperation;
28using cc::FilterOperations;
[email protected]9ee4d3a2013-03-27 17:43:1629using cc::PictureDrawQuad;
[email protected]4934d362012-11-22 22:04:5330using cc::RenderPass;
[email protected]0cd7d6f72014-08-22 14:50:5131using cc::RenderPassId;
[email protected]4934d362012-11-22 22:04:5332using cc::RenderPassDrawQuad;
jbaumanbbd425e2015-05-19 00:33:3533using cc::ResourceId;
[email protected]4934d362012-11-22 22:04:5334using cc::ResourceProvider;
35using cc::SharedQuadState;
36using cc::SolidColorDrawQuad;
[email protected]78d30122014-01-17 06:32:3637using cc::SurfaceDrawQuad;
[email protected]4934d362012-11-22 22:04:5338using cc::TextureDrawQuad;
39using cc::TileDrawQuad;
[email protected]bca159072012-12-04 00:52:4440using cc::TransferableResource;
[email protected]4934d362012-11-22 22:04:5341using cc::StreamVideoDrawQuad;
[email protected]4934d362012-11-22 22:04:5342using cc::YUVVideoDrawQuad;
[email protected]c8686a02012-11-27 08:29:0043using gfx::Transform;
[email protected]4934d362012-11-22 22:04:5344
[email protected]bca159072012-12-04 00:52:4445namespace content {
46namespace {
47
fsamuele0f705b2016-10-01 14:07:1448static constexpr cc::FrameSinkId kArbitraryFrameSinkId(1, 1);
49
fsamuelf76098e2016-05-18 17:26:5150class CCParamTraitsTest : public testing::Test {
[email protected]4934d362012-11-22 22:04:5351 protected:
52 void Compare(const RenderPass* a, const RenderPass* b) {
53 EXPECT_EQ(a->id, b->id);
54 EXPECT_EQ(a->output_rect.ToString(), b->output_rect.ToString());
55 EXPECT_EQ(a->damage_rect.ToString(), b->damage_rect.ToString());
56 EXPECT_EQ(a->transform_to_root_target, b->transform_to_root_target);
57 EXPECT_EQ(a->has_transparent_background, b->has_transparent_background);
[email protected]4934d362012-11-22 22:04:5358 }
59
60 void Compare(const SharedQuadState* a, const SharedQuadState* b) {
danakj64767d902015-06-19 00:10:4361 EXPECT_EQ(a->quad_to_target_transform, b->quad_to_target_transform);
62 EXPECT_EQ(a->quad_layer_bounds, b->quad_layer_bounds);
63 EXPECT_EQ(a->visible_quad_layer_rect, b->visible_quad_layer_rect);
[email protected]4934d362012-11-22 22:04:5364 EXPECT_EQ(a->clip_rect, b->clip_rect);
65 EXPECT_EQ(a->is_clipped, b->is_clipped);
66 EXPECT_EQ(a->opacity, b->opacity);
[email protected]7bbeaf4e2013-11-26 10:27:2267 EXPECT_EQ(a->blend_mode, b->blend_mode);
[email protected]a9d4d4f2014-06-19 06:49:2868 EXPECT_EQ(a->sorting_context_id, b->sorting_context_id);
[email protected]4934d362012-11-22 22:04:5369 }
70
71 void Compare(const DrawQuad* a, const DrawQuad* b) {
72 ASSERT_NE(DrawQuad::INVALID, a->material);
73 ASSERT_EQ(a->material, b->material);
74 EXPECT_EQ(a->rect.ToString(), b->rect.ToString());
75 EXPECT_EQ(a->opaque_rect.ToString(), b->opaque_rect.ToString());
76 EXPECT_EQ(a->visible_rect.ToString(), b->visible_rect.ToString());
77 EXPECT_EQ(a->needs_blending, b->needs_blending);
78
79 Compare(a->shared_quad_state, b->shared_quad_state);
80
81 switch (a->material) {
[email protected]4934d362012-11-22 22:04:5382 case DrawQuad::DEBUG_BORDER:
83 Compare(DebugBorderDrawQuad::MaterialCast(a),
84 DebugBorderDrawQuad::MaterialCast(b));
85 break;
[email protected]9ee4d3a2013-03-27 17:43:1686 case DrawQuad::PICTURE_CONTENT:
87 Compare(PictureDrawQuad::MaterialCast(a),
88 PictureDrawQuad::MaterialCast(b));
89 break;
[email protected]4934d362012-11-22 22:04:5390 case DrawQuad::RENDER_PASS:
91 Compare(RenderPassDrawQuad::MaterialCast(a),
92 RenderPassDrawQuad::MaterialCast(b));
93 break;
94 case DrawQuad::TEXTURE_CONTENT:
95 Compare(TextureDrawQuad::MaterialCast(a),
96 TextureDrawQuad::MaterialCast(b));
97 break;
98 case DrawQuad::TILED_CONTENT:
fsamuelf76098e2016-05-18 17:26:5199 Compare(TileDrawQuad::MaterialCast(a), TileDrawQuad::MaterialCast(b));
[email protected]4934d362012-11-22 22:04:53100 break;
101 case DrawQuad::SOLID_COLOR:
102 Compare(SolidColorDrawQuad::MaterialCast(a),
103 SolidColorDrawQuad::MaterialCast(b));
104 break;
105 case DrawQuad::STREAM_VIDEO_CONTENT:
106 Compare(StreamVideoDrawQuad::MaterialCast(a),
107 StreamVideoDrawQuad::MaterialCast(b));
108 break;
[email protected]78d30122014-01-17 06:32:36109 case DrawQuad::SURFACE_CONTENT:
110 Compare(SurfaceDrawQuad::MaterialCast(a),
111 SurfaceDrawQuad::MaterialCast(b));
112 break;
[email protected]4934d362012-11-22 22:04:53113 case DrawQuad::YUV_VIDEO_CONTENT:
114 Compare(YUVVideoDrawQuad::MaterialCast(a),
115 YUVVideoDrawQuad::MaterialCast(b));
116 break;
117 case DrawQuad::INVALID:
118 break;
119 }
120 }
121
[email protected]4934d362012-11-22 22:04:53122 void Compare(const DebugBorderDrawQuad* a, const DebugBorderDrawQuad* b) {
123 EXPECT_EQ(a->color, b->color);
124 EXPECT_EQ(a->width, b->width);
125 }
126
[email protected]4934d362012-11-22 22:04:53127 void Compare(const RenderPassDrawQuad* a, const RenderPassDrawQuad* b) {
[email protected]82f93fb2013-04-17 21:42:06128 EXPECT_EQ(a->render_pass_id, b->render_pass_id);
vmpstr0eca2e82015-06-02 22:14:46129 EXPECT_EQ(a->mask_resource_id(), b->mask_resource_id());
ennef6f3fbba42014-10-16 18:16:49130 EXPECT_EQ(a->mask_uv_scale.ToString(), b->mask_uv_scale.ToString());
131 EXPECT_EQ(a->mask_texture_size.ToString(), b->mask_texture_size.ToString());
[email protected]1dc7943e2013-09-26 04:41:48132 EXPECT_EQ(a->filters.size(), b->filters.size());
133 for (size_t i = 0; i < a->filters.size(); ++i) {
134 if (a->filters.at(i).type() != cc::FilterOperation::REFERENCE) {
135 EXPECT_EQ(a->filters.at(i), b->filters.at(i));
136 } else {
137 EXPECT_EQ(b->filters.at(i).type(), cc::FilterOperation::REFERENCE);
138 EXPECT_EQ(a->filters.at(i).image_filter()->countInputs(),
139 b->filters.at(i).image_filter()->countInputs());
140 }
141 }
[email protected]7ac3d492014-08-08 21:25:32142 EXPECT_EQ(a->filters_scale, b->filters_scale);
Stephen White5941ecb02016-08-30 01:28:24143 EXPECT_EQ(a->filters_origin, b->filters_origin);
[email protected]20062042012-12-21 22:16:36144 EXPECT_EQ(a->background_filters, b->background_filters);
[email protected]4934d362012-11-22 22:04:53145 }
146
147 void Compare(const SolidColorDrawQuad* a, const SolidColorDrawQuad* b) {
148 EXPECT_EQ(a->color, b->color);
[email protected]10a30b12013-05-02 16:42:11149 EXPECT_EQ(a->force_anti_aliasing_off, b->force_anti_aliasing_off);
[email protected]4934d362012-11-22 22:04:53150 }
151
152 void Compare(const StreamVideoDrawQuad* a, const StreamVideoDrawQuad* b) {
vmpstr0eca2e82015-06-02 22:14:46153 EXPECT_EQ(a->resource_id(), b->resource_id());
achaulkf89f5942015-06-10 17:01:35154 EXPECT_EQ(a->resource_size_in_pixels(), b->resource_size_in_pixels());
[email protected]4934d362012-11-22 22:04:53155 EXPECT_EQ(a->matrix, b->matrix);
156 }
157
[email protected]78d30122014-01-17 06:32:36158 void Compare(const SurfaceDrawQuad* a, const SurfaceDrawQuad* b) {
159 EXPECT_EQ(a->surface_id, b->surface_id);
160 }
161
[email protected]4934d362012-11-22 22:04:53162 void Compare(const TextureDrawQuad* a, const TextureDrawQuad* b) {
vmpstr0eca2e82015-06-02 22:14:46163 EXPECT_EQ(a->resource_id(), b->resource_id());
achaulkf89f5942015-06-10 17:01:35164 EXPECT_EQ(a->resource_size_in_pixels(), b->resource_size_in_pixels());
[email protected]4934d362012-11-22 22:04:53165 EXPECT_EQ(a->premultiplied_alpha, b->premultiplied_alpha);
[email protected]1fd555b2013-01-18 00:13:21166 EXPECT_EQ(a->uv_top_left, b->uv_top_left);
167 EXPECT_EQ(a->uv_bottom_right, b->uv_bottom_right);
[email protected]d18b4d62013-07-12 05:33:49168 EXPECT_EQ(a->background_color, b->background_color);
[email protected]61df9d82013-01-30 02:32:42169 EXPECT_EQ(a->vertex_opacity[0], b->vertex_opacity[0]);
170 EXPECT_EQ(a->vertex_opacity[1], b->vertex_opacity[1]);
171 EXPECT_EQ(a->vertex_opacity[2], b->vertex_opacity[2]);
172 EXPECT_EQ(a->vertex_opacity[3], b->vertex_opacity[3]);
halliwellaa111282015-05-13 21:58:43173 EXPECT_EQ(a->y_flipped, b->y_flipped);
jackhou10c9af42014-12-04 05:24:44174 EXPECT_EQ(a->nearest_neighbor, b->nearest_neighbor);
jbauman0c1bf21132016-05-19 19:20:07175 EXPECT_EQ(a->secure_output_only, b->secure_output_only);
[email protected]4934d362012-11-22 22:04:53176 }
177
178 void Compare(const TileDrawQuad* a, const TileDrawQuad* b) {
vmpstr0eca2e82015-06-02 22:14:46179 EXPECT_EQ(a->resource_id(), b->resource_id());
[email protected]4934d362012-11-22 22:04:53180 EXPECT_EQ(a->tex_coord_rect, b->tex_coord_rect);
181 EXPECT_EQ(a->texture_size, b->texture_size);
182 EXPECT_EQ(a->swizzle_contents, b->swizzle_contents);
jackhou24229612014-12-13 23:41:00183 EXPECT_EQ(a->nearest_neighbor, b->nearest_neighbor);
[email protected]4934d362012-11-22 22:04:53184 }
185
186 void Compare(const YUVVideoDrawQuad* a, const YUVVideoDrawQuad* b) {
revemanb71e3992015-05-12 23:01:51187 EXPECT_EQ(a->ya_tex_coord_rect, b->ya_tex_coord_rect);
188 EXPECT_EQ(a->uv_tex_coord_rect, b->uv_tex_coord_rect);
magjed7364ff92015-03-27 09:11:08189 EXPECT_EQ(a->ya_tex_size, b->ya_tex_size);
190 EXPECT_EQ(a->uv_tex_size, b->uv_tex_size);
vmpstr0eca2e82015-06-02 22:14:46191 EXPECT_EQ(a->y_plane_resource_id(), b->y_plane_resource_id());
192 EXPECT_EQ(a->u_plane_resource_id(), b->u_plane_resource_id());
193 EXPECT_EQ(a->v_plane_resource_id(), b->v_plane_resource_id());
194 EXPECT_EQ(a->a_plane_resource_id(), b->a_plane_resource_id());
[email protected]82faf5e2014-05-03 02:25:58195 EXPECT_EQ(a->color_space, b->color_space);
jbaumanaa35e3e2016-08-03 22:46:32196 EXPECT_EQ(a->bits_per_channel, b->bits_per_channel);
[email protected]4934d362012-11-22 22:04:53197 }
[email protected]bca159072012-12-04 00:52:44198
199 void Compare(const TransferableResource& a, const TransferableResource& b) {
200 EXPECT_EQ(a.id, b.id);
201 EXPECT_EQ(a.format, b.format);
[email protected]80189292013-02-28 01:59:36202 EXPECT_EQ(a.filter, b.filter);
[email protected]bca159072012-12-04 00:52:44203 EXPECT_EQ(a.size.ToString(), b.size.ToString());
[email protected]df41e252014-02-03 23:39:50204 for (size_t i = 0; i < arraysize(a.mailbox_holder.mailbox.name); ++i) {
205 EXPECT_EQ(a.mailbox_holder.mailbox.name[i],
206 b.mailbox_holder.mailbox.name[i]);
207 }
208 EXPECT_EQ(a.mailbox_holder.texture_target, b.mailbox_holder.texture_target);
dyencc16ed4d2015-11-03 20:03:04209 EXPECT_EQ(a.mailbox_holder.sync_token, b.mailbox_holder.sync_token);
ccameron268c09fd2015-10-08 20:23:46210 EXPECT_EQ(a.is_overlay_candidate, b.is_overlay_candidate);
[email protected]bca159072012-12-04 00:52:44211 }
[email protected]4934d362012-11-22 22:04:53212};
213
fsamuelf76098e2016-05-18 17:26:51214TEST_F(CCParamTraitsTest, AllQuads) {
[email protected]753bb252013-11-04 22:28:12215 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
[email protected]4934d362012-11-22 22:04:53216
danakj112d3a102015-04-14 18:24:49217 Transform arbitrary_matrix1;
218 arbitrary_matrix1.Scale(3, 3);
219 arbitrary_matrix1.Translate(-5, 20);
220 arbitrary_matrix1.Rotate(15);
221 Transform arbitrary_matrix2;
222 arbitrary_matrix2.Scale(10, -1);
223 arbitrary_matrix2.Translate(20, 3);
224 arbitrary_matrix2.Rotate(24);
[email protected]4934d362012-11-22 22:04:53225 gfx::Rect arbitrary_rect1(-5, 9, 3, 15);
[email protected]8e1da692013-10-12 17:11:30226 gfx::Rect arbitrary_rect1_inside_rect1(-4, 12, 2, 8);
227 gfx::Rect arbitrary_rect2_inside_rect1(-5, 11, 1, 2);
[email protected]4934d362012-11-22 22:04:53228 gfx::Rect arbitrary_rect2(40, 23, 11, 7);
[email protected]8e1da692013-10-12 17:11:30229 gfx::Rect arbitrary_rect1_inside_rect2(44, 23, 4, 2);
230 gfx::Rect arbitrary_rect2_inside_rect2(41, 25, 3, 5);
[email protected]4934d362012-11-22 22:04:53231 gfx::Rect arbitrary_rect3(7, -53, 22, 19);
[email protected]8e1da692013-10-12 17:11:30232 gfx::Rect arbitrary_rect1_inside_rect3(10, -40, 6, 3);
233 gfx::Rect arbitrary_rect2_inside_rect3(12, -51, 5, 12);
[email protected]4934d362012-11-22 22:04:53234 gfx::Size arbitrary_size1(15, 19);
235 gfx::Size arbitrary_size2(3, 99);
236 gfx::Size arbitrary_size3(75, 1281);
237 gfx::RectF arbitrary_rectf1(4.2f, -922.1f, 15.6f, 29.5f);
revemanb71e3992015-05-12 23:01:51238 gfx::RectF arbitrary_rectf2(2.1f, -411.05f, 7.8f, 14.75f);
[email protected]4934d362012-11-22 22:04:53239 gfx::SizeF arbitrary_sizef1(15.2f, 104.6f);
[email protected]61df9d82013-01-30 02:32:42240 gfx::PointF arbitrary_pointf1(31.4f, 15.9f);
241 gfx::PointF arbitrary_pointf2(26.5f, -35.8f);
[email protected]7ac3d492014-08-08 21:25:32242 gfx::Vector2dF arbitrary_vector2df1(16.2f, -85.1f);
ennef6f3fbba42014-10-16 18:16:49243 gfx::Vector2dF arbitrary_vector2df2(-8.3f, 0.47f);
[email protected]4934d362012-11-22 22:04:53244 float arbitrary_float1 = 0.7f;
245 float arbitrary_float2 = 0.3f;
246 float arbitrary_float3 = 0.9f;
[email protected]61df9d82013-01-30 02:32:42247 float arbitrary_float_array[4] = {3.5f, 6.2f, 9.3f, 12.3f};
[email protected]4934d362012-11-22 22:04:53248 bool arbitrary_bool1 = true;
249 bool arbitrary_bool2 = false;
[email protected]61df9d82013-01-30 02:32:42250 bool arbitrary_bool3 = true;
jackhou10c9af42014-12-04 05:24:44251 bool arbitrary_bool4 = true;
achaulkf89f5942015-06-10 17:01:35252 bool arbitrary_bool5 = false;
jbauman0c1bf21132016-05-19 19:20:07253 bool arbitrary_bool6 = true;
[email protected]a9d4d4f2014-06-19 06:49:28254 int arbitrary_context_id1 = 12;
255 int arbitrary_context_id2 = 57;
256 int arbitrary_context_id3 = -503;
jbaumanaa35e3e2016-08-03 22:46:32257 int arbitrary_int = 13;
[email protected]4934d362012-11-22 22:04:53258 SkColor arbitrary_color = SkColorSetARGB(25, 36, 47, 58);
reedcc9c70f2016-11-22 04:26:01259 SkBlendMode arbitrary_blend_mode1 = SkBlendMode::kScreen;
260 SkBlendMode arbitrary_blend_mode2 = SkBlendMode::kLighten;
261 SkBlendMode arbitrary_blend_mode3 = SkBlendMode::kOverlay;
jbaumanbbd425e2015-05-19 00:33:35262 ResourceId arbitrary_resourceid1 = 55;
263 ResourceId arbitrary_resourceid2 = 47;
264 ResourceId arbitrary_resourceid3 = 23;
265 ResourceId arbitrary_resourceid4 = 16;
[email protected]a1765672013-08-12 23:45:02266 SkScalar arbitrary_sigma = SkFloatToScalar(2.0f);
[email protected]82faf5e2014-05-03 02:25:58267 YUVVideoDrawQuad::ColorSpace arbitrary_color_space =
268 YUVVideoDrawQuad::REC_601;
hubbeaf57af302016-08-11 10:42:32269 gfx::ColorSpace arbitrary_video_color_space = gfx::ColorSpace::CreateREC601();
[email protected]4934d362012-11-22 22:04:53270
danakj112d3a102015-04-14 18:24:49271 RenderPassId child_id(30, 5);
272 RenderPassId root_id(10, 14);
273
[email protected]ae6b1a72013-06-25 18:49:29274 FilterOperations arbitrary_filters1;
[email protected]1dc7943e2013-09-26 04:41:48275 arbitrary_filters1.Append(
fsamuelf76098e2016-05-18 17:26:51276 FilterOperation::CreateGrayscaleFilter(arbitrary_float1));
277 arbitrary_filters1.Append(cc::FilterOperation::CreateReferenceFilter(
278 SkBlurImageFilter::Make(arbitrary_sigma, arbitrary_sigma, nullptr)));
[email protected]4934d362012-11-22 22:04:53279
[email protected]ae6b1a72013-06-25 18:49:29280 FilterOperations arbitrary_filters2;
fsamuelf76098e2016-05-18 17:26:51281 arbitrary_filters2.Append(
282 FilterOperation::CreateBrightnessFilter(arbitrary_float2));
[email protected]4934d362012-11-22 22:04:53283
dcheng4ac58c7a2016-04-09 04:51:48284 std::unique_ptr<RenderPass> child_pass_in = RenderPass::Create();
danakj112d3a102015-04-14 18:24:49285 child_pass_in->SetAll(child_id, arbitrary_rect2, arbitrary_rect3,
286 arbitrary_matrix2, arbitrary_bool2);
287
dcheng4ac58c7a2016-04-09 04:51:48288 std::unique_ptr<RenderPass> child_pass_cmp = RenderPass::Create();
danakj112d3a102015-04-14 18:24:49289 child_pass_cmp->SetAll(child_id, arbitrary_rect2, arbitrary_rect3,
290 arbitrary_matrix2, arbitrary_bool2);
291
dcheng4ac58c7a2016-04-09 04:51:48292 std::unique_ptr<RenderPass> pass_in = RenderPass::Create();
danakj112d3a102015-04-14 18:24:49293 pass_in->SetAll(root_id, arbitrary_rect1, arbitrary_rect2, arbitrary_matrix1,
[email protected]2b7f3892014-05-08 01:45:18294 arbitrary_bool1);
295
296 SharedQuadState* shared_state1_in = pass_in->CreateAndAppendSharedQuadState();
danakj112d3a102015-04-14 18:24:49297 shared_state1_in->SetAll(arbitrary_matrix1, arbitrary_size1, arbitrary_rect1,
298 arbitrary_rect2, arbitrary_bool1, arbitrary_float1,
299 arbitrary_blend_mode1, arbitrary_context_id1);
[email protected]2b7f3892014-05-08 01:45:18300
dcheng4ac58c7a2016-04-09 04:51:48301 std::unique_ptr<RenderPass> pass_cmp = RenderPass::Create();
danakj112d3a102015-04-14 18:24:49302 pass_cmp->SetAll(root_id, arbitrary_rect1, arbitrary_rect2, arbitrary_matrix1,
[email protected]2b7f3892014-05-08 01:45:18303 arbitrary_bool1);
304
305 SharedQuadState* shared_state1_cmp =
306 pass_cmp->CreateAndAppendSharedQuadState();
fsamuel95998762016-06-02 11:22:22307 *shared_state1_cmp = *shared_state1_in;
[email protected]4934d362012-11-22 22:04:53308
[email protected]3b85fd92014-07-10 00:00:02309 DebugBorderDrawQuad* debugborder_in =
310 pass_in->CreateAndAppendDrawQuad<DebugBorderDrawQuad>();
fsamuelf76098e2016-05-18 17:26:51311 debugborder_in->SetAll(shared_state1_in, arbitrary_rect3,
[email protected]8e1da692013-10-12 17:11:30312 arbitrary_rect1_inside_rect3,
fsamuelf76098e2016-05-18 17:26:51313 arbitrary_rect2_inside_rect3, arbitrary_bool1,
314 arbitrary_color, arbitrary_int);
[email protected]3b85fd92014-07-10 00:00:02315 pass_cmp->CopyFromAndAppendDrawQuad(debugborder_in,
316 debugborder_in->shared_quad_state);
[email protected]4934d362012-11-22 22:04:53317
[email protected]2b7f3892014-05-08 01:45:18318 SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState();
danakj112d3a102015-04-14 18:24:49319 shared_state2_in->SetAll(arbitrary_matrix2, arbitrary_size2, arbitrary_rect2,
320 arbitrary_rect3, arbitrary_bool1, arbitrary_float2,
321 arbitrary_blend_mode2, arbitrary_context_id2);
[email protected]2b7f3892014-05-08 01:45:18322 SharedQuadState* shared_state2_cmp =
323 pass_cmp->CreateAndAppendSharedQuadState();
fsamuel95998762016-06-02 11:22:22324 *shared_state2_cmp = *shared_state2_in;
[email protected]cbe94b7a2013-11-13 11:03:37325
[email protected]3b85fd92014-07-10 00:00:02326 RenderPassDrawQuad* renderpass_in =
327 pass_in->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
danakj112d3a102015-04-14 18:24:49328 renderpass_in->SetAll(
329 shared_state2_in, arbitrary_rect1, arbitrary_rect2_inside_rect1,
330 arbitrary_rect1_inside_rect1, arbitrary_bool1, child_id,
331 arbitrary_resourceid2, arbitrary_vector2df1, arbitrary_size1,
Stephen White5941ecb02016-08-30 01:28:24332 arbitrary_filters1, arbitrary_vector2df2, arbitrary_pointf2,
333 arbitrary_filters2);
[email protected]3b85fd92014-07-10 00:00:02334 pass_cmp->CopyFromAndAppendRenderPassDrawQuad(
fsamuelf76098e2016-05-18 17:26:51335 renderpass_in, renderpass_in->shared_quad_state,
[email protected]3b85fd92014-07-10 00:00:02336 renderpass_in->render_pass_id);
[email protected]4934d362012-11-22 22:04:53337
[email protected]2b7f3892014-05-08 01:45:18338 SharedQuadState* shared_state3_in = pass_in->CreateAndAppendSharedQuadState();
danakj112d3a102015-04-14 18:24:49339 shared_state3_in->SetAll(arbitrary_matrix1, arbitrary_size3, arbitrary_rect3,
340 arbitrary_rect1, arbitrary_bool1, arbitrary_float3,
341 arbitrary_blend_mode3, arbitrary_context_id3);
[email protected]2b7f3892014-05-08 01:45:18342 SharedQuadState* shared_state3_cmp =
343 pass_cmp->CreateAndAppendSharedQuadState();
fsamuel95998762016-06-02 11:22:22344 *shared_state3_cmp = *shared_state3_in;
[email protected]4934d362012-11-22 22:04:53345
[email protected]3b85fd92014-07-10 00:00:02346 SolidColorDrawQuad* solidcolor_in =
347 pass_in->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
fsamuelf76098e2016-05-18 17:26:51348 solidcolor_in->SetAll(shared_state3_in, arbitrary_rect3,
[email protected]8e1da692013-10-12 17:11:30349 arbitrary_rect1_inside_rect3,
fsamuelf76098e2016-05-18 17:26:51350 arbitrary_rect2_inside_rect3, arbitrary_bool1,
351 arbitrary_color, arbitrary_bool2);
[email protected]3b85fd92014-07-10 00:00:02352 pass_cmp->CopyFromAndAppendDrawQuad(solidcolor_in,
353 solidcolor_in->shared_quad_state);
[email protected]4934d362012-11-22 22:04:53354
[email protected]3b85fd92014-07-10 00:00:02355 StreamVideoDrawQuad* streamvideo_in =
356 pass_in->CreateAndAppendDrawQuad<StreamVideoDrawQuad>();
achaulkf89f5942015-06-10 17:01:35357 streamvideo_in->SetAll(
358 shared_state3_in, arbitrary_rect2, arbitrary_rect2_inside_rect2,
359 arbitrary_rect1_inside_rect2, arbitrary_bool1, arbitrary_resourceid2,
ccameron268c09fd2015-10-08 20:23:46360 arbitrary_size1, arbitrary_matrix1);
[email protected]3b85fd92014-07-10 00:00:02361 pass_cmp->CopyFromAndAppendDrawQuad(streamvideo_in,
362 streamvideo_in->shared_quad_state);
[email protected]4934d362012-11-22 22:04:53363
staraz7d7f6eb2016-11-11 00:19:17364 cc::SurfaceId arbitrary_surface_id(
365 kArbitraryFrameSinkId,
366 cc::LocalFrameId(3, base::UnguessableToken::Create()));
[email protected]3b85fd92014-07-10 00:00:02367 SurfaceDrawQuad* surface_in =
368 pass_in->CreateAndAppendDrawQuad<SurfaceDrawQuad>();
fsamuelf76098e2016-05-18 17:26:51369 surface_in->SetAll(shared_state3_in, arbitrary_rect2,
370 arbitrary_rect2_inside_rect2, arbitrary_rect1_inside_rect2,
371 arbitrary_bool1, arbitrary_surface_id);
[email protected]3b85fd92014-07-10 00:00:02372 pass_cmp->CopyFromAndAppendDrawQuad(surface_in,
373 surface_in->shared_quad_state);
[email protected]78d30122014-01-17 06:32:36374
[email protected]3b85fd92014-07-10 00:00:02375 TextureDrawQuad* texture_in =
376 pass_in->CreateAndAppendDrawQuad<TextureDrawQuad>();
jbauman0c1bf21132016-05-19 19:20:07377 texture_in->SetAll(shared_state3_in, arbitrary_rect2,
378 arbitrary_rect2_inside_rect2, arbitrary_rect1_inside_rect2,
379 arbitrary_bool1, arbitrary_resourceid1, arbitrary_size1,
380 arbitrary_bool2, arbitrary_pointf1, arbitrary_pointf2,
381 arbitrary_color, arbitrary_float_array, arbitrary_bool4,
382 arbitrary_bool5, arbitrary_bool6);
[email protected]3b85fd92014-07-10 00:00:02383 pass_cmp->CopyFromAndAppendDrawQuad(texture_in,
384 texture_in->shared_quad_state);
[email protected]61df9d82013-01-30 02:32:42385
[email protected]3b85fd92014-07-10 00:00:02386 TileDrawQuad* tile_in = pass_in->CreateAndAppendDrawQuad<TileDrawQuad>();
fsamuelf76098e2016-05-18 17:26:51387 tile_in->SetAll(shared_state3_in, arbitrary_rect2,
388 arbitrary_rect2_inside_rect2, arbitrary_rect1_inside_rect2,
389 arbitrary_bool1, arbitrary_resourceid3, arbitrary_rectf1,
390 arbitrary_size1, arbitrary_bool2, arbitrary_bool3);
[email protected]3b85fd92014-07-10 00:00:02391 pass_cmp->CopyFromAndAppendDrawQuad(tile_in, tile_in->shared_quad_state);
[email protected]61df9d82013-01-30 02:32:42392
[email protected]3b85fd92014-07-10 00:00:02393 YUVVideoDrawQuad* yuvvideo_in =
394 pass_in->CreateAndAppendDrawQuad<YUVVideoDrawQuad>();
revemanb71e3992015-05-12 23:01:51395 yuvvideo_in->SetAll(
396 shared_state3_in, arbitrary_rect1, arbitrary_rect2_inside_rect1,
397 arbitrary_rect1_inside_rect1, arbitrary_bool1, arbitrary_rectf1,
398 arbitrary_rectf2, arbitrary_size1, arbitrary_size2, arbitrary_resourceid1,
399 arbitrary_resourceid2, arbitrary_resourceid3, arbitrary_resourceid4,
hubbeaf57af302016-08-11 10:42:32400 arbitrary_color_space, arbitrary_video_color_space, arbitrary_float1,
401 arbitrary_float2, arbitrary_int);
[email protected]3b85fd92014-07-10 00:00:02402 pass_cmp->CopyFromAndAppendDrawQuad(yuvvideo_in,
403 yuvvideo_in->shared_quad_state);
[email protected]4934d362012-11-22 22:04:53404
405 // Make sure the in and cmp RenderPasses match.
danakj112d3a102015-04-14 18:24:49406 Compare(child_pass_cmp.get(), child_pass_in.get());
407 ASSERT_EQ(0u, child_pass_in->shared_quad_state_list.size());
408 ASSERT_EQ(0u, child_pass_in->quad_list.size());
[email protected]4934d362012-11-22 22:04:53409 Compare(pass_cmp.get(), pass_in.get());
410 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size());
ccameron648c9112016-05-18 23:44:07411 ASSERT_EQ(8u, pass_in->quad_list.size());
weiliangc808f70f2014-10-03 22:53:15412 for (cc::SharedQuadStateList::ConstIterator
413 cmp_iterator = pass_cmp->shared_quad_state_list.begin(),
414 in_iterator = pass_in->shared_quad_state_list.begin();
415 in_iterator != pass_in->shared_quad_state_list.end();
416 ++cmp_iterator, ++in_iterator) {
weiliangc48805fce2014-10-29 20:30:12417 Compare(*cmp_iterator, *in_iterator);
[email protected]4934d362012-11-22 22:04:53418 }
weiliangc7eb7ee62014-10-07 00:04:40419 for (auto in_iter = pass_in->quad_list.cbegin(),
420 cmp_iter = pass_cmp->quad_list.cbegin();
fsamuelf76098e2016-05-18 17:26:51421 in_iter != pass_in->quad_list.cend(); ++in_iter, ++cmp_iter)
weiliangc48805fce2014-10-29 20:30:12422 Compare(*cmp_iter, *in_iter);
weiliangc032e929d2014-09-26 01:55:01423
[email protected]61df9d82013-01-30 02:32:42424 for (size_t i = 1; i < pass_in->quad_list.size(); ++i) {
[email protected]4934d362012-11-22 22:04:53425 bool same_shared_quad_state_cmp =
weiliangc032e929d2014-09-26 01:55:01426 pass_cmp->quad_list.ElementAt(i)->shared_quad_state ==
427 pass_cmp->quad_list.ElementAt(i - 1)->shared_quad_state;
[email protected]4934d362012-11-22 22:04:53428 bool same_shared_quad_state_in =
weiliangc032e929d2014-09-26 01:55:01429 pass_in->quad_list.ElementAt(i)->shared_quad_state ==
430 pass_in->quad_list.ElementAt(i - 1)->shared_quad_state;
[email protected]4934d362012-11-22 22:04:53431 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_in);
432 }
433
samansce5c3c32016-11-18 13:47:34434 CompositorFrame frame_in;
dchengf63a1252015-12-26 20:43:13435 frame_in.render_pass_list.push_back(std::move(child_pass_in));
436 frame_in.render_pass_list.push_back(std::move(pass_in));
[email protected]4934d362012-11-22 22:04:53437
samansce5c3c32016-11-18 13:47:34438 IPC::ParamTraits<CompositorFrame>::Write(&msg, frame_in);
[email protected]bca159072012-12-04 00:52:44439
samansce5c3c32016-11-18 13:47:34440 CompositorFrame frame_out;
brettwbd4d7112015-06-03 04:29:25441 base::PickleIterator iter(msg);
samansce5c3c32016-11-18 13:47:34442 EXPECT_TRUE(IPC::ParamTraits<CompositorFrame>::Read(&msg, &iter, &frame_out));
[email protected]bca159072012-12-04 00:52:44443
[email protected]4934d362012-11-22 22:04:53444 // Make sure the out and cmp RenderPasses match.
dcheng4ac58c7a2016-04-09 04:51:48445 std::unique_ptr<RenderPass> child_pass_out =
dchengf63a1252015-12-26 20:43:13446 std::move(frame_out.render_pass_list[0]);
danakj112d3a102015-04-14 18:24:49447 Compare(child_pass_cmp.get(), child_pass_out.get());
448 ASSERT_EQ(0u, child_pass_out->shared_quad_state_list.size());
449 ASSERT_EQ(0u, child_pass_out->quad_list.size());
dcheng4ac58c7a2016-04-09 04:51:48450 std::unique_ptr<RenderPass> pass_out =
451 std::move(frame_out.render_pass_list[1]);
[email protected]4934d362012-11-22 22:04:53452 Compare(pass_cmp.get(), pass_out.get());
453 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size());
ccameron648c9112016-05-18 23:44:07454 ASSERT_EQ(8u, pass_out->quad_list.size());
weiliangc808f70f2014-10-03 22:53:15455 for (cc::SharedQuadStateList::ConstIterator
456 cmp_iterator = pass_cmp->shared_quad_state_list.begin(),
457 out_iterator = pass_out->shared_quad_state_list.begin();
458 out_iterator != pass_out->shared_quad_state_list.end();
459 ++cmp_iterator, ++out_iterator) {
weiliangc48805fce2014-10-29 20:30:12460 Compare(*cmp_iterator, *out_iterator);
[email protected]4934d362012-11-22 22:04:53461 }
weiliangc7eb7ee62014-10-07 00:04:40462 for (auto out_iter = pass_out->quad_list.cbegin(),
463 cmp_iter = pass_cmp->quad_list.cbegin();
fsamuelf76098e2016-05-18 17:26:51464 out_iter != pass_out->quad_list.cend(); ++out_iter, ++cmp_iter)
weiliangc48805fce2014-10-29 20:30:12465 Compare(*cmp_iter, *out_iter);
weiliangc032e929d2014-09-26 01:55:01466
[email protected]61df9d82013-01-30 02:32:42467 for (size_t i = 1; i < pass_out->quad_list.size(); ++i) {
[email protected]4934d362012-11-22 22:04:53468 bool same_shared_quad_state_cmp =
weiliangc032e929d2014-09-26 01:55:01469 pass_cmp->quad_list.ElementAt(i)->shared_quad_state ==
470 pass_cmp->quad_list.ElementAt(i - 1)->shared_quad_state;
[email protected]4934d362012-11-22 22:04:53471 bool same_shared_quad_state_out =
weiliangc032e929d2014-09-26 01:55:01472 pass_out->quad_list.ElementAt(i)->shared_quad_state ==
473 pass_out->quad_list.ElementAt(i - 1)->shared_quad_state;
[email protected]4934d362012-11-22 22:04:53474 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_out);
475 }
476}
[email protected]bca159072012-12-04 00:52:44477
fsamuelf76098e2016-05-18 17:26:51478TEST_F(CCParamTraitsTest, UnusedSharedQuadStates) {
dcheng4ac58c7a2016-04-09 04:51:48479 std::unique_ptr<RenderPass> pass_in = RenderPass::Create();
fsamuelf76098e2016-05-18 17:26:51480 pass_in->SetAll(RenderPassId(1, 1), gfx::Rect(100, 100), gfx::Rect(),
481 gfx::Transform(), false);
[email protected]cbe94b7a2013-11-13 11:03:37482
483 // The first SharedQuadState is used.
[email protected]2b7f3892014-05-08 01:45:18484 SharedQuadState* shared_state1_in = pass_in->CreateAndAppendSharedQuadState();
fsamuelf76098e2016-05-18 17:26:51485 shared_state1_in->SetAll(gfx::Transform(), gfx::Size(1, 1), gfx::Rect(),
reedcc9c70f2016-11-22 04:26:01486 gfx::Rect(), false, 1.f, SkBlendMode::kSrcOver, 0);
[email protected]cbe94b7a2013-11-13 11:03:37487
danakja8f1ac32015-08-05 18:46:57488 SolidColorDrawQuad* quad1 =
489 pass_in->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
danakje1419ce2015-03-04 21:26:27490 quad1->SetAll(shared_state1_in, gfx::Rect(10, 10), gfx::Rect(10, 10),
danakja8f1ac32015-08-05 18:46:57491 gfx::Rect(10, 10), false, SK_ColorRED, false);
[email protected]cbe94b7a2013-11-13 11:03:37492
493 // The second and third SharedQuadStates are not used.
[email protected]2b7f3892014-05-08 01:45:18494 SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState();
fsamuelf76098e2016-05-18 17:26:51495 shared_state2_in->SetAll(gfx::Transform(), gfx::Size(2, 2), gfx::Rect(),
reedcc9c70f2016-11-22 04:26:01496 gfx::Rect(), false, 1.f, SkBlendMode::kSrcOver, 0);
[email protected]cbe94b7a2013-11-13 11:03:37497
[email protected]2b7f3892014-05-08 01:45:18498 SharedQuadState* shared_state3_in = pass_in->CreateAndAppendSharedQuadState();
fsamuelf76098e2016-05-18 17:26:51499 shared_state3_in->SetAll(gfx::Transform(), gfx::Size(3, 3), gfx::Rect(),
reedcc9c70f2016-11-22 04:26:01500 gfx::Rect(), false, 1.f, SkBlendMode::kSrcOver, 0);
[email protected]cbe94b7a2013-11-13 11:03:37501
502 // The fourth SharedQuadState is used.
[email protected]2b7f3892014-05-08 01:45:18503 SharedQuadState* shared_state4_in = pass_in->CreateAndAppendSharedQuadState();
fsamuelf76098e2016-05-18 17:26:51504 shared_state4_in->SetAll(gfx::Transform(), gfx::Size(4, 4), gfx::Rect(),
reedcc9c70f2016-11-22 04:26:01505 gfx::Rect(), false, 1.f, SkBlendMode::kSrcOver, 0);
[email protected]cbe94b7a2013-11-13 11:03:37506
danakja8f1ac32015-08-05 18:46:57507 SolidColorDrawQuad* quad2 =
508 pass_in->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
danakje1419ce2015-03-04 21:26:27509 quad2->SetAll(shared_state4_in, gfx::Rect(10, 10), gfx::Rect(10, 10),
danakja8f1ac32015-08-05 18:46:57510 gfx::Rect(10, 10), false, SK_ColorRED, false);
[email protected]cbe94b7a2013-11-13 11:03:37511
512 // The fifth is not used again.
[email protected]2b7f3892014-05-08 01:45:18513 SharedQuadState* shared_state5_in = pass_in->CreateAndAppendSharedQuadState();
fsamuelf76098e2016-05-18 17:26:51514 shared_state5_in->SetAll(gfx::Transform(), gfx::Size(5, 5), gfx::Rect(),
reedcc9c70f2016-11-22 04:26:01515 gfx::Rect(), false, 1.f, SkBlendMode::kSrcOver, 0);
[email protected]cbe94b7a2013-11-13 11:03:37516
[email protected]cbe94b7a2013-11-13 11:03:37517 // 5 SharedQuadStates go in.
518 ASSERT_EQ(5u, pass_in->shared_quad_state_list.size());
519 ASSERT_EQ(2u, pass_in->quad_list.size());
520
samansce5c3c32016-11-18 13:47:34521 CompositorFrame frame_in;
dchengf63a1252015-12-26 20:43:13522 frame_in.render_pass_list.push_back(std::move(pass_in));
[email protected]cbe94b7a2013-11-13 11:03:37523
524 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
samansce5c3c32016-11-18 13:47:34525 IPC::ParamTraits<CompositorFrame>::Write(&msg, frame_in);
[email protected]cbe94b7a2013-11-13 11:03:37526
samansce5c3c32016-11-18 13:47:34527 CompositorFrame frame_out;
brettwbd4d7112015-06-03 04:29:25528 base::PickleIterator iter(msg);
samansce5c3c32016-11-18 13:47:34529 EXPECT_TRUE(IPC::ParamTraits<CompositorFrame>::Read(&msg, &iter, &frame_out));
[email protected]cbe94b7a2013-11-13 11:03:37530
dcheng4ac58c7a2016-04-09 04:51:48531 std::unique_ptr<RenderPass> pass_out =
532 std::move(frame_out.render_pass_list[0]);
[email protected]cbe94b7a2013-11-13 11:03:37533
534 // 2 SharedQuadStates come out. The first and fourth SharedQuadStates were
535 // used by quads, and so serialized. Others were not.
536 ASSERT_EQ(2u, pass_out->shared_quad_state_list.size());
537 ASSERT_EQ(2u, pass_out->quad_list.size());
538
danakj64767d902015-06-19 00:10:43539 EXPECT_EQ(gfx::Size(1, 1).ToString(),
540 pass_out->shared_quad_state_list.ElementAt(0)
541 ->quad_layer_bounds.ToString());
542 EXPECT_EQ(gfx::Size(4, 4).ToString(),
543 pass_out->shared_quad_state_list.ElementAt(1)
544 ->quad_layer_bounds.ToString());
[email protected]cbe94b7a2013-11-13 11:03:37545}
546
fsamuelf76098e2016-05-18 17:26:51547TEST_F(CCParamTraitsTest, Resources) {
[email protected]753bb252013-11-04 22:28:12548 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL);
[email protected]bca159072012-12-04 00:52:44549 gfx::Size arbitrary_size(757, 1281);
lukasza2573ce7d2016-02-16 19:17:22550 gpu::SyncToken arbitrary_token1(gpu::CommandBufferNamespace::GPU_IO, 0,
551 gpu::CommandBufferId::FromUnsafeValue(0x123),
dyen398dd0142016-01-21 22:05:56552 71234838);
553 arbitrary_token1.SetVerifyFlush();
lukasza2573ce7d2016-02-16 19:17:22554 gpu::SyncToken arbitrary_token2(gpu::CommandBufferNamespace::GPU_IO, 0,
555 gpu::CommandBufferId::FromUnsafeValue(0x123),
dyen398dd0142016-01-21 22:05:56556 53589793);
557 arbitrary_token2.SetVerifyFlush();
[email protected]bca159072012-12-04 00:52:44558
[email protected]e0a4d732014-02-15 00:23:26559 GLbyte arbitrary_mailbox1[GL_MAILBOX_SIZE_CHROMIUM] = {
piman02b9c4e2016-11-01 00:25:18560 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6};
[email protected]bca159072012-12-04 00:52:44561
[email protected]e0a4d732014-02-15 00:23:26562 GLbyte arbitrary_mailbox2[GL_MAILBOX_SIZE_CHROMIUM] = {
piman02b9c4e2016-11-01 00:25:18563 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2};
[email protected]bca159072012-12-04 00:52:44564
565 TransferableResource arbitrary_resource1;
566 arbitrary_resource1.id = 2178312;
[email protected]27a41fe2013-09-19 05:05:14567 arbitrary_resource1.format = cc::RGBA_8888;
[email protected]80189292013-02-28 01:59:36568 arbitrary_resource1.filter = 53;
[email protected]bca159072012-12-04 00:52:44569 arbitrary_resource1.size = gfx::Size(37189, 123123);
[email protected]df41e252014-02-03 23:39:50570 arbitrary_resource1.mailbox_holder.mailbox.SetName(arbitrary_mailbox1);
571 arbitrary_resource1.mailbox_holder.texture_target = GL_TEXTURE_2D;
dyencc16ed4d2015-11-03 20:03:04572 arbitrary_resource1.mailbox_holder.sync_token = arbitrary_token1;
ccameron268c09fd2015-10-08 20:23:46573 arbitrary_resource1.is_overlay_candidate = true;
[email protected]bca159072012-12-04 00:52:44574
575 TransferableResource arbitrary_resource2;
576 arbitrary_resource2.id = 789132;
[email protected]27a41fe2013-09-19 05:05:14577 arbitrary_resource2.format = cc::RGBA_4444;
[email protected]645a47f22013-09-26 05:42:32578 arbitrary_resource2.filter = 47;
[email protected]bca159072012-12-04 00:52:44579 arbitrary_resource2.size = gfx::Size(89123, 23789);
[email protected]df41e252014-02-03 23:39:50580 arbitrary_resource2.mailbox_holder.mailbox.SetName(arbitrary_mailbox2);
581 arbitrary_resource2.mailbox_holder.texture_target = GL_TEXTURE_EXTERNAL_OES;
dyencc16ed4d2015-11-03 20:03:04582 arbitrary_resource2.mailbox_holder.sync_token = arbitrary_token2;
ccameron268c09fd2015-10-08 20:23:46583 arbitrary_resource2.is_overlay_candidate = false;
[email protected]bca159072012-12-04 00:52:44584
dcheng4ac58c7a2016-04-09 04:51:48585 std::unique_ptr<RenderPass> renderpass_in = RenderPass::Create();
fsamuelf76098e2016-05-18 17:26:51586 renderpass_in->SetNew(RenderPassId(1, 1), gfx::Rect(), gfx::Rect(),
587 gfx::Transform());
[email protected]cb7d6492013-10-03 02:40:04588
samansce5c3c32016-11-18 13:47:34589 CompositorFrame frame_in;
[email protected]09831f7f2013-02-27 03:32:15590 frame_in.resource_list.push_back(arbitrary_resource1);
591 frame_in.resource_list.push_back(arbitrary_resource2);
dchengf63a1252015-12-26 20:43:13592 frame_in.render_pass_list.push_back(std::move(renderpass_in));
[email protected]bca159072012-12-04 00:52:44593
samansce5c3c32016-11-18 13:47:34594 IPC::ParamTraits<CompositorFrame>::Write(&msg, frame_in);
[email protected]bca159072012-12-04 00:52:44595
samansce5c3c32016-11-18 13:47:34596 CompositorFrame frame_out;
brettwbd4d7112015-06-03 04:29:25597 base::PickleIterator iter(msg);
samansce5c3c32016-11-18 13:47:34598 EXPECT_TRUE(IPC::ParamTraits<CompositorFrame>::Read(&msg, &iter, &frame_out));
[email protected]bca159072012-12-04 00:52:44599
[email protected]09831f7f2013-02-27 03:32:15600 ASSERT_EQ(2u, frame_out.resource_list.size());
601 Compare(arbitrary_resource1, frame_out.resource_list[0]);
602 Compare(arbitrary_resource2, frame_out.resource_list[1]);
[email protected]bca159072012-12-04 00:52:44603}
604
605} // namespace
606} // namespace content