Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Side by Side Diff: cc/output/gl_renderer_unittest.cc

Issue 664803003: Update from chromium a8e7c94b1b79a0948d05a1fcfff53391d22ce37a (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/overlay_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/overlay_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698