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 12namespace gfx { 13class GpuMemoryBuffer; 14} 15 16namespace gpu { 17class GpuControl; 18 19namespace gles2 { 20 21// Tracks GPU memory buffer objects on the client side. 22class 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