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

Side by Side Diff: cc/tiles/mipmap_util_unittest.cc

Issue 2042133002: Add display-resolution caching to GPU IDC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@drt
Patch Set: combine with crrev.com/2103353002 Created 4 years, 5 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/tiles/mipmap_util.cc ('k') | third_party/WebKit/LayoutTests/TestExpectations » ('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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/tiles/mipmap_util.h" 5 #include "cc/tiles/mipmap_util.h"
6 6
7 #include "cc/test/geometry_test_utils.h" 7 #include "cc/test/geometry_test_utils.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace cc { 10 namespace cc {
11 namespace { 11 namespace {
12 12
13 // Ensures that a basic scale works. 13 // Ensures that a basic scale works.
14 TEST(MipMapUtilTest, Basic) { 14 TEST(MipMapUtilTest, Basic) {
15 const gfx::Size src_size(64, 64); 15 const gfx::Size src_size(64, 64);
16 const gfx::Size target_size(16, 16); 16 const gfx::Size target_size(16, 16);
17 const int target_level = 2; 17 const int target_level = 2;
18 const SkSize expected_scale = SkSize::Make(0.25f, 0.25f); 18 const SkSize expected_scale = SkSize::Make(0.25f, 0.25f);
19 19
20 EXPECT_EQ(target_level, MipMapUtil::GetLevelForSize(src_size, target_size)); 20 EXPECT_EQ(target_level, MipMapUtil::GetLevelForSize(src_size, target_size));
21 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForLevel( 21 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForLevel(
22 src_size, target_level)); 22 src_size, target_level));
23 EXPECT_SIZE_EQ(target_size,
24 MipMapUtil::GetSizeForLevel(src_size, target_level));
23 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForSize( 25 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForSize(
24 src_size, target_size)); 26 src_size, target_size));
25 } 27 }
26 28
27 // Ensures that a no-op scale works. 29 // Ensures that a no-op scale works.
28 TEST(MipMapUtilTest, NoScale) { 30 TEST(MipMapUtilTest, NoScale) {
29 const gfx::Size src_size(64, 64); 31 const gfx::Size src_size(64, 64);
30 const gfx::Size target_size(64, 64); 32 const gfx::Size target_size(64, 64);
31 const int target_level = 0; 33 const int target_level = 0;
32 const SkSize expected_scale = SkSize::Make(1, 1); 34 const SkSize expected_scale = SkSize::Make(1, 1);
33 35
34 EXPECT_EQ(target_level, MipMapUtil::GetLevelForSize(src_size, target_size)); 36 EXPECT_EQ(target_level, MipMapUtil::GetLevelForSize(src_size, target_size));
35 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForLevel( 37 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForLevel(
36 src_size, target_level)); 38 src_size, target_level));
39 EXPECT_SIZE_EQ(target_size,
40 MipMapUtil::GetSizeForLevel(src_size, target_level));
37 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForSize( 41 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForSize(
38 src_size, target_size)); 42 src_size, target_size));
39 } 43 }
40 44
41 // Ensures that we return the base mip level if the caller requests an upscale. 45 // Ensures that we return the base mip level if the caller requests an upscale.
42 TEST(MipMapUtilTest, Upscale) { 46 TEST(MipMapUtilTest, Upscale) {
43 const gfx::Size src_size(64, 64); 47 const gfx::Size src_size(64, 64);
44 const gfx::Size target_size(128, 128); 48 const gfx::Size target_size(128, 128);
45 const SkSize result_size = SkSize::Make(1, 1); 49 const SkSize result_size = SkSize::Make(1, 1);
46 const int result_level = 0; 50 const int result_level = 0;
47 51
48 EXPECT_EQ(result_level, MipMapUtil::GetLevelForSize(src_size, target_size)); 52 EXPECT_EQ(result_level, MipMapUtil::GetLevelForSize(src_size, target_size));
49 EXPECT_FLOAT_SIZE_EQ(result_size, MipMapUtil::GetScaleAdjustmentForSize( 53 EXPECT_FLOAT_SIZE_EQ(result_size, MipMapUtil::GetScaleAdjustmentForSize(
50 src_size, target_size)); 54 src_size, target_size));
55 EXPECT_SIZE_EQ(src_size, MipMapUtil::GetSizeForLevel(src_size, result_level));
51 } 56 }
52 57
53 // Ensures that the maximum mip level GetLevelForSize will ever return is 30. 58 // Ensures that the maximum mip level GetLevelForSize will ever return is 30.
54 TEST(MipMapUtilTest, MaxMipLevel) { 59 TEST(MipMapUtilTest, MaxMipLevel) {
55 int max_mip_level = 60 int max_mip_level =
56 MipMapUtil::GetLevelForSize(gfx::Size(std::numeric_limits<int>::max(), 61 MipMapUtil::GetLevelForSize(gfx::Size(std::numeric_limits<int>::max(),
57 std::numeric_limits<int>::max()), 62 std::numeric_limits<int>::max()),
58 gfx::Size(1, 1)); 63 gfx::Size(1, 1));
59 EXPECT_EQ(max_mip_level, 30); 64 EXPECT_EQ(max_mip_level, 30);
60 } 65 }
61 66
62 // Ensures that we handle mips of a non-square image correctly (the smaller side 67 // Ensures that we handle mips of a non-square image correctly (the smaller side
63 // should never be smaller than 1). 68 // should never be smaller than 1).
64 TEST(MipMapUtilTest, NonSquare) { 69 TEST(MipMapUtilTest, NonSquare) {
65 const gfx::Size src_size(1024, 1); 70 const gfx::Size src_size(1024, 1);
66 const gfx::Size target_size(64, 1); 71 const gfx::Size target_size(64, 1);
67 const int target_level = 4; 72 const int target_level = 4;
68 const SkSize expected_scale = SkSize::Make( 73 const SkSize expected_scale = SkSize::Make(
69 static_cast<float>(target_size.width()) / src_size.width(), 1); 74 static_cast<float>(target_size.width()) / src_size.width(), 1);
70 75
71 EXPECT_EQ(target_level, MipMapUtil::GetLevelForSize(src_size, target_size)); 76 EXPECT_EQ(target_level, MipMapUtil::GetLevelForSize(src_size, target_size));
72 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForLevel( 77 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForLevel(
73 src_size, target_level)); 78 src_size, target_level));
79 EXPECT_SIZE_EQ(target_size,
80 MipMapUtil::GetSizeForLevel(src_size, target_level));
74 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForSize( 81 EXPECT_FLOAT_SIZE_EQ(expected_scale, MipMapUtil::GetScaleAdjustmentForSize(
75 src_size, target_size)); 82 src_size, target_size));
76 } 83 }
77 84
78 // Ensures that we handle rounding images correctly. 85 // Ensures that we handle rounding images correctly.
79 TEST(MipMapUtilTest, Rounding) { 86 TEST(MipMapUtilTest, Rounding) {
80 const gfx::Size src_size(49, 49); 87 const gfx::Size src_size(49, 49);
81 const gfx::Size target_size_larger(25, 25); 88 const gfx::Size target_size_larger(25, 25);
82 const gfx::Size target_size_smaller(24, 24); 89 const gfx::Size target_size_smaller(24, 24);
83 const int target_level_larger = 0; 90 const int target_level_larger = 0;
84 const int target_level_smaller = 1; 91 const int target_level_smaller = 1;
85 const SkSize expected_scale_larger = SkSize::Make(1, 1); 92 const SkSize expected_scale_larger = SkSize::Make(1, 1);
86 const SkSize expected_scale_smaller = SkSize::Make( 93 const SkSize expected_scale_smaller = SkSize::Make(
87 static_cast<float>(target_size_smaller.width()) / src_size.width(), 94 static_cast<float>(target_size_smaller.width()) / src_size.width(),
88 static_cast<float>(target_size_smaller.height()) / src_size.height()); 95 static_cast<float>(target_size_smaller.height()) / src_size.height());
89 96
90 EXPECT_EQ(target_level_larger, 97 EXPECT_EQ(target_level_larger,
91 MipMapUtil::GetLevelForSize(src_size, target_size_larger)); 98 MipMapUtil::GetLevelForSize(src_size, target_size_larger));
92 EXPECT_EQ(target_level_smaller, 99 EXPECT_EQ(target_level_smaller,
93 MipMapUtil::GetLevelForSize(src_size, target_size_smaller)); 100 MipMapUtil::GetLevelForSize(src_size, target_size_smaller));
94 EXPECT_FLOAT_SIZE_EQ( 101 EXPECT_FLOAT_SIZE_EQ(
95 expected_scale_larger, 102 expected_scale_larger,
96 MipMapUtil::GetScaleAdjustmentForLevel(src_size, target_level_larger)); 103 MipMapUtil::GetScaleAdjustmentForLevel(src_size, target_level_larger));
97 EXPECT_FLOAT_SIZE_EQ( 104 EXPECT_FLOAT_SIZE_EQ(
98 expected_scale_smaller, 105 expected_scale_smaller,
99 MipMapUtil::GetScaleAdjustmentForLevel(src_size, target_level_smaller)); 106 MipMapUtil::GetScaleAdjustmentForLevel(src_size, target_level_smaller));
107 EXPECT_SIZE_EQ(src_size,
108 MipMapUtil::GetSizeForLevel(src_size, target_level_larger));
109 EXPECT_SIZE_EQ(target_size_smaller,
110 MipMapUtil::GetSizeForLevel(src_size, target_level_smaller));
100 EXPECT_FLOAT_SIZE_EQ( 111 EXPECT_FLOAT_SIZE_EQ(
101 expected_scale_larger, 112 expected_scale_larger,
102 MipMapUtil::GetScaleAdjustmentForSize(src_size, target_size_larger)); 113 MipMapUtil::GetScaleAdjustmentForSize(src_size, target_size_larger));
103 EXPECT_FLOAT_SIZE_EQ( 114 EXPECT_FLOAT_SIZE_EQ(
104 expected_scale_smaller, 115 expected_scale_smaller,
105 MipMapUtil::GetScaleAdjustmentForSize(src_size, target_size_smaller)); 116 MipMapUtil::GetScaleAdjustmentForSize(src_size, target_size_smaller));
106 } 117 }
107 118
108 // Ensures that we return invalid values correctly. 119 // Ensures that we return invalid values correctly.
109 TEST(MipMapUtilTest, Invalid) { 120 TEST(MipMapUtilTest, Invalid) {
110 const gfx::Size valid_size(1024, 1024); 121 const gfx::Size valid_size(1024, 1024);
111 const gfx::Size invalid_size(0, 1024); 122 const gfx::Size invalid_size(0, 1024);
112 const SkSize invalid_result_size = SkSize::Make(-1, -1); 123 const gfx::Size invalid_result_size(-1, -1);
124 const SkSize invalid_float_result_size = SkSize::Make(-1, -1);
113 const int invalid_result_level = -1; 125 const int invalid_result_level = -1;
114 126
115 EXPECT_EQ(invalid_result_level, 127 EXPECT_EQ(invalid_result_level,
116 MipMapUtil::GetLevelForSize(valid_size, invalid_size)); 128 MipMapUtil::GetLevelForSize(valid_size, invalid_size));
117 EXPECT_EQ(invalid_result_level, 129 EXPECT_EQ(invalid_result_level,
118 MipMapUtil::GetLevelForSize(invalid_size, valid_size)); 130 MipMapUtil::GetLevelForSize(invalid_size, valid_size));
119 EXPECT_FLOAT_SIZE_EQ( 131 EXPECT_FLOAT_SIZE_EQ(
120 invalid_result_size, 132 invalid_float_result_size,
121 MipMapUtil::GetScaleAdjustmentForSize(valid_size, invalid_size)); 133 MipMapUtil::GetScaleAdjustmentForSize(valid_size, invalid_size));
122 EXPECT_FLOAT_SIZE_EQ( 134 EXPECT_FLOAT_SIZE_EQ(
123 invalid_result_size, 135 invalid_float_result_size,
124 MipMapUtil::GetScaleAdjustmentForSize(invalid_size, valid_size)); 136 MipMapUtil::GetScaleAdjustmentForSize(invalid_size, valid_size));
125 EXPECT_FLOAT_SIZE_EQ(invalid_result_size, 137 EXPECT_SIZE_EQ(invalid_result_size,
138 MipMapUtil::GetSizeForLevel(valid_size, invalid_result_level));
139 EXPECT_SIZE_EQ(invalid_result_size,
140 MipMapUtil::GetSizeForLevel(invalid_size, 0));
141 EXPECT_FLOAT_SIZE_EQ(invalid_float_result_size,
126 MipMapUtil::GetScaleAdjustmentForLevel(invalid_size, 0)); 142 MipMapUtil::GetScaleAdjustmentForLevel(invalid_size, 0));
127 EXPECT_FLOAT_SIZE_EQ( 143 EXPECT_FLOAT_SIZE_EQ(
128 invalid_result_size, 144 invalid_float_result_size,
129 MipMapUtil::GetScaleAdjustmentForLevel(valid_size, invalid_result_level)); 145 MipMapUtil::GetScaleAdjustmentForLevel(valid_size, invalid_result_level));
130 } 146 }
131 147
132 } // namespace 148 } // namespace
133 } // namespace cc 149 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tiles/mipmap_util.cc ('k') | third_party/WebKit/LayoutTests/TestExpectations » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698