render_pass_test_common.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// Copyright 2012 The Chromium Authors. All rights reserved.
2c83ed049af2a2ed7ab94b8206fc0fec4da7e26dbDouglas Gregor// Use of this source code is governed by a BSD-style license that can be
3b5a57a69e5fdac6dd9a92be717e279486c4a0128Sebastian Redl// found in the LICENSE file.
4b5a57a69e5fdac6dd9a92be717e279486c4a0128Sebastian Redl
54c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl#include "cc/test/render_pass_test_common.h"
64c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl
74c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl#include "cc/quads/checkerboard_draw_quad.h"
83cb069213c8502dbb7a67860d40122d869ed8fd6Sebastian Redl#include "cc/quads/debug_border_draw_quad.h"
93cb069213c8502dbb7a67860d40122d869ed8fd6Sebastian Redl#include "cc/quads/io_surface_draw_quad.h"
104c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl#include "cc/quads/render_pass_draw_quad.h"
117c2342dd4c9947806842e5aca3d2bb2e542853c9John McCall#include "cc/quads/shared_quad_state.h"
12636a7c42d42800f69caadcdea433312fd642a4b3Sebastian Redl#include "cc/quads/solid_color_draw_quad.h"
13636a7c42d42800f69caadcdea433312fd642a4b3Sebastian Redl#include "cc/quads/stream_video_draw_quad.h"
14636a7c42d42800f69caadcdea433312fd642a4b3Sebastian Redl#include "cc/quads/texture_draw_quad.h"
159afe1308ed19dffc281dca5cfbe521826754980fSebastian Redl#include "cc/quads/tile_draw_quad.h"
16636a7c42d42800f69caadcdea433312fd642a4b3Sebastian Redl#include "cc/quads/yuv_video_draw_quad.h"
177f6623914e779e41eb3d85f9a2dc3affea5de1e8Sebastian Redl#include "cc/resources/resource_provider.h"
187f6623914e779e41eb3d85f9a2dc3affea5de1e8Sebastian Redl#include "ui/gfx/transform.h"
197f6623914e779e41eb3d85f9a2dc3affea5de1e8Sebastian Redl
204c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redlnamespace cc {
216e790ab61bf4835944971955e84279112833ef0cDouglas Gregor
226e790ab61bf4835944971955e84279112833ef0cDouglas Gregorvoid TestRenderPass::AppendQuad(scoped_ptr<cc::DrawQuad> quad) {
233cb069213c8502dbb7a67860d40122d869ed8fd6Sebastian Redl  quad_list.push_back(quad.Pass());
243cb069213c8502dbb7a67860d40122d869ed8fd6Sebastian Redl}
25fc27d268cb34cbb8d186c6ad7cc043d41581ce71Anders Carlsson
26b5a57a69e5fdac6dd9a92be717e279486c4a0128Sebastian Redlvoid TestRenderPass::AppendSharedQuadState(
273caf04ea0c01ff6822209c4621c3fa64a48029a4Douglas Gregor    scoped_ptr<cc::SharedQuadState> state) {
283caf04ea0c01ff6822209c4621c3fa64a48029a4Douglas Gregor  shared_quad_state_list.push_back(state.Pass());
294c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl}
304c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl
314c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redlvoid TestRenderPass::AppendOneOfEveryQuadType(
324c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl    cc::ResourceProvider* resource_provider, RenderPass::Id child_pass) {
334c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl  gfx::Rect rect(0, 0, 100, 100);
344c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl  gfx::Rect opaque_rect(10, 10, 80, 80);
354c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl  const float vertex_opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
364c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl  cc::ResourceProvider::ResourceId texture_resource =
37cee63fbf0e64ac526582312bf8cf33263fc5c16eSebastian Redl      resource_provider->CreateResource(
384c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl          gfx::Size(20, 12),
394c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl          resource_provider->best_texture_format(),
404c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl          ResourceProvider::TextureUsageAny);
41fb4ccd7152723ac6190eb379250cfe7516cfd1b8Sebastian Redl  resource_provider->AllocateForTesting(texture_resource);
42636a7c42d42800f69caadcdea433312fd642a4b3Sebastian Redl  unsigned texture_id = ResourceProvider::ScopedReadLockGL(
435d64e5b6bc03462e8b7d0cd804565829afb1b508Douglas Gregor      resource_provider, texture_resource).texture_id();
44fc27d268cb34cbb8d186c6ad7cc043d41581ce71Anders Carlsson  cc::ResourceProvider::ResourceId resource1 =
45fc27d268cb34cbb8d186c6ad7cc043d41581ce71Anders Carlsson      resource_provider->CreateResource(
46ac18b2e3af8d0c5304f74e362a1d4207363e4c94Anders Carlsson          gfx::Size(45, 5),
47ac18b2e3af8d0c5304f74e362a1d4207363e4c94Anders Carlsson          resource_provider->best_texture_format(),
483caf04ea0c01ff6822209c4621c3fa64a48029a4Douglas Gregor          ResourceProvider::TextureUsageAny);
493caf04ea0c01ff6822209c4621c3fa64a48029a4Douglas Gregor  resource_provider->AllocateForTesting(resource1);
503caf04ea0c01ff6822209c4621c3fa64a48029a4Douglas Gregor  cc::ResourceProvider::ResourceId resource2 =
513caf04ea0c01ff6822209c4621c3fa64a48029a4Douglas Gregor      resource_provider->CreateResource(
523caf04ea0c01ff6822209c4621c3fa64a48029a4Douglas Gregor          gfx::Size(346, 61),
533caf04ea0c01ff6822209c4621c3fa64a48029a4Douglas Gregor          resource_provider->best_texture_format(),
543caf04ea0c01ff6822209c4621c3fa64a48029a4Douglas Gregor          ResourceProvider::TextureUsageAny);
553caf04ea0c01ff6822209c4621c3fa64a48029a4Douglas Gregor  resource_provider->AllocateForTesting(resource2);
564c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl  cc::ResourceProvider::ResourceId resource3 =
574c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl      resource_provider->CreateResource(
58e7450f5dbd5bed63b8ef9db86350a8fc3db011e8Douglas Gregor          gfx::Size(12, 134),
59e7450f5dbd5bed63b8ef9db86350a8fc3db011e8Douglas Gregor          resource_provider->best_texture_format(),
60e7450f5dbd5bed63b8ef9db86350a8fc3db011e8Douglas Gregor          ResourceProvider::TextureUsageAny);
61e7450f5dbd5bed63b8ef9db86350a8fc3db011e8Douglas Gregor  resource_provider->AllocateForTesting(resource3);
62c83ed049af2a2ed7ab94b8206fc0fec4da7e26dbDouglas Gregor  cc::ResourceProvider::ResourceId resource4 =
634c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl      resource_provider->CreateResource(
644c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl          gfx::Size(56, 12),
654c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl          resource_provider->best_texture_format(),
664c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl          ResourceProvider::TextureUsageAny);
674c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl  resource_provider->AllocateForTesting(resource4);
68cee63fbf0e64ac526582312bf8cf33263fc5c16eSebastian Redl  cc::ResourceProvider::ResourceId resource5 =
694c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl      resource_provider->CreateResource(
704c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl          gfx::Size(73, 26),
714bd40318cbea15310a37343db46de96c4fcc15e6Douglas Gregor          resource_provider->best_texture_format(),
727c2342dd4c9947806842e5aca3d2bb2e542853c9John McCall          ResourceProvider::TextureUsageAny);
7399a2e600f9e2e51d3ce10fb6f27191677ac65b2aDouglas Gregor  resource_provider->AllocateForTesting(resource5);
744c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl
757c2342dd4c9947806842e5aca3d2bb2e542853c9John McCall  scoped_ptr<cc::SharedQuadState> shared_state = cc::SharedQuadState::Create();
7658f9e13e87e57236fee4b914eea9be6f92a1c345Chris Lattner  shared_state->SetAll(gfx::Transform(),
77a729bbb739ca97a8dc52b6b0495725590a0367dcAnders Carlsson                       rect.size(),
78cee63fbf0e64ac526582312bf8cf33263fc5c16eSebastian Redl                       rect,
79cee63fbf0e64ac526582312bf8cf33263fc5c16eSebastian Redl                       rect,
807c2342dd4c9947806842e5aca3d2bb2e542853c9John McCall                       false,
81fb4ccd7152723ac6190eb379250cfe7516cfd1b8Sebastian Redl                       1);
82b5a57a69e5fdac6dd9a92be717e279486c4a0128Sebastian Redl
837f6623914e779e41eb3d85f9a2dc3affea5de1e8Sebastian Redl  scoped_ptr<cc::CheckerboardDrawQuad> checkerboard_quad =
84636a7c42d42800f69caadcdea433312fd642a4b3Sebastian Redl      cc::CheckerboardDrawQuad::Create();
85636a7c42d42800f69caadcdea433312fd642a4b3Sebastian Redl  checkerboard_quad->SetNew(shared_state.get(),
869afe1308ed19dffc281dca5cfbe521826754980fSebastian Redl                            rect,
879afe1308ed19dffc281dca5cfbe521826754980fSebastian Redl                            SK_ColorRED);
8800e68e2cc5ce37cb95beb801cae73c0d1e9dda37Sebastian Redl  AppendQuad(checkerboard_quad.PassAs<DrawQuad>());
8900e68e2cc5ce37cb95beb801cae73c0d1e9dda37Sebastian Redl
904c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl  scoped_ptr<cc::DebugBorderDrawQuad> debug_border_quad =
914c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl      cc::DebugBorderDrawQuad::Create();
924c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl  debug_border_quad->SetNew(shared_state.get(),
934c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl                            rect,
944c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl                            SK_ColorRED,
954c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl                            1);
964c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl  AppendQuad(debug_border_quad.PassAs<DrawQuad>());
974c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl
98fb4ccd7152723ac6190eb379250cfe7516cfd1b8Sebastian Redl  scoped_ptr<cc::IOSurfaceDrawQuad> io_surface_quad =
994c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl      cc::IOSurfaceDrawQuad::Create();
1004c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl  io_surface_quad->SetNew(shared_state.get(),
1014c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl                          rect,
1024c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl                          opaque_rect,
1034c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl                          gfx::Size(50, 50),
1044c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl                          texture_id,
10528eb7e992b9a266abb300da25b6d3c1557cec361Chris Lattner                          cc::IOSurfaceDrawQuad::FLIPPED);
10694a615718d06704816c6e31a811f823c05e39f52Douglas Gregor  AppendQuad(io_surface_quad.PassAs<DrawQuad>());
1074c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl
108fb4ccd7152723ac6190eb379250cfe7516cfd1b8Sebastian Redl  if (child_pass.layer_id) {
1094c5d320a7581f4b80b151630c91cea5727fa9923Sebastian Redl    scoped_ptr<cc::RenderPassDrawQuad> render_pass_quad =
1109cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor        cc::RenderPassDrawQuad::Create();
1119cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor    render_pass_quad->SetNew(shared_state.get(),
1129cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor                             rect,
1139cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor                             child_pass,
1149cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor                             false,
1159cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor                             resource5,
1169cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor                             rect,
1179cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor                             gfx::RectF(),
1189cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor                             WebKit::WebFilterOperations(),
119f652793d4d32cc71b5ee2167069cbd363baa75deFariborz Jahanian                             skia::RefPtr<SkImageFilter>(),
120f652793d4d32cc71b5ee2167069cbd363baa75deFariborz Jahanian                             WebKit::WebFilterOperations());
1219cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor    AppendQuad(render_pass_quad.PassAs<DrawQuad>());
1229cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor
1239cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor    scoped_ptr<cc::RenderPassDrawQuad> render_pass_replica_quad =
1249cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor        cc::RenderPassDrawQuad::Create();
1259cd9f3f55d22f34f1d69db8bfc2735c4e1e082c3Douglas Gregor    render_pass_replica_quad->SetNew(shared_state.get(),
1267c2342dd4c9947806842e5aca3d2bb2e542853c9John McCall                                     rect,
127f652793d4d32cc71b5ee2167069cbd363baa75deFariborz Jahanian                                     child_pass,
1289091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor                                     true,
1299091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor                                     resource5,
1309091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor                                     rect,
1319091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor                                     gfx::RectF(),
1325e6214b4c7b326a83fbcf55250a95b46bdc0bb8fEli Friedman                                     WebKit::WebFilterOperations(),
1339091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor                                     skia::RefPtr<SkImageFilter>(),
1349091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor                                     WebKit::WebFilterOperations());
1359091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor    AppendQuad(render_pass_replica_quad.PassAs<DrawQuad>());
1369091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor  }
1379091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor
1385e6214b4c7b326a83fbcf55250a95b46bdc0bb8fEli Friedman  scoped_ptr<cc::SolidColorDrawQuad> solid_color_quad =
1399091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor      cc::SolidColorDrawQuad::Create();
1409091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor  solid_color_quad->SetNew(shared_state.get(),
1419091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor                           rect,
1429091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor                           SK_ColorRED);
1439091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor  AppendQuad(solid_color_quad.PassAs<DrawQuad>());
1449091656e423f2354e53b2b3baa95b3eb5510badcDouglas Gregor
1451070c9f7acc889336be6f80c70dc1b32622cc83dDouglas Gregor  scoped_ptr<cc::StreamVideoDrawQuad> stream_video_quad =
1465d64e5b6bc03462e8b7d0cd804565829afb1b508Douglas Gregor      cc::StreamVideoDrawQuad::Create();
1471070c9f7acc889336be6f80c70dc1b32622cc83dDouglas Gregor  stream_video_quad->SetNew(shared_state.get(),
1481070c9f7acc889336be6f80c70dc1b32622cc83dDouglas Gregor                            rect,
1491070c9f7acc889336be6f80c70dc1b32622cc83dDouglas Gregor                            opaque_rect,
150b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                            texture_id,
151b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                            gfx::Transform());
152b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian  AppendQuad(stream_video_quad.PassAs<DrawQuad>());
153156c78e4ef14e5f7ba251554ea8f2dbec573fef3Anders Carlsson
154156c78e4ef14e5f7ba251554ea8f2dbec573fef3Anders Carlsson  scoped_ptr<cc::TextureDrawQuad> texture_quad =
155b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian      cc::TextureDrawQuad::Create();
156b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian  texture_quad->SetNew(shared_state.get(),
157b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                       rect,
158b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                       opaque_rect,
159b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                       resource1,
160b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                       false,
161b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                       gfx::PointF(0.f, 0.f),
162b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                       gfx::PointF(1.f, 1.f),
163b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                       vertex_opacity,
164b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                       false);
165b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian  AppendQuad(texture_quad.PassAs<DrawQuad>());
166b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian
167b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian  scoped_ptr<cc::TileDrawQuad> scaled_tile_quad =
168b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian      cc::TileDrawQuad::Create();
169b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian  scaled_tile_quad->SetNew(shared_state.get(),
170b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                           rect,
1712fa98001f832836e3f652c211a9d2f80501d659aDouglas Gregor                           opaque_rect,
172b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                           resource2,
173b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                           gfx::RectF(0, 0, 50, 50),
1742fa98001f832836e3f652c211a9d2f80501d659aDouglas Gregor                           gfx::Size(50, 50),
175b03bfa55d03ca38922ffedac19225d0832e8d911Fariborz Jahanian                           false);
1760ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson  AppendQuad(scaled_tile_quad.PassAs<DrawQuad>());
1770ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson
1780ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson  scoped_ptr<cc::SharedQuadState> transformed_state = shared_state->Copy();
1790ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson  gfx::Transform rotation;
1800ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson  rotation.Rotate(45);
1810ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson  transformed_state->content_to_target_transform =
1820ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson      transformed_state->content_to_target_transform * rotation;
1830ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson  scoped_ptr<cc::TileDrawQuad> transformed_tile_quad =
1840ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson      cc::TileDrawQuad::Create();
1850ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson  transformed_tile_quad->SetNew(transformed_state.get(),
1860ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson                                rect,
1870ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson                                opaque_rect,
1880ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson                                resource3,
18950724302e24d44a27e3bc45e7185a710d6eb3c2dAnders Carlsson                                gfx::RectF(0, 0, 100, 100),
1900ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson                                gfx::Size(100, 100),
1910ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson                                false);
1920ba63ea5be2c90ef62d1350ea4a0a0c415a785f1Anders Carlsson  AppendQuad(transformed_tile_quad.PassAs<DrawQuad>());
19350724302e24d44a27e3bc45e7185a710d6eb3c2dAnders Carlsson
1947002f4c03c2d0544f4e8bea8d3a5636519081e35John McCall  scoped_ptr<cc::TileDrawQuad> tile_quad =
19550724302e24d44a27e3bc45e7185a710d6eb3c2dAnders Carlsson      cc::TileDrawQuad::Create();
19650724302e24d44a27e3bc45e7185a710d6eb3c2dAnders Carlsson  tile_quad->SetNew(shared_state.get(),
19750724302e24d44a27e3bc45e7185a710d6eb3c2dAnders Carlsson                    rect,
19850724302e24d44a27e3bc45e7185a710d6eb3c2dAnders Carlsson                    opaque_rect,
19950724302e24d44a27e3bc45e7185a710d6eb3c2dAnders Carlsson                    resource4,
20050724302e24d44a27e3bc45e7185a710d6eb3c2dAnders Carlsson                    gfx::RectF(0, 0, 100, 100),
20150724302e24d44a27e3bc45e7185a710d6eb3c2dAnders Carlsson                    gfx::Size(100, 100),
20237909808416da93703cecc83091e2b9eab0053d6Anders Carlsson                    false);
20337909808416da93703cecc83091e2b9eab0053d6Anders Carlsson  AppendQuad(tile_quad.PassAs<DrawQuad>());
20437909808416da93703cecc83091e2b9eab0053d6Anders Carlsson
20537909808416da93703cecc83091e2b9eab0053d6Anders Carlsson  cc::VideoLayerImpl::FramePlane planes[3];
20637909808416da93703cecc83091e2b9eab0053d6Anders Carlsson  for (int i = 0; i < 3; ++i) {
20737909808416da93703cecc83091e2b9eab0053d6Anders Carlsson    planes[i].resource_id =
20837909808416da93703cecc83091e2b9eab0053d6Anders Carlsson        resource_provider->CreateResource(
20937909808416da93703cecc83091e2b9eab0053d6Anders Carlsson            gfx::Size(20, 12),
21037909808416da93703cecc83091e2b9eab0053d6Anders Carlsson            resource_provider->best_texture_format(),
21137909808416da93703cecc83091e2b9eab0053d6Anders Carlsson            ResourceProvider::TextureUsageAny);
2127c2342dd4c9947806842e5aca3d2bb2e542853c9John McCall    resource_provider->AllocateForTesting(planes[i].resource_id);
21337909808416da93703cecc83091e2b9eab0053d6Anders Carlsson    planes[i].size = gfx::Size(100, 100);
214eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson    planes[i].format = GL_LUMINANCE;
215eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson  }
216eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson  scoped_ptr<cc::YUVVideoDrawQuad> yuv_quad =
217eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson      cc::YUVVideoDrawQuad::Create();
218eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson  yuv_quad->SetNew(shared_state.get(),
219eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson                   rect,
220eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson                   opaque_rect,
221eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson                   gfx::Size(100, 100),
222eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson                   planes[0],
223eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson                   planes[1],
224eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson                   planes[2]);
225eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson  AppendQuad(yuv_quad.PassAs<DrawQuad>());
226eac813909b3ca1142ad186f6c6a1b1ae0dbf9378Anders Carlsson
2274a73ea9c4e87aa111901f3c27b08f0571b58a4cfChandler Carruth  AppendSharedQuadState(transformed_state.Pass());
228e228ba97c9aff14dcf788773b8af455b9d85f210Chandler Carruth  AppendSharedQuadState(shared_state.Pass());
2297002f4c03c2d0544f4e8bea8d3a5636519081e35John McCall}
230e228ba97c9aff14dcf788773b8af455b9d85f210Chandler Carruth
231e228ba97c9aff14dcf788773b8af455b9d85f210Chandler Carruth}  // namespace cc
232e228ba97c9aff14dcf788773b8af455b9d85f210Chandler Carruth