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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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) { | 58 static inline SkXfermode::Mode BlendModeToSkXfermode(BlendMode blend_mode) { |
59 switch (blend_mode) { | 59 switch (blend_mode) { |
| 60 case BlendModeNone: |
60 case BlendModeNormal: | 61 case BlendModeNormal: |
61 return SkXfermode::kSrcOver_Mode; | 62 return SkXfermode::kSrcOver_Mode; |
| 63 case BlendModeScreen: |
| 64 return SkXfermode::kScreen_Mode; |
62 case BlendModeOverlay: | 65 case BlendModeOverlay: |
63 return SkXfermode::kOverlay_Mode; | 66 return SkXfermode::kOverlay_Mode; |
64 case BlendModeDarken: | 67 case BlendModeDarken: |
65 return SkXfermode::kDarken_Mode; | 68 return SkXfermode::kDarken_Mode; |
66 case BlendModeLighten: | 69 case BlendModeLighten: |
67 return SkXfermode::kLighten_Mode; | 70 return SkXfermode::kLighten_Mode; |
68 case BlendModeColorDodge: | 71 case BlendModeColorDodge: |
69 return SkXfermode::kColorDodge_Mode; | 72 return SkXfermode::kColorDodge_Mode; |
70 case BlendModeColorBurn: | 73 case BlendModeColorBurn: |
71 return SkXfermode::kColorBurn_Mode; | 74 return SkXfermode::kColorBurn_Mode; |
(...skipping 1342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1414 SkColorFilterImageFilter::Create(color_filter.get(), NULL)); | 1417 SkColorFilterImageFilter::Create(color_filter.get(), NULL)); |
1415 FilterOperations filters; | 1418 FilterOperations filters; |
1416 filters.Append(FilterOperation::CreateReferenceFilter(filter)); | 1419 filters.Append(FilterOperation::CreateReferenceFilter(filter)); |
1417 | 1420 |
1418 gfx::Transform transform_causing_aa; | 1421 gfx::Transform transform_causing_aa; |
1419 transform_causing_aa.Rotate(20.0); | 1422 transform_causing_aa.Rotate(20.0); |
1420 | 1423 |
1421 for (int i = 0; i < NumBlendModes; ++i) { | 1424 for (int i = 0; i < NumBlendModes; ++i) { |
1422 BlendMode blend_mode = static_cast<BlendMode>(i); | 1425 BlendMode blend_mode = static_cast<BlendMode>(i); |
1423 SkXfermode::Mode xfer_mode = BlendModeToSkXfermode(blend_mode); | 1426 SkXfermode::Mode xfer_mode = BlendModeToSkXfermode(blend_mode); |
| 1427 settings_.force_blending_with_shaders = (blend_mode != BlendModeNone); |
1424 // RenderPassProgram | 1428 // RenderPassProgram |
1425 render_passes_in_draw_order_.clear(); | 1429 render_passes_in_draw_order_.clear(); |
1426 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1430 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
1427 child_pass_id, | 1431 child_pass_id, |
1428 child_rect, | 1432 child_rect, |
1429 gfx::Transform()); | 1433 gfx::Transform()); |
1430 | 1434 |
1431 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1435 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1432 root_pass_id, | 1436 root_pass_id, |
1433 viewport_rect, | 1437 viewport_rect, |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1683 | 1687 |
1684 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1688 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1685 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1689 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1686 1.f, | 1690 1.f, |
1687 viewport_rect, | 1691 viewport_rect, |
1688 viewport_rect, | 1692 viewport_rect, |
1689 false); | 1693 false); |
1690 | 1694 |
1691 // If use_aa incorrectly ignores clipping, it will use the | 1695 // If use_aa incorrectly ignores clipping, it will use the |
1692 // RenderPassProgramAA shader instead of the RenderPassProgram. | 1696 // RenderPassProgramAA shader instead of the RenderPassProgram. |
1693 TestRenderPassProgram(TexCoordPrecisionMedium, BlendModeNormal); | 1697 TestRenderPassProgram(TexCoordPrecisionMedium, BlendModeNone); |
1694 } | 1698 } |
1695 | 1699 |
1696 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { | 1700 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { |
1697 gfx::Rect viewport_rect(1, 1); | 1701 gfx::Rect viewport_rect(1, 1); |
1698 RenderPassId root_pass_id(1, 0); | 1702 RenderPassId root_pass_id(1, 0); |
1699 TestRenderPass* root_pass; | 1703 TestRenderPass* root_pass; |
1700 | 1704 |
1701 gfx::Transform pixel_aligned_transform_causing_aa; | 1705 gfx::Transform pixel_aligned_transform_causing_aa; |
1702 pixel_aligned_transform_causing_aa.Translate(25.5f, 25.5f); | 1706 pixel_aligned_transform_causing_aa.Translate(25.5f, 25.5f); |
1703 pixel_aligned_transform_causing_aa.Scale(0.5f, 0.5f); | 1707 pixel_aligned_transform_causing_aa.Scale(0.5f, 0.5f); |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1921 base::MessageLoop::current()->Run(); | 1925 base::MessageLoop::current()->Run(); |
1922 | 1926 |
1923 // The sync point should have happened. | 1927 // The sync point should have happened. |
1924 EXPECT_EQ(1, sync_point_callback_count); | 1928 EXPECT_EQ(1, sync_point_callback_count); |
1925 EXPECT_EQ(1, other_callback_count); | 1929 EXPECT_EQ(1, other_callback_count); |
1926 } | 1930 } |
1927 #endif // OS_ANDROID | 1931 #endif // OS_ANDROID |
1928 | 1932 |
1929 } // namespace | 1933 } // namespace |
1930 } // namespace cc | 1934 } // namespace cc |
OLD | NEW |