render_pass_test_utils.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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/mock_quad_culler.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/test/render_pass_test_common.h" 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/skia/include/core/SkColor.h" 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/skia/include/core/SkImageFilter.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/rect.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TestRenderPass* AddRenderPass(RenderPassList* pass_list, 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderPass::Id id, 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& output_rect, 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Transform& root_transform) { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestRenderPass> pass(TestRenderPass::Create()); 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pass->SetNew(id, output_rect, output_rect, root_transform); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestRenderPass* saved = pass.get(); 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pass_list->push_back(pass.PassAs<RenderPass>()); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return saved; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SolidColorDrawQuad* AddQuad(TestRenderPass* pass, 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkColor color) { 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MockQuadCuller quad_sink(&pass->quad_list, &pass->shared_quad_state_list); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SharedQuadState* shared_state = 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) quad_sink.UseSharedQuadState(SharedQuadState::Create()); 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(gfx::Transform(), 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect.size(), 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SkXfermode::kSrcOver_Mode); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SolidColorDrawQuad* quad_ptr = quad.get(); 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad_sink.MaybeAppend(quad.PassAs<DrawQuad>()); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return quad_ptr; 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SolidColorDrawQuad* AddClippedQuad(TestRenderPass* pass, 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkColor color) { 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MockQuadCuller quad_sink(&pass->quad_list, &pass->shared_quad_state_list); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SharedQuadState* shared_state = 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) quad_sink.UseSharedQuadState(SharedQuadState::Create()); 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(gfx::Transform(), 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect.size(), 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rect, 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) true, 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SkXfermode::kSrcOver_Mode); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SolidColorDrawQuad* quad_ptr = quad.get(); 67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad_sink.MaybeAppend(quad.PassAs<DrawQuad>()); 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return quad_ptr; 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)SolidColorDrawQuad* AddTransformedQuad(TestRenderPass* pass, 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SkColor color, 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const gfx::Transform& transform) { 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MockQuadCuller quad_sink(&pass->quad_list, &pass->shared_quad_state_list); 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SharedQuadState* shared_state = 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) quad_sink.UseSharedQuadState(SharedQuadState::Create()); 78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll( 79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) transform, rect.size(), rect, rect, false, 1, SkXfermode::kSrcOver_Mode); 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 81a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, rect, rect, color, false); 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SolidColorDrawQuad* quad_ptr = quad.get(); 83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad_sink.MaybeAppend(quad.PassAs<DrawQuad>()); 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return quad_ptr; 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AddRenderPassQuad(TestRenderPass* to_pass, 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestRenderPass* contributing_pass) { 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MockQuadCuller quad_sink(&to_pass->quad_list, 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &to_pass->shared_quad_state_list); 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Rect output_rect = contributing_pass->output_rect; 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SharedQuadState* shared_state = 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) quad_sink.UseSharedQuadState(SharedQuadState::Create()); 94f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(gfx::Transform(), 95f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect.size(), 96f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 98f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, 99f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SkXfermode::kSrcOver_Mode); 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); 102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, 103a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 104a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 105a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) contributing_pass->id, 106a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) false, 107a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 0, 108a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 109a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::RectF(), 110a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) FilterOperations(), 11168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) FilterOperations()); 112a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad_sink.MaybeAppend(quad.PassAs<DrawQuad>()); 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void AddRenderPassQuad(TestRenderPass* to_pass, 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestRenderPass* contributing_pass, 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ResourceProvider::ResourceId mask_resource_id, 11868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const FilterOperations& filters, 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Transform transform) { 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) MockQuadCuller quad_sink(&to_pass->quad_list, 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &to_pass->shared_quad_state_list); 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect output_rect = contributing_pass->output_rect; 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SharedQuadState* shared_state = 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) quad_sink.UseSharedQuadState(SharedQuadState::Create()); 125f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shared_state->SetAll(transform, 126f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect.size(), 127f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 128f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) output_rect, 129f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) false, 130f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1, 131f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SkXfermode::kSrcOver_Mode); 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); 133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad->SetNew(shared_state, 134a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 135a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 136a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) contributing_pass->id, 137a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) false, 138a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mask_resource_id, 139a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) output_rect, 140a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::RectF(), 141a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) filters, 14268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) FilterOperations()); 143a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) quad_sink.MaybeAppend(quad.PassAs<DrawQuad>()); 144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 147