| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/quads/render_pass.h" | 5 #include "cc/quads/render_pass.h" |
| 6 | 6 |
| 7 #include "cc/base/math_util.h" | 7 #include "cc/base/math_util.h" |
| 8 #include "cc/base/scoped_ptr_vector.h" | 8 #include "cc/base/scoped_ptr_vector.h" |
| 9 #include "cc/output/copy_output_request.h" | 9 #include "cc/output/copy_output_request.h" |
| 10 #include "cc/quads/checkerboard_draw_quad.h" | |
| 11 #include "cc/quads/render_pass_draw_quad.h" | 10 #include "cc/quads/render_pass_draw_quad.h" |
| 11 #include "cc/quads/solid_color_draw_quad.h" |
| 12 #include "cc/test/geometry_test_utils.h" | 12 #include "cc/test/geometry_test_utils.h" |
| 13 #include "cc/test/render_pass_test_common.h" | 13 #include "cc/test/render_pass_test_common.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 15 #include "third_party/skia/include/effects/SkBlurImageFilter.h" | 15 #include "third_party/skia/include/effects/SkBlurImageFilter.h" |
| 16 #include "ui/gfx/transform.h" | 16 #include "ui/gfx/transform.h" |
| 17 | 17 |
| 18 using cc::TestRenderPass; | 18 using cc::TestRenderPass; |
| 19 | 19 |
| 20 namespace cc { | 20 namespace cc { |
| 21 namespace { | 21 namespace { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 85 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 86 shared_state->SetAll(gfx::Transform(), | 86 shared_state->SetAll(gfx::Transform(), |
| 87 gfx::Size(), | 87 gfx::Size(), |
| 88 gfx::Rect(), | 88 gfx::Rect(), |
| 89 gfx::Rect(), | 89 gfx::Rect(), |
| 90 false, | 90 false, |
| 91 1, | 91 1, |
| 92 SkXfermode::kSrcOver_Mode, | 92 SkXfermode::kSrcOver_Mode, |
| 93 0); | 93 0); |
| 94 | 94 |
| 95 CheckerboardDrawQuad* checkerboard_quad = | 95 SolidColorDrawQuad* color_quad = |
| 96 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | 96 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 97 checkerboard_quad->SetNew(pass->shared_quad_state_list.back(), gfx::Rect(), | 97 color_quad->SetNew(pass->shared_quad_state_list.back(), gfx::Rect(), |
| 98 gfx::Rect(), SkColor(), 1.f); | 98 gfx::Rect(), SkColor(), false); |
| 99 | 99 |
| 100 RenderPassId new_id(63, 4); | 100 RenderPassId new_id(63, 4); |
| 101 | 101 |
| 102 scoped_ptr<RenderPass> copy = pass->Copy(new_id); | 102 scoped_ptr<RenderPass> copy = pass->Copy(new_id); |
| 103 EXPECT_EQ(new_id, copy->id); | 103 EXPECT_EQ(new_id, copy->id); |
| 104 EXPECT_EQ(pass->output_rect, copy->output_rect); | 104 EXPECT_EQ(pass->output_rect, copy->output_rect); |
| 105 EXPECT_EQ(pass->transform_to_root_target, copy->transform_to_root_target); | 105 EXPECT_EQ(pass->transform_to_root_target, copy->transform_to_root_target); |
| 106 EXPECT_EQ(pass->damage_rect, copy->damage_rect); | 106 EXPECT_EQ(pass->damage_rect, copy->damage_rect); |
| 107 EXPECT_EQ(pass->has_transparent_background, copy->has_transparent_background); | 107 EXPECT_EQ(pass->has_transparent_background, copy->has_transparent_background); |
| 108 EXPECT_EQ(0u, copy->quad_list.size()); | 108 EXPECT_EQ(0u, copy->quad_list.size()); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 136 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); | 136 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); |
| 137 shared_state1->SetAll(gfx::Transform(), | 137 shared_state1->SetAll(gfx::Transform(), |
| 138 gfx::Size(1, 1), | 138 gfx::Size(1, 1), |
| 139 gfx::Rect(), | 139 gfx::Rect(), |
| 140 gfx::Rect(), | 140 gfx::Rect(), |
| 141 false, | 141 false, |
| 142 1, | 142 1, |
| 143 SkXfermode::kSrcOver_Mode, | 143 SkXfermode::kSrcOver_Mode, |
| 144 0); | 144 0); |
| 145 | 145 |
| 146 CheckerboardDrawQuad* checkerboard_quad1 = | 146 SolidColorDrawQuad* color_quad1 = |
| 147 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | 147 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 148 checkerboard_quad1->SetNew(pass->shared_quad_state_list.back(), | 148 color_quad1->SetNew(pass->shared_quad_state_list.back(), |
| 149 gfx::Rect(1, 1, 1, 1), gfx::Rect(1, 1, 1, 1), | 149 gfx::Rect(1, 1, 1, 1), gfx::Rect(1, 1, 1, 1), SkColor(), |
| 150 SkColor(), 1.f); | 150 false); |
| 151 | 151 |
| 152 CheckerboardDrawQuad* checkerboard_quad2 = | 152 SolidColorDrawQuad* color_quad2 = |
| 153 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | 153 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 154 checkerboard_quad2->SetNew(pass->shared_quad_state_list.back(), | 154 color_quad2->SetNew(pass->shared_quad_state_list.back(), |
| 155 gfx::Rect(2, 2, 2, 2), gfx::Rect(2, 2, 2, 2), | 155 gfx::Rect(2, 2, 2, 2), gfx::Rect(2, 2, 2, 2), SkColor(), |
| 156 SkColor(), 1.f); | 156 false); |
| 157 | 157 |
| 158 // And two quads using another shared state. | 158 // And two quads using another shared state. |
| 159 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); | 159 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); |
| 160 shared_state2->SetAll(gfx::Transform(), | 160 shared_state2->SetAll(gfx::Transform(), |
| 161 gfx::Size(2, 2), | 161 gfx::Size(2, 2), |
| 162 gfx::Rect(), | 162 gfx::Rect(), |
| 163 gfx::Rect(), | 163 gfx::Rect(), |
| 164 false, | 164 false, |
| 165 1, | 165 1, |
| 166 SkXfermode::kSrcOver_Mode, | 166 SkXfermode::kSrcOver_Mode, |
| 167 0); | 167 0); |
| 168 | 168 |
| 169 CheckerboardDrawQuad* checkerboard_quad3 = | 169 SolidColorDrawQuad* color_quad3 = |
| 170 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | 170 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 171 checkerboard_quad3->SetNew(pass->shared_quad_state_list.back(), | 171 color_quad3->SetNew(pass->shared_quad_state_list.back(), |
| 172 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), | 172 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), SkColor(), |
| 173 SkColor(), 1.f); | 173 false); |
| 174 | 174 |
| 175 CheckerboardDrawQuad* checkerboard_quad4 = | 175 SolidColorDrawQuad* color_quad4 = |
| 176 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | 176 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 177 checkerboard_quad4->SetNew(pass->shared_quad_state_list.back(), | 177 color_quad4->SetNew(pass->shared_quad_state_list.back(), |
| 178 gfx::Rect(4, 4, 4, 4), gfx::Rect(4, 4, 4, 4), | 178 gfx::Rect(4, 4, 4, 4), gfx::Rect(4, 4, 4, 4), SkColor(), |
| 179 SkColor(), 1.f); | 179 false); |
| 180 | 180 |
| 181 // A second render pass with a quad. | 181 // A second render pass with a quad. |
| 182 RenderPassId contrib_id(4, 1); | 182 RenderPassId contrib_id(4, 1); |
| 183 gfx::Rect contrib_output_rect(10, 15, 12, 17); | 183 gfx::Rect contrib_output_rect(10, 15, 12, 17); |
| 184 gfx::Transform contrib_transform_to_root = | 184 gfx::Transform contrib_transform_to_root = |
| 185 gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0); | 185 gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0); |
| 186 gfx::Rect contrib_damage_rect(11, 16, 10, 15); | 186 gfx::Rect contrib_damage_rect(11, 16, 10, 15); |
| 187 bool contrib_has_transparent_background = true; | 187 bool contrib_has_transparent_background = true; |
| 188 | 188 |
| 189 scoped_ptr<TestRenderPass> contrib = TestRenderPass::Create(); | 189 scoped_ptr<TestRenderPass> contrib = TestRenderPass::Create(); |
| 190 contrib->SetAll(contrib_id, | 190 contrib->SetAll(contrib_id, |
| 191 contrib_output_rect, | 191 contrib_output_rect, |
| 192 contrib_damage_rect, | 192 contrib_damage_rect, |
| 193 contrib_transform_to_root, | 193 contrib_transform_to_root, |
| 194 contrib_has_transparent_background); | 194 contrib_has_transparent_background); |
| 195 | 195 |
| 196 SharedQuadState* contrib_shared_state = | 196 SharedQuadState* contrib_shared_state = |
| 197 contrib->CreateAndAppendSharedQuadState(); | 197 contrib->CreateAndAppendSharedQuadState(); |
| 198 contrib_shared_state->SetAll(gfx::Transform(), | 198 contrib_shared_state->SetAll(gfx::Transform(), |
| 199 gfx::Size(2, 2), | 199 gfx::Size(2, 2), |
| 200 gfx::Rect(), | 200 gfx::Rect(), |
| 201 gfx::Rect(), | 201 gfx::Rect(), |
| 202 false, | 202 false, |
| 203 1, | 203 1, |
| 204 SkXfermode::kSrcOver_Mode, | 204 SkXfermode::kSrcOver_Mode, |
| 205 0); | 205 0); |
| 206 | 206 |
| 207 CheckerboardDrawQuad* contrib_quad = | 207 SolidColorDrawQuad* contrib_quad = |
| 208 contrib->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | 208 contrib->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 209 contrib_quad->SetNew(contrib->shared_quad_state_list.back(), | 209 contrib_quad->SetNew(contrib->shared_quad_state_list.back(), |
| 210 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), SkColor(), | 210 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), SkColor(), |
| 211 1.f); | 211 false); |
| 212 | 212 |
| 213 // And a RenderPassDrawQuad for the contributing pass. | 213 // And a RenderPassDrawQuad for the contributing pass. |
| 214 scoped_ptr<RenderPassDrawQuad> pass_quad = | 214 scoped_ptr<RenderPassDrawQuad> pass_quad = |
| 215 make_scoped_ptr(new RenderPassDrawQuad); | 215 make_scoped_ptr(new RenderPassDrawQuad); |
| 216 pass_quad->SetNew(pass->shared_quad_state_list.back(), | 216 pass_quad->SetNew(pass->shared_quad_state_list.back(), |
| 217 contrib_output_rect, | 217 contrib_output_rect, |
| 218 contrib_output_rect, | 218 contrib_output_rect, |
| 219 contrib_id, | 219 contrib_id, |
| 220 0, | 220 0, |
| 221 gfx::Vector2dF(), | 221 gfx::Vector2dF(), |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); | 255 SharedQuadState* shared_state1 = pass->CreateAndAppendSharedQuadState(); |
| 256 shared_state1->SetAll(gfx::Transform(), | 256 shared_state1->SetAll(gfx::Transform(), |
| 257 gfx::Size(1, 1), | 257 gfx::Size(1, 1), |
| 258 gfx::Rect(), | 258 gfx::Rect(), |
| 259 gfx::Rect(), | 259 gfx::Rect(), |
| 260 false, | 260 false, |
| 261 1, | 261 1, |
| 262 SkXfermode::kSrcOver_Mode, | 262 SkXfermode::kSrcOver_Mode, |
| 263 0); | 263 0); |
| 264 | 264 |
| 265 CheckerboardDrawQuad* checkerboard_quad1 = | 265 SolidColorDrawQuad* color_quad1 = |
| 266 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | 266 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 267 checkerboard_quad1->SetNew(pass->shared_quad_state_list.back(), | 267 color_quad1->SetNew(pass->shared_quad_state_list.back(), |
| 268 gfx::Rect(1, 1, 1, 1), gfx::Rect(1, 1, 1, 1), | 268 gfx::Rect(1, 1, 1, 1), gfx::Rect(1, 1, 1, 1), SkColor(), |
| 269 SkColor(), 1.f); | 269 false); |
| 270 | 270 |
| 271 // A shared state with no quads, they were culled. | 271 // A shared state with no quads, they were culled. |
| 272 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); | 272 SharedQuadState* shared_state2 = pass->CreateAndAppendSharedQuadState(); |
| 273 shared_state2->SetAll(gfx::Transform(), | 273 shared_state2->SetAll(gfx::Transform(), |
| 274 gfx::Size(2, 2), | 274 gfx::Size(2, 2), |
| 275 gfx::Rect(), | 275 gfx::Rect(), |
| 276 gfx::Rect(), | 276 gfx::Rect(), |
| 277 false, | 277 false, |
| 278 1, | 278 1, |
| 279 SkXfermode::kSrcOver_Mode, | 279 SkXfermode::kSrcOver_Mode, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 294 SharedQuadState* shared_state4 = pass->CreateAndAppendSharedQuadState(); | 294 SharedQuadState* shared_state4 = pass->CreateAndAppendSharedQuadState(); |
| 295 shared_state4->SetAll(gfx::Transform(), | 295 shared_state4->SetAll(gfx::Transform(), |
| 296 gfx::Size(2, 2), | 296 gfx::Size(2, 2), |
| 297 gfx::Rect(), | 297 gfx::Rect(), |
| 298 gfx::Rect(), | 298 gfx::Rect(), |
| 299 false, | 299 false, |
| 300 1, | 300 1, |
| 301 SkXfermode::kSrcOver_Mode, | 301 SkXfermode::kSrcOver_Mode, |
| 302 0); | 302 0); |
| 303 | 303 |
| 304 CheckerboardDrawQuad* checkerboard_quad2 = | 304 SolidColorDrawQuad* color_quad2 = |
| 305 pass->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | 305 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 306 checkerboard_quad2->SetNew(pass->shared_quad_state_list.back(), | 306 color_quad2->SetNew(pass->shared_quad_state_list.back(), |
| 307 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), | 307 gfx::Rect(3, 3, 3, 3), gfx::Rect(3, 3, 3, 3), SkColor(), |
| 308 SkColor(), 1.f); | 308 false); |
| 309 | 309 |
| 310 pass_list.push_back(pass.Pass()); | 310 pass_list.push_back(pass.Pass()); |
| 311 | 311 |
| 312 // Make a copy with CopyAll(). | 312 // Make a copy with CopyAll(). |
| 313 RenderPassList copy_list; | 313 RenderPassList copy_list; |
| 314 RenderPass::CopyAll(pass_list, ©_list); | 314 RenderPass::CopyAll(pass_list, ©_list); |
| 315 | 315 |
| 316 CompareRenderPassLists(pass_list, copy_list); | 316 CompareRenderPassLists(pass_list, copy_list); |
| 317 } | 317 } |
| 318 | 318 |
| 319 } // namespace | 319 } // namespace |
| 320 } // namespace cc | 320 } // namespace cc |
| OLD | NEW |