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 "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "CCRenderSurfaceFilters.h" | 7 #include "CCRenderSurfaceFilters.h" |
8 | 8 |
9 #include "cc/test/compositor_fake_web_graphics_context_3d.h" | 9 #include "cc/test/compositor_fake_web_graphics_context_3d.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
11 #include <public/WebFilterOperation.h> | 11 #include <public/WebFilterOperation.h> |
12 #include <public/WebFilterOperations.h> | 12 #include <public/WebFilterOperations.h> |
13 | 13 |
14 using namespace cc; | 14 using namespace cc; |
15 using namespace WebKit; | 15 using namespace WebKit; |
16 | 16 |
17 namespace { | 17 namespace { |
18 | 18 |
19 // Checks whether op can be combined with a following color matrix. | 19 // Checks whether op can be combined with a following color matrix. |
20 bool isCombined(const WebFilterOperation& op) | 20 bool isCombined(const WebFilterOperation& op) |
21 { | 21 { |
22 WebFilterOperations filters; | 22 WebFilterOperations filters; |
23 filters.append(op); | 23 filters.append(op); |
24 filters.append(WebFilterOperation::createBrightnessFilter(0)); // brightness
(0) is identity. | 24 filters.append(WebFilterOperation::createBrightnessFilter(0)); // brightness
(0) is identity. |
25 WebFilterOperations optimized = CCRenderSurfaceFilters::optimize(filters); | 25 WebFilterOperations optimized = RenderSurfaceFilters::optimize(filters); |
26 return optimized.size() == 1; | 26 return optimized.size() == 1; |
27 } | 27 } |
28 | 28 |
29 TEST(CCRenderSurfaceFiltersTest, testColorMatrixFiltersCombined) | 29 TEST(RenderSurfaceFiltersTest, testColorMatrixFiltersCombined) |
30 { | 30 { |
31 // Several filters should always combine for any amount between 0 and 1: | 31 // Several filters should always combine for any amount between 0 and 1: |
32 // grayscale, saturate, invert, contrast, opacity. | 32 // grayscale, saturate, invert, contrast, opacity. |
33 EXPECT_TRUE(isCombined(WebFilterOperation::createGrayscaleFilter(0))); | 33 EXPECT_TRUE(isCombined(WebFilterOperation::createGrayscaleFilter(0))); |
34 // Note that we use 0.3f to avoid "argument is truncated from 'double' to | 34 // Note that we use 0.3f to avoid "argument is truncated from 'double' to |
35 // 'float'" warnings on Windows. 0.5 is exactly representable as a float, so | 35 // 'float'" warnings on Windows. 0.5 is exactly representable as a float, so |
36 // there is no warning. | 36 // there is no warning. |
37 EXPECT_TRUE(isCombined(WebFilterOperation::createGrayscaleFilter(0.3f))); | 37 EXPECT_TRUE(isCombined(WebFilterOperation::createGrayscaleFilter(0.3f))); |
38 EXPECT_TRUE(isCombined(WebFilterOperation::createGrayscaleFilter(0.5))); | 38 EXPECT_TRUE(isCombined(WebFilterOperation::createGrayscaleFilter(0.5))); |
39 EXPECT_TRUE(isCombined(WebFilterOperation::createGrayscaleFilter(1))); | 39 EXPECT_TRUE(isCombined(WebFilterOperation::createGrayscaleFilter(1))); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 | 96 |
97 float matrix4[20] = { | 97 float matrix4[20] = { |
98 -0.25, 0.75, 0, 0, 255*0.25, | 98 -0.25, 0.75, 0, 0, 255*0.25, |
99 0, 1, 0, 0, 0, | 99 0, 1, 0, 0, 0, |
100 0, 0, 1, 0, 0, | 100 0, 0, 1, 0, 0, |
101 0, 0, 0, 1, 0, | 101 0, 0, 0, 1, 0, |
102 }; | 102 }; |
103 EXPECT_TRUE(isCombined(WebFilterOperation::createColorMatrixFilter(matrix4))
); | 103 EXPECT_TRUE(isCombined(WebFilterOperation::createColorMatrixFilter(matrix4))
); |
104 } | 104 } |
105 | 105 |
106 TEST(CCRenderSurfaceFiltersTest, testOptimize) | 106 TEST(RenderSurfaceFiltersTest, testOptimize) |
107 { | 107 { |
108 WebFilterOperation combines(WebFilterOperation::createBrightnessFilter(0)); | 108 WebFilterOperation combines(WebFilterOperation::createBrightnessFilter(0)); |
109 WebFilterOperation doesntCombine(WebFilterOperation::createBrightnessFilter(
1)); | 109 WebFilterOperation doesntCombine(WebFilterOperation::createBrightnessFilter(
1)); |
110 | 110 |
111 WebFilterOperations filters; | 111 WebFilterOperations filters; |
112 WebFilterOperations optimized = CCRenderSurfaceFilters::optimize(filters); | 112 WebFilterOperations optimized = RenderSurfaceFilters::optimize(filters); |
113 EXPECT_EQ(0u, optimized.size()); | 113 EXPECT_EQ(0u, optimized.size()); |
114 | 114 |
115 filters.append(combines); | 115 filters.append(combines); |
116 optimized = CCRenderSurfaceFilters::optimize(filters); | 116 optimized = RenderSurfaceFilters::optimize(filters); |
117 EXPECT_EQ(1u, optimized.size()); | 117 EXPECT_EQ(1u, optimized.size()); |
118 | 118 |
119 filters.append(combines); | 119 filters.append(combines); |
120 optimized = CCRenderSurfaceFilters::optimize(filters); | 120 optimized = RenderSurfaceFilters::optimize(filters); |
121 EXPECT_EQ(1u, optimized.size()); | 121 EXPECT_EQ(1u, optimized.size()); |
122 | 122 |
123 filters.append(doesntCombine); | 123 filters.append(doesntCombine); |
124 optimized = CCRenderSurfaceFilters::optimize(filters); | 124 optimized = RenderSurfaceFilters::optimize(filters); |
125 EXPECT_EQ(1u, optimized.size()); | 125 EXPECT_EQ(1u, optimized.size()); |
126 | 126 |
127 filters.append(combines); | 127 filters.append(combines); |
128 optimized = CCRenderSurfaceFilters::optimize(filters); | 128 optimized = RenderSurfaceFilters::optimize(filters); |
129 EXPECT_EQ(2u, optimized.size()); | 129 EXPECT_EQ(2u, optimized.size()); |
130 | 130 |
131 filters.append(doesntCombine); | 131 filters.append(doesntCombine); |
132 optimized = CCRenderSurfaceFilters::optimize(filters); | 132 optimized = RenderSurfaceFilters::optimize(filters); |
133 EXPECT_EQ(2u, optimized.size()); | 133 EXPECT_EQ(2u, optimized.size()); |
134 | 134 |
135 filters.append(doesntCombine); | 135 filters.append(doesntCombine); |
136 optimized = CCRenderSurfaceFilters::optimize(filters); | 136 optimized = RenderSurfaceFilters::optimize(filters); |
137 EXPECT_EQ(3u, optimized.size()); | 137 EXPECT_EQ(3u, optimized.size()); |
138 } | 138 } |
139 | 139 |
140 } // namespace | 140 } // namespace |
OLD | NEW |