OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "content/common/gpu/gpu_command_buffer_stub.h" | 5 #include "content/common/gpu/gpu_command_buffer_stub.h" |
6 #include "content/common/gpu/gpu_memory_allocation.h" | 6 #include "content/common/gpu/gpu_memory_allocation.h" |
7 #include "content/common/gpu/gpu_memory_manager.h" | 7 #include "content/common/gpu/gpu_memory_manager.h" |
8 | 8 |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
11 class FakeCommandBufferStub : public GpuCommandBufferStubBase { | 11 class FakeCommandBufferStub : public GpuCommandBufferStubBase { |
12 public: | 12 public: |
13 SurfaceState surface_state_; | 13 SurfaceState surface_state_; |
14 GpuMemoryAllocation allocation_; | 14 GpuMemoryAllocation allocation_; |
15 | 15 |
16 FakeCommandBufferStub() | 16 FakeCommandBufferStub() |
17 : surface_state_(0, false, base::TimeTicks()) { | 17 : surface_state_(0, false, base::TimeTicks()) { |
18 } | 18 } |
19 | 19 |
20 FakeCommandBufferStub(int32 surface_id, | 20 FakeCommandBufferStub(int32 surface_id, |
21 bool visible, | 21 bool visible, |
22 base::TimeTicks last_used_time) | 22 base::TimeTicks last_used_time) |
23 : surface_state_(surface_id, visible, last_used_time) { | 23 : surface_state_(surface_id, visible, last_used_time) { |
24 } | 24 } |
25 | 25 |
| 26 virtual bool handles_memory_allocations() const { |
| 27 return true; |
| 28 } |
26 virtual bool has_surface_state() const { | 29 virtual bool has_surface_state() const { |
27 return surface_state_.surface_id != 0; | 30 return surface_state_.surface_id != 0; |
28 } | 31 } |
29 virtual const SurfaceState& surface_state() const { | 32 virtual const SurfaceState& surface_state() const { |
30 return surface_state_; | 33 return surface_state_; |
31 } | 34 } |
32 | 35 |
33 virtual bool IsInSameContextShareGroup( | 36 virtual bool IsInSameContextShareGroup( |
34 const GpuCommandBufferStubBase& stub) const { | 37 const GpuCommandBufferStubBase& stub) const { |
35 return false; | 38 return false; |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); | 194 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); |
192 | 195 |
193 // Test stubs without surface, with share group of 1 stub. | 196 // Test stubs without surface, with share group of 1 stub. |
194 FakeCommandBufferStubWithoutSurface stub3, stub4; | 197 FakeCommandBufferStubWithoutSurface stub3, stub4; |
195 stub3.share_group_.push_back(&stub1); | 198 stub3.share_group_.push_back(&stub1); |
196 stub4.share_group_.push_back(&stub2); | 199 stub4.share_group_.push_back(&stub2); |
197 client_.stubs_.push_back(&stub3); | 200 client_.stubs_.push_back(&stub3); |
198 client_.stubs_.push_back(&stub4); | 201 client_.stubs_.push_back(&stub4); |
199 | 202 |
200 Manage(); | 203 Manage(); |
201 EXPECT_EQ(stub1.allocation_, stub3.allocation_); | 204 EXPECT_GT(stub1.allocation_.gpu_resource_size_in_bytes, 1ul); |
202 EXPECT_EQ(stub2.allocation_, stub4.allocation_); | 205 EXPECT_EQ(stub2.allocation_.gpu_resource_size_in_bytes, 0ul); |
| 206 EXPECT_GT(stub3.allocation_.gpu_resource_size_in_bytes, 1ul); |
| 207 EXPECT_GT(stub4.allocation_.gpu_resource_size_in_bytes, 1ul); |
203 | 208 |
204 // Test stub without surface, with share group of multiple stubs. | 209 // Test stub without surface, with share group of multiple stubs. |
205 FakeCommandBufferStubWithoutSurface stub5; | 210 FakeCommandBufferStubWithoutSurface stub5; |
206 stub5.share_group_.push_back(&stub1); | 211 stub5.share_group_.push_back(&stub1); |
207 stub5.share_group_.push_back(&stub2); | 212 stub5.share_group_.push_back(&stub2); |
208 client_.stubs_.push_back(&stub5); | 213 client_.stubs_.push_back(&stub5); |
209 | 214 |
210 Manage(); | 215 Manage(); |
211 EXPECT_EQ(stub1.allocation_, stub5.allocation_); | 216 EXPECT_GT(stub5.allocation_.gpu_resource_size_in_bytes, 1ul); |
212 } | 217 } |
213 | 218 |
214 // Test GpuMemoryManager::Manage functionality: changing visibility. | 219 // Test GpuMemoryManager::Manage functionality: changing visibility. |
215 // Expect memory allocation to set suggest_have_frontbuffer/backbuffer according | 220 // Expect memory allocation to set suggest_have_frontbuffer/backbuffer according |
216 // to visibility and last used time for stubs with surface. | 221 // to visibility and last used time for stubs with surface. |
217 // Expect memory allocation to be shared according to share groups for stubs | 222 // Expect memory allocation to be shared according to share groups for stubs |
218 // without a surface. | 223 // without a surface. |
219 TEST_F(GpuMemoryManagerTest, TestManageChangingVisibility) { | 224 TEST_F(GpuMemoryManagerTest, TestManageChangingVisibility) { |
220 FakeCommandBufferStub stub1(GenerateUniqueSurfaceId(), true, older_), | 225 FakeCommandBufferStub stub1(GenerateUniqueSurfaceId(), true, older_), |
221 stub2(GenerateUniqueSurfaceId(), false, older_); | 226 stub2(GenerateUniqueSurfaceId(), false, older_); |
222 client_.stubs_.push_back(&stub1); | 227 client_.stubs_.push_back(&stub1); |
223 client_.stubs_.push_back(&stub2); | 228 client_.stubs_.push_back(&stub2); |
224 | 229 |
225 FakeCommandBufferStubWithoutSurface stub3, stub4; | 230 FakeCommandBufferStubWithoutSurface stub3, stub4; |
226 stub3.share_group_.push_back(&stub1); | 231 stub3.share_group_.push_back(&stub1); |
227 stub4.share_group_.push_back(&stub2); | 232 stub4.share_group_.push_back(&stub2); |
228 client_.stubs_.push_back(&stub3); | 233 client_.stubs_.push_back(&stub3); |
229 client_.stubs_.push_back(&stub4); | 234 client_.stubs_.push_back(&stub4); |
230 | 235 |
231 FakeCommandBufferStubWithoutSurface stub5; | 236 FakeCommandBufferStubWithoutSurface stub5; |
232 stub5.share_group_.push_back(&stub1); | 237 stub5.share_group_.push_back(&stub1); |
233 stub5.share_group_.push_back(&stub2); | 238 stub5.share_group_.push_back(&stub2); |
234 client_.stubs_.push_back(&stub5); | 239 client_.stubs_.push_back(&stub5); |
235 | 240 |
236 Manage(); | 241 Manage(); |
237 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); | 242 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); |
238 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, true); | 243 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, true); |
239 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); | 244 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); |
240 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); | 245 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); |
241 EXPECT_EQ(stub1.allocation_, stub3.allocation_); | 246 EXPECT_GT(stub1.allocation_.gpu_resource_size_in_bytes, 1ul); |
242 EXPECT_EQ(stub2.allocation_, stub4.allocation_); | 247 EXPECT_EQ(stub2.allocation_.gpu_resource_size_in_bytes, 0ul); |
243 EXPECT_EQ(stub1.allocation_, stub5.allocation_); | 248 EXPECT_GT(stub3.allocation_.gpu_resource_size_in_bytes, 1ul); |
| 249 EXPECT_GT(stub4.allocation_.gpu_resource_size_in_bytes, 1ul); |
| 250 EXPECT_GT(stub5.allocation_.gpu_resource_size_in_bytes, 1ul); |
244 | 251 |
245 stub1.surface_state_.visible = false; | 252 stub1.surface_state_.visible = false; |
246 stub2.surface_state_.visible = true; | 253 stub2.surface_state_.visible = true; |
247 | 254 |
248 Manage(); | 255 Manage(); |
249 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); | 256 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); |
250 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); | 257 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); |
251 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); | 258 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); |
252 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, true); | 259 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, true); |
253 EXPECT_EQ(stub1.allocation_, stub3.allocation_); | 260 EXPECT_EQ(stub1.allocation_.gpu_resource_size_in_bytes, 0ul); |
254 EXPECT_EQ(stub2.allocation_, stub4.allocation_); | 261 EXPECT_GT(stub2.allocation_.gpu_resource_size_in_bytes, 1ul); |
255 EXPECT_EQ(stub2.allocation_, stub5.allocation_); | 262 EXPECT_GT(stub3.allocation_.gpu_resource_size_in_bytes, 1ul); |
| 263 EXPECT_GT(stub4.allocation_.gpu_resource_size_in_bytes, 1ul); |
| 264 EXPECT_GT(stub5.allocation_.gpu_resource_size_in_bytes, 1ul); |
256 } | 265 } |
257 | 266 |
258 // Test GpuMemoryManager::Manage functionality: Test more than threshold number | 267 // Test GpuMemoryManager::Manage functionality: Test more than threshold number |
259 // of visible stubs. | 268 // of visible stubs. |
260 // Expect all allocations to continue to have frontbuffer. | 269 // Expect all allocations to continue to have frontbuffer. |
261 TEST_F(GpuMemoryManagerTest, TestManageManyVisibleStubs) { | 270 TEST_F(GpuMemoryManagerTest, TestManageManyVisibleStubs) { |
262 FakeCommandBufferStub stub1(GenerateUniqueSurfaceId(), true, older_), | 271 FakeCommandBufferStub stub1(GenerateUniqueSurfaceId(), true, older_), |
263 stub2(GenerateUniqueSurfaceId(), true, older_), | 272 stub2(GenerateUniqueSurfaceId(), true, older_), |
264 stub3(GenerateUniqueSurfaceId(), true, older_), | 273 stub3(GenerateUniqueSurfaceId(), true, older_), |
265 stub4(GenerateUniqueSurfaceId(), true, older_); | 274 stub4(GenerateUniqueSurfaceId(), true, older_); |
(...skipping 15 matching lines...) Expand all Loading... |
281 | 290 |
282 Manage(); | 291 Manage(); |
283 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); | 292 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); |
284 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, true); | 293 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, true); |
285 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); | 294 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); |
286 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, true); | 295 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, true); |
287 EXPECT_EQ(stub3.allocation_.suggest_have_frontbuffer, true); | 296 EXPECT_EQ(stub3.allocation_.suggest_have_frontbuffer, true); |
288 EXPECT_EQ(stub3.allocation_.suggest_have_backbuffer, true); | 297 EXPECT_EQ(stub3.allocation_.suggest_have_backbuffer, true); |
289 EXPECT_EQ(stub4.allocation_.suggest_have_frontbuffer, true); | 298 EXPECT_EQ(stub4.allocation_.suggest_have_frontbuffer, true); |
290 EXPECT_EQ(stub4.allocation_.suggest_have_backbuffer, true); | 299 EXPECT_EQ(stub4.allocation_.suggest_have_backbuffer, true); |
291 EXPECT_EQ(stub5.allocation_, stub1.allocation_); | 300 EXPECT_GT(stub5.allocation_.gpu_resource_size_in_bytes, 1ul); |
292 EXPECT_EQ(stub6.allocation_, stub2.allocation_); | 301 EXPECT_GT(stub6.allocation_.gpu_resource_size_in_bytes, 1ul); |
293 EXPECT_EQ(stub7.allocation_, stub1.allocation_); | 302 EXPECT_GT(stub7.allocation_.gpu_resource_size_in_bytes, 1ul); |
294 } | 303 } |
295 | 304 |
296 // Test GpuMemoryManager::Manage functionality: Test more than threshold number | 305 // Test GpuMemoryManager::Manage functionality: Test more than threshold number |
297 // of not visible stubs. | 306 // of not visible stubs. |
298 // Expect the stubs surpassing the threshold to not have a backbuffer. | 307 // Expect the stubs surpassing the threshold to not have a backbuffer. |
299 TEST_F(GpuMemoryManagerTest, TestManageManyNotVisibleStubs) { | 308 TEST_F(GpuMemoryManagerTest, TestManageManyNotVisibleStubs) { |
300 FakeCommandBufferStub stub1(GenerateUniqueSurfaceId(), false, newer_), | 309 FakeCommandBufferStub stub1(GenerateUniqueSurfaceId(), false, newer_), |
301 stub2(GenerateUniqueSurfaceId(), false, newer_), | 310 stub2(GenerateUniqueSurfaceId(), false, newer_), |
302 stub3(GenerateUniqueSurfaceId(), false, newer_), | 311 stub3(GenerateUniqueSurfaceId(), false, newer_), |
303 stub4(GenerateUniqueSurfaceId(), false, older_); | 312 stub4(GenerateUniqueSurfaceId(), false, older_); |
(...skipping 15 matching lines...) Expand all Loading... |
319 | 328 |
320 Manage(); | 329 Manage(); |
321 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); | 330 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); |
322 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); | 331 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); |
323 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); | 332 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); |
324 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); | 333 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); |
325 EXPECT_EQ(stub3.allocation_.suggest_have_frontbuffer, true); | 334 EXPECT_EQ(stub3.allocation_.suggest_have_frontbuffer, true); |
326 EXPECT_EQ(stub3.allocation_.suggest_have_backbuffer, false); | 335 EXPECT_EQ(stub3.allocation_.suggest_have_backbuffer, false); |
327 EXPECT_EQ(stub4.allocation_.suggest_have_frontbuffer, false); | 336 EXPECT_EQ(stub4.allocation_.suggest_have_frontbuffer, false); |
328 EXPECT_EQ(stub4.allocation_.suggest_have_backbuffer, false); | 337 EXPECT_EQ(stub4.allocation_.suggest_have_backbuffer, false); |
329 EXPECT_EQ(stub5.allocation_, stub1.allocation_); | 338 EXPECT_GT(stub5.allocation_.gpu_resource_size_in_bytes, 1ul); |
330 EXPECT_EQ(stub6.allocation_, stub4.allocation_); | 339 EXPECT_EQ(stub6.allocation_.gpu_resource_size_in_bytes, 0ul); |
331 EXPECT_EQ(stub7.allocation_, stub1.allocation_); | 340 EXPECT_GT(stub7.allocation_.gpu_resource_size_in_bytes, 1ul); |
332 } | 341 } |
333 | 342 |
334 // Test GpuMemoryManager::Manage functionality: Test changing the last used | 343 // Test GpuMemoryManager::Manage functionality: Test changing the last used |
335 // time of stubs when doing so causes change in which stubs surpass threshold. | 344 // time of stubs when doing so causes change in which stubs surpass threshold. |
336 // Expect frontbuffer to be dropped for the older stub. | 345 // Expect frontbuffer to be dropped for the older stub. |
337 TEST_F(GpuMemoryManagerTest, TestManageChangingLastUsedTime) { | 346 TEST_F(GpuMemoryManagerTest, TestManageChangingLastUsedTime) { |
338 FakeCommandBufferStub stub1(GenerateUniqueSurfaceId(), false, newer_), | 347 FakeCommandBufferStub stub1(GenerateUniqueSurfaceId(), false, newer_), |
339 stub2(GenerateUniqueSurfaceId(), false, newer_), | 348 stub2(GenerateUniqueSurfaceId(), false, newer_), |
340 stub3(GenerateUniqueSurfaceId(), false, newer_), | 349 stub3(GenerateUniqueSurfaceId(), false, newer_), |
341 stub4(GenerateUniqueSurfaceId(), false, older_); | 350 stub4(GenerateUniqueSurfaceId(), false, older_); |
(...skipping 11 matching lines...) Expand all Loading... |
353 FakeCommandBufferStubWithoutSurface stub7; | 362 FakeCommandBufferStubWithoutSurface stub7; |
354 stub7.share_group_.push_back(&stub3); | 363 stub7.share_group_.push_back(&stub3); |
355 stub7.share_group_.push_back(&stub4); | 364 stub7.share_group_.push_back(&stub4); |
356 client_.stubs_.push_back(&stub7); | 365 client_.stubs_.push_back(&stub7); |
357 | 366 |
358 Manage(); | 367 Manage(); |
359 EXPECT_EQ(stub3.allocation_.suggest_have_frontbuffer, true); | 368 EXPECT_EQ(stub3.allocation_.suggest_have_frontbuffer, true); |
360 EXPECT_EQ(stub3.allocation_.suggest_have_backbuffer, false); | 369 EXPECT_EQ(stub3.allocation_.suggest_have_backbuffer, false); |
361 EXPECT_EQ(stub4.allocation_.suggest_have_frontbuffer, false); | 370 EXPECT_EQ(stub4.allocation_.suggest_have_frontbuffer, false); |
362 EXPECT_EQ(stub4.allocation_.suggest_have_backbuffer, false); | 371 EXPECT_EQ(stub4.allocation_.suggest_have_backbuffer, false); |
363 EXPECT_EQ(stub5.allocation_, stub3.allocation_); | 372 EXPECT_GT(stub5.allocation_.gpu_resource_size_in_bytes, 1ul); |
364 EXPECT_EQ(stub6.allocation_, stub4.allocation_); | 373 EXPECT_EQ(stub6.allocation_.gpu_resource_size_in_bytes, 0ul); |
365 EXPECT_EQ(stub7.allocation_, stub3.allocation_); | 374 EXPECT_GT(stub7.allocation_.gpu_resource_size_in_bytes, 1ul); |
366 | 375 |
367 stub3.surface_state_.last_used_time = older_; | 376 stub3.surface_state_.last_used_time = older_; |
368 stub4.surface_state_.last_used_time = newer_; | 377 stub4.surface_state_.last_used_time = newer_; |
369 | 378 |
370 Manage(); | 379 Manage(); |
371 EXPECT_EQ(stub3.allocation_.suggest_have_frontbuffer, false); | 380 EXPECT_EQ(stub3.allocation_.suggest_have_frontbuffer, false); |
372 EXPECT_EQ(stub3.allocation_.suggest_have_backbuffer, false); | 381 EXPECT_EQ(stub3.allocation_.suggest_have_backbuffer, false); |
373 EXPECT_EQ(stub4.allocation_.suggest_have_frontbuffer, true); | 382 EXPECT_EQ(stub4.allocation_.suggest_have_frontbuffer, true); |
374 EXPECT_EQ(stub4.allocation_.suggest_have_backbuffer, false); | 383 EXPECT_EQ(stub4.allocation_.suggest_have_backbuffer, false); |
375 EXPECT_EQ(stub5.allocation_, stub3.allocation_); | 384 EXPECT_EQ(stub5.allocation_.gpu_resource_size_in_bytes, 0ul); |
376 EXPECT_EQ(stub6.allocation_, stub4.allocation_); | 385 EXPECT_GT(stub6.allocation_.gpu_resource_size_in_bytes, 1ul); |
377 EXPECT_EQ(stub7.allocation_, stub4.allocation_); | 386 EXPECT_GT(stub7.allocation_.gpu_resource_size_in_bytes, 1ul); |
378 } | 387 } |
379 | 388 |
380 // Test GpuMemoryManager::Manage functionality: Test changing importance of | 389 // Test GpuMemoryManager::Manage functionality: Test changing importance of |
381 // enough stubs so that every stub in share group crosses threshold. | 390 // enough stubs so that every stub in share group crosses threshold. |
382 // Expect memory allocation of the stubs without surface to share memory | 391 // Expect memory allocation of the stubs without surface to share memory |
383 // allocation with the most visible stub in share group. | 392 // allocation with the most visible stub in share group. |
384 TEST_F(GpuMemoryManagerTest, TestManageChangingImportanceShareGroup) { | 393 TEST_F(GpuMemoryManagerTest, TestManageChangingImportanceShareGroup) { |
385 FakeCommandBufferStub stubA(GenerateUniqueSurfaceId(), true, newer_), | 394 FakeCommandBufferStub stubA(GenerateUniqueSurfaceId(), true, newer_), |
386 stubB(GenerateUniqueSurfaceId(), false, newer_), | 395 stubB(GenerateUniqueSurfaceId(), false, newer_), |
387 stubC(GenerateUniqueSurfaceId(), false, newer_); | 396 stubC(GenerateUniqueSurfaceId(), false, newer_); |
(...skipping 11 matching lines...) Expand all Loading... |
399 stub4.share_group_.push_back(&stub1); | 408 stub4.share_group_.push_back(&stub1); |
400 stub4.share_group_.push_back(&stub2); | 409 stub4.share_group_.push_back(&stub2); |
401 client_.stubs_.push_back(&stub3); | 410 client_.stubs_.push_back(&stub3); |
402 client_.stubs_.push_back(&stub4); | 411 client_.stubs_.push_back(&stub4); |
403 | 412 |
404 Manage(); | 413 Manage(); |
405 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); | 414 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); |
406 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, true); | 415 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, true); |
407 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); | 416 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); |
408 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, true); | 417 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, true); |
409 EXPECT_EQ(stub3.allocation_, stub1.allocation_); | 418 EXPECT_GT(stub1.allocation_.gpu_resource_size_in_bytes, 1ul); |
410 EXPECT_EQ(stub3.allocation_, stub2.allocation_); | 419 EXPECT_GT(stub2.allocation_.gpu_resource_size_in_bytes, 1ul); |
411 EXPECT_EQ(stub4.allocation_, stub1.allocation_); | 420 EXPECT_GT(stub3.allocation_.gpu_resource_size_in_bytes, 1ul); |
412 EXPECT_EQ(stub4.allocation_, stub2.allocation_); | 421 EXPECT_GT(stub4.allocation_.gpu_resource_size_in_bytes, 1ul); |
413 | 422 |
414 stub1.surface_state_.visible = false; | 423 stub1.surface_state_.visible = false; |
415 | 424 |
416 Manage(); | 425 Manage(); |
417 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); | 426 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); |
418 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); | 427 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); |
419 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); | 428 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); |
420 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, true); | 429 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, true); |
421 EXPECT_NE(stub3.allocation_, stub1.allocation_); | 430 EXPECT_EQ(stub1.allocation_.gpu_resource_size_in_bytes, 0ul); |
422 EXPECT_EQ(stub3.allocation_, stub2.allocation_); | 431 EXPECT_GT(stub2.allocation_.gpu_resource_size_in_bytes, 1ul); |
423 EXPECT_NE(stub4.allocation_, stub1.allocation_); | 432 EXPECT_GT(stub3.allocation_.gpu_resource_size_in_bytes, 1ul); |
424 EXPECT_EQ(stub4.allocation_, stub2.allocation_); | 433 EXPECT_GT(stub4.allocation_.gpu_resource_size_in_bytes, 1ul); |
425 | 434 |
426 stub2.surface_state_.visible = false; | 435 stub2.surface_state_.visible = false; |
427 | 436 |
428 Manage(); | 437 Manage(); |
429 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); | 438 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, true); |
430 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); | 439 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); |
431 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); | 440 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); |
432 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); | 441 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); |
433 EXPECT_EQ(stub3.allocation_, stub1.allocation_); | 442 EXPECT_EQ(stub1.allocation_.gpu_resource_size_in_bytes, 0ul); |
434 EXPECT_EQ(stub3.allocation_, stub2.allocation_); | 443 EXPECT_EQ(stub2.allocation_.gpu_resource_size_in_bytes, 0ul); |
435 EXPECT_EQ(stub4.allocation_, stub1.allocation_); | 444 EXPECT_GT(stub3.allocation_.gpu_resource_size_in_bytes, 1ul); |
436 EXPECT_EQ(stub4.allocation_, stub2.allocation_); | 445 EXPECT_GT(stub4.allocation_.gpu_resource_size_in_bytes, 1ul); |
437 | 446 |
438 stub1.surface_state_.last_used_time = older_; | 447 stub1.surface_state_.last_used_time = older_; |
439 | 448 |
440 Manage(); | 449 Manage(); |
441 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, false); | 450 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, false); |
442 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); | 451 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); |
443 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); | 452 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, true); |
444 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); | 453 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); |
445 EXPECT_NE(stub3.allocation_, stub1.allocation_); | 454 EXPECT_EQ(stub1.allocation_.gpu_resource_size_in_bytes, 0ul); |
446 EXPECT_EQ(stub3.allocation_, stub2.allocation_); | 455 EXPECT_EQ(stub2.allocation_.gpu_resource_size_in_bytes, 0ul); |
447 EXPECT_NE(stub4.allocation_, stub1.allocation_); | 456 EXPECT_GT(stub3.allocation_.gpu_resource_size_in_bytes, 1ul); |
448 EXPECT_EQ(stub4.allocation_, stub2.allocation_); | 457 EXPECT_GT(stub4.allocation_.gpu_resource_size_in_bytes, 1ul); |
449 | 458 |
450 stub2.surface_state_.last_used_time = older_; | 459 stub2.surface_state_.last_used_time = older_; |
451 | 460 |
452 Manage(); | 461 Manage(); |
453 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, false); | 462 EXPECT_EQ(stub1.allocation_.suggest_have_frontbuffer, false); |
454 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); | 463 EXPECT_EQ(stub1.allocation_.suggest_have_backbuffer, false); |
455 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, false); | 464 EXPECT_EQ(stub2.allocation_.suggest_have_frontbuffer, false); |
456 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); | 465 EXPECT_EQ(stub2.allocation_.suggest_have_backbuffer, false); |
457 EXPECT_EQ(stub3.allocation_, stub1.allocation_); | 466 EXPECT_EQ(stub1.allocation_.gpu_resource_size_in_bytes, 0ul); |
458 EXPECT_EQ(stub3.allocation_, stub2.allocation_); | 467 EXPECT_EQ(stub2.allocation_.gpu_resource_size_in_bytes, 0ul); |
459 EXPECT_EQ(stub4.allocation_, stub1.allocation_); | 468 EXPECT_EQ(stub3.allocation_.gpu_resource_size_in_bytes, 0ul); |
460 EXPECT_EQ(stub4.allocation_, stub2.allocation_); | 469 EXPECT_EQ(stub4.allocation_.gpu_resource_size_in_bytes, 0ul); |
461 } | 470 } |
462 | 471 |
463 // Test GpuMemoryAllocation comparison operators: Iterate over all possible | 472 // Test GpuMemoryAllocation comparison operators: Iterate over all possible |
464 // combinations of gpu_resource_size_in_bytes, suggest_have_backbuffer, and | 473 // combinations of gpu_resource_size_in_bytes, suggest_have_backbuffer, and |
465 // suggest_have_frontbuffer, and make sure allocations with equal values test | 474 // suggest_have_frontbuffer, and make sure allocations with equal values test |
466 // equal and non equal values test not equal. | 475 // equal and non equal values test not equal. |
467 TEST_F(GpuMemoryManagerTest, GpuMemoryAllocationCompareTests) { | 476 TEST_F(GpuMemoryManagerTest, GpuMemoryAllocationCompareTests) { |
468 int gpu_resource_size_in_bytes_values[] = { 0, 1, 12345678 }; | 477 int gpu_resource_size_in_bytes_values[] = { 0, 1, 12345678 }; |
469 bool suggest_have_backbuffer_values[] = { false, true }; | 478 bool suggest_have_backbuffer_values[] = { false, true }; |
470 bool suggest_have_frontbuffer_values[] = { false, true }; | 479 bool suggest_have_frontbuffer_values[] = { false, true }; |
471 | 480 |
472 for(int* sz = &gpu_resource_size_in_bytes_values[0]; | 481 for(int* sz = &gpu_resource_size_in_bytes_values[0]; |
473 sz != &gpu_resource_size_in_bytes_values[3]; ++sz) { | 482 sz != &gpu_resource_size_in_bytes_values[3]; ++sz) { |
474 for(bool* shbb = &suggest_have_backbuffer_values[0]; | 483 for(bool* shbb = &suggest_have_backbuffer_values[0]; |
475 shbb != &suggest_have_backbuffer_values[2]; ++shbb) { | 484 shbb != &suggest_have_backbuffer_values[2]; ++shbb) { |
476 for(bool* shfb = &suggest_have_frontbuffer_values[0]; | 485 for(bool* shfb = &suggest_have_frontbuffer_values[0]; |
477 shfb != &suggest_have_frontbuffer_values[2]; ++shfb) { | 486 shfb != &suggest_have_frontbuffer_values[2]; ++shfb) { |
478 GpuMemoryAllocation allocation(*sz, *shbb, *shfb); | 487 GpuMemoryAllocation allocation(*sz, *shbb, *shfb); |
479 EXPECT_EQ(allocation, GpuMemoryAllocation(*sz, *shbb, *shfb)); | 488 EXPECT_EQ(allocation, GpuMemoryAllocation(*sz, *shbb, *shfb)); |
480 EXPECT_NE(allocation, GpuMemoryAllocation(*sz+1, *shbb, *shfb)); | 489 EXPECT_NE(allocation, GpuMemoryAllocation(*sz+1, *shbb, *shfb)); |
481 EXPECT_NE(allocation, GpuMemoryAllocation(*sz, !*shbb, *shfb)); | 490 EXPECT_NE(allocation, GpuMemoryAllocation(*sz, !*shbb, *shfb)); |
482 EXPECT_NE(allocation, GpuMemoryAllocation(*sz, *shbb, !*shfb)); | 491 EXPECT_NE(allocation, GpuMemoryAllocation(*sz, *shbb, !*shfb)); |
483 } | 492 } |
484 } | 493 } |
485 } | 494 } |
486 } | 495 } |
OLD | NEW |