Chromium Code Reviews| Index: cc/output/gl_renderer.h |
| diff --git a/cc/output/gl_renderer.h b/cc/output/gl_renderer.h |
| index 30c227367f04c417ca458243429848b411ac9214..51161a14b025254c9c98681bf7a62c08f4c8c64d 100644 |
| --- a/cc/output/gl_renderer.h |
| +++ b/cc/output/gl_renderer.h |
| @@ -20,6 +20,7 @@ |
| #include "cc/quads/solid_color_draw_quad.h" |
| #include "cc/quads/tile_draw_quad.h" |
| #include "cc/quads/yuv_video_draw_quad.h" |
| +#include "cc/resources/scoped_resource.h" |
| #include "ui/gfx/geometry/quad_f.h" |
| class SkBitmap; |
| @@ -148,6 +149,11 @@ class CC_EXPORT GLRenderer : public DirectRenderer { |
| private: |
| friend class GLRendererShaderPixelTest; |
| friend class GLRendererShaderTest; |
| + FRIEND_TEST_ALL_PREFIXES(GLRendererRenderPassDrawQuadCopierTest, Reuse); |
| + FRIEND_TEST_ALL_PREFIXES(GLRendererRenderPassDrawQuadCopierTest, |
| + ReleaseResources); |
| + FRIEND_TEST_ALL_PREFIXES(GLRendererRenderPassDrawQuadCopierTest, |
| + MaxCacheSize); |
| static void ToGLMatrix(float* gl_matrix, const gfx::Transform& transform); |
| @@ -263,6 +269,16 @@ class CC_EXPORT GLRenderer : public DirectRenderer { |
| void ScheduleCALayers(DrawingFrame* frame); |
| void ScheduleOverlays(DrawingFrame* frame); |
| + void OverlayResourceNoLongerInUse(GLuint texture); |
| + ResourceId CreateOrReuseIOSurface(const gfx::Size& size); |
| + void DeleteIOSurfacesOverCacheLimit(); |
| + |
| + // RenderPassDrawQuadCopier |
| + bool CopyRenderPassDrawQuadToIOSurface(const RenderPassDrawQuad* quad, |
| + ResourceId* resource_id) override; |
| + void ReleaseIOSurfaces(const std::vector<ResourceId>& resources) override; |
| + void UpdateCopyCountForFrame(size_t count) override; |
| + |
| using OverlayResourceLock = |
| std::unique_ptr<ResourceProvider::ScopedReadLockGL>; |
| using OverlayResourceLockList = std::vector<OverlayResourceLock>; |
| @@ -521,6 +537,11 @@ class CC_EXPORT GLRenderer : public DirectRenderer { |
| bool use_blend_equation_advanced_; |
| bool use_blend_equation_advanced_coherent_; |
| + // Keep an LRU buffer of GMB resources to encourage reuse. |
|
ccameron
2016/07/20 05:32:19
Can we use/augment the existing cc::ResourcePool::
erikchen
2016/07/20 21:48:01
Done.
|
| + std::vector<std::unique_ptr<ScopedResource>> in_use_iosurfaces_; |
| + std::vector<std::unique_ptr<ScopedResource>> free_iosurfaces_; |
| + size_t iosurface_limit_ = 0; |
| + |
| BoundGeometry bound_geometry_; |
| DISALLOW_COPY_AND_ASSIGN(GLRenderer); |
| }; |