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

Side by Side Diff: cc/prioritized_texture_unittest.cc

Issue 11369071: A speculative Revert for r165872 - Remove static thread pointers from CC, attempt 2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 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 | Annotate | Revision Log
« no previous file with comments | « cc/prioritized_texture_manager.cc ('k') | cc/proxy.h » ('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 "config.h" 5 #include "config.h"
6 6
7 #include "cc/prioritized_texture.h" 7 #include "cc/prioritized_texture.h"
8 8
9 #include "cc/prioritized_texture_manager.h" 9 #include "cc/prioritized_texture_manager.h"
10 #include "cc/single_thread_proxy.h" // For DebugScopedSetImplThread 10 #include "cc/single_thread_proxy.h" // For DebugScopedSetImplThread
11 #include "cc/test/fake_graphics_context.h" 11 #include "cc/test/fake_graphics_context.h"
12 #include "cc/test/fake_proxy.h"
13 #include "cc/test/tiled_layer_test_common.h" 12 #include "cc/test/tiled_layer_test_common.h"
14 #include "cc/texture.h" 13 #include "cc/texture.h"
15 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
16 15
17 using namespace cc; 16 using namespace cc;
18 using namespace WebKitTests; 17 using namespace WebKitTests;
19 18
20 namespace cc { 19 namespace cc {
21 20
22 class PrioritizedTextureTest : public testing::Test { 21 class PrioritizedTextureTest : public testing::Test {
23 public: 22 public:
24 PrioritizedTextureTest() 23 PrioritizedTextureTest()
25 : m_proxy(scoped_ptr<Thread>(NULL)) 24 : m_textureSize(256, 256)
26 , m_textureSize(256, 256)
27 , m_textureFormat(GL_RGBA) 25 , m_textureFormat(GL_RGBA)
28 , m_context(WebKit::createFakeGraphicsContext()) 26 , m_context(WebKit::createFakeGraphicsContext())
29 { 27 {
30 DebugScopedSetImplThread implThread(&m_proxy); 28 DebugScopedSetImplThread implThread;
31 m_resourceProvider = ResourceProvider::create(m_context.get()); 29 m_resourceProvider = ResourceProvider::create(m_context.get());
32 } 30 }
33 31
34 virtual ~PrioritizedTextureTest() 32 virtual ~PrioritizedTextureTest()
35 { 33 {
36 DebugScopedSetImplThread implThread(&m_proxy); 34 DebugScopedSetImplThread implThread;
37 m_resourceProvider.reset(); 35 m_resourceProvider.reset();
38 } 36 }
39 37
40 size_t texturesMemorySize(size_t textureCount) 38 size_t texturesMemorySize(size_t textureCount)
41 { 39 {
42 return Texture::memorySizeBytes(m_textureSize, m_textureFormat) * textur eCount; 40 return Texture::memorySizeBytes(m_textureSize, m_textureFormat) * textur eCount;
43 } 41 }
44 42
45 scoped_ptr<PrioritizedTextureManager> createManager(size_t maxTextures) 43 scoped_ptr<PrioritizedTextureManager> createManager(size_t maxTextures)
46 { 44 {
47 return PrioritizedTextureManager::create(texturesMemorySize(maxTextures) , 1024, 0, &m_proxy); 45 return PrioritizedTextureManager::create(texturesMemorySize(maxTextures) , 1024, 0);
48 } 46 }
49 47
50 bool validateTexture(scoped_ptr<PrioritizedTexture>& texture, bool requestLa te) 48 bool validateTexture(scoped_ptr<PrioritizedTexture>& texture, bool requestLa te)
51 { 49 {
52 textureManagerAssertInvariants(texture->textureManager()); 50 textureManagerAssertInvariants(texture->textureManager());
53 if (requestLate) 51 if (requestLate)
54 texture->requestLate(); 52 texture->requestLate();
55 textureManagerAssertInvariants(texture->textureManager()); 53 textureManagerAssertInvariants(texture->textureManager());
56 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 54 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
57 bool success = texture->canAcquireBackingTexture(); 55 bool success = texture->canAcquireBackingTexture();
58 if (success) 56 if (success)
59 texture->acquireBackingTexture(resourceProvider()); 57 texture->acquireBackingTexture(resourceProvider());
60 return success; 58 return success;
61 } 59 }
62 60
63 void prioritizeTexturesAndBackings(PrioritizedTextureManager* textureManager ) 61 void prioritizeTexturesAndBackings(PrioritizedTextureManager* textureManager )
64 { 62 {
65 textureManager->prioritizeTextures(); 63 textureManager->prioritizeTextures();
66 textureManagerUpdateBackingsPriorities(textureManager); 64 textureManagerUpdateBackingsPriorities(textureManager);
67 } 65 }
68 66
69 void textureManagerUpdateBackingsPriorities(PrioritizedTextureManager* textu reManager) 67 void textureManagerUpdateBackingsPriorities(PrioritizedTextureManager* textu reManager)
70 { 68 {
71 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 69 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
72 textureManager->pushTexturePrioritiesToBackings(); 70 textureManager->pushTexturePrioritiesToBackings();
73 } 71 }
74 72
75 ResourceProvider* resourceProvider() 73 ResourceProvider* resourceProvider()
76 { 74 {
77 return m_resourceProvider.get(); 75 return m_resourceProvider.get();
78 } 76 }
79 77
80 void textureManagerAssertInvariants(PrioritizedTextureManager* textureManage r) 78 void textureManagerAssertInvariants(PrioritizedTextureManager* textureManage r)
81 { 79 {
82 #ifndef NDEBUG 80 #ifndef NDEBUG
83 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 81 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
84 textureManager->assertInvariants(); 82 textureManager->assertInvariants();
85 #endif 83 #endif
86 } 84 }
87 85
88 bool textureBackingIsAbovePriorityCutoff(PrioritizedTexture* texture) 86 bool textureBackingIsAbovePriorityCutoff(PrioritizedTexture* texture)
89 { 87 {
90 return texture->m_backing->wasAbovePriorityCutoffAtLastPriorityUpdate(); 88 return texture->m_backing->wasAbovePriorityCutoffAtLastPriorityUpdate();
91 } 89 }
92 90
93 protected: 91 protected:
94 FakeProxy m_proxy;
95 const gfx::Size m_textureSize; 92 const gfx::Size m_textureSize;
96 const GLenum m_textureFormat; 93 const GLenum m_textureFormat;
97 scoped_ptr<GraphicsContext> m_context; 94 scoped_ptr<GraphicsContext> m_context;
98 scoped_ptr<ResourceProvider> m_resourceProvider; 95 scoped_ptr<ResourceProvider> m_resourceProvider;
99 }; 96 };
100 97
101 } 98 }
102 99
103 namespace { 100 namespace {
104 101
(...skipping 26 matching lines...) Expand all
131 // Only upper half should be available. 128 // Only upper half should be available.
132 prioritizeTexturesAndBackings(textureManager.get()); 129 prioritizeTexturesAndBackings(textureManager.get());
133 EXPECT_FALSE(validateTexture(textures[0], false)); 130 EXPECT_FALSE(validateTexture(textures[0], false));
134 EXPECT_FALSE(validateTexture(textures[7], false)); 131 EXPECT_FALSE(validateTexture(textures[7], false));
135 EXPECT_TRUE(validateTexture(textures[8], false)); 132 EXPECT_TRUE(validateTexture(textures[8], false));
136 EXPECT_TRUE(validateTexture(textures[15], false)); 133 EXPECT_TRUE(validateTexture(textures[15], false));
137 134
138 EXPECT_EQ(texturesMemorySize(maxTextures), textureManager->memoryAboveCutoff Bytes()); 135 EXPECT_EQ(texturesMemorySize(maxTextures), textureManager->memoryAboveCutoff Bytes());
139 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes()); 136 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes());
140 137
141 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 138 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
142 textureManager->clearAllMemory(resourceProvider()); 139 textureManager->clearAllMemory(resourceProvider());
143 } 140 }
144 141
145 TEST_F(PrioritizedTextureTest, changeMemoryLimits) 142 TEST_F(PrioritizedTextureTest, changeMemoryLimits)
146 { 143 {
147 const size_t maxTextures = 8; 144 const size_t maxTextures = 8;
148 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures); 145 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures);
149 scoped_ptr<PrioritizedTexture> textures[maxTextures]; 146 scoped_ptr<PrioritizedTexture> textures[maxTextures];
150 147
151 for (size_t i = 0; i < maxTextures; ++i) 148 for (size_t i = 0; i < maxTextures; ++i)
152 textures[i] = textureManager->createTexture(m_textureSize, m_textureForm at); 149 textures[i] = textureManager->createTexture(m_textureSize, m_textureForm at);
153 for (size_t i = 0; i < maxTextures; ++i) 150 for (size_t i = 0; i < maxTextures; ++i)
154 textures[i]->setRequestPriority(100 + i); 151 textures[i]->setRequestPriority(100 + i);
155 152
156 // Set max limit to 8 textures 153 // Set max limit to 8 textures
157 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(8)); 154 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(8));
158 prioritizeTexturesAndBackings(textureManager.get()); 155 prioritizeTexturesAndBackings(textureManager.get());
159 for (size_t i = 0; i < maxTextures; ++i) 156 for (size_t i = 0; i < maxTextures; ++i)
160 validateTexture(textures[i], false); 157 validateTexture(textures[i], false);
161 { 158 {
162 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 159 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
163 textureManager->reduceMemory(resourceProvider()); 160 textureManager->reduceMemory(resourceProvider());
164 } 161 }
165 162
166 EXPECT_EQ(texturesMemorySize(8), textureManager->memoryAboveCutoffBytes()); 163 EXPECT_EQ(texturesMemorySize(8), textureManager->memoryAboveCutoffBytes());
167 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes()); 164 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes());
168 165
169 // Set max limit to 5 textures 166 // Set max limit to 5 textures
170 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(5)); 167 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(5));
171 prioritizeTexturesAndBackings(textureManager.get()); 168 prioritizeTexturesAndBackings(textureManager.get());
172 for (size_t i = 0; i < maxTextures; ++i) 169 for (size_t i = 0; i < maxTextures; ++i)
173 EXPECT_EQ(validateTexture(textures[i], false), i < 5); 170 EXPECT_EQ(validateTexture(textures[i], false), i < 5);
174 { 171 {
175 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 172 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
176 textureManager->reduceMemory(resourceProvider()); 173 textureManager->reduceMemory(resourceProvider());
177 } 174 }
178 175
179 EXPECT_EQ(texturesMemorySize(5), textureManager->memoryAboveCutoffBytes()); 176 EXPECT_EQ(texturesMemorySize(5), textureManager->memoryAboveCutoffBytes());
180 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes()); 177 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes());
181 178
182 // Set max limit to 4 textures 179 // Set max limit to 4 textures
183 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(4)); 180 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(4));
184 prioritizeTexturesAndBackings(textureManager.get()); 181 prioritizeTexturesAndBackings(textureManager.get());
185 for (size_t i = 0; i < maxTextures; ++i) 182 for (size_t i = 0; i < maxTextures; ++i)
186 EXPECT_EQ(validateTexture(textures[i], false), i < 4); 183 EXPECT_EQ(validateTexture(textures[i], false), i < 4);
187 { 184 {
188 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 185 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
189 textureManager->reduceMemory(resourceProvider()); 186 textureManager->reduceMemory(resourceProvider());
190 } 187 }
191 188
192 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryAboveCutoffBytes()); 189 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryAboveCutoffBytes());
193 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes()); 190 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes());
194 191
195 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 192 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
196 textureManager->clearAllMemory(resourceProvider()); 193 textureManager->clearAllMemory(resourceProvider());
197 } 194 }
198 195
199 TEST_F(PrioritizedTextureTest, changePriorityCutoff) 196 TEST_F(PrioritizedTextureTest, changePriorityCutoff)
200 { 197 {
201 const size_t maxTextures = 8; 198 const size_t maxTextures = 8;
202 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures); 199 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures);
203 scoped_ptr<PrioritizedTexture> textures[maxTextures]; 200 scoped_ptr<PrioritizedTexture> textures[maxTextures];
204 201
205 for (size_t i = 0; i < maxTextures; ++i) 202 for (size_t i = 0; i < maxTextures; ++i)
206 textures[i] = textureManager->createTexture(m_textureSize, m_textureForm at); 203 textures[i] = textureManager->createTexture(m_textureSize, m_textureForm at);
207 for (size_t i = 0; i < maxTextures; ++i) 204 for (size_t i = 0; i < maxTextures; ++i)
208 textures[i]->setRequestPriority(100 + i); 205 textures[i]->setRequestPriority(100 + i);
209 206
210 // Set the cutoff to drop two textures. Try to requestLate on all textures, and 207 // Set the cutoff to drop two textures. Try to requestLate on all textures, and
211 // make sure that requestLate doesn't work on a texture with equal priority to 208 // make sure that requestLate doesn't work on a texture with equal priority to
212 // the cutoff. 209 // the cutoff.
213 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(8)); 210 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(8));
214 textureManager->setExternalPriorityCutoff(106); 211 textureManager->setExternalPriorityCutoff(106);
215 prioritizeTexturesAndBackings(textureManager.get()); 212 prioritizeTexturesAndBackings(textureManager.get());
216 for (size_t i = 0; i < maxTextures; ++i) 213 for (size_t i = 0; i < maxTextures; ++i)
217 EXPECT_EQ(validateTexture(textures[i], true), i < 6); 214 EXPECT_EQ(validateTexture(textures[i], true), i < 6);
218 { 215 {
219 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 216 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
220 textureManager->reduceMemory(resourceProvider()); 217 textureManager->reduceMemory(resourceProvider());
221 } 218 }
222 EXPECT_EQ(texturesMemorySize(6), textureManager->memoryAboveCutoffBytes()); 219 EXPECT_EQ(texturesMemorySize(6), textureManager->memoryAboveCutoffBytes());
223 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes()); 220 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes());
224 221
225 // Set the cutoff to drop two more textures. 222 // Set the cutoff to drop two more textures.
226 textureManager->setExternalPriorityCutoff(104); 223 textureManager->setExternalPriorityCutoff(104);
227 prioritizeTexturesAndBackings(textureManager.get()); 224 prioritizeTexturesAndBackings(textureManager.get());
228 for (size_t i = 0; i < maxTextures; ++i) 225 for (size_t i = 0; i < maxTextures; ++i)
229 EXPECT_EQ(validateTexture(textures[i], false), i < 4); 226 EXPECT_EQ(validateTexture(textures[i], false), i < 4);
230 { 227 {
231 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 228 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
232 textureManager->reduceMemory(resourceProvider()); 229 textureManager->reduceMemory(resourceProvider());
233 } 230 }
234 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryAboveCutoffBytes()); 231 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryAboveCutoffBytes());
235 232
236 // Do a one-time eviction for one more texture based on priority cutoff 233 // Do a one-time eviction for one more texture based on priority cutoff
237 PrioritizedTextureManager::BackingList evictedBackings; 234 PrioritizedTextureManager::BackingList evictedBackings;
238 { 235 {
239 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 236 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
240 textureManager->reduceMemoryOnImplThread(texturesMemorySize(8), 104, res ourceProvider()); 237 textureManager->reduceMemoryOnImplThread(texturesMemorySize(8), 104, res ourceProvider());
241 textureManager->getEvictedBackings(evictedBackings); 238 textureManager->getEvictedBackings(evictedBackings);
242 EXPECT_EQ(0, evictedBackings.size()); 239 EXPECT_EQ(0, evictedBackings.size());
243 textureManager->reduceMemoryOnImplThread(texturesMemorySize(8), 103, res ourceProvider()); 240 textureManager->reduceMemoryOnImplThread(texturesMemorySize(8), 103, res ourceProvider());
244 textureManager->getEvictedBackings(evictedBackings); 241 textureManager->getEvictedBackings(evictedBackings);
245 EXPECT_EQ(1, evictedBackings.size()); 242 EXPECT_EQ(1, evictedBackings.size());
246 } 243 }
247 textureManager->unlinkEvictedBackings(evictedBackings); 244 textureManager->unlinkEvictedBackings(evictedBackings);
248 EXPECT_EQ(texturesMemorySize(3), textureManager->memoryUseBytes()); 245 EXPECT_EQ(texturesMemorySize(3), textureManager->memoryUseBytes());
249 246
250 // Re-allocate the the texture after the one-time drop. 247 // Re-allocate the the texture after the one-time drop.
251 prioritizeTexturesAndBackings(textureManager.get()); 248 prioritizeTexturesAndBackings(textureManager.get());
252 for (size_t i = 0; i < maxTextures; ++i) 249 for (size_t i = 0; i < maxTextures; ++i)
253 EXPECT_EQ(validateTexture(textures[i], false), i < 4); 250 EXPECT_EQ(validateTexture(textures[i], false), i < 4);
254 { 251 {
255 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 252 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
256 textureManager->reduceMemory(resourceProvider()); 253 textureManager->reduceMemory(resourceProvider());
257 } 254 }
258 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryAboveCutoffBytes()); 255 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryAboveCutoffBytes());
259 256
260 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 257 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
261 textureManager->clearAllMemory(resourceProvider()); 258 textureManager->clearAllMemory(resourceProvider());
262 } 259 }
263 260
264 TEST_F(PrioritizedTextureTest, textureManagerPartialUpdateTextures) 261 TEST_F(PrioritizedTextureTest, textureManagerPartialUpdateTextures)
265 { 262 {
266 const size_t maxTextures = 4; 263 const size_t maxTextures = 4;
267 const size_t numTextures = 4; 264 const size_t numTextures = 4;
268 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures); 265 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures);
269 scoped_ptr<PrioritizedTexture> textures[numTextures]; 266 scoped_ptr<PrioritizedTexture> textures[numTextures];
270 scoped_ptr<PrioritizedTexture> moreTextures[numTextures]; 267 scoped_ptr<PrioritizedTexture> moreTextures[numTextures];
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 EXPECT_TRUE(validateTexture(moreTextures[1], false)); 307 EXPECT_TRUE(validateTexture(moreTextures[1], false));
311 EXPECT_TRUE(validateTexture(moreTextures[2], false)); 308 EXPECT_TRUE(validateTexture(moreTextures[2], false));
312 EXPECT_TRUE(validateTexture(moreTextures[3], false)); 309 EXPECT_TRUE(validateTexture(moreTextures[3], false));
313 310
314 // Lower priority have been fully evicted. 311 // Lower priority have been fully evicted.
315 EXPECT_FALSE(textures[0]->haveBackingTexture()); 312 EXPECT_FALSE(textures[0]->haveBackingTexture());
316 EXPECT_FALSE(textures[1]->haveBackingTexture()); 313 EXPECT_FALSE(textures[1]->haveBackingTexture());
317 EXPECT_FALSE(textures[2]->haveBackingTexture()); 314 EXPECT_FALSE(textures[2]->haveBackingTexture());
318 EXPECT_FALSE(textures[3]->haveBackingTexture()); 315 EXPECT_FALSE(textures[3]->haveBackingTexture());
319 316
320 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 317 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
321 textureManager->clearAllMemory(resourceProvider()); 318 textureManager->clearAllMemory(resourceProvider());
322 } 319 }
323 320
324 TEST_F(PrioritizedTextureTest, textureManagerPrioritiesAreEqual) 321 TEST_F(PrioritizedTextureTest, textureManagerPrioritiesAreEqual)
325 { 322 {
326 const size_t maxTextures = 16; 323 const size_t maxTextures = 16;
327 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures); 324 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures);
328 scoped_ptr<PrioritizedTexture> textures[maxTextures]; 325 scoped_ptr<PrioritizedTexture> textures[maxTextures];
329 326
330 for (size_t i = 0; i < maxTextures; ++i) 327 for (size_t i = 0; i < maxTextures; ++i)
(...skipping 19 matching lines...) Expand all
350 347
351 // Manually reserving textures should only succeed on the higher priority te xtures, 348 // Manually reserving textures should only succeed on the higher priority te xtures,
352 // and on remaining textures up to the memory limit. 349 // and on remaining textures up to the memory limit.
353 for (size_t i = 0; i < 8; i++) 350 for (size_t i = 0; i < 8; i++)
354 EXPECT_TRUE(validateTexture(textures[i], true)); 351 EXPECT_TRUE(validateTexture(textures[i], true));
355 for (size_t i = 9; i < maxTextures; i++) 352 for (size_t i = 9; i < maxTextures; i++)
356 EXPECT_FALSE(validateTexture(textures[i], true)); 353 EXPECT_FALSE(validateTexture(textures[i], true));
357 EXPECT_EQ(texturesMemorySize(8), textureManager->memoryAboveCutoffBytes()); 354 EXPECT_EQ(texturesMemorySize(8), textureManager->memoryAboveCutoffBytes());
358 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes()); 355 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes());
359 356
360 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 357 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
361 textureManager->clearAllMemory(resourceProvider()); 358 textureManager->clearAllMemory(resourceProvider());
362 } 359 }
363 360
364 TEST_F(PrioritizedTextureTest, textureManagerDestroyedFirst) 361 TEST_F(PrioritizedTextureTest, textureManagerDestroyedFirst)
365 { 362 {
366 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(1); 363 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(1);
367 scoped_ptr<PrioritizedTexture> texture = textureManager->createTexture(m_tex tureSize, m_textureFormat); 364 scoped_ptr<PrioritizedTexture> texture = textureManager->createTexture(m_tex tureSize, m_textureFormat);
368 365
369 // Texture is initially invalid, but it will become available. 366 // Texture is initially invalid, but it will become available.
370 EXPECT_FALSE(texture->haveBackingTexture()); 367 EXPECT_FALSE(texture->haveBackingTexture());
371 368
372 texture->setRequestPriority(100); 369 texture->setRequestPriority(100);
373 prioritizeTexturesAndBackings(textureManager.get()); 370 prioritizeTexturesAndBackings(textureManager.get());
374 371
375 EXPECT_TRUE(validateTexture(texture, false)); 372 EXPECT_TRUE(validateTexture(texture, false));
376 EXPECT_TRUE(texture->canAcquireBackingTexture()); 373 EXPECT_TRUE(texture->canAcquireBackingTexture());
377 EXPECT_TRUE(texture->haveBackingTexture()); 374 EXPECT_TRUE(texture->haveBackingTexture());
378 375
379 { 376 {
380 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 377 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
381 textureManager->clearAllMemory(resourceProvider()); 378 textureManager->clearAllMemory(resourceProvider());
382 } 379 }
383 textureManager.reset(); 380 textureManager.reset();
384 381
385 EXPECT_FALSE(texture->canAcquireBackingTexture()); 382 EXPECT_FALSE(texture->canAcquireBackingTexture());
386 EXPECT_FALSE(texture->haveBackingTexture()); 383 EXPECT_FALSE(texture->haveBackingTexture());
387 } 384 }
388 385
389 TEST_F(PrioritizedTextureTest, textureMovedToNewManager) 386 TEST_F(PrioritizedTextureTest, textureMovedToNewManager)
390 { 387 {
391 scoped_ptr<PrioritizedTextureManager> textureManagerOne = createManager(1); 388 scoped_ptr<PrioritizedTextureManager> textureManagerOne = createManager(1);
392 scoped_ptr<PrioritizedTextureManager> textureManagerTwo = createManager(1); 389 scoped_ptr<PrioritizedTextureManager> textureManagerTwo = createManager(1);
393 scoped_ptr<PrioritizedTexture> texture = textureManagerOne->createTexture(m_ textureSize, m_textureFormat); 390 scoped_ptr<PrioritizedTexture> texture = textureManagerOne->createTexture(m_ textureSize, m_textureFormat);
394 391
395 // Texture is initially invalid, but it will become available. 392 // Texture is initially invalid, but it will become available.
396 EXPECT_FALSE(texture->haveBackingTexture()); 393 EXPECT_FALSE(texture->haveBackingTexture());
397 394
398 texture->setRequestPriority(100); 395 texture->setRequestPriority(100);
399 prioritizeTexturesAndBackings(textureManagerOne.get()); 396 prioritizeTexturesAndBackings(textureManagerOne.get());
400 397
401 EXPECT_TRUE(validateTexture(texture, false)); 398 EXPECT_TRUE(validateTexture(texture, false));
402 EXPECT_TRUE(texture->canAcquireBackingTexture()); 399 EXPECT_TRUE(texture->canAcquireBackingTexture());
403 EXPECT_TRUE(texture->haveBackingTexture()); 400 EXPECT_TRUE(texture->haveBackingTexture());
404 401
405 texture->setTextureManager(0); 402 texture->setTextureManager(0);
406 403
407 { 404 {
408 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 405 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
409 textureManagerOne->clearAllMemory(resourceProvider()); 406 textureManagerOne->clearAllMemory(resourceProvider());
410 } 407 }
411 textureManagerOne.reset(); 408 textureManagerOne.reset();
412 409
413 EXPECT_FALSE(texture->canAcquireBackingTexture()); 410 EXPECT_FALSE(texture->canAcquireBackingTexture());
414 EXPECT_FALSE(texture->haveBackingTexture()); 411 EXPECT_FALSE(texture->haveBackingTexture());
415 412
416 texture->setTextureManager(textureManagerTwo.get()); 413 texture->setTextureManager(textureManagerTwo.get());
417 414
418 prioritizeTexturesAndBackings(textureManagerTwo.get()); 415 prioritizeTexturesAndBackings(textureManagerTwo.get());
419 416
420 EXPECT_TRUE(validateTexture(texture, false)); 417 EXPECT_TRUE(validateTexture(texture, false));
421 EXPECT_TRUE(texture->canAcquireBackingTexture()); 418 EXPECT_TRUE(texture->canAcquireBackingTexture());
422 EXPECT_TRUE(texture->haveBackingTexture()); 419 EXPECT_TRUE(texture->haveBackingTexture());
423 420
424 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 421 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
425 textureManagerTwo->clearAllMemory(resourceProvider()); 422 textureManagerTwo->clearAllMemory(resourceProvider());
426 } 423 }
427 424
428 TEST_F(PrioritizedTextureTest, renderSurfacesReduceMemoryAvailableOutsideRootSur face) 425 TEST_F(PrioritizedTextureTest, renderSurfacesReduceMemoryAvailableOutsideRootSur face)
429 { 426 {
430 const size_t maxTextures = 8; 427 const size_t maxTextures = 8;
431 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures); 428 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures);
432 429
433 // Half of the memory is taken by surfaces (with high priority place-holder) 430 // Half of the memory is taken by surfaces (with high priority place-holder)
434 scoped_ptr<PrioritizedTexture> renderSurfacePlaceHolder = textureManager->cr eateTexture(m_textureSize, m_textureFormat); 431 scoped_ptr<PrioritizedTexture> renderSurfacePlaceHolder = textureManager->cr eateTexture(m_textureSize, m_textureFormat);
(...skipping 25 matching lines...) Expand all
460 prioritizeTexturesAndBackings(textureManager.get()); 457 prioritizeTexturesAndBackings(textureManager.get());
461 EXPECT_FALSE(validateTexture(textures[0], false)); 458 EXPECT_FALSE(validateTexture(textures[0], false));
462 EXPECT_FALSE(validateTexture(textures[3], false)); 459 EXPECT_FALSE(validateTexture(textures[3], false));
463 EXPECT_TRUE(validateTexture(textures[4], false)); 460 EXPECT_TRUE(validateTexture(textures[4], false));
464 EXPECT_TRUE(validateTexture(textures[7], false)); 461 EXPECT_TRUE(validateTexture(textures[7], false));
465 462
466 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryAboveCutoffBytes()); 463 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryAboveCutoffBytes());
467 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryForSelfManagedTexture s()); 464 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryForSelfManagedTexture s());
468 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes()); 465 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes());
469 466
470 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 467 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
471 textureManager->clearAllMemory(resourceProvider()); 468 textureManager->clearAllMemory(resourceProvider());
472 } 469 }
473 470
474 TEST_F(PrioritizedTextureTest, renderSurfacesReduceMemoryAvailableForRequestLate ) 471 TEST_F(PrioritizedTextureTest, renderSurfacesReduceMemoryAvailableForRequestLate )
475 { 472 {
476 const size_t maxTextures = 8; 473 const size_t maxTextures = 8;
477 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures); 474 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures);
478 475
479 // Half of the memory is taken by surfaces (with high priority place-holder) 476 // Half of the memory is taken by surfaces (with high priority place-holder)
480 scoped_ptr<PrioritizedTexture> renderSurfacePlaceHolder = textureManager->cr eateTexture(m_textureSize, m_textureFormat); 477 scoped_ptr<PrioritizedTexture> renderSurfacePlaceHolder = textureManager->cr eateTexture(m_textureSize, m_textureFormat);
(...skipping 16 matching lines...) Expand all
497 EXPECT_FALSE(validateTexture(textures[i], false)); 494 EXPECT_FALSE(validateTexture(textures[i], false));
498 for (unsigned i = 0; i < maxTextures; i += 2) 495 for (unsigned i = 0; i < maxTextures; i += 2)
499 EXPECT_TRUE(validateTexture(textures[i], true)); 496 EXPECT_TRUE(validateTexture(textures[i], true));
500 for (unsigned i = 1; i < maxTextures; i += 2) 497 for (unsigned i = 1; i < maxTextures; i += 2)
501 EXPECT_FALSE(validateTexture(textures[i], true)); 498 EXPECT_FALSE(validateTexture(textures[i], true));
502 499
503 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryAboveCutoffBytes()); 500 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryAboveCutoffBytes());
504 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryForSelfManagedTexture s()); 501 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryForSelfManagedTexture s());
505 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes()); 502 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes());
506 503
507 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 504 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
508 textureManager->clearAllMemory(resourceProvider()); 505 textureManager->clearAllMemory(resourceProvider());
509 } 506 }
510 507
511 TEST_F(PrioritizedTextureTest, whenRenderSurfaceNotAvailableTexturesAlsoNotAvail able) 508 TEST_F(PrioritizedTextureTest, whenRenderSurfaceNotAvailableTexturesAlsoNotAvail able)
512 { 509 {
513 const size_t maxTextures = 8; 510 const size_t maxTextures = 8;
514 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures); 511 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures);
515 512
516 // Half of the memory is taken by surfaces (with high priority place-holder) 513 // Half of the memory is taken by surfaces (with high priority place-holder)
517 scoped_ptr<PrioritizedTexture> renderSurfacePlaceHolder = textureManager->cr eateTexture(m_textureSize, m_textureFormat); 514 scoped_ptr<PrioritizedTexture> renderSurfacePlaceHolder = textureManager->cr eateTexture(m_textureSize, m_textureFormat);
(...skipping 19 matching lines...) Expand all
537 EXPECT_FALSE(validateTexture(textures[7], true)); 534 EXPECT_FALSE(validateTexture(textures[7], true));
538 535
539 // Root surface textures are valid. 536 // Root surface textures are valid.
540 for (size_t i = 0; i < 6; ++i) 537 for (size_t i = 0; i < 6; ++i)
541 EXPECT_TRUE(validateTexture(textures[i], false)); 538 EXPECT_TRUE(validateTexture(textures[i], false));
542 539
543 EXPECT_EQ(texturesMemorySize(6), textureManager->memoryAboveCutoffBytes()); 540 EXPECT_EQ(texturesMemorySize(6), textureManager->memoryAboveCutoffBytes());
544 EXPECT_EQ(texturesMemorySize(2), textureManager->memoryForSelfManagedTexture s()); 541 EXPECT_EQ(texturesMemorySize(2), textureManager->memoryForSelfManagedTexture s());
545 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes()); 542 EXPECT_LE(textureManager->memoryUseBytes(), textureManager->memoryAboveCutof fBytes());
546 543
547 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 544 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
548 textureManager->clearAllMemory(resourceProvider()); 545 textureManager->clearAllMemory(resourceProvider());
549 } 546 }
550 547
551 TEST_F(PrioritizedTextureTest, requestLateBackingsSorting) 548 TEST_F(PrioritizedTextureTest, requestLateBackingsSorting)
552 { 549 {
553 const size_t maxTextures = 8; 550 const size_t maxTextures = 8;
554 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures); 551 scoped_ptr<PrioritizedTextureManager> textureManager = createManager(maxText ures);
555 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(maxTextures)); 552 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(maxTextures));
556 553
557 // Create textures to fill our memory limit. 554 // Create textures to fill our memory limit.
(...skipping 27 matching lines...) Expand all
585 // Make sure that we have backings for all of the textures. 582 // Make sure that we have backings for all of the textures.
586 for (size_t i = 0; i < maxTextures; ++i) 583 for (size_t i = 0; i < maxTextures; ++i)
587 EXPECT_TRUE(textures[i]->haveBackingTexture()); 584 EXPECT_TRUE(textures[i]->haveBackingTexture());
588 585
589 // Make sure that only the requestLate textures are above the priority cutof f 586 // Make sure that only the requestLate textures are above the priority cutof f
590 for (size_t i = 0; i < maxTextures; i += 2) 587 for (size_t i = 0; i < maxTextures; i += 2)
591 EXPECT_TRUE(textureBackingIsAbovePriorityCutoff(textures[i].get())); 588 EXPECT_TRUE(textureBackingIsAbovePriorityCutoff(textures[i].get()));
592 for (size_t i = 1; i < maxTextures; i += 2) 589 for (size_t i = 1; i < maxTextures; i += 2)
593 EXPECT_FALSE(textureBackingIsAbovePriorityCutoff(textures[i].get())); 590 EXPECT_FALSE(textureBackingIsAbovePriorityCutoff(textures[i].get()));
594 591
595 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 592 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
596 textureManager->clearAllMemory(resourceProvider()); 593 textureManager->clearAllMemory(resourceProvider());
597 } 594 }
598 595
599 TEST_F(PrioritizedTextureTest, clearUploadsToEvictedResources) 596 TEST_F(PrioritizedTextureTest, clearUploadsToEvictedResources)
600 { 597 {
601 const size_t maxTextures = 4; 598 const size_t maxTextures = 4;
602 scoped_ptr<PrioritizedTextureManager> textureManager = 599 scoped_ptr<PrioritizedTextureManager> textureManager =
603 createManager(maxTextures); 600 createManager(maxTextures);
604 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(maxTextures)); 601 textureManager->setMaxMemoryLimitBytes(texturesMemorySize(maxTextures));
605 602
606 // Create textures to fill our memory limit. 603 // Create textures to fill our memory limit.
607 scoped_ptr<PrioritizedTexture> textures[maxTextures]; 604 scoped_ptr<PrioritizedTexture> textures[maxTextures];
608 605
609 for (size_t i = 0; i < maxTextures; ++i) 606 for (size_t i = 0; i < maxTextures; ++i)
610 textures[i] = textureManager->createTexture(m_textureSize, m_textureForm at); 607 textures[i] = textureManager->createTexture(m_textureSize, m_textureForm at);
611 608
612 // Set equal priorities, and allocate backings for all textures. 609 // Set equal priorities, and allocate backings for all textures.
613 for (size_t i = 0; i < maxTextures; ++i) 610 for (size_t i = 0; i < maxTextures; ++i)
614 textures[i]->setRequestPriority(100); 611 textures[i]->setRequestPriority(100);
615 prioritizeTexturesAndBackings(textureManager.get()); 612 prioritizeTexturesAndBackings(textureManager.get());
616 for (unsigned i = 0; i < maxTextures; ++i) 613 for (unsigned i = 0; i < maxTextures; ++i)
617 EXPECT_TRUE(validateTexture(textures[i], false)); 614 EXPECT_TRUE(validateTexture(textures[i], false));
618 615
619 ResourceUpdateQueue queue; 616 ResourceUpdateQueue queue;
620 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 617 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
621 for (size_t i = 0; i < maxTextures; ++i) { 618 for (size_t i = 0; i < maxTextures; ++i) {
622 const ResourceUpdate upload = ResourceUpdate::Create( 619 const ResourceUpdate upload = ResourceUpdate::Create(
623 textures[i].get(), NULL, gfx::Rect(), gfx::Rect(), gfx::Vector2d()); 620 textures[i].get(), NULL, gfx::Rect(), gfx::Rect(), gfx::Vector2d());
624 queue.appendFullUpload(upload); 621 queue.appendFullUpload(upload);
625 } 622 }
626 623
627 // Make sure that we have backings for all of the textures. 624 // Make sure that we have backings for all of the textures.
628 for (size_t i = 0; i < maxTextures; ++i) 625 for (size_t i = 0; i < maxTextures; ++i)
629 EXPECT_TRUE(textures[i]->haveBackingTexture()); 626 EXPECT_TRUE(textures[i]->haveBackingTexture());
630 627
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 prioritizeTexturesAndBackings(textureManager.get()); 659 prioritizeTexturesAndBackings(textureManager.get());
663 660
664 // The first two textures should be available, others should not. 661 // The first two textures should be available, others should not.
665 for (size_t i = 0; i < 2; ++i) 662 for (size_t i = 0; i < 2; ++i)
666 EXPECT_TRUE(validateTexture(textures[i], false)); 663 EXPECT_TRUE(validateTexture(textures[i], false));
667 for (size_t i = 2; i < maxTextures; ++i) 664 for (size_t i = 2; i < maxTextures; ++i)
668 EXPECT_FALSE(validateTexture(textures[i], false)); 665 EXPECT_FALSE(validateTexture(textures[i], false));
669 666
670 // Validate the statistics. 667 // Validate the statistics.
671 { 668 {
672 DebugScopedSetImplThread implThread(&m_proxy); 669 DebugScopedSetImplThread implThread;
673 EXPECT_EQ(texturesMemorySize(2), textureManager->memoryUseBytes()); 670 EXPECT_EQ(texturesMemorySize(2), textureManager->memoryUseBytes());
674 EXPECT_EQ(texturesMemorySize(1), textureManager->memoryVisibleBytes()); 671 EXPECT_EQ(texturesMemorySize(1), textureManager->memoryVisibleBytes());
675 EXPECT_EQ(texturesMemorySize(3), textureManager->memoryVisibleAndNearbyB ytes()); 672 EXPECT_EQ(texturesMemorySize(3), textureManager->memoryVisibleAndNearbyB ytes());
676 } 673 }
677 674
678 // Re-prioritize the textures, but do not push the values to backings. 675 // Re-prioritize the textures, but do not push the values to backings.
679 textures[0]->setRequestPriority(PriorityCalculator::allowVisibleOnlyCutoff() - 1); 676 textures[0]->setRequestPriority(PriorityCalculator::allowVisibleOnlyCutoff() - 1);
680 textures[1]->setRequestPriority(PriorityCalculator::allowVisibleOnlyCutoff() - 1); 677 textures[1]->setRequestPriority(PriorityCalculator::allowVisibleOnlyCutoff() - 1);
681 textures[2]->setRequestPriority(PriorityCalculator::allowVisibleOnlyCutoff() - 1); 678 textures[2]->setRequestPriority(PriorityCalculator::allowVisibleOnlyCutoff() - 1);
682 textures[3]->setRequestPriority(PriorityCalculator::allowVisibleAndNearbyCut off() - 1); 679 textures[3]->setRequestPriority(PriorityCalculator::allowVisibleAndNearbyCut off() - 1);
683 textures[4]->setRequestPriority(PriorityCalculator::allowVisibleAndNearbyCut off()); 680 textures[4]->setRequestPriority(PriorityCalculator::allowVisibleAndNearbyCut off());
684 textureManager->prioritizeTextures(); 681 textureManager->prioritizeTextures();
685 682
686 // Verify that we still see the old values. 683 // Verify that we still see the old values.
687 { 684 {
688 DebugScopedSetImplThread implThread(&m_proxy); 685 DebugScopedSetImplThread implThread;
689 EXPECT_EQ(texturesMemorySize(2), textureManager->memoryUseBytes()); 686 EXPECT_EQ(texturesMemorySize(2), textureManager->memoryUseBytes());
690 EXPECT_EQ(texturesMemorySize(1), textureManager->memoryVisibleBytes()); 687 EXPECT_EQ(texturesMemorySize(1), textureManager->memoryVisibleBytes());
691 EXPECT_EQ(texturesMemorySize(3), textureManager->memoryVisibleAndNearbyB ytes()); 688 EXPECT_EQ(texturesMemorySize(3), textureManager->memoryVisibleAndNearbyB ytes());
692 } 689 }
693 690
694 // Push priorities to backings, and verify we see the new values. 691 // Push priorities to backings, and verify we see the new values.
695 { 692 {
696 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(&m_proxy); 693 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked;
697 textureManager->pushTexturePrioritiesToBackings(); 694 textureManager->pushTexturePrioritiesToBackings();
698 EXPECT_EQ(texturesMemorySize(2), textureManager->memoryUseBytes()); 695 EXPECT_EQ(texturesMemorySize(2), textureManager->memoryUseBytes());
699 EXPECT_EQ(texturesMemorySize(3), textureManager->memoryVisibleBytes()); 696 EXPECT_EQ(texturesMemorySize(3), textureManager->memoryVisibleBytes());
700 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryVisibleAndNearbyB ytes()); 697 EXPECT_EQ(texturesMemorySize(4), textureManager->memoryVisibleAndNearbyB ytes());
701 } 698 }
702 699
703 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked( &m_proxy); 700 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBlocked;
704 textureManager->clearAllMemory(resourceProvider()); 701 textureManager->clearAllMemory(resourceProvider());
705 } 702 }
706 703
707 704
708 } // namespace 705 } // namespace
OLDNEW
« no previous file with comments | « cc/prioritized_texture_manager.cc ('k') | cc/proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698