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

Unified Diff: android_webview/browser/browser_view_renderer.cc

Issue 643993005: Remove limit on number of resources in cc (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: no cc change Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « android_webview/browser/browser_view_renderer.h ('k') | android_webview/browser/global_tile_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/browser/browser_view_renderer.cc
diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc
index f897b0ce0642732e3a7549b2d5924830ab153523..5bf8168da3d40702f326c6a284d14763e62e7884 100644
--- a/android_webview/browser/browser_view_renderer.cc
+++ b/android_webview/browser/browser_view_renderer.cc
@@ -23,8 +23,6 @@
#include "third_party/skia/include/core/SkPictureRecorder.h"
#include "ui/gfx/geometry/vector2d_conversions.h"
-using content::SynchronousCompositorMemoryPolicy;
-
namespace android_webview {
namespace {
@@ -37,13 +35,6 @@ const size_t kBytesPerPixel = 4;
const size_t kMemoryAllocationStep = 5 * 1024 * 1024;
uint64 g_memory_override_in_bytes = 0u;
-// Used to calculate tile allocation. Determined experimentally.
-const size_t kTileMultiplier = 12;
-const size_t kTileAllocationStep = 20;
-// Use chrome's default tile size, which varies from 256 to 512.
-// Be conservative here and use the smallest tile size possible.
-const size_t kTileArea = 256 * 256;
-
} // namespace
// static
@@ -60,10 +51,6 @@ void BrowserViewRenderer::CalculateTileMemoryPolicy() {
&g_memory_override_in_bytes);
g_memory_override_in_bytes *= 1024 * 1024;
}
-
- // There is no need to limit number of tiles, so use an effectively unlimited
- // value as the limit.
- GlobalTileManager::GetInstance()->SetTileLimit(10 * 1000 * 1000);
}
BrowserViewRenderer::BrowserViewRenderer(
@@ -131,68 +118,29 @@ void BrowserViewRenderer::TrimMemory(const int level, const bool visible) {
if (level < TRIM_MEMORY_BACKGROUND && visible)
return;
- // Just set the memory limit to 0 and drop all tiles. This will be reset to
- // normal levels in the next DrawGL call.
- SynchronousCompositorMemoryPolicy zero_policy;
- if (memory_policy_ == zero_policy)
+ // Nothing to drop.
+ if (!compositor_ || !hardware_enabled_)
return;
TRACE_EVENT0("android_webview", "BrowserViewRenderer::TrimMemory");
- DCHECK(hardware_enabled_);
- DCHECK(compositor_);
- RequestMemoryPolicy(zero_policy);
- EnforceMemoryPolicyImmediately(zero_policy);
+ // Just set the memory limit to 0 and drop all tiles. This will be reset to
+ // normal levels in the next DrawGL call.
+ compositor_->SetMemoryPolicy(0u);
+ ForceFakeCompositeSW();
}
-SynchronousCompositorMemoryPolicy
-BrowserViewRenderer::CalculateDesiredMemoryPolicy() {
- SynchronousCompositorMemoryPolicy policy;
+size_t BrowserViewRenderer::CalculateDesiredMemoryPolicy() {
+ if (g_memory_override_in_bytes)
+ return static_cast<size_t>(g_memory_override_in_bytes);
+
size_t width = last_on_draw_global_visible_rect_.width();
size_t height = last_on_draw_global_visible_rect_.height();
- policy.bytes_limit = kMemoryMultiplier * kBytesPerPixel * width * height;
+ size_t bytes_limit = kMemoryMultiplier * kBytesPerPixel * width * height;
// Round up to a multiple of kMemoryAllocationStep.
- policy.bytes_limit =
- (policy.bytes_limit / kMemoryAllocationStep + 1) * kMemoryAllocationStep;
-
- if (g_memory_override_in_bytes)
- policy.bytes_limit = static_cast<size_t>(g_memory_override_in_bytes);
-
- size_t tiles = width * height * kTileMultiplier / kTileArea;
- // Round up to a multiple of kTileAllocationStep. The minimum number of tiles
- // is also kTileAllocationStep.
- tiles = (tiles / kTileAllocationStep + 1) * kTileAllocationStep;
- policy.num_resources_limit = tiles;
- return policy;
-}
-
-// This function updates the cached memory policy in shared renderer state, as
-// well as the tile resource allocation in GlobalTileManager.
-void BrowserViewRenderer::RequestMemoryPolicy(
- SynchronousCompositorMemoryPolicy& new_policy) {
- DCHECK(compositor_);
- GlobalTileManager* manager = GlobalTileManager::GetInstance();
-
- // The following line will call BrowserViewRenderer::SetMemoryPolicy().
- manager->RequestTiles(new_policy, tile_manager_key_);
-}
-
-void BrowserViewRenderer::SetMemoryPolicy(
- SynchronousCompositorMemoryPolicy new_policy,
- bool effective_immediately) {
- memory_policy_ = new_policy;
- if (effective_immediately)
- EnforceMemoryPolicyImmediately(memory_policy_);
-}
-
-void BrowserViewRenderer::EnforceMemoryPolicyImmediately(
- SynchronousCompositorMemoryPolicy new_policy) {
- compositor_->SetMemoryPolicy(new_policy);
- ForceFakeCompositeSW();
-}
-
-SynchronousCompositorMemoryPolicy BrowserViewRenderer::GetMemoryPolicy() const {
- return memory_policy_;
+ bytes_limit =
+ (bytes_limit / kMemoryAllocationStep + 1) * kMemoryAllocationStep;
+ return bytes_limit;
}
bool BrowserViewRenderer::OnDraw(jobject java_canvas,
@@ -223,9 +171,6 @@ bool BrowserViewRenderer::OnDrawHardware() {
if (!hardware_enabled_) {
hardware_enabled_ = compositor_->InitializeHwDraw();
- if (hardware_enabled_) {
- tile_manager_key_ = GlobalTileManager::GetInstance()->PushBack(this);
- }
}
if (!hardware_enabled_)
return false;
@@ -253,14 +198,11 @@ bool BrowserViewRenderer::OnDrawHardware() {
return false;
shared_renderer_state_.SetCompositorFrameOnUI(frame.Pass(), false);
- GlobalTileManager::GetInstance()->DidUse(tile_manager_key_);
return true;
}
scoped_ptr<cc::CompositorFrame> BrowserViewRenderer::CompositeHw() {
- SynchronousCompositorMemoryPolicy new_policy = CalculateDesiredMemoryPolicy();
- RequestMemoryPolicy(new_policy);
- compositor_->SetMemoryPolicy(memory_policy_);
+ compositor_->SetMemoryPolicy(CalculateDesiredMemoryPolicy());
parent_draw_constraints_ =
shared_renderer_state_.GetParentDrawConstraintsOnUI();
@@ -461,12 +403,9 @@ void BrowserViewRenderer::ReleaseHardware() {
if (compositor_) {
compositor_->ReleaseHwDraw();
- SynchronousCompositorMemoryPolicy zero_policy;
- RequestMemoryPolicy(zero_policy);
}
hardware_enabled_ = false;
- GlobalTileManager::GetInstance()->Remove(tile_manager_key_);
}
bool BrowserViewRenderer::IsVisible() const {
@@ -491,11 +430,6 @@ void BrowserViewRenderer::DidDestroyCompositor(
content::SynchronousCompositor* compositor) {
TRACE_EVENT0("android_webview", "BrowserViewRenderer::DidDestroyCompositor");
DCHECK(compositor_);
- SynchronousCompositorMemoryPolicy zero_policy;
- if (hardware_enabled_) {
- RequestMemoryPolicy(zero_policy);
- }
- DCHECK(memory_policy_ == zero_policy);
compositor_ = NULL;
}
« no previous file with comments | « android_webview/browser/browser_view_renderer.h ('k') | android_webview/browser/global_tile_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698