render_pass_test_utils.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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, 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SkXfermode::kSrcOver_Mode); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SolidColorDrawQuad* quad_ptr = quad.get(); 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return quad_ptr; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SolidColorDrawQuad* AddClippedQuad(TestRenderPass* pass, 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkColor color) { 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(gfx::Transform(), 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect.size(), 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) true, 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SkXfermode::kSrcOver_Mode); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SolidColorDrawQuad* quad_ptr = quad.get(); 62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return quad_ptr; 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)SolidColorDrawQuad* AddTransformedQuad(TestRenderPass* pass, 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SkColor color, 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Transform& transform) { 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll( 72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) transform, rect.size(), rect, rect, false, 1, SkXfermode::kSrcOver_Mode); 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SolidColorDrawQuad* quad_ptr = quad.get(); 76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return quad_ptr; 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AddRenderPassQuad(TestRenderPass* to_pass, 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestRenderPass* contributing_pass) { 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Rect output_rect = contributing_pass->output_rect; 83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = to_pass->CreateAndAppendSharedQuadState(); 84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(gfx::Transform(), 85f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect.size(), 86f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, 89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SkXfermode::kSrcOver_Mode); 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); 92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, 93a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 95a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) contributing_pass->id, 96a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) false, 97a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 0, 98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 99a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::RectF(), 100a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) FilterOperations(), 10168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) FilterOperations()); 102cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) to_pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void AddRenderPassQuad(TestRenderPass* to_pass, 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestRenderPass* contributing_pass, 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ResourceProvider::ResourceId mask_resource_id, 10868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const FilterOperations& filters, 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Transform transform) { 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect output_rect = contributing_pass->output_rect; 111cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SharedQuadState* shared_state = to_pass->CreateAndAppendSharedQuadState(); 112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(transform, 113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect.size(), 114f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, 117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SkXfermode::kSrcOver_Mode); 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); 120a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, 121a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 122a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 123a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) contributing_pass->id, 124a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) false, 125a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mask_resource_id, 126a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 127a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::RectF(), 128a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) filters, 12968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) FilterOperations()); 130cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) to_pass->AppendDrawQuad(quad.PassAs<DrawQuad>()); 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 134