blob: 0b07dd0a14817068405751f569cfd3d964165d01 [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 "gles2_impl_export.h"
#include "gpu/command_buffer/client/hash_tables.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);
gfx::GpuMemoryBuffer* GetBuffer(int32 image_id);
void RemoveBuffer(int32 image_id);
private:
typedef gpu::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_