blob: 25ec9495897b3245899d70026cfc7739e82abaf9 [file] [log] [blame]
// Copyright (c) 2013 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_CLIENT_GPU_MEMORY_BUFFER_TRACKER_H_
#define GPU_COMMAND_BUFFER_CLIENT_GPU_MEMORY_BUFFER_TRACKER_H_
#include "base/basictypes.h"
#include "base/containers/hash_tables.h"
#include "gles2_impl_export.h"
namespace gfx {
class GpuMemoryBuffer;
}
namespace gpu {
class GpuControl;
namespace gles2 {
// Tracks GPU memory buffer objects on the client side.
class GLES2_IMPL_EXPORT GpuMemoryBufferTracker {
public:
explicit GpuMemoryBufferTracker(GpuControl* gpu_control);
virtual ~GpuMemoryBufferTracker();
int32 CreateBuffer(size_t width,
size_t height,
int32 internalformat,
int32 usage);
gfx::GpuMemoryBuffer* GetBuffer(int32 image_id);
void RemoveBuffer(int32 image_id);
private:
typedef base::hash_map<int32, gfx::GpuMemoryBuffer*> BufferMap;
BufferMap buffers_;
GpuControl* gpu_control_;
DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferTracker);
};
} // namespace gles2
} // namespace gpu
#endif // GPU_COMMAND_BUFFER_CLIENT_GPU_MEMORY_BUFFER_TRACKER_H_