| // Copyright (c) 2012 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 GPU_COMMAND_BUFFER_SERVICE_ID_MANAGER_H_ |
| #define GPU_COMMAND_BUFFER_SERVICE_ID_MANAGER_H_ |
| |
| #include "base/containers/hash_tables.h" |
| #include "base/macros.h" |
| #include "gpu/command_buffer/service/gl_utils.h" |
| #include "gpu/gpu_export.h" |
| |
| namespace gpu { |
| namespace gles2 { |
| |
| // This class maps one set of ids to another. |
| // |
| // NOTE: To support shared resources an instance of this class will |
| // need to be shared by multiple GLES2Decoders. |
| class GPU_EXPORT IdManager { |
| public: |
| IdManager(); |
| ~IdManager(); |
| |
| // Maps a client_id to a service_id. Return false if the client_id or |
| // service_id are already mapped to something else. |
| bool AddMapping(GLuint client_id, GLuint service_id); |
| |
| // Unmaps a pair of ids. Returns false if the pair were not previously mapped. |
| bool RemoveMapping(GLuint client_id, GLuint service_id); |
| |
| // Gets the corresponding service_id for the given client_id. |
| // Returns false if there is no corresponding service_id. |
| bool GetServiceId(GLuint client_id, GLuint* service_id); |
| |
| // Gets the corresponding client_id for the given service_id. |
| // Returns false if there is no corresponding client_id. |
| bool GetClientId(GLuint service_id, GLuint* client_id); |
| |
| private: |
| typedef base::hash_map<GLuint, GLuint> MapType; |
| MapType id_map_; |
| |
| DISALLOW_COPY_AND_ASSIGN(IdManager); |
| }; |
| |
| } // namespace gles2 |
| } // namespace gpu |
| |
| #endif // GPU_COMMAND_BUFFER_SERVICE_ID_MANAGER_H_ |
| |