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

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

Issue 9387014: Add AsyncFlush when transferbuffer is > a certain size (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 10 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
« no previous file with comments | « gpu/command_buffer/client/transfer_buffer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/client/transfer_buffer_unittest.cc
diff --git a/gpu/command_buffer/client/transfer_buffer_unittest.cc b/gpu/command_buffer/client/transfer_buffer_unittest.cc
index 26b2057eebb0cb70a7a44c2dcc81ea81eeceba24..75a1b60d90248adf798489bfc04856a5e4afaed6 100644
--- a/gpu/command_buffer/client/transfer_buffer_unittest.cc
+++ b/gpu/command_buffer/client/transfer_buffer_unittest.cc
@@ -20,6 +20,7 @@ using ::testing::StrictMock;
namespace gpu {
+
class TransferBufferTest : public testing::Test {
protected:
static const int32 kNumCommandEntries = 400;
@@ -36,18 +37,28 @@ class TransferBufferTest : public testing::Test {
virtual void SetUp() OVERRIDE;
virtual void TearDown() OVERRIDE;
- MockClientCommandBuffer* command_buffer() const {
+ virtual void Initialize(unsigned int size_to_flush) {
+ ASSERT_TRUE(transfer_buffer_->Initialize(
+ kTransferBufferSize,
+ kStartingOffset,
+ kTransferBufferSize,
+ kTransferBufferSize,
+ kAlignment,
+ size_to_flush));
+ }
+
+ MockClientCommandBufferMockFlush* command_buffer() const {
return command_buffer_.get();
}
- scoped_ptr<MockClientCommandBuffer> command_buffer_;
+ scoped_ptr<MockClientCommandBufferMockFlush> command_buffer_;
scoped_ptr<CommandBufferHelper> helper_;
scoped_ptr<TransferBuffer> transfer_buffer_;
int32 transfer_buffer_id_;
};
void TransferBufferTest::SetUp() {
- command_buffer_.reset(new StrictMock<MockClientCommandBuffer>());
+ command_buffer_.reset(new StrictMock<MockClientCommandBufferMockFlush>());
ASSERT_TRUE(command_buffer_->Initialize());
helper_.reset(new CommandBufferHelper(command_buffer()));
@@ -56,12 +67,6 @@ void TransferBufferTest::SetUp() {
transfer_buffer_id_ = command_buffer()->GetNextFreeTransferBufferId();
transfer_buffer_.reset(new TransferBuffer(helper_.get()));
- ASSERT_TRUE(transfer_buffer_->Initialize(
- kTransferBufferSize,
- kStartingOffset,
- kTransferBufferSize,
- kTransferBufferSize,
- kAlignment));
}
void TransferBufferTest::TearDown() {
@@ -86,6 +91,7 @@ const size_t TransferBufferTest::kTransferBufferSize;
#endif
TEST_F(TransferBufferTest, Basic) {
+ Initialize(0);
EXPECT_TRUE(transfer_buffer_->HaveBuffer());
EXPECT_EQ(transfer_buffer_id_, transfer_buffer_->GetShmId());
EXPECT_EQ(
@@ -94,6 +100,7 @@ TEST_F(TransferBufferTest, Basic) {
}
TEST_F(TransferBufferTest, Free) {
+ Initialize(0);
EXPECT_TRUE(transfer_buffer_->HaveBuffer());
EXPECT_EQ(transfer_buffer_id_, transfer_buffer_->GetShmId());
@@ -172,6 +179,7 @@ TEST_F(TransferBufferTest, Free) {
}
TEST_F(TransferBufferTest, TooLargeAllocation) {
+ Initialize(0);
// Check that we can't allocate large than max size.
void* ptr = transfer_buffer_->Alloc(kTransferBufferSize + 1);
EXPECT_TRUE(ptr == NULL);
@@ -184,7 +192,33 @@ TEST_F(TransferBufferTest, TooLargeAllocation) {
transfer_buffer_->FreePendingToken(ptr, 1);
}
-class MockClientCommandBufferCanFail : public MockClientCommandBuffer {
+TEST_F(TransferBufferTest, Flush) {
+ Initialize(16u);
+ unsigned int size_allocated = 0;
+ for (int i = 0; i < 8; ++i) {
+ void* ptr = transfer_buffer_->AllocUpTo(8u, &size_allocated);
+ ASSERT_TRUE(ptr != NULL);
+ EXPECT_EQ(8u, size_allocated);
+ if (i % 2) {
+ EXPECT_CALL(*command_buffer(), Flush(_))
+ .Times(1)
+ .RetiresOnSaturation();
+ }
+ transfer_buffer_->FreePendingToken(ptr, 1);
+ }
+ for (int i = 0; i < 8; ++i) {
+ void* ptr = transfer_buffer_->Alloc(8u);
+ ASSERT_TRUE(ptr != NULL);
+ if (i % 2) {
+ EXPECT_CALL(*command_buffer(), Flush(_))
+ .Times(1)
+ .RetiresOnSaturation();
+ }
+ transfer_buffer_->FreePendingToken(ptr, 1);
+ }
+}
+
+class MockClientCommandBufferCanFail : public MockClientCommandBufferMockFlush {
public:
MockClientCommandBufferCanFail() {
}
@@ -255,7 +289,8 @@ void TransferBufferExpandContractTest::SetUp() {
kStartingOffset,
kMinTransferBufferSize,
kMaxTransferBufferSize,
- kAlignment));
+ kAlignment,
+ 0));
}
void TransferBufferExpandContractTest::TearDown() {
@@ -429,6 +464,7 @@ TEST_F(TransferBufferExpandContractTest, OutOfMemory) {
EXPECT_FALSE(transfer_buffer_->HaveBuffer());
}
+
} // namespace gpu
« no previous file with comments | « gpu/command_buffer/client/transfer_buffer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698