| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SKY_VIEWER_COMPOSITOR_RESOURCE_MANAGER_H_ |
| #define SKY_VIEWER_COMPOSITOR_RESOURCE_MANAGER_H_ |
| |
| #include "base/containers/hash_tables.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/scoped_vector.h" |
| #include "base/memory/weak_ptr.h" |
| #include "mojo/services/surfaces/public/interfaces/surfaces.mojom.h" |
| #include "services/sky/compositor/texture_cache.h" |
| |
| namespace gfx { |
| class Size; |
| } |
| |
| namespace mojo { |
| class GLContext; |
| class GLTexture; |
| } |
| |
| namespace sky { |
| class Layer; |
| class LayerHost; |
| |
| class ResourceManager { |
| public: |
| explicit ResourceManager(base::WeakPtr<mojo::GLContext> gl_context); |
| ~ResourceManager(); |
| |
| scoped_ptr<mojo::GLTexture> CreateTexture(const gfx::Size& size); |
| |
| mojo::TransferableResourcePtr CreateTransferableResource(Layer* layer); |
| void ReturnResources(mojo::Array<mojo::ReturnedResourcePtr> resources); |
| |
| private: |
| base::WeakPtr<mojo::GLContext> gl_context_; |
| uint32_t next_resource_id_; |
| base::hash_map<uint32_t, mojo::GLTexture*> resource_to_texture_map_; |
| TextureCache texture_cache_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ResourceManager); |
| }; |
| |
| } // namespace sky |
| |
| #endif // SKY_VIEWER_COMPOSITOR_RESOURCE_MANAGER_H_ |