render_pass_test_utils.cc revision 6d86b77056ed63eb6871182f42a9fd5f07550f90
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/test/render_pass_test_utils.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/layers/quad_sink.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/quads/render_pass_draw_quad.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/quads/shared_quad_state.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/quads/solid_color_draw_quad.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/resources/resource_provider.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/test/render_pass_test_common.h" 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/skia/include/core/SkColor.h" 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/skia/include/core/SkImageFilter.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/rect.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TestRenderPass* AddRenderPass(RenderPassList* pass_list, 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderPass::Id id, 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& output_rect, 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Transform& root_transform) { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestRenderPass> pass(TestRenderPass::Create()); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pass->SetNew(id, output_rect, output_rect, root_transform); 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestRenderPass* saved = pass.get(); 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pass_list->push_back(pass.PassAs<RenderPass>()); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return saved; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SolidColorDrawQuad* AddQuad(TestRenderPass* pass, 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkColor color) { 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(gfx::Transform(), 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect.size(), 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 406d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SkXfermode::kSrcOver_Mode, 416d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 0); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SolidColorDrawQuad* quad_ptr = quad.get(); 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return quad_ptr; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SolidColorDrawQuad* AddClippedQuad(TestRenderPass* pass, 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkColor color) { 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(gfx::Transform(), 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect.size(), 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) true, 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 596d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SkXfermode::kSrcOver_Mode, 606d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 0); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 62a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SolidColorDrawQuad* quad_ptr = quad.get(); 64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return quad_ptr; 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)SolidColorDrawQuad* AddTransformedQuad(TestRenderPass* pass, 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SkColor color, 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Transform& transform) { 72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 736d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) shared_state->SetAll(transform, 746d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) rect.size(), 756d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) rect, 766d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) rect, 776d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) false, 786d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 1, 796d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SkXfermode::kSrcOver_Mode, 806d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 0); 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 82a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SolidColorDrawQuad* quad_ptr = quad.get(); 84cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return quad_ptr; 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AddRenderPassQuad(TestRenderPass* to_pass, 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestRenderPass* contributing_pass) { 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Rect output_rect = contributing_pass->output_rect; 91cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = to_pass->CreateAndAppendSharedQuadState(); 92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(gfx::Transform(), 93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect.size(), 94f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 95f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 96f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, 97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 986d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SkXfermode::kSrcOver_Mode, 996d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 0); 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); 101a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, 102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 103a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 104a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) contributing_pass->id, 105a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) false, 106a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 0, 107a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 108a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::RectF(), 109a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) FilterOperations(), 11068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) FilterOperations()); 111cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) to_pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void AddRenderPassQuad(TestRenderPass* to_pass, 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestRenderPass* contributing_pass, 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ResourceProvider::ResourceId mask_resource_id, 11768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const FilterOperations& filters, 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Transform transform) { 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect output_rect = contributing_pass->output_rect; 120cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = to_pass->CreateAndAppendSharedQuadState(); 121f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(transform, 122f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect.size(), 123f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 124f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 125f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, 126f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 1276d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SkXfermode::kSrcOver_Mode, 1286d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 0); 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); 130a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, 131a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) contributing_pass->id, 134a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) false, 135a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mask_resource_id, 136a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 137a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::RectF(), 138a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) filters, 13968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) FilterOperations()); 140cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) to_pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); 141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 144