render_pass_test_common.cc revision 116680a4aac90f2aa7413d9095a592090648e557
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/test/render_pass_test_common.h" 6 7#include "cc/quads/checkerboard_draw_quad.h" 8#include "cc/quads/debug_border_draw_quad.h" 9#include "cc/quads/io_surface_draw_quad.h" 10#include "cc/quads/render_pass_draw_quad.h" 11#include "cc/quads/shared_quad_state.h" 12#include "cc/quads/solid_color_draw_quad.h" 13#include "cc/quads/stream_video_draw_quad.h" 14#include "cc/quads/texture_draw_quad.h" 15#include "cc/quads/tile_draw_quad.h" 16#include "cc/quads/yuv_video_draw_quad.h" 17#include "cc/resources/resource_provider.h" 18#include "ui/gfx/transform.h" 19 20namespace cc { 21 22void TestRenderPass::AppendOneOfEveryQuadType( 23 ResourceProvider* resource_provider, 24 RenderPass::Id child_pass) { 25 gfx::Rect rect(0, 0, 100, 100); 26 gfx::Rect opaque_rect(10, 10, 80, 80); 27 gfx::Rect visible_rect(0, 0, 100, 100); 28 const float vertex_opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; 29 ResourceProvider::ResourceId resource1 = resource_provider->CreateResource( 30 gfx::Size(45, 5), 31 GL_CLAMP_TO_EDGE, 32 ResourceProvider::TextureUsageAny, 33 resource_provider->best_texture_format()); 34 resource_provider->AllocateForTesting(resource1); 35 ResourceProvider::ResourceId resource2 = resource_provider->CreateResource( 36 gfx::Size(346, 61), 37 GL_CLAMP_TO_EDGE, 38 ResourceProvider::TextureUsageAny, 39 resource_provider->best_texture_format()); 40 resource_provider->AllocateForTesting(resource2); 41 ResourceProvider::ResourceId resource3 = resource_provider->CreateResource( 42 gfx::Size(12, 134), 43 GL_CLAMP_TO_EDGE, 44 ResourceProvider::TextureUsageAny, 45 resource_provider->best_texture_format()); 46 resource_provider->AllocateForTesting(resource3); 47 ResourceProvider::ResourceId resource4 = resource_provider->CreateResource( 48 gfx::Size(56, 12), 49 GL_CLAMP_TO_EDGE, 50 ResourceProvider::TextureUsageAny, 51 resource_provider->best_texture_format()); 52 resource_provider->AllocateForTesting(resource4); 53 ResourceProvider::ResourceId resource5 = resource_provider->CreateResource( 54 gfx::Size(73, 26), 55 GL_CLAMP_TO_EDGE, 56 ResourceProvider::TextureUsageAny, 57 resource_provider->best_texture_format()); 58 resource_provider->AllocateForTesting(resource5); 59 ResourceProvider::ResourceId resource6 = resource_provider->CreateResource( 60 gfx::Size(64, 92), 61 GL_CLAMP_TO_EDGE, 62 ResourceProvider::TextureUsageAny, 63 resource_provider->best_texture_format()); 64 resource_provider->AllocateForTesting(resource6); 65 ResourceProvider::ResourceId resource7 = resource_provider->CreateResource( 66 gfx::Size(9, 14), 67 GL_CLAMP_TO_EDGE, 68 ResourceProvider::TextureUsageAny, 69 resource_provider->best_texture_format()); 70 resource_provider->AllocateForTesting(resource7); 71 72 SharedQuadState* shared_state = this->CreateAndAppendSharedQuadState(); 73 shared_state->SetAll(gfx::Transform(), 74 rect.size(), 75 rect, 76 rect, 77 false, 78 1, 79 SkXfermode::kSrcOver_Mode, 80 0); 81 82 CheckerboardDrawQuad* checkerboard_quad = 83 this->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); 84 checkerboard_quad->SetNew(shared_state, rect, visible_rect, SK_ColorRED); 85 86 DebugBorderDrawQuad* debug_border_quad = 87 this->CreateAndAppendDrawQuad<DebugBorderDrawQuad>(); 88 debug_border_quad->SetNew(shared_state, rect, visible_rect, SK_ColorRED, 1); 89 90 IOSurfaceDrawQuad* io_surface_quad = 91 this->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>(); 92 io_surface_quad->SetNew(shared_state, 93 rect, 94 opaque_rect, 95 visible_rect, 96 gfx::Size(50, 50), 97 resource7, 98 IOSurfaceDrawQuad::FLIPPED); 99 100 if (child_pass.layer_id) { 101 RenderPassDrawQuad* render_pass_quad = 102 this->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 103 render_pass_quad->SetNew(shared_state, 104 rect, 105 visible_rect, 106 child_pass, 107 false, 108 resource5, 109 rect, 110 gfx::RectF(), 111 FilterOperations(), 112 FilterOperations()); 113 114 RenderPassDrawQuad* render_pass_replica_quad = 115 this->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 116 render_pass_replica_quad->SetNew(shared_state, 117 rect, 118 visible_rect, 119 child_pass, 120 true, 121 resource5, 122 rect, 123 gfx::RectF(), 124 FilterOperations(), 125 FilterOperations()); 126 } 127 128 SolidColorDrawQuad* solid_color_quad = 129 this->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); 130 solid_color_quad->SetNew( 131 shared_state, rect, visible_rect, SK_ColorRED, false); 132 133 StreamVideoDrawQuad* stream_video_quad = 134 this->CreateAndAppendDrawQuad<StreamVideoDrawQuad>(); 135 stream_video_quad->SetNew(shared_state, 136 rect, 137 opaque_rect, 138 visible_rect, 139 resource6, 140 gfx::Transform()); 141 142 TextureDrawQuad* texture_quad = 143 this->CreateAndAppendDrawQuad<TextureDrawQuad>(); 144 texture_quad->SetNew(shared_state, 145 rect, 146 opaque_rect, 147 visible_rect, 148 resource1, 149 false, 150 gfx::PointF(0.f, 0.f), 151 gfx::PointF(1.f, 1.f), 152 SK_ColorTRANSPARENT, 153 vertex_opacity, 154 false); 155 156 TileDrawQuad* scaled_tile_quad = 157 this->CreateAndAppendDrawQuad<TileDrawQuad>(); 158 scaled_tile_quad->SetNew(shared_state, 159 rect, 160 opaque_rect, 161 visible_rect, 162 resource2, 163 gfx::RectF(0, 0, 50, 50), 164 gfx::Size(50, 50), 165 false); 166 167 SharedQuadState* transformed_state = this->CreateAndAppendSharedQuadState(); 168 transformed_state->CopyFrom(shared_state); 169 gfx::Transform rotation; 170 rotation.Rotate(45); 171 transformed_state->content_to_target_transform = 172 transformed_state->content_to_target_transform * rotation; 173 TileDrawQuad* transformed_tile_quad = 174 this->CreateAndAppendDrawQuad<TileDrawQuad>(); 175 transformed_tile_quad->SetNew(transformed_state, 176 rect, 177 opaque_rect, 178 visible_rect, 179 resource3, 180 gfx::RectF(0, 0, 100, 100), 181 gfx::Size(100, 100), 182 false); 183 184 SharedQuadState* shared_state2 = this->CreateAndAppendSharedQuadState(); 185 shared_state->SetAll(gfx::Transform(), 186 rect.size(), 187 rect, 188 rect, 189 false, 190 1, 191 SkXfermode::kSrcOver_Mode, 192 0); 193 194 TileDrawQuad* tile_quad = this->CreateAndAppendDrawQuad<TileDrawQuad>(); 195 tile_quad->SetNew(shared_state2, 196 rect, 197 opaque_rect, 198 visible_rect, 199 resource4, 200 gfx::RectF(0, 0, 100, 100), 201 gfx::Size(100, 100), 202 false); 203 204 ResourceProvider::ResourceId plane_resources[4]; 205 for (int i = 0; i < 4; ++i) { 206 plane_resources[i] = 207 resource_provider->CreateResource( 208 gfx::Size(20, 12), 209 GL_CLAMP_TO_EDGE, 210 ResourceProvider::TextureUsageAny, 211 resource_provider->best_texture_format()); 212 resource_provider->AllocateForTesting(plane_resources[i]); 213 } 214 YUVVideoDrawQuad::ColorSpace color_space = YUVVideoDrawQuad::REC_601; 215 YUVVideoDrawQuad* yuv_quad = 216 this->CreateAndAppendDrawQuad<YUVVideoDrawQuad>(); 217 yuv_quad->SetNew(shared_state2, 218 rect, 219 opaque_rect, 220 visible_rect, 221 gfx::RectF(0, 0, 100, 100), 222 plane_resources[0], 223 plane_resources[1], 224 plane_resources[2], 225 plane_resources[3], 226 color_space); 227} 228 229} // namespace cc 230