summaryrefslogtreecommitdiffstats
path: root/chromium/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc')
-rw-r--r--chromium/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc104
1 files changed, 51 insertions, 53 deletions
diff --git a/chromium/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc b/chromium/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc
index 68c5c2ec21c..4af09368cb0 100644
--- a/chromium/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc
+++ b/chromium/gpu/command_buffer/service/transfer_buffer_manager_unittest.cc
@@ -17,83 +17,81 @@ const static size_t kBufferSize = 1024;
class TransferBufferManagerTest : public testing::Test {
protected:
virtual void SetUp() {
- for (size_t i = 0; i < arraysize(buffers_); ++i) {
- buffers_[i].CreateAnonymous(kBufferSize);
- buffers_[i].Map(kBufferSize);
- }
-
TransferBufferManager* manager = new TransferBufferManager();
transfer_buffer_manager_.reset(manager);
ASSERT_TRUE(manager->Initialize());
}
- base::SharedMemory buffers_[3];
scoped_ptr<TransferBufferManagerInterface> transfer_buffer_manager_;
};
TEST_F(TransferBufferManagerTest, ZeroHandleMapsToNull) {
- EXPECT_TRUE(NULL == transfer_buffer_manager_->GetTransferBuffer(0).ptr);
+ EXPECT_TRUE(NULL == transfer_buffer_manager_->GetTransferBuffer(0));
}
TEST_F(TransferBufferManagerTest, NegativeHandleMapsToNull) {
- EXPECT_TRUE(NULL == transfer_buffer_manager_->GetTransferBuffer(-1).ptr);
+ EXPECT_TRUE(NULL == transfer_buffer_manager_->GetTransferBuffer(-1));
}
TEST_F(TransferBufferManagerTest, OutOfRangeHandleMapsToNull) {
- EXPECT_TRUE(NULL == transfer_buffer_manager_->GetTransferBuffer(1).ptr);
+ EXPECT_TRUE(NULL == transfer_buffer_manager_->GetTransferBuffer(1));
}
TEST_F(TransferBufferManagerTest, CanRegisterTransferBuffer) {
- EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(1,
- &buffers_[0],
- kBufferSize));
- Buffer registered = transfer_buffer_manager_->GetTransferBuffer(1);
-
- // Distinct memory range and shared memory handle from that originally
- // registered.
- EXPECT_NE(static_cast<void*>(NULL), registered.ptr);
- EXPECT_NE(buffers_[0].memory(), registered.ptr);
- EXPECT_EQ(kBufferSize, registered.size);
- EXPECT_NE(&buffers_[0], registered.shared_memory);
-
- // But maps to the same physical memory.
- *static_cast<int*>(registered.ptr) = 7;
- *static_cast<int*>(buffers_[0].memory()) = 8;
- EXPECT_EQ(8, *static_cast<int*>(registered.ptr));
+ 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, 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(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) {
- EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(1,
- &buffers_[0],
- kBufferSize));
+ EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(
+ 1, scoped_ptr<BufferBacking>(new FakeBufferBacking)));
transfer_buffer_manager_->DestroyTransferBuffer(1);
- Buffer registered = transfer_buffer_manager_->GetTransferBuffer(1);
+ scoped_refptr<Buffer> registered =
+ transfer_buffer_manager_->GetTransferBuffer(1);
- EXPECT_EQ(static_cast<void*>(NULL), registered.ptr);
- EXPECT_EQ(0U, registered.size);
- EXPECT_EQ(static_cast<base::SharedMemory*>(NULL), registered.shared_memory);
+ scoped_refptr<Buffer> null_buffer;
+ EXPECT_EQ(null_buffer, registered);
}
TEST_F(TransferBufferManagerTest, CannotRegregisterTransferBufferId) {
- EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(1,
- &buffers_[0],
- kBufferSize));
- EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(1,
- &buffers_[0],
- kBufferSize));
- EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(1,
- &buffers_[1],
- kBufferSize));
+ EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(
+ 1, FakeBufferBacking::Make()));
+ EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(
+ 1, FakeBufferBacking::Make()));
+ EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(
+ 1, FakeBufferBacking::Make()));
}
TEST_F(TransferBufferManagerTest, CanReuseTransferBufferIdAfterDestroying) {
- EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(1,
- &buffers_[0],
- kBufferSize));
+ EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(
+ 1, FakeBufferBacking::Make()));
transfer_buffer_manager_->DestroyTransferBuffer(1);
- EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(1,
- &buffers_[1],
- kBufferSize));
+ EXPECT_TRUE(transfer_buffer_manager_->RegisterTransferBuffer(
+ 1, FakeBufferBacking::Make()));
}
TEST_F(TransferBufferManagerTest, DestroyUnusedTransferBufferIdDoesNotCrash) {
@@ -101,15 +99,15 @@ TEST_F(TransferBufferManagerTest, DestroyUnusedTransferBufferIdDoesNotCrash) {
}
TEST_F(TransferBufferManagerTest, CannotRegisterNullTransferBuffer) {
- EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(0,
- &buffers_[0],
- kBufferSize));
+ EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(
+ 0, FakeBufferBacking::Make()));
}
TEST_F(TransferBufferManagerTest, CannotRegisterNegativeTransferBufferId) {
- EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(-1,
- &buffers_[0],
- kBufferSize));
+ scoped_ptr<base::SharedMemory> shm(new base::SharedMemory());
+ shm->CreateAndMapAnonymous(kBufferSize);
+ EXPECT_FALSE(transfer_buffer_manager_->RegisterTransferBuffer(
+ -1, FakeBufferBacking::Make()));
}
} // namespace gpu