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

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

Issue 2509001: Refactor CommandBufferHelper to use Jump to loop... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 7 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/cmd_buffer_helper.cc ('k') | gpu/command_buffer/service/cmd_parser.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/client/cmd_buffer_helper_test.cc
===================================================================
--- gpu/command_buffer/client/cmd_buffer_helper_test.cc (revision 48721)
+++ gpu/command_buffer/client/cmd_buffer_helper_test.cc (working copy)
@@ -24,20 +24,42 @@
using testing::Invoke;
using testing::_;
-const int32 kNumCommandEntries = 10;
+const int32 kTotalNumCommandEntries = 12;
+const int32 kUsableNumCommandEntries = 10;
const int32 kCommandBufferSizeBytes =
- kNumCommandEntries * sizeof(CommandBufferEntry);
+ kTotalNumCommandEntries * sizeof(CommandBufferEntry);
+const int32 kUnusedCommandId = 5; // we use 0 and 2 currently.
// Test fixture for CommandBufferHelper test - Creates a CommandBufferHelper,
// using a CommandBufferEngine with a mock AsyncAPIInterface for its interface
// (calling it directly, not through the RPC mechanism).
class CommandBufferHelperTest : public testing::Test {
protected:
+ // Helper so mock can handle the Jump command.
+ class DoJumpCommand {
+ public:
+ explicit DoJumpCommand(CommandParser* parser)
+ : parser_(parser) {
+ }
+
+ error::Error DoCommand(
+ unsigned int command,
+ unsigned int arg_count,
+ const void* cmd_data) {
+ const cmd::Jump* jump_cmd = static_cast<const cmd::Jump*>(cmd_data);
+ parser_->set_get(jump_cmd->offset);
+ return error::kNoError;
+ };
+
+ private:
+ CommandParser* parser_;
+ };
+
virtual void SetUp() {
api_mock_.reset(new AsyncAPIMock);
// ignore noops in the mock - we don't want to inspect the internals of the
// helper.
- EXPECT_CALL(*api_mock_, DoCommand(0, _, _))
+ EXPECT_CALL(*api_mock_, DoCommand(cmd::kNoop, _, _))
.WillRepeatedly(Return(error::kNoError));
command_buffer_.reset(new CommandBufferService);
@@ -51,6 +73,11 @@
0,
api_mock_.get());
+ do_jump_command_.reset(new DoJumpCommand(parser_));
+ EXPECT_CALL(*api_mock_, DoCommand(cmd::kJump, _, _))
+ .WillRepeatedly(
+ Invoke(do_jump_command_.get(), &DoJumpCommand::DoCommand));
+
gpu_processor_.reset(new GPUProcessor(
command_buffer_.get(), NULL, parser_, 1));
command_buffer_->SetPutOffsetChangeCallback(NewCallback(
@@ -85,7 +112,7 @@
EXPECT_CALL(*api_mock_, DoCommand(command, arg_count,
Truly(AsyncAPIMock::IsArgs(arg_count, args))))
- .InSequence(sequence_)
+// .InSequence(sequence_)
apatrick_chromium 2010/06/02 22:24:43 Uncomment or delete line?
.WillOnce(Return(_return));
}
@@ -104,7 +131,7 @@
// put to the limit) and the bottom side (from 0 to get).
if (put >= parser_put) {
// we're on the top side, check we are below the limit.
- EXPECT_GE(kNumCommandEntries, limit);
+ EXPECT_GE(kTotalNumCommandEntries, limit);
} else {
// we're on the bottom side, check we are below get.
EXPECT_GT(parser_get, limit);
@@ -134,7 +161,8 @@
scoped_ptr<GPUProcessor> gpu_processor_;
CommandParser* parser_;
scoped_ptr<CommandBufferHelper> helper_;
- Sequence sequence_;
+// Sequence sequence_;
apatrick_chromium 2010/06/02 22:24:43 Uncomment or delete line?
+ scoped_ptr<DoJumpCommand> do_jump_command_;
};
// Checks that commands in the buffer are properly executed, and that the
@@ -147,17 +175,17 @@
EXPECT_EQ(0, GetGetOffset());
// Add 3 commands through the helper
- AddCommandWithExpect(error::kNoError, 1, 0, NULL);
+ AddCommandWithExpect(error::kNoError, kUnusedCommandId, 0, NULL);
CommandBufferEntry args1[2];
args1[0].value_uint32 = 3;
args1[1].value_float = 4.f;
- AddCommandWithExpect(error::kNoError, 2, 2, args1);
+ AddCommandWithExpect(error::kNoError, kUnusedCommandId, 2, args1);
CommandBufferEntry args2[2];
args2[0].value_uint32 = 5;
args2[1].value_float = 6.f;
- AddCommandWithExpect(error::kNoError, 3, 2, args2);
+ AddCommandWithExpect(error::kNoError, kUnusedCommandId, 2, args2);
helper_->Flush();
// Check that the engine has work to do now.
@@ -184,7 +212,7 @@
args1[1].value_float = 4.f;
for (unsigned int i = 0; i < 5; ++i) {
- AddCommandWithExpect(error::kNoError, i + 1, 2, args1);
+ AddCommandWithExpect(error::kNoError, kUnusedCommandId + i, 2, args1);
}
helper_->Finish();
@@ -200,7 +228,7 @@
TEST_F(CommandBufferHelperTest, TestCommandWrappingExactMultiple) {
const int32 kCommandSize = 5;
const size_t kNumArgs = kCommandSize - 1;
- COMPILE_ASSERT(kNumCommandEntries % kCommandSize == 0,
+ COMPILE_ASSERT(kUsableNumCommandEntries % kCommandSize == 0,
Not_multiple_of_num_command_entries);
CommandBufferEntry args1[kNumArgs];
for (size_t ii = 0; ii < kNumArgs; ++ii) {
@@ -208,7 +236,8 @@
}
for (unsigned int i = 0; i < 5; ++i) {
- AddCommandWithExpect(error::kNoError, i + 1, kNumArgs, args1);
+ AddCommandWithExpect(
+ error::kNoError, i + kUnusedCommandId, kNumArgs, args1);
}
helper_->Finish();
@@ -227,10 +256,10 @@
args[1].value_float = 4.f;
// Add 2 commands through the helper - 8 entries
- AddCommandWithExpect(error::kNoError, 1, 0, NULL);
- AddCommandWithExpect(error::kNoError, 2, 0, NULL);
- AddCommandWithExpect(error::kNoError, 3, 2, args);
- AddCommandWithExpect(error::kNoError, 4, 2, args);
+ AddCommandWithExpect(error::kNoError, kUnusedCommandId + 1, 0, NULL);
+ AddCommandWithExpect(error::kNoError, kUnusedCommandId + 2, 0, NULL);
+ AddCommandWithExpect(error::kNoError, kUnusedCommandId + 3, 2, args);
+ AddCommandWithExpect(error::kNoError, kUnusedCommandId + 4, 2, args);
// Ask for 5 entries.
helper_->WaitForAvailableEntries(5);
@@ -239,7 +268,7 @@
CheckFreeSpace(put, 5);
// Add more commands.
- AddCommandWithExpect(error::kNoError, 5, 2, args);
+ AddCommandWithExpect(error::kNoError, kUnusedCommandId + 5, 2, args);
// Wait until everything is done done.
helper_->Finish();
@@ -258,7 +287,7 @@
args[1].value_float = 4.f;
// Add a first command.
- AddCommandWithExpect(error::kNoError, 3, 2, args);
+ AddCommandWithExpect(error::kNoError, kUnusedCommandId + 3, 2, args);
// keep track of the buffer position.
CommandBufferOffset command1_put = get_helper_put();
int32 token = helper_->InsertToken();
@@ -267,7 +296,7 @@
.WillOnce(DoAll(Invoke(api_mock_.get(), &AsyncAPIMock::SetToken),
Return(error::kNoError)));
// Add another command.
- AddCommandWithExpect(error::kNoError, 4, 2, args);
+ AddCommandWithExpect(error::kNoError, kUnusedCommandId + 4, 2, args);
helper_->WaitForToken(token);
// check that the get pointer is beyond the first command.
EXPECT_LE(command1_put, GetGetOffset());
« no previous file with comments | « gpu/command_buffer/client/cmd_buffer_helper.cc ('k') | gpu/command_buffer/service/cmd_parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698