summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/common/gpu/client/command_buffer_proxy_impl.cc4
-rw-r--r--content/common/gpu/gpu_command_buffer_stub.cc13
-rw-r--r--gpu/command_buffer/client/client_test_helper.cc3
-rw-r--r--gpu/command_buffer/client/mapped_memory_unittest.cc2
-rw-r--r--gpu/command_buffer/common/buffer.cc20
-rw-r--r--gpu/command_buffer/common/buffer.h41
-rw-r--r--gpu/command_buffer/service/command_buffer_service.cc21
-rw-r--r--gpu/command_buffer/service/command_buffer_service.h13
-rw-r--r--gpu/command_buffer/service/common_decoder_unittest.cc2
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc2
-rw-r--r--gpu/command_buffer/service/gpu_scheduler_unittest.cc2
-rw-r--r--gpu/command_buffer/service/query_manager_unittest.cc3
-rw-r--r--gpu/command_buffer/service/transfer_buffer_manager.cc7
-rw-r--r--gpu/command_buffer/service/transfer_buffer_manager.h13
-rw-r--r--gpu/command_buffer/service/transfer_buffer_manager_unittest.cc51
-rw-r--r--mojo/gles2/command_buffer_client_impl.cc2
-rw-r--r--mojo/services/gles2/command_buffer_impl.cc8
-rw-r--r--ppapi/proxy/ppapi_command_buffer_proxy.cc4
-rw-r--r--ppapi/proxy/ppb_graphics_3d_proxy.cc6
19 files changed, 133 insertions, 84 deletions
diff --git a/content/common/gpu/client/command_buffer_proxy_impl.cc b/content/common/gpu/client/command_buffer_proxy_impl.cc
index 3cf28b6..f6d0fea 100644
--- a/content/common/gpu/client/command_buffer_proxy_impl.cc
+++ b/content/common/gpu/client/command_buffer_proxy_impl.cc
@@ -286,8 +286,8 @@ scoped_refptr<gpu::Buffer> CommandBufferProxyImpl::CreateTransferBuffer(
}
*id = new_id;
- scoped_refptr<gpu::Buffer> buffer =
- new gpu::Buffer(shared_memory.Pass(), size);
+ scoped_refptr<gpu::Buffer> buffer(
+ gpu::MakeBufferFromSharedMemory(shared_memory.Pass(), size));
return buffer;
}
diff --git a/content/common/gpu/gpu_command_buffer_stub.cc b/content/common/gpu/gpu_command_buffer_stub.cc
index b267575..43cab10 100644
--- a/content/common/gpu/gpu_command_buffer_stub.cc
+++ b/content/common/gpu/gpu_command_buffer_stub.cc
@@ -542,11 +542,14 @@ void GpuCommandBufferStub::OnInitialize(
base::Unretained(this)));
}
- if (!command_buffer_->SetSharedStateBuffer(shared_state_shm.Pass())) {
- DLOG(ERROR) << "Failed to map shared stae buffer.";
+ const size_t kSharedStateSize = sizeof(gpu::CommandBufferSharedState);
+ if (!shared_state_shm->Map(kSharedStateSize)) {
+ DLOG(ERROR) << "Failed to map shared state buffer.";
OnInitializeFailed(reply_message);
return;
}
+ command_buffer_->SetSharedStateBuffer(gpu::MakeBackingFromSharedMemory(
+ shared_state_shm.Pass(), kSharedStateSize));
GpuCommandBufferMsg_Initialize::WriteReplyParams(
reply_message, true, gpu_control_->GetCapabilities());
@@ -694,8 +697,10 @@ void GpuCommandBufferStub::OnRegisterTransferBuffer(
return;
}
- if (command_buffer_)
- command_buffer_->RegisterTransferBuffer(id, shared_memory.Pass(), size);
+ if (command_buffer_) {
+ command_buffer_->RegisterTransferBuffer(
+ id, gpu::MakeBackingFromSharedMemory(shared_memory.Pass(), size));
+ }
}
void GpuCommandBufferStub::OnDestroyTransferBuffer(int32 id) {
diff --git a/gpu/command_buffer/client/client_test_helper.cc b/gpu/command_buffer/client/client_test_helper.cc
index f5e58f2..46011ad 100644
--- a/gpu/command_buffer/client/client_test_helper.cc
+++ b/gpu/command_buffer/client/client_test_helper.cc
@@ -75,7 +75,8 @@ scoped_refptr<gpu::Buffer> MockCommandBufferBase::CreateTransferBuffer(
int32 ndx = *id - kTransferBufferBaseId;
scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory());
shared_memory->CreateAndMapAnonymous(size);
- transfer_buffer_buffers_[ndx] = new gpu::Buffer(shared_memory.Pass(), size);
+ transfer_buffer_buffers_[ndx] =
+ MakeBufferFromSharedMemory(shared_memory.Pass(), size);
}
return GetTransferBuffer(*id);
}
diff --git a/gpu/command_buffer/client/mapped_memory_unittest.cc b/gpu/command_buffer/client/mapped_memory_unittest.cc
index d853119..4ebe5ec 100644
--- a/gpu/command_buffer/client/mapped_memory_unittest.cc
+++ b/gpu/command_buffer/client/mapped_memory_unittest.cc
@@ -102,7 +102,7 @@ class MemoryChunkTest : public MappedMemoryTestBase {
MappedMemoryTestBase::SetUp();
scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory());
shared_memory->CreateAndMapAnonymous(kBufferSize);
- buffer_ = new gpu::Buffer(shared_memory.Pass(), kBufferSize);
+ buffer_ = MakeBufferFromSharedMemory(shared_memory.Pass(), kBufferSize);
chunk_.reset(new MemoryChunk(kShmId,
buffer_,
helper_.get(),
diff --git a/gpu/command_buffer/common/buffer.cc b/gpu/command_buffer/common/buffer.cc
index bbf40a1..3b3da43 100644
--- a/gpu/command_buffer/common/buffer.cc
+++ b/gpu/command_buffer/common/buffer.cc
@@ -9,11 +9,23 @@
#include "base/numerics/safe_math.h"
namespace gpu {
+SharedMemoryBufferBacking::SharedMemoryBufferBacking(
+ scoped_ptr<base::SharedMemory> shared_memory,
+ size_t size)
+ : shared_memory_(shared_memory.Pass()), size_(size) {}
-Buffer::Buffer(scoped_ptr<base::SharedMemory> shared_memory, size_t size)
- : shared_memory_(shared_memory.Pass()),
- memory_(shared_memory_->memory()),
- size_(size) {
+SharedMemoryBufferBacking::~SharedMemoryBufferBacking() {}
+
+void* SharedMemoryBufferBacking::GetMemory() const {
+ return shared_memory_->memory();
+}
+
+size_t SharedMemoryBufferBacking::GetSize() const { return size_; }
+
+Buffer::Buffer(scoped_ptr<BufferBacking> backing)
+ : backing_(backing.Pass()),
+ memory_(backing_->GetMemory()),
+ size_(backing_->GetSize()) {
DCHECK(memory_) << "The memory must be mapped to create a Buffer";
}
diff --git a/gpu/command_buffer/common/buffer.h b/gpu/command_buffer/common/buffer.h
index e9a1558..5a31035 100644
--- a/gpu/command_buffer/common/buffer.h
+++ b/gpu/command_buffer/common/buffer.h
@@ -17,12 +17,34 @@ namespace base {
namespace gpu {
+class GPU_EXPORT BufferBacking {
+ public:
+ virtual ~BufferBacking() {}
+ virtual void* GetMemory() const = 0;
+ virtual size_t GetSize() const = 0;
+};
+
+class GPU_EXPORT SharedMemoryBufferBacking : public BufferBacking {
+ public:
+ SharedMemoryBufferBacking(scoped_ptr<base::SharedMemory> shared_memory,
+ size_t size);
+ virtual ~SharedMemoryBufferBacking();
+ virtual void* GetMemory() const OVERRIDE;
+ virtual size_t GetSize() const OVERRIDE;
+ base::SharedMemory* shared_memory() { return shared_memory_.get(); }
+
+ private:
+ scoped_ptr<base::SharedMemory> shared_memory_;
+ size_t size_;
+ DISALLOW_COPY_AND_ASSIGN(SharedMemoryBufferBacking);
+};
+
// Buffer owns a piece of shared-memory of a certain size.
class GPU_EXPORT Buffer : public base::RefCountedThreadSafe<Buffer> {
public:
- Buffer(scoped_ptr<base::SharedMemory> shared_memory, size_t size);
+ explicit Buffer(scoped_ptr<BufferBacking> backing);
- base::SharedMemory* shared_memory() const { return shared_memory_.get(); }
+ BufferBacking* backing() const { return backing_.get(); }
void* memory() const { return memory_; }
size_t size() const { return size_; }
@@ -33,13 +55,26 @@ class GPU_EXPORT Buffer : public base::RefCountedThreadSafe<Buffer> {
friend class base::RefCountedThreadSafe<Buffer>;
~Buffer();
- scoped_ptr<base::SharedMemory> shared_memory_;
+ scoped_ptr<BufferBacking> backing_;
void* memory_;
size_t size_;
DISALLOW_COPY_AND_ASSIGN(Buffer);
};
+static inline scoped_ptr<BufferBacking> MakeBackingFromSharedMemory(
+ scoped_ptr<base::SharedMemory> shared_memory,
+ size_t size) {
+ return scoped_ptr<BufferBacking>(
+ new SharedMemoryBufferBacking(shared_memory.Pass(), size));
+}
+
+static inline scoped_refptr<Buffer> MakeBufferFromSharedMemory(
+ scoped_ptr<base::SharedMemory> shared_memory,
+ size_t size) {
+ return new Buffer(MakeBackingFromSharedMemory(shared_memory.Pass(), size));
+}
+
} // namespace gpu
#endif // GPU_COMMAND_BUFFER_COMMON_BUFFER_H_
diff --git a/gpu/command_buffer/service/command_buffer_service.cc b/gpu/command_buffer/service/command_buffer_service.cc
index df2bd07..30617c8 100644
--- a/gpu/command_buffer/service/command_buffer_service.cc
+++ b/gpu/command_buffer/service/command_buffer_service.cc
@@ -103,17 +103,15 @@ void CommandBufferService::SetGetBuffer(int32 transfer_buffer_id) {
UpdateState();
}
-bool CommandBufferService::SetSharedStateBuffer(
- scoped_ptr<base::SharedMemory> shared_state_shm) {
- shared_state_shm_.reset(shared_state_shm.release());
- if (!shared_state_shm_->Map(sizeof(*shared_state_)))
- return false;
+void CommandBufferService::SetSharedStateBuffer(
+ scoped_ptr<BufferBacking> shared_state_buffer) {
+ shared_state_buffer_ = shared_state_buffer.Pass();
+ DCHECK(shared_state_buffer_->GetSize() >= sizeof(*shared_state_));
shared_state_ =
- static_cast<CommandBufferSharedState*>(shared_state_shm_->memory());
+ static_cast<CommandBufferSharedState*>(shared_state_buffer_->GetMemory());
UpdateState();
- return true;
}
void CommandBufferService::SetGetOffset(int32 get_offset) {
@@ -132,7 +130,8 @@ scoped_refptr<Buffer> CommandBufferService::CreateTransferBuffer(size_t size,
static int32 next_id = 1;
*id = next_id++;
- if (!RegisterTransferBuffer(*id, shared_memory.Pass(), size)) {
+ if (!RegisterTransferBuffer(
+ *id, MakeBackingFromSharedMemory(shared_memory.Pass(), size))) {
*id = -1;
return NULL;
}
@@ -157,10 +156,8 @@ scoped_refptr<Buffer> CommandBufferService::GetTransferBuffer(int32 id) {
bool CommandBufferService::RegisterTransferBuffer(
int32 id,
- scoped_ptr<base::SharedMemory> shared_memory,
- size_t size) {
- return transfer_buffer_manager_->RegisterTransferBuffer(
- id, shared_memory.Pass(), size);
+ scoped_ptr<BufferBacking> buffer) {
+ return transfer_buffer_manager_->RegisterTransferBuffer(id, buffer.Pass());
}
void CommandBufferService::SetToken(int32 token) {
diff --git a/gpu/command_buffer/service/command_buffer_service.h b/gpu/command_buffer/service/command_buffer_service.h
index c3c67d9..740e897 100644
--- a/gpu/command_buffer/service/command_buffer_service.h
+++ b/gpu/command_buffer/service/command_buffer_service.h
@@ -79,22 +79,19 @@ class GPU_EXPORT CommandBufferService : public CommandBufferServiceBase {
virtual void SetParseErrorCallback(const base::Closure& callback);
// Setup the shared memory that shared state should be copied into.
- bool SetSharedStateBuffer(scoped_ptr<base::SharedMemory> shared_state_shm);
+ void SetSharedStateBuffer(scoped_ptr<BufferBacking> shared_state_buffer);
// Copy the current state into the shared state transfer buffer.
void UpdateState();
- // Register an existing shared memory object and get an ID that can be used
- // to identify it in the command buffer. Callee dups the handle until
- // DestroyTransferBuffer is called.
- bool RegisterTransferBuffer(int32 id,
- scoped_ptr<base::SharedMemory> shared_memory,
- size_t size);
+ // Registers an existing shared memory object and get an ID that can be used
+ // to identify it in the command buffer.
+ bool RegisterTransferBuffer(int32 id, scoped_ptr<BufferBacking> buffer);
private:
int32 ring_buffer_id_;
scoped_refptr<Buffer> ring_buffer_;
- scoped_ptr<base::SharedMemory> shared_state_shm_;
+ scoped_ptr<BufferBacking> shared_state_buffer_;
CommandBufferSharedState* shared_state_;
int32 num_entries_;
int32 get_offset_;
diff --git a/gpu/command_buffer/service/common_decoder_unittest.cc b/gpu/command_buffer/service/common_decoder_unittest.cc
index 5e89a5f..11274e0 100644
--- a/gpu/command_buffer/service/common_decoder_unittest.cc
+++ b/gpu/command_buffer/service/common_decoder_unittest.cc
@@ -83,7 +83,7 @@ class MockCommandBufferEngine : public CommandBufferEngine {
get_offset_(0) {
scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory());
shared_memory->CreateAndMapAnonymous(kBufferSize);
- buffer_ = new gpu::Buffer(shared_memory.Pass(), kBufferSize);
+ buffer_ = MakeBufferFromSharedMemory(shared_memory.Pass(), kBufferSize);
}
// Overridden from CommandBufferEngine.
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
index c582019..9a815c8 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
@@ -1411,7 +1411,7 @@ MockCommandBufferEngine() {
scoped_ptr<base::SharedMemory> shm(new base::SharedMemory());
shm->CreateAndMapAnonymous(kSharedBufferSize);
- valid_buffer_ = new gpu::Buffer(shm.Pass(), kSharedBufferSize);
+ valid_buffer_ = MakeBufferFromSharedMemory(shm.Pass(), kSharedBufferSize);
ClearSharedMemory();
}
diff --git a/gpu/command_buffer/service/gpu_scheduler_unittest.cc b/gpu/command_buffer/service/gpu_scheduler_unittest.cc
index 7a663d0..6859208 100644
--- a/gpu/command_buffer/service/gpu_scheduler_unittest.cc
+++ b/gpu/command_buffer/service/gpu_scheduler_unittest.cc
@@ -37,7 +37,7 @@ class GpuSchedulerTest : public testing::Test {
shared_memory->CreateAndMapAnonymous(kRingBufferSize);
buffer_ = static_cast<int32*>(shared_memory->memory());
shared_memory_buffer_ =
- new gpu::Buffer(shared_memory.Pass(), kRingBufferSize);
+ MakeBufferFromSharedMemory(shared_memory.Pass(), kRingBufferSize);
memset(buffer_, 0, kRingBufferSize);
command_buffer_.reset(new MockCommandBuffer);
diff --git a/gpu/command_buffer/service/query_manager_unittest.cc b/gpu/command_buffer/service/query_manager_unittest.cc
index b5f6609..0acbbec 100644
--- a/gpu/command_buffer/service/query_manager_unittest.cc
+++ b/gpu/command_buffer/service/query_manager_unittest.cc
@@ -93,7 +93,8 @@ class QueryManagerTest : public testing::Test {
MockCommandBufferEngine() {
scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory());
shared_memory->CreateAndMapAnonymous(kSharedBufferSize);
- valid_buffer_ = new gpu::Buffer(shared_memory.Pass(), kSharedBufferSize);
+ valid_buffer_ =
+ MakeBufferFromSharedMemory(shared_memory.Pass(), kSharedBufferSize);
data_ = static_cast<uint8*>(valid_buffer_->memory());
ClearSharedMemory();
}
diff --git a/gpu/command_buffer/service/transfer_buffer_manager.cc b/gpu/command_buffer/service/transfer_buffer_manager.cc
index 7f81115..4404a9e 100644
--- a/gpu/command_buffer/service/transfer_buffer_manager.cc
+++ b/gpu/command_buffer/service/transfer_buffer_manager.cc
@@ -40,8 +40,7 @@ bool TransferBufferManager::Initialize() {
bool TransferBufferManager::RegisterTransferBuffer(
int32 id,
- scoped_ptr<base::SharedMemory> shared_memory,
- size_t size) {
+ scoped_ptr<BufferBacking> buffer_backing) {
if (id <= 0) {
DVLOG(0) << "Cannot register transfer buffer with non-positive ID.";
return false;
@@ -54,13 +53,13 @@ bool TransferBufferManager::RegisterTransferBuffer(
}
// Register the shared memory with the ID.
- scoped_refptr<Buffer> buffer = new gpu::Buffer(shared_memory.Pass(), size);
+ scoped_refptr<Buffer> buffer(new gpu::Buffer(buffer_backing.Pass()));
// Check buffer alignment is sane.
DCHECK(!(reinterpret_cast<uintptr_t>(buffer->memory()) &
(kCommandBufferEntrySize - 1)));
- shared_memory_bytes_allocated_ += size;
+ shared_memory_bytes_allocated_ += buffer->size();
TRACE_COUNTER_ID1(
"gpu", "GpuTransferBufferMemory", this, shared_memory_bytes_allocated_);
diff --git a/gpu/command_buffer/service/transfer_buffer_manager.h b/gpu/command_buffer/service/transfer_buffer_manager.h
index 5f8f946..d8bb3bb 100644
--- a/gpu/command_buffer/service/transfer_buffer_manager.h
+++ b/gpu/command_buffer/service/transfer_buffer_manager.h
@@ -20,10 +20,8 @@ class GPU_EXPORT TransferBufferManagerInterface {
public:
virtual ~TransferBufferManagerInterface();
- virtual bool RegisterTransferBuffer(
- int32 id,
- scoped_ptr<base::SharedMemory> shared_memory,
- size_t size) = 0;
+ virtual bool RegisterTransferBuffer(int32 id,
+ scoped_ptr<BufferBacking> buffer) = 0;
virtual void DestroyTransferBuffer(int32 id) = 0;
virtual scoped_refptr<Buffer> GetTransferBuffer(int32 id) = 0;
};
@@ -34,10 +32,9 @@ class GPU_EXPORT TransferBufferManager
TransferBufferManager();
bool Initialize();
- virtual bool RegisterTransferBuffer(
- int32 id,
- scoped_ptr<base::SharedMemory> shared_memory,
- size_t size) OVERRIDE;
+ virtual bool RegisterTransferBuffer(int32 id,
+ scoped_ptr<BufferBacking> buffer_backing)
+ OVERRIDE;
virtual void DestroyTransferBuffer(int32 id) OVERRIDE;
virtual scoped_refptr<Buffer> GetTransferBuffer(int32 id) OVERRIDE;
diff --git a/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc b/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc
index c7dc04a..4af0936 100644
--- a/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc
+++ b/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc
@@ -41,20 +41,34 @@ TEST_F(TransferBufferManagerTest, CanRegisterTransferBuffer) {
scoped_ptr<base::SharedMemory> shm(new base::SharedMemory());
shm->CreateAndMapAnonymous(kBufferSize);
base::SharedMemory* shm_raw_pointer = shm.get();
+ scoped_ptr<SharedMemoryBufferBacking> backing(
+ new SharedMemoryBufferBacking(shm.Pass(), kBufferSize));
+ SharedMemoryBufferBacking* backing_raw_ptr = backing.get();
+
EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(
- 1, shm.Pass(), kBufferSize));
+ 1, backing.PassAs<BufferBacking>()));
scoped_refptr<Buffer> registered =
transfer_buffer_manager_->GetTransferBuffer(1);
// Shared-memory ownership is transfered. It should be the same memory.
- EXPECT_EQ(shm_raw_pointer, registered->shared_memory());
+ EXPECT_EQ(backing_raw_ptr, registered->backing());
+ EXPECT_EQ(shm_raw_pointer, backing_raw_ptr->shared_memory());
}
+class FakeBufferBacking : public BufferBacking {
+ public:
+ virtual void* GetMemory() const OVERRIDE {
+ return reinterpret_cast<void*>(0xBADF00D0);
+ }
+ virtual size_t GetSize() const OVERRIDE { return 42; }
+ static scoped_ptr<BufferBacking> Make() {
+ return scoped_ptr<BufferBacking>(new FakeBufferBacking);
+ }
+};
+
TEST_F(TransferBufferManagerTest, CanDestroyTransferBuffer) {
- scoped_ptr<base::SharedMemory> shm(new base::SharedMemory());
- shm->CreateAndMapAnonymous(kBufferSize);
EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(
- 1, shm.Pass(), kBufferSize));
+ 1, scoped_ptr<BufferBacking>(new FakeBufferBacking)));
transfer_buffer_manager_->DestroyTransferBuffer(1);
scoped_refptr<Buffer> registered =
transfer_buffer_manager_->GetTransferBuffer(1);
@@ -64,31 +78,20 @@ TEST_F(TransferBufferManagerTest, CanDestroyTransferBuffer) {
}
TEST_F(TransferBufferManagerTest, CannotRegregisterTransferBufferId) {
- scoped_ptr<base::SharedMemory> shm1(new base::SharedMemory());
- scoped_ptr<base::SharedMemory> shm2(new base::SharedMemory());
- scoped_ptr<base::SharedMemory> shm3(new base::SharedMemory());
- shm1->CreateAndMapAnonymous(kBufferSize);
- shm2->CreateAndMapAnonymous(kBufferSize);
- shm3->CreateAndMapAnonymous(kBufferSize);
-
EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(
- 1, shm1.Pass(), kBufferSize));
+ 1, FakeBufferBacking::Make()));
EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(
- 1, shm2.Pass(), kBufferSize));
+ 1, FakeBufferBacking::Make()));
EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(
- 1, shm3.Pass(), kBufferSize));
+ 1, FakeBufferBacking::Make()));
}
TEST_F(TransferBufferManagerTest, CanReuseTransferBufferIdAfterDestroying) {
- scoped_ptr<base::SharedMemory> shm1(new base::SharedMemory());
- scoped_ptr<base::SharedMemory> shm2(new base::SharedMemory());
- shm1->CreateAndMapAnonymous(kBufferSize);
- shm2->CreateAndMapAnonymous(kBufferSize);
EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(
- 1, shm1.Pass(), kBufferSize));
+ 1, FakeBufferBacking::Make()));
transfer_buffer_manager_->DestroyTransferBuffer(1);
EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(
- 1, shm2.Pass(), kBufferSize));
+ 1, FakeBufferBacking::Make()));
}
TEST_F(TransferBufferManagerTest, DestroyUnusedTransferBufferIdDoesNotCrash) {
@@ -96,17 +99,15 @@ TEST_F(TransferBufferManagerTest, DestroyUnusedTransferBufferIdDoesNotCrash) {
}
TEST_F(TransferBufferManagerTest, CannotRegisterNullTransferBuffer) {
- scoped_ptr<base::SharedMemory> shm(new base::SharedMemory());
- shm->CreateAndMapAnonymous(kBufferSize);
EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(
- 0, shm.Pass(), kBufferSize));
+ 0, FakeBufferBacking::Make()));
}
TEST_F(TransferBufferManagerTest, CannotRegisterNegativeTransferBufferId) {
scoped_ptr<base::SharedMemory> shm(new base::SharedMemory());
shm->CreateAndMapAnonymous(kBufferSize);
EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(
- -1, shm.Pass(), kBufferSize));
+ -1, FakeBufferBacking::Make()));
}
} // namespace gpu
diff --git a/mojo/gles2/command_buffer_client_impl.cc b/mojo/gles2/command_buffer_client_impl.cc
index c9dcf91..3ffecf3 100644
--- a/mojo/gles2/command_buffer_client_impl.cc
+++ b/mojo/gles2/command_buffer_client_impl.cc
@@ -125,7 +125,7 @@ scoped_refptr<gpu::Buffer> CommandBufferClientImpl::CreateTransferBuffer(
*id, handle, static_cast<uint32_t>(size));
scoped_refptr<gpu::Buffer> buffer =
- new gpu::Buffer(shared_memory.Pass(), size);
+ gpu::MakeBufferFromSharedMemory(shared_memory.Pass(), size);
return buffer;
}
diff --git a/mojo/services/gles2/command_buffer_impl.cc b/mojo/services/gles2/command_buffer_impl.cc
index 1e8a4f6..7d33b72 100644
--- a/mojo/services/gles2/command_buffer_impl.cc
+++ b/mojo/services/gles2/command_buffer_impl.cc
@@ -118,11 +118,14 @@ bool CommandBufferImpl::DoInitialize(const ShmHandle& shared_state) {
// TODO(piman): other callbacks
+ const size_t kSize = sizeof(gpu::CommandBufferSharedState);
scoped_ptr<base::SharedMemory> shared_state_shm(
new base::SharedMemory(shared_state, false));
- if (!command_buffer_->SetSharedStateBuffer(shared_state_shm.Pass()))
+ if (!shared_state_shm->Map(kSize))
return false;
+ command_buffer_->SetSharedStateBuffer(
+ gpu::MakeBackingFromSharedMemory(shared_state_shm.Pass(), kSize));
return true;
}
@@ -152,7 +155,8 @@ void CommandBufferImpl::RegisterTransferBuffer(int32_t id,
return;
}
- command_buffer_->RegisterTransferBuffer(id, shared_memory.Pass(), size);
+ command_buffer_->RegisterTransferBuffer(
+ id, gpu::MakeBackingFromSharedMemory(shared_memory.Pass(), size));
}
void CommandBufferImpl::DestroyTransferBuffer(int32_t id) {
diff --git a/ppapi/proxy/ppapi_command_buffer_proxy.cc b/ppapi/proxy/ppapi_command_buffer_proxy.cc
index a1ac347..1e4820d 100644
--- a/ppapi/proxy/ppapi_command_buffer_proxy.cc
+++ b/ppapi/proxy/ppapi_command_buffer_proxy.cc
@@ -136,9 +136,7 @@ scoped_refptr<gpu::Buffer> PpapiCommandBufferProxy::CreateTransferBuffer(
}
}
- scoped_refptr<gpu::Buffer> buffer =
- new gpu::Buffer(shared_memory.Pass(), handle.size());
- return buffer;
+ return gpu::MakeBufferFromSharedMemory(shared_memory.Pass(), handle.size());
}
void PpapiCommandBufferProxy::DestroyTransferBuffer(int32 id) {
diff --git a/ppapi/proxy/ppb_graphics_3d_proxy.cc b/ppapi/proxy/ppb_graphics_3d_proxy.cc
index 20c55de..85692d4 100644
--- a/ppapi/proxy/ppb_graphics_3d_proxy.cc
+++ b/ppapi/proxy/ppb_graphics_3d_proxy.cc
@@ -297,9 +297,11 @@ void PPB_Graphics3D_Proxy::OnMsgCreateTransferBuffer(
enter.object()->CreateTransferBuffer(size, id);
if (!buffer)
return;
- DCHECK(buffer->shared_memory());
+ gpu::SharedMemoryBufferBacking* backing =
+ static_cast<gpu::SharedMemoryBufferBacking*>(buffer->backing());
+ DCHECK(backing && backing->shared_memory());
transfer_buffer->set_shmem(
- TransportSHMHandle(dispatcher(), buffer->shared_memory()),
+ TransportSHMHandle(dispatcher(), backing->shared_memory()),
buffer->size());
} else {
*id = -1;