Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(755)

Side by Side Diff: cc/quads/draw_quad_unittest.cc

Issue 1533773002: Delete CC. (Closed) Base URL: git@github.com:domokit/mojo.git@cl-2e
Patch Set: rebase Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/quads/draw_quad.cc ('k') | cc/quads/io_surface_draw_quad.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 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 "cc/quads/draw_quad.h"
6
7 #include <algorithm>
8
9 #include "base/bind.h"
10 #include "base/compiler_specific.h"
11 #include "cc/base/math_util.h"
12 #include "cc/output/filter_operations.h"
13 #include "cc/quads/checkerboard_draw_quad.h"
14 #include "cc/quads/debug_border_draw_quad.h"
15 #include "cc/quads/io_surface_draw_quad.h"
16 #include "cc/quads/largest_draw_quad.h"
17 #include "cc/quads/picture_draw_quad.h"
18 #include "cc/quads/render_pass.h"
19 #include "cc/quads/render_pass_draw_quad.h"
20 #include "cc/quads/solid_color_draw_quad.h"
21 #include "cc/quads/stream_video_draw_quad.h"
22 #include "cc/quads/surface_draw_quad.h"
23 #include "cc/quads/texture_draw_quad.h"
24 #include "cc/quads/tile_draw_quad.h"
25 #include "cc/quads/yuv_video_draw_quad.h"
26 #include "cc/test/fake_picture_pile_impl.h"
27 #include "cc/test/geometry_test_utils.h"
28 #include "testing/gtest/include/gtest/gtest.h"
29 #include "third_party/skia/include/effects/SkBlurImageFilter.h"
30 #include "ui/gfx/transform.h"
31
32 namespace cc {
33 namespace {
34
35 TEST(DrawQuadTest, CopySharedQuadState) {
36 gfx::Transform quad_transform = gfx::Transform(1.0, 0.0, 0.5, 1.0, 0.5, 0.0);
37 gfx::Size content_bounds(26, 28);
38 gfx::Rect visible_content_rect(10, 12, 14, 16);
39 gfx::Rect clip_rect(19, 21, 23, 25);
40 bool is_clipped = true;
41 float opacity = 0.25f;
42 SkXfermode::Mode blend_mode = SkXfermode::kMultiply_Mode;
43 int sorting_context_id = 65536;
44
45 scoped_ptr<SharedQuadState> state(new SharedQuadState);
46 state->SetAll(quad_transform,
47 content_bounds,
48 visible_content_rect,
49 clip_rect,
50 is_clipped,
51 opacity,
52 blend_mode,
53 sorting_context_id);
54
55 scoped_ptr<SharedQuadState> copy(new SharedQuadState);
56 copy->CopyFrom(state.get());
57 EXPECT_EQ(quad_transform, copy->content_to_target_transform);
58 EXPECT_EQ(visible_content_rect, copy->visible_content_rect);
59 EXPECT_EQ(opacity, copy->opacity);
60 EXPECT_EQ(clip_rect, copy->clip_rect);
61 EXPECT_EQ(is_clipped, copy->is_clipped);
62 EXPECT_EQ(blend_mode, copy->blend_mode);
63 }
64
65 SharedQuadState* CreateSharedQuadState(RenderPass* render_pass) {
66 gfx::Transform quad_transform = gfx::Transform(1.0, 0.0, 0.5, 1.0, 0.5, 0.0);
67 gfx::Size content_bounds(26, 28);
68 gfx::Rect visible_content_rect(10, 12, 14, 16);
69 gfx::Rect clip_rect(19, 21, 23, 25);
70 bool is_clipped = false;
71 float opacity = 1.f;
72 int sorting_context_id = 65536;
73 SkXfermode::Mode blend_mode = SkXfermode::kSrcOver_Mode;
74
75 SharedQuadState* state = render_pass->CreateAndAppendSharedQuadState();
76 state->SetAll(quad_transform,
77 content_bounds,
78 visible_content_rect,
79 clip_rect,
80 is_clipped,
81 opacity,
82 blend_mode,
83 sorting_context_id);
84 return state;
85 }
86
87 void CompareDrawQuad(DrawQuad* quad,
88 DrawQuad* copy,
89 SharedQuadState* copy_shared_state) {
90 EXPECT_EQ(quad->material, copy->material);
91 EXPECT_EQ(quad->rect, copy->rect);
92 EXPECT_EQ(quad->visible_rect, copy->visible_rect);
93 EXPECT_EQ(quad->opaque_rect, copy->opaque_rect);
94 EXPECT_EQ(quad->needs_blending, copy->needs_blending);
95 EXPECT_EQ(copy_shared_state, copy->shared_quad_state);
96 }
97
98 #define CREATE_SHARED_STATE() \
99 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); \
100 SharedQuadState* shared_state(CreateSharedQuadState(render_pass.get())); \
101 SharedQuadState* copy_shared_state = \
102 render_pass->CreateAndAppendSharedQuadState(); \
103 copy_shared_state->CopyFrom(shared_state);
104
105 #define QUAD_DATA \
106 gfx::Rect quad_rect(30, 40, 50, 60); \
107 gfx::Rect quad_visible_rect(40, 50, 30, 20); \
108 gfx::Rect quad_opaque_rect(60, 55, 10, 10); \
109 ALLOW_UNUSED_LOCAL(quad_opaque_rect); \
110 bool needs_blending = true; \
111 ALLOW_UNUSED_LOCAL(needs_blending);
112
113 #define SETUP_AND_COPY_QUAD_NEW(Type, quad) \
114 DrawQuad* copy_new = \
115 render_pass->CopyFromAndAppendDrawQuad(quad_new, copy_shared_state); \
116 CompareDrawQuad(quad_new, copy_new, copy_shared_state); \
117 const Type* copy_quad = Type::MaterialCast(copy_new); \
118 ALLOW_UNUSED_LOCAL(copy_quad);
119
120 #define SETUP_AND_COPY_QUAD_ALL(Type, quad) \
121 DrawQuad* copy_all = \
122 render_pass->CopyFromAndAppendDrawQuad(quad_all, copy_shared_state); \
123 CompareDrawQuad(quad_all, copy_all, copy_shared_state); \
124 copy_quad = Type::MaterialCast(copy_all);
125
126 #define SETUP_AND_COPY_QUAD_NEW_RP(Type, quad, a) \
127 DrawQuad* copy_new = render_pass->CopyFromAndAppendRenderPassDrawQuad( \
128 quad_new, copy_shared_state, a); \
129 CompareDrawQuad(quad_new, copy_new, copy_shared_state); \
130 const Type* copy_quad = Type::MaterialCast(copy_new); \
131 ALLOW_UNUSED_LOCAL(copy_quad);
132
133 #define SETUP_AND_COPY_QUAD_ALL_RP(Type, quad, a) \
134 DrawQuad* copy_all = render_pass->CopyFromAndAppendRenderPassDrawQuad( \
135 quad_all, copy_shared_state, a); \
136 CompareDrawQuad(quad_all, copy_all, copy_shared_state); \
137 copy_quad = Type::MaterialCast(copy_all);
138
139 #define CREATE_QUAD_1_NEW(Type, a) \
140 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
141 { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a); } \
142 SETUP_AND_COPY_QUAD_NEW(Type, quad_new);
143
144 #define CREATE_QUAD_1_ALL(Type, a) \
145 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
146 { \
147 QUAD_DATA quad_all->SetAll(shared_state, \
148 quad_rect, \
149 quad_opaque_rect, \
150 quad_visible_rect, \
151 needs_blending, \
152 a); \
153 } \
154 SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
155
156 #define CREATE_QUAD_2_NEW(Type, a, b) \
157 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
158 { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b); } \
159 SETUP_AND_COPY_QUAD_NEW(Type, quad_new);
160
161 #define CREATE_QUAD_2_ALL(Type, a, b) \
162 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
163 { \
164 QUAD_DATA quad_all->SetAll(shared_state, \
165 quad_rect, \
166 quad_opaque_rect, \
167 quad_visible_rect, \
168 needs_blending, \
169 a, \
170 b); \
171 } \
172 SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
173
174 #define CREATE_QUAD_3_NEW(Type, a, b, c) \
175 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
176 { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c); } \
177 SETUP_AND_COPY_QUAD_NEW(Type, quad_new);
178
179 #define CREATE_QUAD_3_ALL(Type, a, b, c) \
180 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
181 { \
182 QUAD_DATA quad_all->SetAll(shared_state, \
183 quad_rect, \
184 quad_opaque_rect, \
185 quad_visible_rect, \
186 needs_blending, \
187 a, \
188 b, \
189 c); \
190 } \
191 SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
192
193 #define CREATE_QUAD_4_NEW(Type, a, b, c, d) \
194 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
195 { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d); } \
196 SETUP_AND_COPY_QUAD_NEW(Type, quad_new);
197
198 #define CREATE_QUAD_4_ALL(Type, a, b, c, d) \
199 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
200 { \
201 QUAD_DATA quad_all->SetAll(shared_state, \
202 quad_rect, \
203 quad_opaque_rect, \
204 quad_visible_rect, \
205 needs_blending, \
206 a, \
207 b, \
208 c, \
209 d); \
210 } \
211 SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
212
213 #define CREATE_QUAD_5_NEW(Type, a, b, c, d, e) \
214 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
215 { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e); } \
216 SETUP_AND_COPY_QUAD_NEW(Type, quad_new);
217
218 #define CREATE_QUAD_5_ALL(Type, a, b, c, d, e) \
219 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
220 { \
221 QUAD_DATA quad_all->SetAll(shared_state, \
222 quad_rect, \
223 quad_opaque_rect, \
224 quad_visible_rect, \
225 needs_blending, \
226 a, \
227 b, \
228 c, \
229 d, \
230 e); \
231 } \
232 SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
233
234 #define CREATE_QUAD_6_NEW(Type, a, b, c, d, e, f) \
235 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
236 { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f); } \
237 SETUP_AND_COPY_QUAD_NEW(Type, quad_new);
238
239 #define CREATE_QUAD_6_ALL(Type, a, b, c, d, e, f) \
240 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
241 { \
242 QUAD_DATA quad_all->SetAll(shared_state, \
243 quad_rect, \
244 quad_opaque_rect, \
245 quad_visible_rect, \
246 needs_blending, \
247 a, \
248 b, \
249 c, \
250 d, \
251 e, \
252 f); \
253 } \
254 SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
255
256 #define CREATE_QUAD_7_NEW(Type, a, b, c, d, e, f, g) \
257 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
258 { \
259 QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f, g); \
260 } \
261 SETUP_AND_COPY_QUAD_NEW(Type, quad_new);
262
263 #define CREATE_QUAD_7_ALL(Type, a, b, c, d, e, f, g) \
264 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
265 { \
266 QUAD_DATA quad_all->SetAll(shared_state, \
267 quad_rect, \
268 quad_opaque_rect, \
269 quad_visible_rect, \
270 needs_blending, \
271 a, \
272 b, \
273 c, \
274 d, \
275 e, \
276 f, \
277 g); \
278 } \
279 SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
280
281 #define CREATE_QUAD_8_NEW(Type, a, b, c, d, e, f, g, h) \
282 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
283 { \
284 QUAD_DATA quad_new->SetNew( \
285 shared_state, quad_rect, a, b, c, d, e, f, g, h); \
286 } \
287 SETUP_AND_COPY_QUAD_NEW(Type, quad_new);
288
289 #define CREATE_QUAD_8_ALL(Type, a, b, c, d, e, f, g, h) \
290 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
291 { \
292 QUAD_DATA quad_all->SetAll(shared_state, \
293 quad_rect, \
294 quad_opaque_rect, \
295 quad_visible_rect, \
296 needs_blending, \
297 a, \
298 b, \
299 c, \
300 d, \
301 e, \
302 f, \
303 g, \
304 h); \
305 } \
306 SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
307
308 #define CREATE_QUAD_9_NEW(Type, a, b, c, d, e, f, g, h, i) \
309 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
310 { \
311 QUAD_DATA quad_new->SetNew( \
312 shared_state, quad_rect, a, b, c, d, e, f, g, h, i); \
313 } \
314 SETUP_AND_COPY_QUAD_NEW(Type, quad_new);
315
316 #define CREATE_QUAD_9_ALL(Type, a, b, c, d, e, f, g, h, i) \
317 { \
318 QUAD_DATA quad_all->SetAll(shared_state, \
319 quad_rect, \
320 quad_opaque_rect, \
321 quad_visible_rect, \
322 needs_blending, \
323 a, \
324 b, \
325 c, \
326 d, \
327 e, \
328 f, \
329 g, \
330 h, \
331 i); \
332 } \
333 SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
334
335 #define CREATE_QUAD_10_NEW(Type, a, b, c, d, e, f, g, h, i, j) \
336 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
337 { \
338 QUAD_DATA quad_new->SetNew( \
339 shared_state, quad_rect, a, b, c, d, e, f, g, h, i, j); \
340 } \
341 SETUP_AND_COPY_QUAD_NEW(Type, quad_new);
342
343 #define CREATE_QUAD_ALL_RP(Type, a, b, c, d, e, f, g, copy_a) \
344 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
345 { \
346 QUAD_DATA quad_all->SetAll(shared_state, \
347 quad_rect, \
348 quad_opaque_rect, \
349 quad_visible_rect, \
350 needs_blending, \
351 a, \
352 b, \
353 c, \
354 d, \
355 e, \
356 f, \
357 g); \
358 } \
359 SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a);
360
361 #define CREATE_QUAD_NEW_RP(Type, a, b, c, d, e, f, g, h, copy_a) \
362 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
363 { \
364 QUAD_DATA quad_new->SetNew( \
365 shared_state, quad_rect, a, b, c, d, e, f, g, h); \
366 } \
367 SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a);
368
369 TEST(DrawQuadTest, CopyCheckerboardDrawQuad) {
370 gfx::Rect visible_rect(40, 50, 30, 20);
371 SkColor color = 0xfabb0011;
372 float scale = 2.3f;
373 CREATE_SHARED_STATE();
374
375 CREATE_QUAD_3_NEW(CheckerboardDrawQuad, visible_rect, color, scale);
376 EXPECT_EQ(DrawQuad::CHECKERBOARD, copy_quad->material);
377 EXPECT_EQ(visible_rect, copy_quad->visible_rect);
378 EXPECT_EQ(color, copy_quad->color);
379 EXPECT_EQ(scale, copy_quad->scale);
380
381 CREATE_QUAD_2_ALL(CheckerboardDrawQuad, color, scale);
382 EXPECT_EQ(DrawQuad::CHECKERBOARD, copy_quad->material);
383 EXPECT_EQ(color, copy_quad->color);
384 EXPECT_EQ(scale, copy_quad->scale);
385 }
386
387 TEST(DrawQuadTest, CopyDebugBorderDrawQuad) {
388 gfx::Rect visible_rect(40, 50, 30, 20);
389 SkColor color = 0xfabb0011;
390 int width = 99;
391 CREATE_SHARED_STATE();
392
393 CREATE_QUAD_3_NEW(DebugBorderDrawQuad, visible_rect, color, width);
394 EXPECT_EQ(DrawQuad::DEBUG_BORDER, copy_quad->material);
395 EXPECT_EQ(visible_rect, copy_quad->visible_rect);
396 EXPECT_EQ(color, copy_quad->color);
397 EXPECT_EQ(width, copy_quad->width);
398
399 CREATE_QUAD_2_ALL(DebugBorderDrawQuad, color, width);
400 EXPECT_EQ(DrawQuad::DEBUG_BORDER, copy_quad->material);
401 EXPECT_EQ(color, copy_quad->color);
402 EXPECT_EQ(width, copy_quad->width);
403 }
404
405 TEST(DrawQuadTest, CopyIOSurfaceDrawQuad) {
406 gfx::Rect opaque_rect(33, 47, 10, 12);
407 gfx::Rect visible_rect(40, 50, 30, 20);
408 gfx::Size size(58, 95);
409 ResourceProvider::ResourceId resource_id = 72;
410 IOSurfaceDrawQuad::Orientation orientation = IOSurfaceDrawQuad::UNFLIPPED;
411 CREATE_SHARED_STATE();
412
413 CREATE_QUAD_5_NEW(IOSurfaceDrawQuad,
414 opaque_rect,
415 visible_rect,
416 size,
417 resource_id,
418 orientation);
419 EXPECT_EQ(DrawQuad::IO_SURFACE_CONTENT, copy_quad->material);
420 EXPECT_EQ(visible_rect, copy_quad->visible_rect);
421 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect);
422 EXPECT_EQ(size, copy_quad->io_surface_size);
423 EXPECT_EQ(resource_id, copy_quad->io_surface_resource_id);
424 EXPECT_EQ(orientation, copy_quad->orientation);
425
426 CREATE_QUAD_3_ALL(IOSurfaceDrawQuad, size, resource_id, orientation);
427 EXPECT_EQ(DrawQuad::IO_SURFACE_CONTENT, copy_quad->material);
428 EXPECT_EQ(size, copy_quad->io_surface_size);
429 EXPECT_EQ(resource_id, copy_quad->io_surface_resource_id);
430 EXPECT_EQ(orientation, copy_quad->orientation);
431 }
432
433 TEST(DrawQuadTest, CopyRenderPassDrawQuad) {
434 gfx::Rect visible_rect(40, 50, 30, 20);
435 RenderPassId render_pass_id(22, 64);
436 ResourceProvider::ResourceId mask_resource_id = 78;
437 gfx::Vector2dF mask_uv_scale(33.f, 19.f);
438 gfx::Size mask_texture_size(128, 134);
439 FilterOperations filters;
440 filters.Append(FilterOperation::CreateBlurFilter(1.f));
441 gfx::Vector2dF filters_scale;
442 FilterOperations background_filters;
443 background_filters.Append(
444 FilterOperation::CreateGrayscaleFilter(1.f));
445
446 RenderPassId copied_render_pass_id(235, 11);
447 CREATE_SHARED_STATE();
448
449 CREATE_QUAD_NEW_RP(RenderPassDrawQuad,
450 visible_rect,
451 render_pass_id,
452 mask_resource_id,
453 mask_uv_scale,
454 mask_texture_size,
455 filters,
456 filters_scale,
457 background_filters,
458 copied_render_pass_id);
459 EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material);
460 EXPECT_EQ(visible_rect, copy_quad->visible_rect);
461 EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id);
462 EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id);
463 EXPECT_EQ(mask_uv_scale.ToString(), copy_quad->mask_uv_scale.ToString());
464 EXPECT_EQ(mask_texture_size.ToString(),
465 copy_quad->mask_texture_size.ToString());
466 EXPECT_EQ(filters, copy_quad->filters);
467 EXPECT_EQ(filters_scale, copy_quad->filters_scale);
468 EXPECT_EQ(background_filters, copy_quad->background_filters);
469
470 CREATE_QUAD_ALL_RP(RenderPassDrawQuad,
471 render_pass_id,
472 mask_resource_id,
473 mask_uv_scale,
474 mask_texture_size,
475 filters,
476 filters_scale,
477 background_filters,
478 copied_render_pass_id);
479 EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material);
480 EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id);
481 EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id);
482 EXPECT_EQ(mask_uv_scale.ToString(), copy_quad->mask_uv_scale.ToString());
483 EXPECT_EQ(mask_texture_size.ToString(),
484 copy_quad->mask_texture_size.ToString());
485 EXPECT_EQ(filters, copy_quad->filters);
486 EXPECT_EQ(filters_scale, copy_quad->filters_scale);
487 EXPECT_EQ(background_filters, copy_quad->background_filters);
488 }
489
490 TEST(DrawQuadTest, CopySolidColorDrawQuad) {
491 gfx::Rect visible_rect(40, 50, 30, 20);
492 SkColor color = 0x49494949;
493 bool force_anti_aliasing_off = false;
494 CREATE_SHARED_STATE();
495
496 CREATE_QUAD_3_NEW(
497 SolidColorDrawQuad, visible_rect, color, force_anti_aliasing_off);
498 EXPECT_EQ(DrawQuad::SOLID_COLOR, copy_quad->material);
499 EXPECT_EQ(visible_rect, copy_quad->visible_rect);
500 EXPECT_EQ(color, copy_quad->color);
501 EXPECT_EQ(force_anti_aliasing_off, copy_quad->force_anti_aliasing_off);
502
503 CREATE_QUAD_2_ALL(SolidColorDrawQuad, color, force_anti_aliasing_off);
504 EXPECT_EQ(DrawQuad::SOLID_COLOR, copy_quad->material);
505 EXPECT_EQ(color, copy_quad->color);
506 EXPECT_EQ(force_anti_aliasing_off, copy_quad->force_anti_aliasing_off);
507 }
508
509 TEST(DrawQuadTest, CopyStreamVideoDrawQuad) {
510 gfx::Rect opaque_rect(33, 47, 10, 12);
511 gfx::Rect visible_rect(40, 50, 30, 20);
512 ResourceProvider::ResourceId resource_id = 64;
513 gfx::Transform matrix = gfx::Transform(0.5, 0.25, 1, 0.75, 0, 1);
514 CREATE_SHARED_STATE();
515
516 CREATE_QUAD_4_NEW(
517 StreamVideoDrawQuad, opaque_rect, visible_rect, resource_id, matrix);
518 EXPECT_EQ(DrawQuad::STREAM_VIDEO_CONTENT, copy_quad->material);
519 EXPECT_EQ(visible_rect, copy_quad->visible_rect);
520 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect);
521 EXPECT_EQ(resource_id, copy_quad->resource_id);
522 EXPECT_EQ(matrix, copy_quad->matrix);
523
524 CREATE_QUAD_2_ALL(StreamVideoDrawQuad, resource_id, matrix);
525 EXPECT_EQ(DrawQuad::STREAM_VIDEO_CONTENT, copy_quad->material);
526 EXPECT_EQ(resource_id, copy_quad->resource_id);
527 EXPECT_EQ(matrix, copy_quad->matrix);
528 }
529
530 TEST(DrawQuadTest, CopySurfaceDrawQuad) {
531 gfx::Rect visible_rect(40, 50, 30, 20);
532 SurfaceId surface_id(1234);
533 CREATE_SHARED_STATE();
534
535 CREATE_QUAD_2_NEW(SurfaceDrawQuad, visible_rect, surface_id);
536 EXPECT_EQ(DrawQuad::SURFACE_CONTENT, copy_quad->material);
537 EXPECT_EQ(visible_rect, copy_quad->visible_rect);
538 EXPECT_EQ(surface_id, copy_quad->surface_id);
539
540 CREATE_QUAD_1_ALL(SurfaceDrawQuad, surface_id);
541 EXPECT_EQ(DrawQuad::SURFACE_CONTENT, copy_quad->material);
542 EXPECT_EQ(surface_id, copy_quad->surface_id);
543 }
544
545
546 TEST(DrawQuadTest, CopyTextureDrawQuad) {
547 gfx::Rect opaque_rect(33, 47, 10, 12);
548 gfx::Rect visible_rect(40, 50, 30, 20);
549 unsigned resource_id = 82;
550 bool premultiplied_alpha = true;
551 gfx::PointF uv_top_left(0.5f, 224.f);
552 gfx::PointF uv_bottom_right(51.5f, 260.f);
553 const float vertex_opacity[] = { 1.0f, 1.0f, 1.0f, 1.0f };
554 bool flipped = true;
555 bool nearest_neighbor = true;
556 CREATE_SHARED_STATE();
557
558 CREATE_QUAD_10_NEW(TextureDrawQuad,
559 opaque_rect,
560 visible_rect,
561 resource_id,
562 premultiplied_alpha,
563 uv_top_left,
564 uv_bottom_right,
565 SK_ColorTRANSPARENT,
566 vertex_opacity,
567 flipped,
568 nearest_neighbor);
569 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, copy_quad->material);
570 EXPECT_EQ(visible_rect, copy_quad->visible_rect);
571 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect);
572 EXPECT_EQ(resource_id, copy_quad->resource_id);
573 EXPECT_EQ(premultiplied_alpha, copy_quad->premultiplied_alpha);
574 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left);
575 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right);
576 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity, copy_quad->vertex_opacity, 4);
577 EXPECT_EQ(flipped, copy_quad->flipped);
578 EXPECT_EQ(nearest_neighbor, copy_quad->nearest_neighbor);
579
580 CREATE_QUAD_8_ALL(TextureDrawQuad,
581 resource_id,
582 premultiplied_alpha,
583 uv_top_left,
584 uv_bottom_right,
585 SK_ColorTRANSPARENT,
586 vertex_opacity,
587 flipped,
588 nearest_neighbor);
589 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, copy_quad->material);
590 EXPECT_EQ(resource_id, copy_quad->resource_id);
591 EXPECT_EQ(premultiplied_alpha, copy_quad->premultiplied_alpha);
592 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left);
593 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right);
594 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity, copy_quad->vertex_opacity, 4);
595 EXPECT_EQ(flipped, copy_quad->flipped);
596 EXPECT_EQ(nearest_neighbor, copy_quad->nearest_neighbor);
597 }
598
599 TEST(DrawQuadTest, CopyTileDrawQuad) {
600 gfx::Rect opaque_rect(33, 44, 22, 33);
601 gfx::Rect visible_rect(40, 50, 30, 20);
602 unsigned resource_id = 104;
603 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f);
604 gfx::Size texture_size(85, 32);
605 bool swizzle_contents = true;
606 bool nearest_neighbor = true;
607 CREATE_SHARED_STATE();
608
609 CREATE_QUAD_7_NEW(TileDrawQuad,
610 opaque_rect,
611 visible_rect,
612 resource_id,
613 tex_coord_rect,
614 texture_size,
615 swizzle_contents,
616 nearest_neighbor);
617 EXPECT_EQ(DrawQuad::TILED_CONTENT, copy_quad->material);
618 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect);
619 EXPECT_EQ(visible_rect, copy_quad->visible_rect);
620 EXPECT_EQ(resource_id, copy_quad->resource_id);
621 EXPECT_EQ(tex_coord_rect, copy_quad->tex_coord_rect);
622 EXPECT_EQ(texture_size, copy_quad->texture_size);
623 EXPECT_EQ(swizzle_contents, copy_quad->swizzle_contents);
624 EXPECT_EQ(nearest_neighbor, copy_quad->nearest_neighbor);
625
626 CREATE_QUAD_5_ALL(TileDrawQuad,
627 resource_id,
628 tex_coord_rect,
629 texture_size,
630 swizzle_contents,
631 nearest_neighbor);
632 EXPECT_EQ(DrawQuad::TILED_CONTENT, copy_quad->material);
633 EXPECT_EQ(resource_id, copy_quad->resource_id);
634 EXPECT_EQ(tex_coord_rect, copy_quad->tex_coord_rect);
635 EXPECT_EQ(texture_size, copy_quad->texture_size);
636 EXPECT_EQ(swizzle_contents, copy_quad->swizzle_contents);
637 EXPECT_EQ(nearest_neighbor, copy_quad->nearest_neighbor);
638 }
639
640 TEST(DrawQuadTest, CopyYUVVideoDrawQuad) {
641 gfx::Rect opaque_rect(33, 47, 10, 12);
642 gfx::Rect visible_rect(40, 50, 30, 20);
643 gfx::RectF tex_coord_rect(0.0f, 0.0f, 0.75f, 0.5f);
644 gfx::Size tex_size(32, 68);
645 ResourceProvider::ResourceId y_plane_resource_id = 45;
646 ResourceProvider::ResourceId u_plane_resource_id = 532;
647 ResourceProvider::ResourceId v_plane_resource_id = 4;
648 ResourceProvider::ResourceId a_plane_resource_id = 63;
649 YUVVideoDrawQuad::ColorSpace color_space = YUVVideoDrawQuad::JPEG;
650 CREATE_SHARED_STATE();
651
652 CREATE_QUAD_9_NEW(YUVVideoDrawQuad, opaque_rect, visible_rect, tex_coord_rect,
653 tex_size, y_plane_resource_id, u_plane_resource_id,
654 v_plane_resource_id, a_plane_resource_id, color_space);
655 EXPECT_EQ(DrawQuad::YUV_VIDEO_CONTENT, copy_quad->material);
656 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect);
657 EXPECT_EQ(visible_rect, copy_quad->visible_rect);
658 EXPECT_EQ(tex_coord_rect, copy_quad->tex_coord_rect);
659 EXPECT_EQ(tex_size, copy_quad->tex_size);
660 EXPECT_EQ(y_plane_resource_id, copy_quad->y_plane_resource_id);
661 EXPECT_EQ(u_plane_resource_id, copy_quad->u_plane_resource_id);
662 EXPECT_EQ(v_plane_resource_id, copy_quad->v_plane_resource_id);
663 EXPECT_EQ(a_plane_resource_id, copy_quad->a_plane_resource_id);
664 EXPECT_EQ(color_space, copy_quad->color_space);
665
666 CREATE_QUAD_7_ALL(YUVVideoDrawQuad, tex_coord_rect, tex_size,
667 y_plane_resource_id, u_plane_resource_id,
668 v_plane_resource_id, a_plane_resource_id, color_space);
669 EXPECT_EQ(DrawQuad::YUV_VIDEO_CONTENT, copy_quad->material);
670 EXPECT_EQ(tex_coord_rect, copy_quad->tex_coord_rect);
671 EXPECT_EQ(tex_size, copy_quad->tex_size);
672 EXPECT_EQ(y_plane_resource_id, copy_quad->y_plane_resource_id);
673 EXPECT_EQ(u_plane_resource_id, copy_quad->u_plane_resource_id);
674 EXPECT_EQ(v_plane_resource_id, copy_quad->v_plane_resource_id);
675 EXPECT_EQ(a_plane_resource_id, copy_quad->a_plane_resource_id);
676 EXPECT_EQ(color_space, copy_quad->color_space);
677 }
678
679 TEST(DrawQuadTest, CopyPictureDrawQuad) {
680 gfx::Rect opaque_rect(33, 44, 22, 33);
681 gfx::Rect visible_rect(40, 50, 30, 20);
682 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f);
683 gfx::Size texture_size(85, 32);
684 bool nearest_neighbor = true;
685 ResourceFormat texture_format = RGBA_8888;
686 gfx::Rect content_rect(30, 40, 20, 30);
687 float contents_scale = 3.141592f;
688 scoped_refptr<RasterSource> raster_source =
689 FakePicturePileImpl::CreateEmptyPile(gfx::Size(100, 100),
690 gfx::Size(100, 100));
691 CREATE_SHARED_STATE();
692
693 CREATE_QUAD_9_NEW(PictureDrawQuad, opaque_rect, visible_rect, tex_coord_rect,
694 texture_size, nearest_neighbor, texture_format,
695 content_rect, contents_scale, raster_source);
696 EXPECT_EQ(DrawQuad::PICTURE_CONTENT, copy_quad->material);
697 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect);
698 EXPECT_EQ(visible_rect, copy_quad->visible_rect);
699 EXPECT_EQ(tex_coord_rect, copy_quad->tex_coord_rect);
700 EXPECT_EQ(texture_size, copy_quad->texture_size);
701 EXPECT_EQ(nearest_neighbor, copy_quad->nearest_neighbor);
702 EXPECT_EQ(texture_format, copy_quad->texture_format);
703 EXPECT_EQ(content_rect, copy_quad->content_rect);
704 EXPECT_EQ(contents_scale, copy_quad->contents_scale);
705 EXPECT_EQ(raster_source, copy_quad->raster_source);
706
707 CREATE_QUAD_7_ALL(PictureDrawQuad, tex_coord_rect, texture_size,
708 nearest_neighbor, texture_format, content_rect,
709 contents_scale, raster_source);
710 EXPECT_EQ(DrawQuad::PICTURE_CONTENT, copy_quad->material);
711 EXPECT_EQ(tex_coord_rect, copy_quad->tex_coord_rect);
712 EXPECT_EQ(texture_size, copy_quad->texture_size);
713 EXPECT_EQ(nearest_neighbor, copy_quad->nearest_neighbor);
714 EXPECT_EQ(texture_format, copy_quad->texture_format);
715 EXPECT_EQ(content_rect, copy_quad->content_rect);
716 EXPECT_EQ(contents_scale, copy_quad->contents_scale);
717 EXPECT_EQ(raster_source, copy_quad->raster_source);
718 }
719
720 class DrawQuadIteratorTest : public testing::Test {
721 protected:
722 ResourceProvider::ResourceId IncrementResourceId(
723 ResourceProvider::ResourceId id) {
724 ++num_resources_;
725 return id + 1;
726 }
727
728 int IterateAndCount(DrawQuad* quad) {
729 num_resources_ = 0;
730 quad->IterateResources(base::Bind(
731 &DrawQuadIteratorTest::IncrementResourceId, base::Unretained(this)));
732 return num_resources_;
733 }
734
735 private:
736 int num_resources_;
737 };
738
739 TEST_F(DrawQuadIteratorTest, CheckerboardDrawQuad) {
740 gfx::Rect visible_rect(40, 50, 30, 20);
741 SkColor color = 0xfabb0011;
742 float scale = 3.2f;
743
744 CREATE_SHARED_STATE();
745 CREATE_QUAD_3_NEW(CheckerboardDrawQuad, visible_rect, color, scale);
746 EXPECT_EQ(0, IterateAndCount(quad_new));
747 }
748
749 TEST_F(DrawQuadIteratorTest, DebugBorderDrawQuad) {
750 gfx::Rect visible_rect(40, 50, 30, 20);
751 SkColor color = 0xfabb0011;
752 int width = 99;
753
754 CREATE_SHARED_STATE();
755 CREATE_QUAD_3_NEW(DebugBorderDrawQuad, visible_rect, color, width);
756 EXPECT_EQ(0, IterateAndCount(quad_new));
757 }
758
759 TEST_F(DrawQuadIteratorTest, IOSurfaceDrawQuad) {
760 gfx::Rect opaque_rect(33, 47, 10, 12);
761 gfx::Rect visible_rect(40, 50, 30, 20);
762 gfx::Size size(58, 95);
763 ResourceProvider::ResourceId resource_id = 72;
764 IOSurfaceDrawQuad::Orientation orientation = IOSurfaceDrawQuad::UNFLIPPED;
765
766 CREATE_SHARED_STATE();
767 CREATE_QUAD_5_NEW(IOSurfaceDrawQuad,
768 opaque_rect,
769 visible_rect,
770 size,
771 resource_id,
772 orientation);
773 EXPECT_EQ(resource_id, quad_new->io_surface_resource_id);
774 EXPECT_EQ(1, IterateAndCount(quad_new));
775 EXPECT_EQ(resource_id + 1, quad_new->io_surface_resource_id);
776 }
777
778 TEST_F(DrawQuadIteratorTest, RenderPassDrawQuad) {
779 gfx::Rect visible_rect(40, 50, 30, 20);
780 RenderPassId render_pass_id(22, 64);
781 ResourceProvider::ResourceId mask_resource_id = 78;
782 gfx::Vector2dF mask_uv_scale(33.f, 19.f);
783 gfx::Size mask_texture_size(128, 134);
784 FilterOperations filters;
785 filters.Append(FilterOperation::CreateBlurFilter(1.f));
786 gfx::Vector2dF filters_scale(2.f, 3.f);
787 FilterOperations background_filters;
788 background_filters.Append(
789 FilterOperation::CreateGrayscaleFilter(1.f));
790
791 RenderPassId copied_render_pass_id(235, 11);
792
793 CREATE_SHARED_STATE();
794 CREATE_QUAD_NEW_RP(RenderPassDrawQuad,
795 visible_rect,
796 render_pass_id,
797 mask_resource_id,
798 mask_uv_scale,
799 mask_texture_size,
800 filters,
801 filters_scale,
802 background_filters,
803 copied_render_pass_id);
804 EXPECT_EQ(mask_resource_id, quad_new->mask_resource_id);
805 EXPECT_EQ(1, IterateAndCount(quad_new));
806 EXPECT_EQ(mask_resource_id + 1, quad_new->mask_resource_id);
807 quad_new->mask_resource_id = 0;
808 EXPECT_EQ(0, IterateAndCount(quad_new));
809 EXPECT_EQ(0u, quad_new->mask_resource_id);
810 }
811
812 TEST_F(DrawQuadIteratorTest, SolidColorDrawQuad) {
813 gfx::Rect visible_rect(40, 50, 30, 20);
814 SkColor color = 0x49494949;
815 bool force_anti_aliasing_off = false;
816
817 CREATE_SHARED_STATE();
818 CREATE_QUAD_3_NEW(
819 SolidColorDrawQuad, visible_rect, color, force_anti_aliasing_off);
820 EXPECT_EQ(0, IterateAndCount(quad_new));
821 }
822
823 TEST_F(DrawQuadIteratorTest, StreamVideoDrawQuad) {
824 gfx::Rect opaque_rect(33, 47, 10, 12);
825 gfx::Rect visible_rect(40, 50, 30, 20);
826 ResourceProvider::ResourceId resource_id = 64;
827 gfx::Transform matrix = gfx::Transform(0.5, 0.25, 1, 0.75, 0, 1);
828
829 CREATE_SHARED_STATE();
830 CREATE_QUAD_4_NEW(
831 StreamVideoDrawQuad, opaque_rect, visible_rect, resource_id, matrix);
832 EXPECT_EQ(resource_id, quad_new->resource_id);
833 EXPECT_EQ(1, IterateAndCount(quad_new));
834 EXPECT_EQ(resource_id + 1, quad_new->resource_id);
835 }
836
837 TEST_F(DrawQuadIteratorTest, SurfaceDrawQuad) {
838 gfx::Rect visible_rect(40, 50, 30, 20);
839 SurfaceId surface_id(4321);
840
841 CREATE_SHARED_STATE();
842 CREATE_QUAD_2_NEW(SurfaceDrawQuad, visible_rect, surface_id);
843 EXPECT_EQ(0, IterateAndCount(quad_new));
844 }
845
846 TEST_F(DrawQuadIteratorTest, TextureDrawQuad) {
847 gfx::Rect opaque_rect(33, 47, 10, 12);
848 gfx::Rect visible_rect(40, 50, 30, 20);
849 unsigned resource_id = 82;
850 bool premultiplied_alpha = true;
851 gfx::PointF uv_top_left(0.5f, 224.f);
852 gfx::PointF uv_bottom_right(51.5f, 260.f);
853 const float vertex_opacity[] = { 1.0f, 1.0f, 1.0f, 1.0f };
854 bool flipped = true;
855 bool nearest_neighbor = true;
856
857 CREATE_SHARED_STATE();
858 CREATE_QUAD_10_NEW(TextureDrawQuad,
859 opaque_rect,
860 visible_rect,
861 resource_id,
862 premultiplied_alpha,
863 uv_top_left,
864 uv_bottom_right,
865 SK_ColorTRANSPARENT,
866 vertex_opacity,
867 flipped,
868 nearest_neighbor);
869 EXPECT_EQ(resource_id, quad_new->resource_id);
870 EXPECT_EQ(1, IterateAndCount(quad_new));
871 EXPECT_EQ(resource_id + 1, quad_new->resource_id);
872 }
873
874 TEST_F(DrawQuadIteratorTest, TileDrawQuad) {
875 gfx::Rect opaque_rect(33, 44, 22, 33);
876 gfx::Rect visible_rect(40, 50, 30, 20);
877 unsigned resource_id = 104;
878 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f);
879 gfx::Size texture_size(85, 32);
880 bool swizzle_contents = true;
881 bool nearest_neighbor = true;
882
883 CREATE_SHARED_STATE();
884 CREATE_QUAD_7_NEW(TileDrawQuad,
885 opaque_rect,
886 visible_rect,
887 resource_id,
888 tex_coord_rect,
889 texture_size,
890 swizzle_contents,
891 nearest_neighbor);
892 EXPECT_EQ(resource_id, quad_new->resource_id);
893 EXPECT_EQ(1, IterateAndCount(quad_new));
894 EXPECT_EQ(resource_id + 1, quad_new->resource_id);
895 }
896
897 TEST_F(DrawQuadIteratorTest, YUVVideoDrawQuad) {
898 gfx::Rect opaque_rect(33, 47, 10, 12);
899 gfx::Rect visible_rect(40, 50, 30, 20);
900 gfx::RectF tex_coord_rect(0.0f, 0.0f, 0.75f, 0.5f);
901 gfx::Size tex_size(32, 68);
902 ResourceProvider::ResourceId y_plane_resource_id = 45;
903 ResourceProvider::ResourceId u_plane_resource_id = 532;
904 ResourceProvider::ResourceId v_plane_resource_id = 4;
905 ResourceProvider::ResourceId a_plane_resource_id = 63;
906 YUVVideoDrawQuad::ColorSpace color_space = YUVVideoDrawQuad::JPEG;
907
908 CREATE_SHARED_STATE();
909 CREATE_QUAD_9_NEW(YUVVideoDrawQuad, opaque_rect, visible_rect, tex_coord_rect,
910 tex_size, y_plane_resource_id, u_plane_resource_id,
911 v_plane_resource_id, a_plane_resource_id, color_space);
912 EXPECT_EQ(DrawQuad::YUV_VIDEO_CONTENT, copy_quad->material);
913 EXPECT_EQ(y_plane_resource_id, quad_new->y_plane_resource_id);
914 EXPECT_EQ(u_plane_resource_id, quad_new->u_plane_resource_id);
915 EXPECT_EQ(v_plane_resource_id, quad_new->v_plane_resource_id);
916 EXPECT_EQ(a_plane_resource_id, quad_new->a_plane_resource_id);
917 EXPECT_EQ(color_space, quad_new->color_space);
918 EXPECT_EQ(4, IterateAndCount(quad_new));
919 EXPECT_EQ(y_plane_resource_id + 1, quad_new->y_plane_resource_id);
920 EXPECT_EQ(u_plane_resource_id + 1, quad_new->u_plane_resource_id);
921 EXPECT_EQ(v_plane_resource_id + 1, quad_new->v_plane_resource_id);
922 EXPECT_EQ(a_plane_resource_id + 1, quad_new->a_plane_resource_id);
923 }
924
925 // Disabled until picture draw quad is supported for ubercomp: crbug.com/231715
926 TEST_F(DrawQuadIteratorTest, DISABLED_PictureDrawQuad) {
927 gfx::Rect opaque_rect(33, 44, 22, 33);
928 gfx::Rect visible_rect(40, 50, 30, 20);
929 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f);
930 gfx::Size texture_size(85, 32);
931 bool nearest_neighbor = true;
932 ResourceFormat texture_format = RGBA_8888;
933 gfx::Rect content_rect(30, 40, 20, 30);
934 float contents_scale = 3.141592f;
935 scoped_refptr<RasterSource> raster_source =
936 FakePicturePileImpl::CreateEmptyPile(gfx::Size(100, 100),
937 gfx::Size(100, 100));
938
939 CREATE_SHARED_STATE();
940 CREATE_QUAD_9_NEW(PictureDrawQuad, opaque_rect, visible_rect, tex_coord_rect,
941 texture_size, nearest_neighbor, texture_format,
942 content_rect, contents_scale, raster_source);
943 EXPECT_EQ(0, IterateAndCount(quad_new));
944 }
945
946 TEST(DrawQuadTest, LargestQuadType) {
947 size_t largest = 0;
948
949 for (int i = 0; i <= DrawQuad::MATERIAL_LAST; ++i) {
950 switch (static_cast<DrawQuad::Material>(i)) {
951 case DrawQuad::CHECKERBOARD:
952 largest = std::max(largest, sizeof(CheckerboardDrawQuad));
953 break;
954 case DrawQuad::DEBUG_BORDER:
955 largest = std::max(largest, sizeof(DebugBorderDrawQuad));
956 break;
957 case DrawQuad::IO_SURFACE_CONTENT:
958 largest = std::max(largest, sizeof(IOSurfaceDrawQuad));
959 break;
960 case DrawQuad::PICTURE_CONTENT:
961 largest = std::max(largest, sizeof(PictureDrawQuad));
962 break;
963 case DrawQuad::TEXTURE_CONTENT:
964 largest = std::max(largest, sizeof(TextureDrawQuad));
965 break;
966 case DrawQuad::RENDER_PASS:
967 largest = std::max(largest, sizeof(RenderPassDrawQuad));
968 break;
969 case DrawQuad::SOLID_COLOR:
970 largest = std::max(largest, sizeof(SolidColorDrawQuad));
971 break;
972 case DrawQuad::SURFACE_CONTENT:
973 largest = std::max(largest, sizeof(SurfaceDrawQuad));
974 break;
975 case DrawQuad::TILED_CONTENT:
976 largest = std::max(largest, sizeof(TileDrawQuad));
977 break;
978 case DrawQuad::STREAM_VIDEO_CONTENT:
979 largest = std::max(largest, sizeof(StreamVideoDrawQuad));
980 break;
981 case DrawQuad::YUV_VIDEO_CONTENT:
982 largest = std::max(largest, sizeof(YUVVideoDrawQuad));
983 break;
984 case DrawQuad::INVALID:
985 break;
986 }
987 }
988 EXPECT_EQ(LargestDrawQuadSize(), largest);
989
990 if (!HasFailure())
991 return;
992
993 // On failure, output the size of all quads for debugging.
994 LOG(ERROR) << "largest " << largest;
995 LOG(ERROR) << "kLargestDrawQuad " << LargestDrawQuadSize();
996 for (int i = 0; i <= DrawQuad::MATERIAL_LAST; ++i) {
997 switch (static_cast<DrawQuad::Material>(i)) {
998 case DrawQuad::CHECKERBOARD:
999 LOG(ERROR) << "CheckerboardDrawQuad " << sizeof(CheckerboardDrawQuad);
1000 break;
1001 case DrawQuad::DEBUG_BORDER:
1002 LOG(ERROR) << "DebugBorderDrawQuad " << sizeof(DebugBorderDrawQuad);
1003 break;
1004 case DrawQuad::IO_SURFACE_CONTENT:
1005 LOG(ERROR) << "IOSurfaceDrawQuad " << sizeof(IOSurfaceDrawQuad);
1006 break;
1007 case DrawQuad::PICTURE_CONTENT:
1008 LOG(ERROR) << "PictureDrawQuad " << sizeof(PictureDrawQuad);
1009 break;
1010 case DrawQuad::TEXTURE_CONTENT:
1011 LOG(ERROR) << "TextureDrawQuad " << sizeof(TextureDrawQuad);
1012 break;
1013 case DrawQuad::RENDER_PASS:
1014 LOG(ERROR) << "RenderPassDrawQuad " << sizeof(RenderPassDrawQuad);
1015 break;
1016 case DrawQuad::SOLID_COLOR:
1017 LOG(ERROR) << "SolidColorDrawQuad " << sizeof(SolidColorDrawQuad);
1018 break;
1019 case DrawQuad::SURFACE_CONTENT:
1020 LOG(ERROR) << "SurfaceDrawQuad " << sizeof(SurfaceDrawQuad);
1021 break;
1022 case DrawQuad::TILED_CONTENT:
1023 LOG(ERROR) << "TileDrawQuad " << sizeof(TileDrawQuad);
1024 break;
1025 case DrawQuad::STREAM_VIDEO_CONTENT:
1026 LOG(ERROR) << "StreamVideoDrawQuad " << sizeof(StreamVideoDrawQuad);
1027 break;
1028 case DrawQuad::YUV_VIDEO_CONTENT:
1029 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad);
1030 break;
1031 case DrawQuad::INVALID:
1032 break;
1033 }
1034 }
1035 }
1036
1037 } // namespace
1038 } // namespace cc
OLDNEW
« no previous file with comments | « cc/quads/draw_quad.cc ('k') | cc/quads/io_surface_draw_quad.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698