1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef GPU_COMMAND_BUFFER_CLIENT_GPU_MEMORY_BUFFER_TRACKER_H_ 6 #define GPU_COMMAND_BUFFER_CLIENT_GPU_MEMORY_BUFFER_TRACKER_H_ 7 8 #include "base/basictypes.h" 9 #include "base/containers/hash_tables.h" 10 #include "gles2_impl_export.h" 11 12 namespace gfx { 13 class GpuMemoryBuffer; 14 } 15 16 namespace gpu { 17 class GpuControl; 18 19 namespace gles2 { 20 21 // Tracks GPU memory buffer objects on the client side. 22 class GLES2_IMPL_EXPORT GpuMemoryBufferTracker { 23 public: 24 explicit GpuMemoryBufferTracker(GpuControl* gpu_control); 25 virtual ~GpuMemoryBufferTracker(); 26 27 int32 CreateBuffer(size_t width, 28 size_t height, 29 int32 internalformat, 30 int32 usage); 31 gfx::GpuMemoryBuffer* GetBuffer(int32 image_id); 32 void RemoveBuffer(int32 image_id); 33 34 private: 35 typedef base::hash_map<int32, gfx::GpuMemoryBuffer*> BufferMap; 36 BufferMap buffers_; 37 GpuControl* gpu_control_; 38 39 DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferTracker); 40 }; 41 42 } // namespace gles2 43 } // namespace gpu 44 45 #endif // GPU_COMMAND_BUFFER_CLIENT_GPU_MEMORY_BUFFER_TRACKER_H_ 46