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

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

Issue 2502373003: stop using SkXfermode -- use SkBlendMode instead (Closed)
Patch Set: rebase Created 4 years, 1 month 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_candidate.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 <stdint.h> 7 #include <stdint.h>
8 8
9 #include <set> 9 #include <set>
10 #include <vector> 10 #include <vector>
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 72
73 RenderPassList render_passes_in_draw_order_; 73 RenderPassList render_passes_in_draw_order_;
74 }; 74 };
75 75
76 #define EXPECT_PROGRAM_VALID(program_binding) \ 76 #define EXPECT_PROGRAM_VALID(program_binding) \
77 do { \ 77 do { \
78 EXPECT_TRUE((program_binding)->program()); \ 78 EXPECT_TRUE((program_binding)->program()); \
79 EXPECT_TRUE((program_binding)->initialized()); \ 79 EXPECT_TRUE((program_binding)->initialized()); \
80 } while (false) 80 } while (false)
81 81
82 static inline SkXfermode::Mode BlendModeToSkXfermode(BlendMode blend_mode) { 82 static inline SkBlendMode BlendModeToSkXfermode(BlendMode blend_mode) {
83 switch (blend_mode) { 83 switch (blend_mode) {
84 case BLEND_MODE_NONE: 84 case BLEND_MODE_NONE:
85 case BLEND_MODE_NORMAL: 85 case BLEND_MODE_NORMAL:
86 return SkXfermode::kSrcOver_Mode; 86 return SkBlendMode::kSrcOver;
87 case BLEND_MODE_SCREEN: 87 case BLEND_MODE_SCREEN:
88 return SkXfermode::kScreen_Mode; 88 return SkBlendMode::kScreen;
89 case BLEND_MODE_OVERLAY: 89 case BLEND_MODE_OVERLAY:
90 return SkXfermode::kOverlay_Mode; 90 return SkBlendMode::kOverlay;
91 case BLEND_MODE_DARKEN: 91 case BLEND_MODE_DARKEN:
92 return SkXfermode::kDarken_Mode; 92 return SkBlendMode::kDarken;
93 case BLEND_MODE_LIGHTEN: 93 case BLEND_MODE_LIGHTEN:
94 return SkXfermode::kLighten_Mode; 94 return SkBlendMode::kLighten;
95 case BLEND_MODE_COLOR_DODGE: 95 case BLEND_MODE_COLOR_DODGE:
96 return SkXfermode::kColorDodge_Mode; 96 return SkBlendMode::kColorDodge;
97 case BLEND_MODE_COLOR_BURN: 97 case BLEND_MODE_COLOR_BURN:
98 return SkXfermode::kColorBurn_Mode; 98 return SkBlendMode::kColorBurn;
99 case BLEND_MODE_HARD_LIGHT: 99 case BLEND_MODE_HARD_LIGHT:
100 return SkXfermode::kHardLight_Mode; 100 return SkBlendMode::kHardLight;
101 case BLEND_MODE_SOFT_LIGHT: 101 case BLEND_MODE_SOFT_LIGHT:
102 return SkXfermode::kSoftLight_Mode; 102 return SkBlendMode::kSoftLight;
103 case BLEND_MODE_DIFFERENCE: 103 case BLEND_MODE_DIFFERENCE:
104 return SkXfermode::kDifference_Mode; 104 return SkBlendMode::kDifference;
105 case BLEND_MODE_EXCLUSION: 105 case BLEND_MODE_EXCLUSION:
106 return SkXfermode::kExclusion_Mode; 106 return SkBlendMode::kExclusion;
107 case BLEND_MODE_MULTIPLY: 107 case BLEND_MODE_MULTIPLY:
108 return SkXfermode::kMultiply_Mode; 108 return SkBlendMode::kMultiply;
109 case BLEND_MODE_HUE: 109 case BLEND_MODE_HUE:
110 return SkXfermode::kHue_Mode; 110 return SkBlendMode::kHue;
111 case BLEND_MODE_SATURATION: 111 case BLEND_MODE_SATURATION:
112 return SkXfermode::kSaturation_Mode; 112 return SkBlendMode::kSaturation;
113 case BLEND_MODE_COLOR: 113 case BLEND_MODE_COLOR:
114 return SkXfermode::kColor_Mode; 114 return SkBlendMode::kColor;
115 case BLEND_MODE_LUMINOSITY: 115 case BLEND_MODE_LUMINOSITY:
116 return SkXfermode::kLuminosity_Mode; 116 return SkBlendMode::kLuminosity;
117 } 117 }
118 return SkXfermode::kSrcOver_Mode; 118 return SkBlendMode::kSrcOver;
119 } 119 }
120 120
121 // Explicitly named to be a friend in GLRenderer for shader access. 121 // Explicitly named to be a friend in GLRenderer for shader access.
122 class GLRendererShaderPixelTest : public GLRendererPixelTest { 122 class GLRendererShaderPixelTest : public GLRendererPixelTest {
123 public: 123 public:
124 void SetUp() override { 124 void SetUp() override {
125 GLRendererPixelTest::SetUp(); 125 GLRendererPixelTest::SetUp();
126 ASSERT_FALSE(renderer()->IsContextLost()); 126 ASSERT_FALSE(renderer()->IsContextLost());
127 } 127 }
128 128
(...skipping 1085 matching lines...) Expand 10 before | Expand all | Expand 10 after
1214 FilterOperations filters; 1214 FilterOperations filters;
1215 filters.Append( 1215 filters.Append(
1216 FilterOperation::CreateReferenceFilter(SkColorFilterImageFilter::Make( 1216 FilterOperation::CreateReferenceFilter(SkColorFilterImageFilter::Make(
1217 SkColorFilter::MakeMatrixFilterRowMajor255(matrix), nullptr))); 1217 SkColorFilter::MakeMatrixFilterRowMajor255(matrix), nullptr)));
1218 1218
1219 gfx::Transform transform_causing_aa; 1219 gfx::Transform transform_causing_aa;
1220 transform_causing_aa.Rotate(20.0); 1220 transform_causing_aa.Rotate(20.0);
1221 1221
1222 for (int i = 0; i <= LAST_BLEND_MODE; ++i) { 1222 for (int i = 0; i <= LAST_BLEND_MODE; ++i) {
1223 BlendMode blend_mode = static_cast<BlendMode>(i); 1223 BlendMode blend_mode = static_cast<BlendMode>(i);
1224 SkXfermode::Mode xfer_mode = BlendModeToSkXfermode(blend_mode); 1224 SkBlendMode xfer_mode = BlendModeToSkXfermode(blend_mode);
1225 settings_.force_blending_with_shaders = (blend_mode != BLEND_MODE_NONE); 1225 settings_.force_blending_with_shaders = (blend_mode != BLEND_MODE_NONE);
1226 // RenderPassProgram 1226 // RenderPassProgram
1227 render_passes_in_draw_order_.clear(); 1227 render_passes_in_draw_order_.clear();
1228 child_pass = AddRenderPass(&render_passes_in_draw_order_, 1228 child_pass = AddRenderPass(&render_passes_in_draw_order_,
1229 child_pass_id, 1229 child_pass_id,
1230 child_rect, 1230 child_rect,
1231 gfx::Transform()); 1231 gfx::Transform());
1232 1232
1233 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, 1233 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id,
1234 gfx::Rect(viewport_size), gfx::Transform()); 1234 gfx::Rect(viewport_size), gfx::Transform());
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1420 ASSERT_TRUE(clipped); 1420 ASSERT_TRUE(clipped);
1421 1421
1422 child_pass = AddRenderPass(&render_passes_in_draw_order_, 1422 child_pass = AddRenderPass(&render_passes_in_draw_order_,
1423 child_pass_id, 1423 child_pass_id,
1424 child_rect, 1424 child_rect,
1425 transform_preventing_aa); 1425 transform_preventing_aa);
1426 1426
1427 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, 1427 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id,
1428 gfx::Rect(viewport_size), gfx::Transform()); 1428 gfx::Rect(viewport_size), gfx::Transform());
1429 1429
1430 AddRenderPassQuad(root_pass, 1430 AddRenderPassQuad(root_pass, child_pass, 0, FilterOperations(),
1431 child_pass, 1431 transform_preventing_aa, SkBlendMode::kSrcOver);
1432 0,
1433 FilterOperations(),
1434 transform_preventing_aa,
1435 SkXfermode::kSrcOver_Mode);
1436 1432
1437 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); 1433 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
1438 DrawFrame(renderer_.get(), viewport_size); 1434 DrawFrame(renderer_.get(), viewport_size);
1439 1435
1440 // If use_aa incorrectly ignores clipping, it will use the 1436 // If use_aa incorrectly ignores clipping, it will use the
1441 // RenderPassProgramAA shader instead of the RenderPassProgram. 1437 // RenderPassProgramAA shader instead of the RenderPassProgram.
1442 TestRenderPassProgram(TEX_COORD_PRECISION_MEDIUM, BLEND_MODE_NONE); 1438 TestRenderPassProgram(TEX_COORD_PRECISION_MEDIUM, BLEND_MODE_NONE);
1443 } 1439 }
1444 1440
1445 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { 1441 TEST_F(GLRendererShaderTest, DrawSolidColorShader) {
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
1829 bool nearest_neighbor = false; 1825 bool nearest_neighbor = false;
1830 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; 1826 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f};
1831 gfx::PointF uv_top_left(0, 0); 1827 gfx::PointF uv_top_left(0, 0);
1832 gfx::PointF uv_bottom_right(1, 1); 1828 gfx::PointF uv_bottom_right(1, 1);
1833 1829
1834 TextureDrawQuad* overlay_quad = 1830 TextureDrawQuad* overlay_quad =
1835 root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); 1831 root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
1836 SharedQuadState* shared_state = root_pass->CreateAndAppendSharedQuadState(); 1832 SharedQuadState* shared_state = root_pass->CreateAndAppendSharedQuadState();
1837 shared_state->SetAll(gfx::Transform(), viewport_size, 1833 shared_state->SetAll(gfx::Transform(), viewport_size,
1838 gfx::Rect(viewport_size), gfx::Rect(viewport_size), 1834 gfx::Rect(viewport_size), gfx::Rect(viewport_size),
1839 false, 1, SkXfermode::kSrcOver_Mode, 0); 1835 false, 1, SkBlendMode::kSrcOver, 0);
1840 overlay_quad->SetNew(shared_state, gfx::Rect(viewport_size), 1836 overlay_quad->SetNew(shared_state, gfx::Rect(viewport_size),
1841 gfx::Rect(viewport_size), gfx::Rect(viewport_size), 1837 gfx::Rect(viewport_size), gfx::Rect(viewport_size),
1842 resource_id, premultiplied_alpha, uv_top_left, 1838 resource_id, premultiplied_alpha, uv_top_left,
1843 uv_bottom_right, SK_ColorTRANSPARENT, vertex_opacity, 1839 uv_bottom_right, SK_ColorTRANSPARENT, vertex_opacity,
1844 flipped, nearest_neighbor, false); 1840 flipped, nearest_neighbor, false);
1845 1841
1846 // Verify that overlay_quad actually gets turned into an overlay, and even 1842 // Verify that overlay_quad actually gets turned into an overlay, and even
1847 // though it's not drawn, that its sync point is waited on. 1843 // though it's not drawn, that its sync point is waited on.
1848 EXPECT_CALL(*context, waitSyncToken(MatchesSyncToken(sync_token))).Times(1); 1844 EXPECT_CALL(*context, waitSyncToken(MatchesSyncToken(sync_token))).Times(1);
1849 EXPECT_CALL( 1845 EXPECT_CALL(
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1981 renderer_->SetVisible(true); 1977 renderer_->SetVisible(true);
1982 Mock::VerifyAndClearExpectations(context_support_ptr_); 1978 Mock::VerifyAndClearExpectations(context_support_ptr_);
1983 1979
1984 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true)); 1980 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true));
1985 renderer_->SetVisible(false); 1981 renderer_->SetVisible(false);
1986 Mock::VerifyAndClearExpectations(context_support_ptr_); 1982 Mock::VerifyAndClearExpectations(context_support_ptr_);
1987 } 1983 }
1988 1984
1989 } // namespace 1985 } // namespace
1990 } // namespace cc 1986 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/overlay_candidate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698