| 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 |