Add memory policy limit by number of resources.
Currently, MemoryPolicy only limits by number of bytes allocated. For
resources like Android gralloc buffers which also have a process or
system-wide limit, we also need to limit by count of the resource. This
patch implements this and sets a limit of 100 from the AndroidWebView
OutputSurface.
As additional cleanup, I also moved the ignore-0-memory-policy logic to
OutputSurface as it doesn't seem appropriate in CC.
New test parametrization for TileManagerTests.
NOTRY=true
BUG=266619
Review URL: https://chromiumcodereview.appspot.com/20843007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@215464 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/cc/trees/layer_tree_host_impl.h b/cc/trees/layer_tree_host_impl.h
index 6830d6d..ae6f3c1 100644
--- a/cc/trees/layer_tree_host_impl.h
+++ b/cc/trees/layer_tree_host_impl.h
@@ -210,9 +210,8 @@
virtual void SetExternalStencilTest(bool enabled) OVERRIDE;
virtual void DidLoseOutputSurface() OVERRIDE;
virtual void OnSwapBuffersComplete(const CompositorFrameAck* ack) OVERRIDE;
- virtual void SetMemoryPolicy(
- const ManagedMemoryPolicy& policy,
- bool discard_backbuffer_when_not_visible) OVERRIDE;
+ virtual void SetMemoryPolicy(const ManagedMemoryPolicy& policy) OVERRIDE;
+ virtual void SetDiscardBackBufferWhenNotVisible(bool discard) OVERRIDE;
virtual void SetTreeActivationCallback(const base::Closure& callback)
OVERRIDE;
@@ -262,9 +261,7 @@
ManagedMemoryPolicy ActualManagedMemoryPolicy() const;
- size_t memory_allocation_limit_bytes() const {
- return managed_memory_policy_.bytes_limit_when_visible;
- }
+ size_t memory_allocation_limit_bytes() const;
void SetViewportSize(gfx::Size device_viewport_size);
gfx::Size device_viewport_size() const { return device_viewport_size_; }
@@ -450,7 +447,8 @@
void UpdateCurrentFrameTime(base::TimeTicks* ticks, base::Time* now) const;
void StartScrollbarAnimationRecursive(LayerImpl* layer, base::TimeTicks time);
- void SetManagedMemoryPolicy(const ManagedMemoryPolicy& policy);
+ void SetManagedMemoryPolicy(const ManagedMemoryPolicy& policy,
+ bool zero_budget);
void EnforceManagedMemoryPolicy(const ManagedMemoryPolicy& policy);
void DidInitializeVisibleTile();
@@ -490,7 +488,7 @@
LayerTreeSettings settings_;
LayerTreeDebugState debug_state_;
bool visible_;
- ManagedMemoryPolicy managed_memory_policy_;
+ ManagedMemoryPolicy cached_managed_memory_policy_;
gfx::Vector2dF accumulated_root_overscroll_;
gfx::Vector2dF current_fling_velocity_;