Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(101)

Unified Diff: gpu/command_buffer/client/gpu_memory_buffer_tracker.cc

Issue 20017005: gpu: Refactor GpuMemoryBuffer framework for multi-process support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Include proper internalformat support.[D Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/client/gpu_memory_buffer_tracker.cc
diff --git a/gpu/command_buffer/client/gpu_memory_buffer_tracker.cc b/gpu/command_buffer/client/gpu_memory_buffer_tracker.cc
index c1c9b4d63c7595c21e688edf59ecd8c320731829..b8e26b238be6f2d413c68204131973095ff5b8c3 100644
--- a/gpu/command_buffer/client/gpu_memory_buffer_tracker.cc
+++ b/gpu/command_buffer/client/gpu_memory_buffer_tracker.cc
@@ -5,16 +5,15 @@
#include "gpu/command_buffer/client/gpu_memory_buffer_tracker.h"
#include "base/memory/scoped_ptr.h"
+#include "gpu/command_buffer/client/cmd_buffer_helper.h"
#include "gpu/command_buffer/client/gles2_implementation.h"
-#include "gpu/command_buffer/client/image_factory.h"
-#include "ui/gfx/gpu_memory_buffer.h"
namespace gpu {
namespace gles2 {
-GpuMemoryBufferTracker::GpuMemoryBufferTracker(ImageFactory* factory)
- : buffers_(),
- factory_(factory) {
+GpuMemoryBufferTracker::GpuMemoryBufferTracker(CommandBufferHelper* helper)
+ : helper_(helper) {
+ DCHECK(helper_);
}
GpuMemoryBufferTracker::~GpuMemoryBufferTracker() {
@@ -23,37 +22,32 @@ GpuMemoryBufferTracker::~GpuMemoryBufferTracker() {
}
}
-GLuint GpuMemoryBufferTracker::CreateBuffer(
- GLsizei width, GLsizei height, GLenum internalformat) {
- GLuint image_id = 0;
- DCHECK(factory_);
- scoped_ptr<gfx::GpuMemoryBuffer> buffer =
- factory_->CreateGpuMemoryBuffer(width, height, internalformat, &image_id);
-
- if (buffer.get() == NULL)
+int32 GpuMemoryBufferTracker::CreateBuffer(
+ size_t width, size_t height, int32 internalformat) {
+ int32 image_id = 0;
+ gfx::GpuMemoryBuffer* buffer =
+ helper_->command_buffer()->CreateGpuMemoryBuffer(
+ width, height, internalformat, &image_id);
+ if (!buffer)
return 0;
std::pair<BufferMap::iterator, bool> result =
- buffers_.insert(std::make_pair(image_id, buffer.release()));
+ buffers_.insert(std::make_pair(image_id, buffer));
GPU_DCHECK(result.second);
return image_id;
}
-gfx::GpuMemoryBuffer* GpuMemoryBufferTracker::GetBuffer(GLuint image_id) {
+gfx::GpuMemoryBuffer* GpuMemoryBufferTracker::GetBuffer(int32 image_id) {
BufferMap::iterator it = buffers_.find(image_id);
return (it != buffers_.end()) ? it->second : NULL;
}
-void GpuMemoryBufferTracker::RemoveBuffer(GLuint image_id) {
+void GpuMemoryBufferTracker::RemoveBuffer(int32 image_id) {
BufferMap::iterator buffer_it = buffers_.find(image_id);
- if (buffer_it != buffers_.end()) {
- gfx::GpuMemoryBuffer* buffer = buffer_it->second;
+ if (buffer_it != buffers_.end())
buffers_.erase(buffer_it);
- delete buffer;
- }
- DCHECK(factory_);
- factory_->DeleteGpuMemoryBuffer(image_id);
+ helper_->command_buffer()->DestroyGpuMemoryBuffer(image_id);
}
} // namespace gles2

Powered by Google App Engine
This is Rietveld 408576698