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

Side by Side Diff: Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp

Issue 10025037: Merge 114191 - [chromium] Remove viewport memory restrictions (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1084/
Patch Set: Created 8 years, 8 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 | « Source/WebCore/platform/graphics/chromium/TextureManager.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 void CCLayerTreeHost::layout() 192 void CCLayerTreeHost::layout()
193 { 193 {
194 m_client->layout(); 194 m_client->layout();
195 } 195 }
196 196
197 void CCLayerTreeHost::beginCommitOnImplThread(CCLayerTreeHostImpl* hostImpl) 197 void CCLayerTreeHost::beginCommitOnImplThread(CCLayerTreeHostImpl* hostImpl)
198 { 198 {
199 ASSERT(CCProxy::isImplThread()); 199 ASSERT(CCProxy::isImplThread());
200 TRACE_EVENT("CCLayerTreeHost::commitTo", this, 0); 200 TRACE_EVENT("CCLayerTreeHost::commitTo", this, 0);
201 201
202 m_contentsTextureManager->reduceMemoryToLimit(TextureManager::reclaimLimitBy tes(viewportSize())); 202 m_contentsTextureManager->reduceMemoryToLimit(m_contentsTextureManager->pref erredMemoryLimitBytes());
203 m_contentsTextureManager->deleteEvictedTextures(hostImpl->contentsTextureAll ocator()); 203 m_contentsTextureManager->deleteEvictedTextures(hostImpl->contentsTextureAll ocator());
204 } 204 }
205 205
206 // This function commits the CCLayerTreeHost to an impl tree. When modifying 206 // This function commits the CCLayerTreeHost to an impl tree. When modifying
207 // this function, keep in mind that the function *runs* on the impl thread! Any 207 // this function, keep in mind that the function *runs* on the impl thread! Any
208 // code that is logically a main thread operation, e.g. deletion of a LayerChrom ium, 208 // code that is logically a main thread operation, e.g. deletion of a LayerChrom ium,
209 // should be delayed until the CCLayerTreeHost::commitComplete, which will run 209 // should be delayed until the CCLayerTreeHost::commitComplete, which will run
210 // after the commit, but on the main thread. 210 // after the commit, but on the main thread.
211 void CCLayerTreeHost::finishCommitOnImplThread(CCLayerTreeHostImpl* hostImpl) 211 void CCLayerTreeHost::finishCommitOnImplThread(CCLayerTreeHostImpl* hostImpl)
212 { 212 {
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 } 360 }
361 361
362 void CCLayerTreeHost::setVisible(bool visible) 362 void CCLayerTreeHost::setVisible(bool visible)
363 { 363 {
364 if (m_visible == visible) 364 if (m_visible == visible)
365 return; 365 return;
366 366
367 m_visible = visible; 367 m_visible = visible;
368 368
369 if (!visible && m_layerRendererInitialized) { 369 if (!visible && m_layerRendererInitialized) {
370 m_contentsTextureManager->reduceMemoryToLimit(TextureManager::lowLimitBy tes(viewportSize())); 370 // Drop all unprotected textures.
371 m_contentsTextureManager->reduceMemoryToLimit(0);
371 m_contentsTextureManager->unprotectAllTextures(); 372 m_contentsTextureManager->unprotectAllTextures();
372 } 373 }
373 374
374 // Tells the proxy that visibility state has changed. This will in turn call 375 // Tells the proxy that visibility state has changed. This will in turn call
375 // CCLayerTreeHost::didBecomeInvisibleOnImplThread on the appropriate thread , for 376 // CCLayerTreeHost::didBecomeInvisibleOnImplThread on the appropriate thread , for
376 // the case where !visible. 377 // the case where !visible.
377 m_proxy->setVisible(visible); 378 m_proxy->setVisible(visible);
378 } 379 }
379 380
380 void CCLayerTreeHost::didBecomeInvisibleOnImplThread(CCLayerTreeHostImpl* hostIm pl) 381 void CCLayerTreeHost::didBecomeInvisibleOnImplThread(CCLayerTreeHostImpl* hostIm pl)
381 { 382 {
382 ASSERT(CCProxy::isImplThread()); 383 ASSERT(CCProxy::isImplThread());
383 if (!m_layerRendererInitialized) 384 if (!m_layerRendererInitialized)
384 return; 385 return;
385 386
386 if (m_proxy->layerRendererCapabilities().contextHasCachedFrontBuffer) 387 if (m_proxy->layerRendererCapabilities().contextHasCachedFrontBuffer)
387 contentsTextureManager()->evictAndDeleteAllTextures(hostImpl->contentsTe xtureAllocator()); 388 contentsTextureManager()->evictAndDeleteAllTextures(hostImpl->contentsTe xtureAllocator());
388 else { 389 else {
389 contentsTextureManager()->reduceMemoryToLimit(TextureManager::reclaimLim itBytes(viewportSize())); 390 contentsTextureManager()->reduceMemoryToLimit(m_contentsTextureManager-> preferredMemoryLimitBytes());
390 contentsTextureManager()->deleteEvictedTextures(hostImpl->contentsTextur eAllocator()); 391 contentsTextureManager()->deleteEvictedTextures(hostImpl->contentsTextur eAllocator());
391 } 392 }
392 393
393 // Ensure that the dropped tiles are propagated to the impl tree. 394 // Ensure that the dropped tiles are propagated to the impl tree.
394 // If the frontbuffer is cached, then clobber the impl tree. Otherwise, 395 // If the frontbuffer is cached, then clobber the impl tree. Otherwise,
395 // push over the tree changes. 396 // push over the tree changes.
396 if (m_proxy->layerRendererCapabilities().contextHasCachedFrontBuffer) { 397 if (m_proxy->layerRendererCapabilities().contextHasCachedFrontBuffer) {
397 hostImpl->setRootLayer(nullptr); 398 hostImpl->setRootLayer(nullptr);
398 return; 399 return;
399 } 400 }
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 482
482 // Reset partial texture update requests. 483 // Reset partial texture update requests.
483 m_partialTextureUpdateRequests = 0; 484 m_partialTextureUpdateRequests = 0;
484 485
485 reserveTextures(); 486 reserveTextures();
486 487
487 paintLayerContents(m_updateList, PaintVisible); 488 paintLayerContents(m_updateList, PaintVisible);
488 if (!m_triggerIdlePaints) 489 if (!m_triggerIdlePaints)
489 return; 490 return;
490 491
491 size_t preferredLimitBytes = TextureManager::reclaimLimitBytes(m_viewportSiz e); 492 size_t preferredLimitBytes = m_contentsTextureManager->preferredMemoryLimitB ytes();
492 size_t maxLimitBytes = TextureManager::highLimitBytes(m_viewportSize); 493 size_t maxLimitBytes = m_contentsTextureManager->maxMemoryLimitBytes();
493 m_contentsTextureManager->reduceMemoryToLimit(preferredLimitBytes); 494 m_contentsTextureManager->reduceMemoryToLimit(preferredLimitBytes);
494 if (m_contentsTextureManager->currentMemoryUseBytes() >= preferredLimitBytes ) 495 if (m_contentsTextureManager->currentMemoryUseBytes() >= preferredLimitBytes )
495 return; 496 return;
496 497
497 // Idle painting should fail when we hit the preferred memory limit, 498 // Idle painting should fail when we hit the preferred memory limit,
498 // otherwise it will always push us towards the maximum limit. 499 // otherwise it will always push us towards the maximum limit.
499 m_contentsTextureManager->setMaxMemoryLimitBytes(preferredLimitBytes); 500 m_contentsTextureManager->setMaxMemoryLimitBytes(preferredLimitBytes);
500 // The second (idle) paint will be a no-op in layers where painting already occured above. 501 // The second (idle) paint will be a no-op in layers where painting already occured above.
501 paintLayerContents(m_updateList, PaintIdle); 502 paintLayerContents(m_updateList, PaintIdle);
502 m_contentsTextureManager->setMaxMemoryLimitBytes(maxLimitBytes); 503 m_contentsTextureManager->setMaxMemoryLimitBytes(maxLimitBytes);
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 for (size_t eventIndex = 0; eventIndex < events.size(); ++eventIndex) { 693 for (size_t eventIndex = 0; eventIndex < events.size(); ++eventIndex) {
693 if (layer->id() == events[eventIndex].layerId) 694 if (layer->id() == events[eventIndex].layerId)
694 layer->notifyAnimationStarted(events[eventIndex], wallClockTime); 695 layer->notifyAnimationStarted(events[eventIndex], wallClockTime);
695 } 696 }
696 697
697 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex) 698 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex)
698 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime); 699 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime);
699 } 700 }
700 701
701 } // namespace WebCore 702 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/platform/graphics/chromium/TextureManager.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698