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

Side by Side Diff: gpu/command_buffer/service/gpu_scheduler_unittest.cc

Issue 706203003: Update from https://crrev.com/303153 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « gpu/command_buffer/service/gpu_scheduler.cc ('k') | gpu/ipc/gpu_command_buffer_traits.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/message_loop/message_loop.h" 5 #include "base/message_loop/message_loop.h"
6 #include "gpu/command_buffer/common/command_buffer_mock.h" 6 #include "gpu/command_buffer/common/command_buffer_mock.h"
7 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 7 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
8 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" 8 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h"
9 #include "gpu/command_buffer/service/gpu_scheduler.h" 9 #include "gpu/command_buffer/service/gpu_scheduler.h"
10 #include "gpu/command_buffer/service/mocks.h" 10 #include "gpu/command_buffer/service/mocks.h"
11 #include "testing/gmock/include/gmock/gmock.h" 11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 #if defined(OS_MACOSX) 14 #if defined(OS_MACOSX)
15 #include "base/mac/scoped_nsautorelease_pool.h" 15 #include "base/mac/scoped_nsautorelease_pool.h"
16 #endif 16 #endif
17 17
18 using testing::_; 18 using testing::_;
19 using testing::DoAll; 19 using testing::DoAll;
20 using testing::Invoke; 20 using testing::Invoke;
21 using testing::NiceMock; 21 using testing::NiceMock;
22 using testing::Return; 22 using testing::Return;
23 using testing::SetArgumentPointee; 23 using testing::SetArgumentPointee;
24 using testing::StrictMock; 24 using testing::StrictMock;
25 25
26 namespace gpu { 26 namespace gpu {
27 27
28 const size_t kRingBufferSize = 1024; 28 const size_t kRingBufferSize = 1024;
29 const size_t kRingBufferEntries = kRingBufferSize / sizeof(CommandBufferEntry);
30 29
31 class GpuSchedulerTest : public testing::Test { 30 class GpuSchedulerTest : public testing::Test {
32 protected: 31 protected:
33 static const int32 kTransferBufferId = 123; 32 static const int32 kTransferBufferId = 123;
34 33
35 void SetUp() override { 34 void SetUp() override {
36 scoped_ptr<base::SharedMemory> shared_memory(new ::base::SharedMemory); 35 scoped_ptr<base::SharedMemory> shared_memory(new ::base::SharedMemory);
37 shared_memory->CreateAndMapAnonymous(kRingBufferSize); 36 shared_memory->CreateAndMapAnonymous(kRingBufferSize);
38 buffer_ = static_cast<int32*>(shared_memory->memory()); 37 buffer_ = static_cast<int32*>(shared_memory->memory());
39 shared_memory_buffer_ = 38 shared_memory_buffer_ =
40 MakeBufferFromSharedMemory(shared_memory.Pass(), kRingBufferSize); 39 MakeBufferFromSharedMemory(shared_memory.Pass(), kRingBufferSize);
41 memset(buffer_, 0, kRingBufferSize); 40 memset(buffer_, 0, kRingBufferSize);
42 41
43 command_buffer_.reset(new MockCommandBuffer); 42 command_buffer_.reset(new MockCommandBuffer);
44 43
45 CommandBuffer::State default_state; 44 CommandBuffer::State default_state;
46 default_state.num_entries = kRingBufferEntries;
47 ON_CALL(*command_buffer_.get(), GetLastState()) 45 ON_CALL(*command_buffer_.get(), GetLastState())
48 .WillByDefault(Return(default_state)); 46 .WillByDefault(Return(default_state));
47 ON_CALL(*command_buffer_.get(), GetPutOffset())
48 .WillByDefault(Return(0));
49 49
50 decoder_.reset(new gles2::MockGLES2Decoder()); 50 decoder_.reset(new gles2::MockGLES2Decoder());
51 // Install FakeDoCommands handler so we can use individual DoCommand() 51 // Install FakeDoCommands handler so we can use individual DoCommand()
52 // expectations. 52 // expectations.
53 EXPECT_CALL(*decoder_, DoCommands(_, _, _, _)).WillRepeatedly( 53 EXPECT_CALL(*decoder_, DoCommands(_, _, _, _)).WillRepeatedly(
54 Invoke(decoder_.get(), &gles2::MockGLES2Decoder::FakeDoCommands)); 54 Invoke(decoder_.get(), &gles2::MockGLES2Decoder::FakeDoCommands));
55 55
56 scheduler_.reset(new gpu::GpuScheduler(command_buffer_.get(), 56 scheduler_.reset(new gpu::GpuScheduler(command_buffer_.get(),
57 decoder_.get(), 57 decoder_.get(),
58 decoder_.get())); 58 decoder_.get()));
(...skipping 20 matching lines...) Expand all
79 scoped_ptr<MockCommandBuffer> command_buffer_; 79 scoped_ptr<MockCommandBuffer> command_buffer_;
80 scoped_refptr<Buffer> shared_memory_buffer_; 80 scoped_refptr<Buffer> shared_memory_buffer_;
81 int32* buffer_; 81 int32* buffer_;
82 scoped_ptr<gles2::MockGLES2Decoder> decoder_; 82 scoped_ptr<gles2::MockGLES2Decoder> decoder_;
83 scoped_ptr<GpuScheduler> scheduler_; 83 scoped_ptr<GpuScheduler> scheduler_;
84 }; 84 };
85 85
86 TEST_F(GpuSchedulerTest, SchedulerDoesNothingIfRingBufferIsEmpty) { 86 TEST_F(GpuSchedulerTest, SchedulerDoesNothingIfRingBufferIsEmpty) {
87 CommandBuffer::State state; 87 CommandBuffer::State state;
88 88
89 state.put_offset = 0;
90 EXPECT_CALL(*command_buffer_, GetLastState()) 89 EXPECT_CALL(*command_buffer_, GetLastState())
91 .WillRepeatedly(Return(state)); 90 .WillRepeatedly(Return(state));
92 91
93 EXPECT_CALL(*command_buffer_, SetParseError(_)) 92 EXPECT_CALL(*command_buffer_, SetParseError(_))
94 .Times(0); 93 .Times(0);
95 94
96 scheduler_->PutChanged(); 95 scheduler_->PutChanged();
97 } 96 }
98 97
99 TEST_F(GpuSchedulerTest, GetSetBuffer) { 98 TEST_F(GpuSchedulerTest, GetSetBuffer) {
(...skipping 15 matching lines...) Expand all
115 } 114 }
116 115
117 TEST_F(GpuSchedulerTest, ProcessesOneCommand) { 116 TEST_F(GpuSchedulerTest, ProcessesOneCommand) {
118 CommandHeader* header = reinterpret_cast<CommandHeader*>(&buffer_[0]); 117 CommandHeader* header = reinterpret_cast<CommandHeader*>(&buffer_[0]);
119 header[0].command = 7; 118 header[0].command = 7;
120 header[0].size = 2; 119 header[0].size = 2;
121 buffer_[1] = 123; 120 buffer_[1] = 123;
122 121
123 CommandBuffer::State state; 122 CommandBuffer::State state;
124 123
125 state.put_offset = 2;
126 EXPECT_CALL(*command_buffer_, GetLastState()) 124 EXPECT_CALL(*command_buffer_, GetLastState())
127 .WillRepeatedly(Return(state)); 125 .WillRepeatedly(Return(state));
126 EXPECT_CALL(*command_buffer_, GetPutOffset())
127 .WillRepeatedly(Return(2));
128 EXPECT_CALL(*command_buffer_, SetGetOffset(2)); 128 EXPECT_CALL(*command_buffer_, SetGetOffset(2));
129 129
130 EXPECT_CALL(*decoder_, DoCommand(7, 1, &buffer_[0])) 130 EXPECT_CALL(*decoder_, DoCommand(7, 1, &buffer_[0]))
131 .WillOnce(Return(error::kNoError)); 131 .WillOnce(Return(error::kNoError));
132 132
133 EXPECT_CALL(*command_buffer_, SetParseError(_)) 133 EXPECT_CALL(*command_buffer_, SetParseError(_))
134 .Times(0); 134 .Times(0);
135 135
136 scheduler_->PutChanged(); 136 scheduler_->PutChanged();
137 } 137 }
138 138
139 TEST_F(GpuSchedulerTest, ProcessesTwoCommands) { 139 TEST_F(GpuSchedulerTest, ProcessesTwoCommands) {
140 CommandHeader* header = reinterpret_cast<CommandHeader*>(&buffer_[0]); 140 CommandHeader* header = reinterpret_cast<CommandHeader*>(&buffer_[0]);
141 header[0].command = 7; 141 header[0].command = 7;
142 header[0].size = 2; 142 header[0].size = 2;
143 buffer_[1] = 123; 143 buffer_[1] = 123;
144 header[2].command = 8; 144 header[2].command = 8;
145 header[2].size = 1; 145 header[2].size = 1;
146 146
147 CommandBuffer::State state; 147 CommandBuffer::State state;
148 148
149 state.put_offset = 3;
150 EXPECT_CALL(*command_buffer_, GetLastState()) 149 EXPECT_CALL(*command_buffer_, GetLastState())
151 .WillRepeatedly(Return(state)); 150 .WillRepeatedly(Return(state));
151 EXPECT_CALL(*command_buffer_, GetPutOffset())
152 .WillRepeatedly(Return(3));
152 153
153 EXPECT_CALL(*decoder_, DoCommand(7, 1, &buffer_[0])) 154 EXPECT_CALL(*decoder_, DoCommand(7, 1, &buffer_[0]))
154 .WillOnce(Return(error::kNoError)); 155 .WillOnce(Return(error::kNoError));
155 156
156 EXPECT_CALL(*decoder_, DoCommand(8, 0, &buffer_[2])) 157 EXPECT_CALL(*decoder_, DoCommand(8, 0, &buffer_[2]))
157 .WillOnce(Return(error::kNoError)); 158 .WillOnce(Return(error::kNoError));
158 EXPECT_CALL(*command_buffer_, SetGetOffset(3)); 159 EXPECT_CALL(*command_buffer_, SetGetOffset(3));
159 160
160 scheduler_->PutChanged(); 161 scheduler_->PutChanged();
161 } 162 }
162 163
163 TEST_F(GpuSchedulerTest, SetsErrorCodeOnCommandBuffer) { 164 TEST_F(GpuSchedulerTest, SetsErrorCodeOnCommandBuffer) {
164 CommandHeader* header = reinterpret_cast<CommandHeader*>(&buffer_[0]); 165 CommandHeader* header = reinterpret_cast<CommandHeader*>(&buffer_[0]);
165 header[0].command = 7; 166 header[0].command = 7;
166 header[0].size = 1; 167 header[0].size = 1;
167 168
168 CommandBuffer::State state; 169 CommandBuffer::State state;
169 170
170 state.put_offset = 1;
171 EXPECT_CALL(*command_buffer_, GetLastState()) 171 EXPECT_CALL(*command_buffer_, GetLastState())
172 .WillRepeatedly(Return(state)); 172 .WillRepeatedly(Return(state));
173 EXPECT_CALL(*command_buffer_, GetPutOffset())
174 .WillRepeatedly(Return(1));
173 175
174 EXPECT_CALL(*decoder_, DoCommand(7, 0, &buffer_[0])) 176 EXPECT_CALL(*decoder_, DoCommand(7, 0, &buffer_[0]))
175 .WillOnce(Return( 177 .WillOnce(Return(
176 error::kUnknownCommand)); 178 error::kUnknownCommand));
177 EXPECT_CALL(*command_buffer_, SetGetOffset(1)); 179 EXPECT_CALL(*command_buffer_, SetGetOffset(1));
178 180
179 EXPECT_CALL(*command_buffer_, SetContextLostReason(_)); 181 EXPECT_CALL(*command_buffer_, SetContextLostReason(_));
180 EXPECT_CALL(*decoder_, GetContextLostReason()) 182 EXPECT_CALL(*decoder_, GetContextLostReason())
181 .WillOnce(Return(error::kUnknown)); 183 .WillOnce(Return(error::kUnknown));
182 EXPECT_CALL(*command_buffer_, 184 EXPECT_CALL(*command_buffer_,
(...skipping 29 matching lines...) Expand all
212 214
213 EXPECT_EQ(kRingBufferSize, scheduler_->GetSharedMemoryBuffer(7)->size()); 215 EXPECT_EQ(kRingBufferSize, scheduler_->GetSharedMemoryBuffer(7)->size());
214 } 216 }
215 217
216 TEST_F(GpuSchedulerTest, SetTokenForwardsToCommandBuffer) { 218 TEST_F(GpuSchedulerTest, SetTokenForwardsToCommandBuffer) {
217 EXPECT_CALL(*command_buffer_, SetToken(7)); 219 EXPECT_CALL(*command_buffer_, SetToken(7));
218 scheduler_->set_token(7); 220 scheduler_->set_token(7);
219 } 221 }
220 222
221 } // namespace gpu 223 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gpu_scheduler.cc ('k') | gpu/ipc/gpu_command_buffer_traits.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698