| 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/output/gl_renderer.h" | 5 #include "cc/output/gl_renderer.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "cc/base/math_util.h" | 9 #include "cc/base/math_util.h" |
| 10 #include "cc/output/compositor_frame_metadata.h" | 10 #include "cc/output/compositor_frame_metadata.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 | 48 |
| 49 RenderPassList render_passes_in_draw_order_; | 49 RenderPassList render_passes_in_draw_order_; |
| 50 }; | 50 }; |
| 51 | 51 |
| 52 #define EXPECT_PROGRAM_VALID(program_binding) \ | 52 #define EXPECT_PROGRAM_VALID(program_binding) \ |
| 53 do { \ | 53 do { \ |
| 54 EXPECT_TRUE((program_binding)->program()); \ | 54 EXPECT_TRUE((program_binding)->program()); \ |
| 55 EXPECT_TRUE((program_binding)->initialized()); \ | 55 EXPECT_TRUE((program_binding)->initialized()); \ |
| 56 } while (false) | 56 } while (false) |
| 57 | 57 |
| 58 static inline SkXfermode::Mode BlendModeToSkXfermode(BlendMode blend_mode) { |
| 59 switch (blend_mode) { |
| 60 case BlendModeNormal: |
| 61 return SkXfermode::kSrcOver_Mode; |
| 62 case BlendModeOverlay: |
| 63 return SkXfermode::kOverlay_Mode; |
| 64 case BlendModeDarken: |
| 65 return SkXfermode::kDarken_Mode; |
| 66 case BlendModeLighten: |
| 67 return SkXfermode::kLighten_Mode; |
| 68 case BlendModeColorDodge: |
| 69 return SkXfermode::kColorDodge_Mode; |
| 70 case BlendModeColorBurn: |
| 71 return SkXfermode::kColorBurn_Mode; |
| 72 case BlendModeHardLight: |
| 73 return SkXfermode::kHardLight_Mode; |
| 74 case BlendModeSoftLight: |
| 75 return SkXfermode::kSoftLight_Mode; |
| 76 case BlendModeDifference: |
| 77 return SkXfermode::kDifference_Mode; |
| 78 case BlendModeExclusion: |
| 79 return SkXfermode::kExclusion_Mode; |
| 80 case BlendModeMultiply: |
| 81 return SkXfermode::kMultiply_Mode; |
| 82 case BlendModeHue: |
| 83 return SkXfermode::kHue_Mode; |
| 84 case BlendModeSaturation: |
| 85 return SkXfermode::kSaturation_Mode; |
| 86 case BlendModeColor: |
| 87 return SkXfermode::kColor_Mode; |
| 88 case BlendModeLuminosity: |
| 89 return SkXfermode::kLuminosity_Mode; |
| 90 case NumBlendModes: |
| 91 NOTREACHED(); |
| 92 } |
| 93 return SkXfermode::kSrcOver_Mode; |
| 94 } |
| 95 |
| 58 // Explicitly named to be a friend in GLRenderer for shader access. | 96 // Explicitly named to be a friend in GLRenderer for shader access. |
| 59 class GLRendererShaderPixelTest : public GLRendererPixelTest { | 97 class GLRendererShaderPixelTest : public GLRendererPixelTest { |
| 60 public: | 98 public: |
| 61 void TestShaders() { | 99 void TestShaders() { |
| 62 ASSERT_FALSE(renderer()->IsContextLost()); | 100 ASSERT_FALSE(renderer()->IsContextLost()); |
| 63 EXPECT_PROGRAM_VALID(renderer()->GetTileCheckerboardProgram()); | 101 EXPECT_PROGRAM_VALID(renderer()->GetTileCheckerboardProgram()); |
| 64 EXPECT_PROGRAM_VALID(renderer()->GetDebugBorderProgram()); | 102 EXPECT_PROGRAM_VALID(renderer()->GetDebugBorderProgram()); |
| 65 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgram()); | 103 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgram()); |
| 66 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgramAA()); | 104 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgramAA()); |
| 67 TestShadersWithTexCoordPrecision(TexCoordPrecisionMedium); | 105 TestShadersWithTexCoordPrecision(TexCoordPrecisionMedium); |
| 68 TestShadersWithTexCoordPrecision(TexCoordPrecisionHigh); | 106 TestShadersWithTexCoordPrecision(TexCoordPrecisionHigh); |
| 69 ASSERT_FALSE(renderer()->IsContextLost()); | 107 ASSERT_FALSE(renderer()->IsContextLost()); |
| 70 } | 108 } |
| 71 | 109 |
| 72 void TestShadersWithTexCoordPrecision(TexCoordPrecision precision) { | 110 void TestShadersWithTexCoordPrecision(TexCoordPrecision precision) { |
| 73 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassProgram(precision)); | 111 for (int i = 0; i < NumBlendModes; ++i) { |
| 74 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassProgramAA(precision)); | 112 BlendMode blend_mode = static_cast<BlendMode>(i); |
| 75 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgram(precision)); | 113 EXPECT_PROGRAM_VALID( |
| 76 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgramAA(precision)); | 114 renderer()->GetRenderPassProgram(precision, blend_mode)); |
| 77 EXPECT_PROGRAM_VALID( | 115 EXPECT_PROGRAM_VALID( |
| 78 renderer()->GetRenderPassColorMatrixProgram(precision)); | 116 renderer()->GetRenderPassProgramAA(precision, blend_mode)); |
| 79 EXPECT_PROGRAM_VALID( | 117 EXPECT_PROGRAM_VALID( |
| 80 renderer()->GetRenderPassMaskColorMatrixProgramAA(precision)); | 118 renderer()->GetRenderPassMaskProgram(precision, blend_mode)); |
| 81 EXPECT_PROGRAM_VALID( | 119 EXPECT_PROGRAM_VALID( |
| 82 renderer()->GetRenderPassColorMatrixProgramAA(precision)); | 120 renderer()->GetRenderPassMaskProgramAA(precision, blend_mode)); |
| 83 EXPECT_PROGRAM_VALID( | 121 EXPECT_PROGRAM_VALID( |
| 84 renderer()->GetRenderPassMaskColorMatrixProgram(precision)); | 122 renderer()->GetRenderPassColorMatrixProgram(precision, blend_mode)); |
| 123 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskColorMatrixProgramAA( |
| 124 precision, blend_mode)); |
| 125 EXPECT_PROGRAM_VALID( |
| 126 renderer()->GetRenderPassColorMatrixProgramAA(precision, blend_mode)); |
| 127 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskColorMatrixProgram( |
| 128 precision, blend_mode)); |
| 129 } |
| 85 EXPECT_PROGRAM_VALID(renderer()->GetTextureProgram(precision)); | 130 EXPECT_PROGRAM_VALID(renderer()->GetTextureProgram(precision)); |
| 86 EXPECT_PROGRAM_VALID( | 131 EXPECT_PROGRAM_VALID( |
| 87 renderer()->GetNonPremultipliedTextureProgram(precision)); | 132 renderer()->GetNonPremultipliedTextureProgram(precision)); |
| 88 EXPECT_PROGRAM_VALID(renderer()->GetTextureBackgroundProgram(precision)); | 133 EXPECT_PROGRAM_VALID(renderer()->GetTextureBackgroundProgram(precision)); |
| 89 EXPECT_PROGRAM_VALID( | 134 EXPECT_PROGRAM_VALID( |
| 90 renderer()->GetNonPremultipliedTextureBackgroundProgram(precision)); | 135 renderer()->GetNonPremultipliedTextureBackgroundProgram(precision)); |
| 91 EXPECT_PROGRAM_VALID(renderer()->GetTextureIOSurfaceProgram(precision)); | 136 EXPECT_PROGRAM_VALID(renderer()->GetTextureIOSurfaceProgram(precision)); |
| 92 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVProgram(precision)); | 137 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVProgram(precision)); |
| 93 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVAProgram(precision)); | 138 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVAProgram(precision)); |
| 94 // This is unlikely to be ever true in tests due to usage of osmesa. | 139 // This is unlikely to be ever true in tests due to usage of osmesa. |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()).Pass(); | 197 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()).Pass(); |
| 153 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 198 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| 154 | 199 |
| 155 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 200 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
| 156 resource_provider_ = ResourceProvider::Create(output_surface_.get(), | 201 resource_provider_ = ResourceProvider::Create(output_surface_.get(), |
| 157 shared_bitmap_manager_.get(), | 202 shared_bitmap_manager_.get(), |
| 158 NULL, | 203 NULL, |
| 159 NULL, | 204 NULL, |
| 160 0, | 205 0, |
| 161 false, | 206 false, |
| 162 1, | 207 1).Pass(); |
| 163 false).Pass(); | |
| 164 renderer_ = make_scoped_ptr(new FakeRendererGL(&renderer_client_, | 208 renderer_ = make_scoped_ptr(new FakeRendererGL(&renderer_client_, |
| 165 &settings_, | 209 &settings_, |
| 166 output_surface_.get(), | 210 output_surface_.get(), |
| 167 resource_provider_.get())); | 211 resource_provider_.get())); |
| 168 } | 212 } |
| 169 | 213 |
| 170 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } | 214 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } |
| 171 | 215 |
| 172 LayerTreeSettings settings_; | 216 LayerTreeSettings settings_; |
| 173 FakeOutputSurfaceClient output_surface_client_; | 217 FakeOutputSurfaceClient output_surface_client_; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 189 output_surface_ = FakeOutputSurface::Create3d().Pass(); | 233 output_surface_ = FakeOutputSurface::Create3d().Pass(); |
| 190 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 234 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| 191 | 235 |
| 192 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 236 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
| 193 resource_provider_ = ResourceProvider::Create(output_surface_.get(), | 237 resource_provider_ = ResourceProvider::Create(output_surface_.get(), |
| 194 shared_bitmap_manager_.get(), | 238 shared_bitmap_manager_.get(), |
| 195 NULL, | 239 NULL, |
| 196 NULL, | 240 NULL, |
| 197 0, | 241 0, |
| 198 false, | 242 false, |
| 199 1, | 243 1).Pass(); |
| 200 false).Pass(); | |
| 201 renderer_.reset(new FakeRendererGL(&renderer_client_, | 244 renderer_.reset(new FakeRendererGL(&renderer_client_, |
| 202 &settings_, | 245 &settings_, |
| 203 output_surface_.get(), | 246 output_surface_.get(), |
| 204 resource_provider_.get())); | 247 resource_provider_.get())); |
| 205 } | 248 } |
| 206 | 249 |
| 207 void TestRenderPassProgram(TexCoordPrecision precision) { | 250 void TestRenderPassProgram(TexCoordPrecision precision, |
| 208 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_[precision]); | 251 BlendMode blend_mode) { |
| 209 EXPECT_EQ(renderer_->render_pass_program_[precision].program(), | 252 EXPECT_PROGRAM_VALID( |
| 253 &renderer_->render_pass_program_[precision][blend_mode]); |
| 254 EXPECT_EQ(renderer_->render_pass_program_[precision][blend_mode].program(), |
| 210 renderer_->program_shadow_); | 255 renderer_->program_shadow_); |
| 211 } | 256 } |
| 212 | 257 |
| 213 void TestRenderPassColorMatrixProgram(TexCoordPrecision precision) { | 258 void TestRenderPassColorMatrixProgram(TexCoordPrecision precision, |
| 259 BlendMode blend_mode) { |
| 214 EXPECT_PROGRAM_VALID( | 260 EXPECT_PROGRAM_VALID( |
| 215 &renderer_->render_pass_color_matrix_program_[precision]); | 261 &renderer_->render_pass_color_matrix_program_[precision][blend_mode]); |
| 216 EXPECT_EQ(renderer_->render_pass_color_matrix_program_[precision].program(), | 262 EXPECT_EQ( |
| 263 renderer_->render_pass_color_matrix_program_[precision][blend_mode] |
| 264 .program(), |
| 265 renderer_->program_shadow_); |
| 266 } |
| 267 |
| 268 void TestRenderPassMaskProgram(TexCoordPrecision precision, |
| 269 BlendMode blend_mode) { |
| 270 EXPECT_PROGRAM_VALID( |
| 271 &renderer_->render_pass_mask_program_[precision][blend_mode]); |
| 272 EXPECT_EQ( |
| 273 renderer_->render_pass_mask_program_[precision][blend_mode].program(), |
| 274 renderer_->program_shadow_); |
| 275 } |
| 276 |
| 277 void TestRenderPassMaskColorMatrixProgram(TexCoordPrecision precision, |
| 278 BlendMode blend_mode) { |
| 279 EXPECT_PROGRAM_VALID( |
| 280 &renderer_ |
| 281 ->render_pass_mask_color_matrix_program_[precision][blend_mode]); |
| 282 EXPECT_EQ( |
| 283 renderer_->render_pass_mask_color_matrix_program_[precision][blend_mode] |
| 284 .program(), |
| 285 renderer_->program_shadow_); |
| 286 } |
| 287 |
| 288 void TestRenderPassProgramAA(TexCoordPrecision precision, |
| 289 BlendMode blend_mode) { |
| 290 EXPECT_PROGRAM_VALID( |
| 291 &renderer_->render_pass_program_aa_[precision][blend_mode]); |
| 292 EXPECT_EQ( |
| 293 renderer_->render_pass_program_aa_[precision][blend_mode].program(), |
| 294 renderer_->program_shadow_); |
| 295 } |
| 296 |
| 297 void TestRenderPassColorMatrixProgramAA(TexCoordPrecision precision, |
| 298 BlendMode blend_mode) { |
| 299 EXPECT_PROGRAM_VALID( |
| 300 &renderer_ |
| 301 ->render_pass_color_matrix_program_aa_[precision][blend_mode]); |
| 302 EXPECT_EQ( |
| 303 renderer_->render_pass_color_matrix_program_aa_[precision][blend_mode] |
| 304 .program(), |
| 305 renderer_->program_shadow_); |
| 306 } |
| 307 |
| 308 void TestRenderPassMaskProgramAA(TexCoordPrecision precision, |
| 309 BlendMode blend_mode) { |
| 310 EXPECT_PROGRAM_VALID( |
| 311 &renderer_->render_pass_mask_program_aa_[precision][blend_mode]); |
| 312 EXPECT_EQ(renderer_->render_pass_mask_program_aa_[precision][blend_mode] |
| 313 .program(), |
| 217 renderer_->program_shadow_); | 314 renderer_->program_shadow_); |
| 218 } | 315 } |
| 219 | 316 |
| 220 void TestRenderPassMaskProgram(TexCoordPrecision precision) { | 317 void TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecision precision, |
| 221 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_program_[precision]); | 318 BlendMode blend_mode) { |
| 222 EXPECT_EQ(renderer_->render_pass_mask_program_[precision].program(), | 319 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_color_matrix_program_aa_ |
| 223 renderer_->program_shadow_); | 320 [precision][blend_mode]); |
| 224 } | |
| 225 | |
| 226 void TestRenderPassMaskColorMatrixProgram(TexCoordPrecision precision) { | |
| 227 EXPECT_PROGRAM_VALID( | |
| 228 &renderer_->render_pass_mask_color_matrix_program_[precision]); | |
| 229 EXPECT_EQ( | 321 EXPECT_EQ( |
| 230 renderer_->render_pass_mask_color_matrix_program_[precision].program(), | 322 renderer_ |
| 323 ->render_pass_mask_color_matrix_program_aa_[precision][blend_mode] |
| 324 .program(), |
| 231 renderer_->program_shadow_); | 325 renderer_->program_shadow_); |
| 232 } | 326 } |
| 233 | 327 |
| 234 void TestRenderPassProgramAA(TexCoordPrecision precision) { | |
| 235 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_aa_[precision]); | |
| 236 EXPECT_EQ(renderer_->render_pass_program_aa_[precision].program(), | |
| 237 renderer_->program_shadow_); | |
| 238 } | |
| 239 | |
| 240 void TestRenderPassColorMatrixProgramAA(TexCoordPrecision precision) { | |
| 241 EXPECT_PROGRAM_VALID( | |
| 242 &renderer_->render_pass_color_matrix_program_aa_[precision]); | |
| 243 EXPECT_EQ( | |
| 244 renderer_->render_pass_color_matrix_program_aa_[precision].program(), | |
| 245 renderer_->program_shadow_); | |
| 246 } | |
| 247 | |
| 248 void TestRenderPassMaskProgramAA(TexCoordPrecision precision) { | |
| 249 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_program_aa_[precision]); | |
| 250 EXPECT_EQ(renderer_->render_pass_mask_program_aa_[precision].program(), | |
| 251 renderer_->program_shadow_); | |
| 252 } | |
| 253 | |
| 254 void TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecision precision) { | |
| 255 EXPECT_PROGRAM_VALID( | |
| 256 &renderer_->render_pass_mask_color_matrix_program_aa_[precision]); | |
| 257 EXPECT_EQ(renderer_->render_pass_mask_color_matrix_program_aa_[precision] | |
| 258 .program(), | |
| 259 renderer_->program_shadow_); | |
| 260 } | |
| 261 | |
| 262 void TestSolidColorProgramAA() { | 328 void TestSolidColorProgramAA() { |
| 263 EXPECT_PROGRAM_VALID(&renderer_->solid_color_program_aa_); | 329 EXPECT_PROGRAM_VALID(&renderer_->solid_color_program_aa_); |
| 264 EXPECT_EQ(renderer_->solid_color_program_aa_.program(), | 330 EXPECT_EQ(renderer_->solid_color_program_aa_.program(), |
| 265 renderer_->program_shadow_); | 331 renderer_->program_shadow_); |
| 266 } | 332 } |
| 267 | 333 |
| 268 LayerTreeSettings settings_; | 334 LayerTreeSettings settings_; |
| 269 FakeOutputSurfaceClient output_surface_client_; | 335 FakeOutputSurfaceClient output_surface_client_; |
| 270 scoped_ptr<FakeOutputSurface> output_surface_; | 336 scoped_ptr<FakeOutputSurface> output_surface_; |
| 271 FakeRendererClient renderer_client_; | 337 FakeRendererClient renderer_client_; |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 | 529 |
| 464 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 530 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 465 new TestSharedBitmapManager()); | 531 new TestSharedBitmapManager()); |
| 466 scoped_ptr<ResourceProvider> resource_provider( | 532 scoped_ptr<ResourceProvider> resource_provider( |
| 467 ResourceProvider::Create(output_surface.get(), | 533 ResourceProvider::Create(output_surface.get(), |
| 468 shared_bitmap_manager.get(), | 534 shared_bitmap_manager.get(), |
| 469 NULL, | 535 NULL, |
| 470 NULL, | 536 NULL, |
| 471 0, | 537 0, |
| 472 false, | 538 false, |
| 473 1, | 539 1)); |
| 474 false)); | |
| 475 | 540 |
| 476 LayerTreeSettings settings; | 541 LayerTreeSettings settings; |
| 477 FakeRendererClient renderer_client; | 542 FakeRendererClient renderer_client; |
| 478 FakeRendererGL renderer(&renderer_client, | 543 FakeRendererGL renderer(&renderer_client, |
| 479 &settings, | 544 &settings, |
| 480 output_surface.get(), | 545 output_surface.get(), |
| 481 resource_provider.get()); | 546 resource_provider.get()); |
| 482 } | 547 } |
| 483 | 548 |
| 484 class LoseContextOnFirstGetContext : public TestWebGraphicsContext3D { | 549 class LoseContextOnFirstGetContext : public TestWebGraphicsContext3D { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 504 | 569 |
| 505 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 570 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 506 new TestSharedBitmapManager()); | 571 new TestSharedBitmapManager()); |
| 507 scoped_ptr<ResourceProvider> resource_provider( | 572 scoped_ptr<ResourceProvider> resource_provider( |
| 508 ResourceProvider::Create(output_surface.get(), | 573 ResourceProvider::Create(output_surface.get(), |
| 509 shared_bitmap_manager.get(), | 574 shared_bitmap_manager.get(), |
| 510 NULL, | 575 NULL, |
| 511 NULL, | 576 NULL, |
| 512 0, | 577 0, |
| 513 false, | 578 false, |
| 514 1, | 579 1)); |
| 515 false)); | |
| 516 | 580 |
| 517 LayerTreeSettings settings; | 581 LayerTreeSettings settings; |
| 518 FakeRendererClient renderer_client; | 582 FakeRendererClient renderer_client; |
| 519 FakeRendererGL renderer(&renderer_client, | 583 FakeRendererGL renderer(&renderer_client, |
| 520 &settings, | 584 &settings, |
| 521 output_surface.get(), | 585 output_surface.get(), |
| 522 resource_provider.get()); | 586 resource_provider.get()); |
| 523 } | 587 } |
| 524 | 588 |
| 525 class ClearCountingContext : public TestWebGraphicsContext3D { | 589 class ClearCountingContext : public TestWebGraphicsContext3D { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 544 | 608 |
| 545 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 609 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 546 new TestSharedBitmapManager()); | 610 new TestSharedBitmapManager()); |
| 547 scoped_ptr<ResourceProvider> resource_provider( | 611 scoped_ptr<ResourceProvider> resource_provider( |
| 548 ResourceProvider::Create(output_surface.get(), | 612 ResourceProvider::Create(output_surface.get(), |
| 549 shared_bitmap_manager.get(), | 613 shared_bitmap_manager.get(), |
| 550 NULL, | 614 NULL, |
| 551 NULL, | 615 NULL, |
| 552 0, | 616 0, |
| 553 false, | 617 false, |
| 554 1, | 618 1)); |
| 555 false)); | |
| 556 | 619 |
| 557 LayerTreeSettings settings; | 620 LayerTreeSettings settings; |
| 558 FakeRendererClient renderer_client; | 621 FakeRendererClient renderer_client; |
| 559 FakeRendererGL renderer(&renderer_client, | 622 FakeRendererGL renderer(&renderer_client, |
| 560 &settings, | 623 &settings, |
| 561 output_surface.get(), | 624 output_surface.get(), |
| 562 resource_provider.get()); | 625 resource_provider.get()); |
| 563 | 626 |
| 564 gfx::Rect viewport_rect(1, 1); | 627 gfx::Rect viewport_rect(1, 1); |
| 565 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 628 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 | 660 |
| 598 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 661 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 599 new TestSharedBitmapManager()); | 662 new TestSharedBitmapManager()); |
| 600 scoped_ptr<ResourceProvider> resource_provider( | 663 scoped_ptr<ResourceProvider> resource_provider( |
| 601 ResourceProvider::Create(output_surface.get(), | 664 ResourceProvider::Create(output_surface.get(), |
| 602 shared_bitmap_manager.get(), | 665 shared_bitmap_manager.get(), |
| 603 NULL, | 666 NULL, |
| 604 NULL, | 667 NULL, |
| 605 0, | 668 0, |
| 606 false, | 669 false, |
| 607 1, | 670 1)); |
| 608 false)); | |
| 609 | 671 |
| 610 LayerTreeSettings settings; | 672 LayerTreeSettings settings; |
| 611 FakeRendererClient renderer_client; | 673 FakeRendererClient renderer_client; |
| 612 FakeRendererGL renderer(&renderer_client, | 674 FakeRendererGL renderer(&renderer_client, |
| 613 &settings, | 675 &settings, |
| 614 output_surface.get(), | 676 output_surface.get(), |
| 615 resource_provider.get()); | 677 resource_provider.get()); |
| 616 | 678 |
| 617 gfx::Rect viewport_rect(1, 1); | 679 gfx::Rect viewport_rect(1, 1); |
| 618 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 680 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 643 | 705 |
| 644 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 706 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 645 new TestSharedBitmapManager()); | 707 new TestSharedBitmapManager()); |
| 646 scoped_ptr<ResourceProvider> resource_provider( | 708 scoped_ptr<ResourceProvider> resource_provider( |
| 647 ResourceProvider::Create(output_surface.get(), | 709 ResourceProvider::Create(output_surface.get(), |
| 648 shared_bitmap_manager.get(), | 710 shared_bitmap_manager.get(), |
| 649 NULL, | 711 NULL, |
| 650 NULL, | 712 NULL, |
| 651 0, | 713 0, |
| 652 false, | 714 false, |
| 653 1, | 715 1)); |
| 654 false)); | |
| 655 | 716 |
| 656 LayerTreeSettings settings; | 717 LayerTreeSettings settings; |
| 657 FakeRendererClient renderer_client; | 718 FakeRendererClient renderer_client; |
| 658 FakeRendererGL renderer(&renderer_client, | 719 FakeRendererGL renderer(&renderer_client, |
| 659 &settings, | 720 &settings, |
| 660 output_surface.get(), | 721 output_surface.get(), |
| 661 resource_provider.get()); | 722 resource_provider.get()); |
| 662 | 723 |
| 663 gfx::Rect viewport_rect(1, 1); | 724 gfx::Rect viewport_rect(1, 1); |
| 664 AddRenderPass(&render_passes_in_draw_order_, | 725 AddRenderPass(&render_passes_in_draw_order_, |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 729 | 790 |
| 730 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 791 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 731 new TestSharedBitmapManager()); | 792 new TestSharedBitmapManager()); |
| 732 scoped_ptr<ResourceProvider> resource_provider( | 793 scoped_ptr<ResourceProvider> resource_provider( |
| 733 ResourceProvider::Create(output_surface.get(), | 794 ResourceProvider::Create(output_surface.get(), |
| 734 shared_bitmap_manager.get(), | 795 shared_bitmap_manager.get(), |
| 735 NULL, | 796 NULL, |
| 736 NULL, | 797 NULL, |
| 737 0, | 798 0, |
| 738 false, | 799 false, |
| 739 1, | 800 1)); |
| 740 false)); | |
| 741 | 801 |
| 742 LayerTreeSettings settings; | 802 LayerTreeSettings settings; |
| 743 FakeRendererClient renderer_client; | 803 FakeRendererClient renderer_client; |
| 744 FakeRendererGL renderer(&renderer_client, | 804 FakeRendererGL renderer(&renderer_client, |
| 745 &settings, | 805 &settings, |
| 746 output_surface.get(), | 806 output_surface.get(), |
| 747 resource_provider.get()); | 807 resource_provider.get()); |
| 748 | 808 |
| 749 gfx::Rect viewport_rect(1, 1); | 809 gfx::Rect viewport_rect(1, 1); |
| 750 AddRenderPass(&render_passes_in_draw_order_, | 810 AddRenderPass(&render_passes_in_draw_order_, |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 | 861 |
| 802 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 862 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 803 new TestSharedBitmapManager()); | 863 new TestSharedBitmapManager()); |
| 804 scoped_ptr<ResourceProvider> resource_provider( | 864 scoped_ptr<ResourceProvider> resource_provider( |
| 805 ResourceProvider::Create(output_surface.get(), | 865 ResourceProvider::Create(output_surface.get(), |
| 806 shared_bitmap_manager.get(), | 866 shared_bitmap_manager.get(), |
| 807 NULL, | 867 NULL, |
| 808 NULL, | 868 NULL, |
| 809 0, | 869 0, |
| 810 false, | 870 false, |
| 811 1, | 871 1)); |
| 812 false)); | |
| 813 | 872 |
| 814 LayerTreeSettings settings; | 873 LayerTreeSettings settings; |
| 815 FakeRendererClient renderer_client; | 874 FakeRendererClient renderer_client; |
| 816 FakeRendererGL renderer(&renderer_client, | 875 FakeRendererGL renderer(&renderer_client, |
| 817 &settings, | 876 &settings, |
| 818 output_surface.get(), | 877 output_surface.get(), |
| 819 resource_provider.get()); | 878 resource_provider.get()); |
| 820 | 879 |
| 821 // During initialization we are allowed to set any texture parameters. | 880 // During initialization we are allowed to set any texture parameters. |
| 822 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); | 881 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 893 | 952 |
| 894 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 953 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 895 new TestSharedBitmapManager()); | 954 new TestSharedBitmapManager()); |
| 896 scoped_ptr<ResourceProvider> resource_provider( | 955 scoped_ptr<ResourceProvider> resource_provider( |
| 897 ResourceProvider::Create(output_surface.get(), | 956 ResourceProvider::Create(output_surface.get(), |
| 898 shared_bitmap_manager.get(), | 957 shared_bitmap_manager.get(), |
| 899 NULL, | 958 NULL, |
| 900 NULL, | 959 NULL, |
| 901 0, | 960 0, |
| 902 false, | 961 false, |
| 903 1, | 962 1)); |
| 904 false)); | |
| 905 | 963 |
| 906 LayerTreeSettings settings; | 964 LayerTreeSettings settings; |
| 907 settings.should_clear_root_render_pass = false; | 965 settings.should_clear_root_render_pass = false; |
| 908 | 966 |
| 909 FakeRendererClient renderer_client; | 967 FakeRendererClient renderer_client; |
| 910 FakeRendererGL renderer(&renderer_client, | 968 FakeRendererGL renderer(&renderer_client, |
| 911 &settings, | 969 &settings, |
| 912 output_surface.get(), | 970 output_surface.get(), |
| 913 resource_provider.get()); | 971 resource_provider.get()); |
| 914 | 972 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 992 | 1050 |
| 993 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 1051 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 994 new TestSharedBitmapManager()); | 1052 new TestSharedBitmapManager()); |
| 995 scoped_ptr<ResourceProvider> resource_provider( | 1053 scoped_ptr<ResourceProvider> resource_provider( |
| 996 ResourceProvider::Create(output_surface.get(), | 1054 ResourceProvider::Create(output_surface.get(), |
| 997 shared_bitmap_manager.get(), | 1055 shared_bitmap_manager.get(), |
| 998 NULL, | 1056 NULL, |
| 999 NULL, | 1057 NULL, |
| 1000 0, | 1058 0, |
| 1001 false, | 1059 false, |
| 1002 1, | 1060 1)); |
| 1003 false)); | |
| 1004 | 1061 |
| 1005 LayerTreeSettings settings; | 1062 LayerTreeSettings settings; |
| 1006 FakeRendererClient renderer_client; | 1063 FakeRendererClient renderer_client; |
| 1007 FakeRendererGL renderer(&renderer_client, | 1064 FakeRendererGL renderer(&renderer_client, |
| 1008 &settings, | 1065 &settings, |
| 1009 output_surface.get(), | 1066 output_surface.get(), |
| 1010 resource_provider.get()); | 1067 resource_provider.get()); |
| 1011 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 1068 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
| 1012 | 1069 |
| 1013 gfx::Rect viewport_rect(1, 1); | 1070 gfx::Rect viewport_rect(1, 1); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1091 | 1148 |
| 1092 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 1149 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 1093 new TestSharedBitmapManager()); | 1150 new TestSharedBitmapManager()); |
| 1094 scoped_ptr<ResourceProvider> resource_provider( | 1151 scoped_ptr<ResourceProvider> resource_provider( |
| 1095 ResourceProvider::Create(output_surface.get(), | 1152 ResourceProvider::Create(output_surface.get(), |
| 1096 shared_bitmap_manager.get(), | 1153 shared_bitmap_manager.get(), |
| 1097 NULL, | 1154 NULL, |
| 1098 NULL, | 1155 NULL, |
| 1099 0, | 1156 0, |
| 1100 false, | 1157 false, |
| 1101 1, | 1158 1)); |
| 1102 false)); | |
| 1103 | 1159 |
| 1104 LayerTreeSettings settings; | 1160 LayerTreeSettings settings; |
| 1105 settings.partial_swap_enabled = true; | 1161 settings.partial_swap_enabled = true; |
| 1106 FakeRendererClient renderer_client; | 1162 FakeRendererClient renderer_client; |
| 1107 FakeRendererGL renderer(&renderer_client, | 1163 FakeRendererGL renderer(&renderer_client, |
| 1108 &settings, | 1164 &settings, |
| 1109 output_surface.get(), | 1165 output_surface.get(), |
| 1110 resource_provider.get()); | 1166 resource_provider.get()); |
| 1111 EXPECT_TRUE(renderer.Capabilities().using_partial_swap); | 1167 EXPECT_TRUE(renderer.Capabilities().using_partial_swap); |
| 1112 | 1168 |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1281 | 1337 |
| 1282 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 1338 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 1283 new TestSharedBitmapManager()); | 1339 new TestSharedBitmapManager()); |
| 1284 scoped_ptr<ResourceProvider> resource_provider( | 1340 scoped_ptr<ResourceProvider> resource_provider( |
| 1285 ResourceProvider::Create(output_surface.get(), | 1341 ResourceProvider::Create(output_surface.get(), |
| 1286 shared_bitmap_manager.get(), | 1342 shared_bitmap_manager.get(), |
| 1287 NULL, | 1343 NULL, |
| 1288 NULL, | 1344 NULL, |
| 1289 0, | 1345 0, |
| 1290 false, | 1346 false, |
| 1291 1, | 1347 1)); |
| 1292 false)); | |
| 1293 | 1348 |
| 1294 LayerTreeSettings settings; | 1349 LayerTreeSettings settings; |
| 1295 FakeRendererClient renderer_client; | 1350 FakeRendererClient renderer_client; |
| 1296 FakeRendererGL renderer(&renderer_client, | 1351 FakeRendererGL renderer(&renderer_client, |
| 1297 &settings, | 1352 &settings, |
| 1298 output_surface.get(), | 1353 output_surface.get(), |
| 1299 resource_provider.get()); | 1354 resource_provider.get()); |
| 1300 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 1355 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
| 1301 | 1356 |
| 1302 gfx::Rect device_viewport_rect(10, 10, 100, 100); | 1357 gfx::Rect device_viewport_rect(10, 10, 100, 100); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1354 skia::RefPtr<SkColorFilter> color_filter( | 1409 skia::RefPtr<SkColorFilter> color_filter( |
| 1355 skia::AdoptRef(SkColorMatrixFilter::Create(matrix))); | 1410 skia::AdoptRef(SkColorMatrixFilter::Create(matrix))); |
| 1356 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef( | 1411 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef( |
| 1357 SkColorFilterImageFilter::Create(color_filter.get(), NULL)); | 1412 SkColorFilterImageFilter::Create(color_filter.get(), NULL)); |
| 1358 FilterOperations filters; | 1413 FilterOperations filters; |
| 1359 filters.Append(FilterOperation::CreateReferenceFilter(filter)); | 1414 filters.Append(FilterOperation::CreateReferenceFilter(filter)); |
| 1360 | 1415 |
| 1361 gfx::Transform transform_causing_aa; | 1416 gfx::Transform transform_causing_aa; |
| 1362 transform_causing_aa.Rotate(20.0); | 1417 transform_causing_aa.Rotate(20.0); |
| 1363 | 1418 |
| 1364 // RenderPassProgram | 1419 for (int i = 0; i < NumBlendModes; ++i) { |
| 1365 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1420 BlendMode blend_mode = static_cast<BlendMode>(i); |
| 1366 child_pass_id, | 1421 SkXfermode::Mode xfer_mode = BlendModeToSkXfermode(blend_mode); |
| 1367 child_rect, | 1422 // RenderPassProgram |
| 1368 gfx::Transform()); | 1423 render_passes_in_draw_order_.clear(); |
| 1369 | 1424 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1370 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1425 child_pass_id, |
| 1371 root_pass_id, | 1426 child_rect, |
| 1372 viewport_rect, | 1427 gfx::Transform()); |
| 1373 gfx::Transform()); | 1428 |
| 1374 | 1429 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1375 AddRenderPassQuad( | 1430 root_pass_id, |
| 1376 root_pass, child_pass, 0, FilterOperations(), gfx::Transform()); | 1431 viewport_rect, |
| 1377 | 1432 gfx::Transform()); |
| 1378 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1433 |
| 1379 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1434 AddRenderPassQuad(root_pass, |
| 1380 1.f, | 1435 child_pass, |
| 1381 viewport_rect, | 1436 0, |
| 1382 viewport_rect, | 1437 FilterOperations(), |
| 1383 false); | 1438 gfx::Transform(), |
| 1384 TestRenderPassProgram(TexCoordPrecisionMedium); | 1439 xfer_mode); |
| 1385 | 1440 |
| 1386 // RenderPassColorMatrixProgram | 1441 renderer_->DecideRenderPassAllocationsForFrame( |
| 1387 render_passes_in_draw_order_.clear(); | 1442 render_passes_in_draw_order_); |
| 1388 | 1443 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1389 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1444 1.f, |
| 1390 child_pass_id, | 1445 viewport_rect, |
| 1391 child_rect, | 1446 viewport_rect, |
| 1392 transform_causing_aa); | 1447 false); |
| 1393 | 1448 TestRenderPassProgram(TexCoordPrecisionMedium, blend_mode); |
| 1394 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1449 |
| 1395 root_pass_id, | 1450 // RenderPassColorMatrixProgram |
| 1396 viewport_rect, | 1451 render_passes_in_draw_order_.clear(); |
| 1397 gfx::Transform()); | 1452 |
| 1398 | 1453 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1399 AddRenderPassQuad(root_pass, child_pass, 0, filters, gfx::Transform()); | 1454 child_pass_id, |
| 1400 | 1455 child_rect, |
| 1401 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1456 transform_causing_aa); |
| 1402 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1457 |
| 1403 1.f, | 1458 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1404 viewport_rect, | 1459 root_pass_id, |
| 1405 viewport_rect, | 1460 viewport_rect, |
| 1406 false); | 1461 gfx::Transform()); |
| 1407 TestRenderPassColorMatrixProgram(TexCoordPrecisionMedium); | 1462 |
| 1408 | 1463 AddRenderPassQuad( |
| 1409 // RenderPassMaskProgram | 1464 root_pass, child_pass, 0, filters, gfx::Transform(), xfer_mode); |
| 1410 render_passes_in_draw_order_.clear(); | 1465 |
| 1411 | 1466 renderer_->DecideRenderPassAllocationsForFrame( |
| 1412 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1467 render_passes_in_draw_order_); |
| 1413 child_pass_id, | 1468 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1414 child_rect, | 1469 1.f, |
| 1415 gfx::Transform()); | 1470 viewport_rect, |
| 1416 | 1471 viewport_rect, |
| 1417 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1472 false); |
| 1418 root_pass_id, | 1473 TestRenderPassColorMatrixProgram(TexCoordPrecisionMedium, blend_mode); |
| 1419 viewport_rect, | 1474 |
| 1420 gfx::Transform()); | 1475 // RenderPassMaskProgram |
| 1421 | 1476 render_passes_in_draw_order_.clear(); |
| 1422 AddRenderPassQuad( | 1477 |
| 1423 root_pass, child_pass, mask, FilterOperations(), gfx::Transform()); | 1478 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1424 | 1479 child_pass_id, |
| 1425 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1480 child_rect, |
| 1426 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1481 gfx::Transform()); |
| 1427 1.f, | 1482 |
| 1428 viewport_rect, | 1483 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1429 viewport_rect, | 1484 root_pass_id, |
| 1430 false); | 1485 viewport_rect, |
| 1431 TestRenderPassMaskProgram(TexCoordPrecisionMedium); | 1486 gfx::Transform()); |
| 1432 | 1487 |
| 1433 // RenderPassMaskColorMatrixProgram | 1488 AddRenderPassQuad(root_pass, |
| 1434 render_passes_in_draw_order_.clear(); | 1489 child_pass, |
| 1435 | 1490 mask, |
| 1436 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1491 FilterOperations(), |
| 1437 child_pass_id, | 1492 gfx::Transform(), |
| 1438 child_rect, | 1493 xfer_mode); |
| 1439 gfx::Transform()); | 1494 |
| 1440 | 1495 renderer_->DecideRenderPassAllocationsForFrame( |
| 1441 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1496 render_passes_in_draw_order_); |
| 1442 root_pass_id, | 1497 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1443 viewport_rect, | 1498 1.f, |
| 1444 gfx::Transform()); | 1499 viewport_rect, |
| 1445 | 1500 viewport_rect, |
| 1446 AddRenderPassQuad(root_pass, child_pass, mask, filters, gfx::Transform()); | 1501 false); |
| 1447 | 1502 TestRenderPassMaskProgram(TexCoordPrecisionMedium, blend_mode); |
| 1448 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1503 |
| 1449 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1504 // RenderPassMaskColorMatrixProgram |
| 1450 1.f, | 1505 render_passes_in_draw_order_.clear(); |
| 1451 viewport_rect, | 1506 |
| 1452 viewport_rect, | 1507 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1453 false); | 1508 child_pass_id, |
| 1454 TestRenderPassMaskColorMatrixProgram(TexCoordPrecisionMedium); | 1509 child_rect, |
| 1455 | 1510 gfx::Transform()); |
| 1456 // RenderPassProgramAA | 1511 |
| 1457 render_passes_in_draw_order_.clear(); | 1512 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1458 | 1513 root_pass_id, |
| 1459 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1514 viewport_rect, |
| 1460 child_pass_id, | 1515 gfx::Transform()); |
| 1461 child_rect, | 1516 |
| 1462 transform_causing_aa); | 1517 AddRenderPassQuad( |
| 1463 | 1518 root_pass, child_pass, mask, filters, gfx::Transform(), xfer_mode); |
| 1464 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1519 |
| 1465 root_pass_id, | 1520 renderer_->DecideRenderPassAllocationsForFrame( |
| 1466 viewport_rect, | 1521 render_passes_in_draw_order_); |
| 1467 gfx::Transform()); | 1522 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1468 | 1523 1.f, |
| 1469 AddRenderPassQuad( | 1524 viewport_rect, |
| 1470 root_pass, child_pass, 0, FilterOperations(), transform_causing_aa); | 1525 viewport_rect, |
| 1471 | 1526 false); |
| 1472 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1527 TestRenderPassMaskColorMatrixProgram(TexCoordPrecisionMedium, blend_mode); |
| 1473 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1528 |
| 1474 1.f, | 1529 // RenderPassProgramAA |
| 1475 viewport_rect, | 1530 render_passes_in_draw_order_.clear(); |
| 1476 viewport_rect, | 1531 |
| 1477 false); | 1532 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1478 TestRenderPassProgramAA(TexCoordPrecisionMedium); | 1533 child_pass_id, |
| 1479 | 1534 child_rect, |
| 1480 // RenderPassColorMatrixProgramAA | 1535 transform_causing_aa); |
| 1481 render_passes_in_draw_order_.clear(); | 1536 |
| 1482 | 1537 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1483 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1538 root_pass_id, |
| 1484 child_pass_id, | 1539 viewport_rect, |
| 1485 child_rect, | 1540 gfx::Transform()); |
| 1486 transform_causing_aa); | 1541 |
| 1487 | 1542 AddRenderPassQuad(root_pass, |
| 1488 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1543 child_pass, |
| 1489 root_pass_id, | 1544 0, |
| 1490 viewport_rect, | 1545 FilterOperations(), |
| 1491 gfx::Transform()); | 1546 transform_causing_aa, |
| 1492 | 1547 xfer_mode); |
| 1493 AddRenderPassQuad(root_pass, child_pass, 0, filters, transform_causing_aa); | 1548 |
| 1494 | 1549 renderer_->DecideRenderPassAllocationsForFrame( |
| 1495 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1550 render_passes_in_draw_order_); |
| 1496 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1551 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1497 1.f, | 1552 1.f, |
| 1498 viewport_rect, | 1553 viewport_rect, |
| 1499 viewport_rect, | 1554 viewport_rect, |
| 1500 false); | 1555 false); |
| 1501 TestRenderPassColorMatrixProgramAA(TexCoordPrecisionMedium); | 1556 TestRenderPassProgramAA(TexCoordPrecisionMedium, blend_mode); |
| 1502 | 1557 |
| 1503 // RenderPassMaskProgramAA | 1558 // RenderPassColorMatrixProgramAA |
| 1504 render_passes_in_draw_order_.clear(); | 1559 render_passes_in_draw_order_.clear(); |
| 1505 | 1560 |
| 1506 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1561 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1507 child_pass_id, | 1562 child_pass_id, |
| 1508 child_rect, | 1563 child_rect, |
| 1509 transform_causing_aa); | 1564 transform_causing_aa); |
| 1510 | 1565 |
| 1511 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1566 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1512 root_pass_id, | 1567 root_pass_id, |
| 1513 viewport_rect, | 1568 viewport_rect, |
| 1514 gfx::Transform()); | 1569 gfx::Transform()); |
| 1515 | 1570 |
| 1516 AddRenderPassQuad( | 1571 AddRenderPassQuad( |
| 1517 root_pass, child_pass, mask, FilterOperations(), transform_causing_aa); | 1572 root_pass, child_pass, 0, filters, transform_causing_aa, xfer_mode); |
| 1518 | 1573 |
| 1519 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1574 renderer_->DecideRenderPassAllocationsForFrame( |
| 1520 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1575 render_passes_in_draw_order_); |
| 1521 1.f, | 1576 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1522 viewport_rect, | 1577 1.f, |
| 1523 viewport_rect, | 1578 viewport_rect, |
| 1524 false); | 1579 viewport_rect, |
| 1525 TestRenderPassMaskProgramAA(TexCoordPrecisionMedium); | 1580 false); |
| 1526 | 1581 TestRenderPassColorMatrixProgramAA(TexCoordPrecisionMedium, blend_mode); |
| 1527 // RenderPassMaskColorMatrixProgramAA | 1582 |
| 1528 render_passes_in_draw_order_.clear(); | 1583 // RenderPassMaskProgramAA |
| 1529 | 1584 render_passes_in_draw_order_.clear(); |
| 1530 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1585 |
| 1531 child_pass_id, | 1586 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1532 child_rect, | 1587 child_pass_id, |
| 1533 transform_causing_aa); | 1588 child_rect, |
| 1534 | 1589 transform_causing_aa); |
| 1535 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1590 |
| 1536 root_pass_id, | 1591 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1537 viewport_rect, | 1592 root_pass_id, |
| 1538 transform_causing_aa); | 1593 viewport_rect, |
| 1539 | 1594 gfx::Transform()); |
| 1540 AddRenderPassQuad(root_pass, child_pass, mask, filters, transform_causing_aa); | 1595 |
| 1541 | 1596 AddRenderPassQuad(root_pass, |
| 1542 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1597 child_pass, |
| 1543 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1598 mask, |
| 1544 1.f, | 1599 FilterOperations(), |
| 1545 viewport_rect, | 1600 transform_causing_aa, |
| 1546 viewport_rect, | 1601 xfer_mode); |
| 1547 false); | 1602 |
| 1548 TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecisionMedium); | 1603 renderer_->DecideRenderPassAllocationsForFrame( |
| 1604 render_passes_in_draw_order_); |
| 1605 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1606 1.f, |
| 1607 viewport_rect, |
| 1608 viewport_rect, |
| 1609 false); |
| 1610 TestRenderPassMaskProgramAA(TexCoordPrecisionMedium, blend_mode); |
| 1611 |
| 1612 // RenderPassMaskColorMatrixProgramAA |
| 1613 render_passes_in_draw_order_.clear(); |
| 1614 |
| 1615 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1616 child_pass_id, |
| 1617 child_rect, |
| 1618 transform_causing_aa); |
| 1619 |
| 1620 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1621 root_pass_id, |
| 1622 viewport_rect, |
| 1623 transform_causing_aa); |
| 1624 |
| 1625 AddRenderPassQuad( |
| 1626 root_pass, child_pass, mask, filters, transform_causing_aa, xfer_mode); |
| 1627 |
| 1628 renderer_->DecideRenderPassAllocationsForFrame( |
| 1629 render_passes_in_draw_order_); |
| 1630 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1631 1.f, |
| 1632 viewport_rect, |
| 1633 viewport_rect, |
| 1634 false); |
| 1635 TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecisionMedium, blend_mode); |
| 1636 } |
| 1549 } | 1637 } |
| 1550 | 1638 |
| 1551 // At this time, the AA code path cannot be taken if the surface's rect would | 1639 // At this time, the AA code path cannot be taken if the surface's rect would |
| 1552 // project incorrectly by the given transform, because of w<0 clipping. | 1640 // project incorrectly by the given transform, because of w<0 clipping. |
| 1553 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) { | 1641 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) { |
| 1554 gfx::Rect child_rect(50, 50); | 1642 gfx::Rect child_rect(50, 50); |
| 1555 RenderPassId child_pass_id(2, 0); | 1643 RenderPassId child_pass_id(2, 0); |
| 1556 TestRenderPass* child_pass; | 1644 TestRenderPass* child_pass; |
| 1557 | 1645 |
| 1558 gfx::Rect viewport_rect(1, 1); | 1646 gfx::Rect viewport_rect(1, 1); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1573 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1661 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1574 child_pass_id, | 1662 child_pass_id, |
| 1575 child_rect, | 1663 child_rect, |
| 1576 transform_preventing_aa); | 1664 transform_preventing_aa); |
| 1577 | 1665 |
| 1578 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1666 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1579 root_pass_id, | 1667 root_pass_id, |
| 1580 viewport_rect, | 1668 viewport_rect, |
| 1581 gfx::Transform()); | 1669 gfx::Transform()); |
| 1582 | 1670 |
| 1583 AddRenderPassQuad( | 1671 AddRenderPassQuad(root_pass, |
| 1584 root_pass, child_pass, 0, FilterOperations(), transform_preventing_aa); | 1672 child_pass, |
| 1673 0, |
| 1674 FilterOperations(), |
| 1675 transform_preventing_aa, |
| 1676 SkXfermode::kSrcOver_Mode); |
| 1585 | 1677 |
| 1586 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1678 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
| 1587 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1679 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1588 1.f, | 1680 1.f, |
| 1589 viewport_rect, | 1681 viewport_rect, |
| 1590 viewport_rect, | 1682 viewport_rect, |
| 1591 false); | 1683 false); |
| 1592 | 1684 |
| 1593 // If use_aa incorrectly ignores clipping, it will use the | 1685 // If use_aa incorrectly ignores clipping, it will use the |
| 1594 // RenderPassProgramAA shader instead of the RenderPassProgram. | 1686 // RenderPassProgramAA shader instead of the RenderPassProgram. |
| 1595 TestRenderPassProgram(TexCoordPrecisionMedium); | 1687 TestRenderPassProgram(TexCoordPrecisionMedium, BlendModeNormal); |
| 1596 } | 1688 } |
| 1597 | 1689 |
| 1598 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { | 1690 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { |
| 1599 gfx::Rect viewport_rect(1, 1); | 1691 gfx::Rect viewport_rect(1, 1); |
| 1600 RenderPassId root_pass_id(1, 0); | 1692 RenderPassId root_pass_id(1, 0); |
| 1601 TestRenderPass* root_pass; | 1693 TestRenderPass* root_pass; |
| 1602 | 1694 |
| 1603 gfx::Transform pixel_aligned_transform_causing_aa; | 1695 gfx::Transform pixel_aligned_transform_causing_aa; |
| 1604 pixel_aligned_transform_causing_aa.Translate(25.5f, 25.5f); | 1696 pixel_aligned_transform_causing_aa.Translate(25.5f, 25.5f); |
| 1605 pixel_aligned_transform_causing_aa.Scale(0.5f, 0.5f); | 1697 pixel_aligned_transform_causing_aa.Scale(0.5f, 0.5f); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1661 FakeOutputSurfaceClient output_surface_client_; | 1753 FakeOutputSurfaceClient output_surface_client_; |
| 1662 CHECK(output_surface_.BindToClient(&output_surface_client_)); | 1754 CHECK(output_surface_.BindToClient(&output_surface_client_)); |
| 1663 | 1755 |
| 1664 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 1756 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
| 1665 resource_provider_ = ResourceProvider::Create(&output_surface_, | 1757 resource_provider_ = ResourceProvider::Create(&output_surface_, |
| 1666 shared_bitmap_manager_.get(), | 1758 shared_bitmap_manager_.get(), |
| 1667 NULL, | 1759 NULL, |
| 1668 NULL, | 1760 NULL, |
| 1669 0, | 1761 0, |
| 1670 false, | 1762 false, |
| 1671 1, | 1763 1).Pass(); |
| 1672 false).Pass(); | |
| 1673 | 1764 |
| 1674 renderer_.reset(new FakeRendererGL(&renderer_client_, | 1765 renderer_.reset(new FakeRendererGL(&renderer_client_, |
| 1675 &settings_, | 1766 &settings_, |
| 1676 &output_surface_, | 1767 &output_surface_, |
| 1677 resource_provider_.get())); | 1768 resource_provider_.get())); |
| 1678 } | 1769 } |
| 1679 | 1770 |
| 1680 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } | 1771 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } |
| 1681 | 1772 |
| 1682 void DrawFrame(float device_scale_factor, | 1773 void DrawFrame(float device_scale_factor, |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1824 base::MessageLoop::current()->Run(); | 1915 base::MessageLoop::current()->Run(); |
| 1825 | 1916 |
| 1826 // The sync point should have happened. | 1917 // The sync point should have happened. |
| 1827 EXPECT_EQ(1, sync_point_callback_count); | 1918 EXPECT_EQ(1, sync_point_callback_count); |
| 1828 EXPECT_EQ(1, other_callback_count); | 1919 EXPECT_EQ(1, other_callback_count); |
| 1829 } | 1920 } |
| 1830 #endif // OS_ANDROID | 1921 #endif // OS_ANDROID |
| 1831 | 1922 |
| 1832 } // namespace | 1923 } // namespace |
| 1833 } // namespace cc | 1924 } // namespace cc |
| OLD | NEW |