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

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

Issue 560002: Fixed compile/link errors for gpu unit-tests. I had to mostly fix signed/unsi... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "gpu/command_buffer/service/common_decoder.h" 5 #include "gpu/command_buffer/service/common_decoder.h"
6 #include "gpu/command_buffer/service/cmd_buffer_engine.h" 6 #include "gpu/command_buffer/service/cmd_buffer_engine.h"
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 8
9 namespace gpu { 9 namespace gpu {
10 10
11 TEST(CommonDecoderBucket, Basic) { 11 TEST(CommonDecoderBucket, Basic) {
12 CommonDecoder::Bucket bucket; 12 CommonDecoder::Bucket bucket;
13 EXPECT_EQ(0, bucket.size()); 13 EXPECT_EQ(0u, bucket.size());
14 EXPECT_TRUE(NULL == bucket.GetData(0, 0)); 14 EXPECT_TRUE(NULL == bucket.GetData(0, 0));
15 } 15 }
16 16
17 TEST(CommonDecoderBucket, Size) { 17 TEST(CommonDecoderBucket, Size) {
18 CommonDecoder::Bucket bucket; 18 CommonDecoder::Bucket bucket;
19 bucket.SetSize(24); 19 bucket.SetSize(24);
20 EXPECT_EQ(24, bucket.size()); 20 EXPECT_EQ(24u, bucket.size());
21 bucket.SetSize(12); 21 bucket.SetSize(12);
22 EXPECT_EQ(12, bucket.size()); 22 EXPECT_EQ(12u, bucket.size());
23 } 23 }
24 24
25 TEST(CommonDecoderBucket, GetData) { 25 TEST(CommonDecoderBucket, GetData) {
26 CommonDecoder::Bucket bucket; 26 CommonDecoder::Bucket bucket;
27 27
28 bucket.SetSize(24); 28 bucket.SetSize(24);
29 EXPECT_TRUE(NULL != bucket.GetData(0, 0)); 29 EXPECT_TRUE(NULL != bucket.GetData(0, 0));
30 EXPECT_TRUE(NULL != bucket.GetData(24, 0)); 30 EXPECT_TRUE(NULL != bucket.GetData(24, 0));
31 EXPECT_TRUE(NULL == bucket.GetData(25, 0)); 31 EXPECT_TRUE(NULL == bucket.GetData(25, 0));
32 EXPECT_TRUE(NULL != bucket.GetData(0, 24)); 32 EXPECT_TRUE(NULL != bucket.GetData(0, 24));
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 return CommonDecoder::GetBucket(id); 67 return CommonDecoder::GetBucket(id);
68 } 68 }
69 }; 69 };
70 70
71 class MockCommandBufferEngine : public CommandBufferEngine { 71 class MockCommandBufferEngine : public CommandBufferEngine {
72 public: 72 public:
73 static const int32 kStartValidShmId = 1; 73 static const int32 kStartValidShmId = 1;
74 static const int32 kValidShmId = 2; 74 static const int32 kValidShmId = 2;
75 static const int32 kInvalidShmId = 3; 75 static const int32 kInvalidShmId = 3;
76 static const size_t kBufferSize = 1024; 76 static const size_t kBufferSize = 1024;
77 static const uint32 kValidOffset = kBufferSize / 2; 77 static const int32 kValidOffset = kBufferSize / 2;
78 static const uint32 kInvalidOffset = kBufferSize; 78 static const int32 kInvalidOffset = kBufferSize;
79 79
80 MockCommandBufferEngine() 80 MockCommandBufferEngine()
81 : CommandBufferEngine(), 81 : CommandBufferEngine(),
82 token_(), 82 token_(),
83 get_offset_(0) { 83 get_offset_(0) {
84 } 84 }
85 85
86 // Overridden from CommandBufferEngine. 86 // Overridden from CommandBufferEngine.
87 virtual Buffer GetSharedMemoryBuffer(int32 shm_id) { 87 virtual Buffer GetSharedMemoryBuffer(int32 shm_id) {
88 Buffer buffer; 88 Buffer buffer;
89 if (IsValidSharedMemoryId(shm_id)) { 89 if (IsValidSharedMemoryId(shm_id)) {
90 buffer.ptr = buffer_; 90 buffer.ptr = buffer_;
91 buffer.size = kBufferSize; 91 buffer.size = kBufferSize;
92 } 92 }
93 return buffer; 93 return buffer;
94 } 94 }
95 95
96 template <typename T> 96 template <typename T>
97 T GetSharedMemoryAs(uint32 offset) { 97 T GetSharedMemoryAs(uint32 offset) {
98 DCHECK(offset < kBufferSize); 98 DCHECK(offset < kBufferSize);
99 return reinterpret_cast<T>(&buffer_[offset]); 99 return reinterpret_cast<T>(&buffer_[offset]);
100 } 100 }
101 101
102 uint32 GetSharedMemoryOffset(const void* memory) { 102 int32 GetSharedMemoryOffset(const void* memory) {
103 ptrdiff_t offset = reinterpret_cast<const int8*>(memory) - &buffer_[0]; 103 ptrdiff_t offset = reinterpret_cast<const int8*>(memory) - &buffer_[0];
104 DCHECK_GE(offset, 0); 104 DCHECK_GE(offset, 0);
105 DCHECK(offset < kBufferSize); 105 DCHECK(static_cast<size_t>(offset) < kBufferSize);
106 return static_cast<uint32>(offset); 106 return static_cast<int32>(offset);
107 } 107 }
108 108
109 // Overridden from CommandBufferEngine. 109 // Overridden from CommandBufferEngine.
110 virtual void set_token(int32 token) { 110 virtual void set_token(int32 token) {
111 token_ = token; 111 token_ = token;
112 } 112 }
113 113
114 int32 token() const { 114 int32 token() const {
115 return token_; 115 return token_;
116 } 116 }
117 117
118 // Overridden from CommandBufferEngine. 118 // Overridden from CommandBufferEngine.
119 virtual bool SetGetOffset(int32 offset) { 119 virtual bool SetGetOffset(int32 offset) {
120 if (offset < kBufferSize) { 120 if (static_cast<size_t>(offset) < kBufferSize) {
121 get_offset_ = offset; 121 get_offset_ = offset;
122 return true; 122 return true;
123 } 123 }
124 return false; 124 return false;
125 } 125 }
126 126
127 // Overridden from CommandBufferEngine. 127 // Overridden from CommandBufferEngine.
128 virtual int32 GetGetOffset() { 128 virtual int32 GetGetOffset() {
129 return get_offset_; 129 return get_offset_;
130 } 130 }
131 131
132 private: 132 private:
133 bool IsValidSharedMemoryId(int32 shm_id) { 133 bool IsValidSharedMemoryId(int32 shm_id) {
134 return shm_id == kValidShmId || shm_id == kStartValidShmId; 134 return shm_id == kValidShmId || shm_id == kStartValidShmId;
135 } 135 }
136 136
137 int8 buffer_[kBufferSize]; 137 int8 buffer_[kBufferSize];
138 int32 token_; 138 int32 token_;
139 int32 get_offset_; 139 int32 get_offset_;
140 }; 140 };
141 141
142 const int32 MockCommandBufferEngine::kStartValidShmId;
143 const int32 MockCommandBufferEngine::kValidShmId;
144 const int32 MockCommandBufferEngine::kInvalidShmId;
145 const size_t MockCommandBufferEngine::kBufferSize;
146 const int32 MockCommandBufferEngine::kValidOffset;
147 const int32 MockCommandBufferEngine::kInvalidOffset;
148
142 class CommonDecoderTest : public testing::Test { 149 class CommonDecoderTest : public testing::Test {
143 protected: 150 protected:
144 virtual void SetUp() { 151 virtual void SetUp() {
145 decoder_.set_engine(&engine_); 152 decoder_.set_engine(&engine_);
146 } 153 }
147 154
148 virtual void TearDown() { 155 virtual void TearDown() {
149 } 156 }
150 157
151 template <typename T> 158 template <typename T>
(...skipping 10 matching lines...) Expand all
162 return decoder_.DoCommand(cmd.kCmdId, 169 return decoder_.DoCommand(cmd.kCmdId,
163 ComputeNumEntries(sizeof(cmd) + data_size) - 1, 170 ComputeNumEntries(sizeof(cmd) + data_size) - 1,
164 &cmd); 171 &cmd);
165 } 172 }
166 173
167 MockCommandBufferEngine engine_; 174 MockCommandBufferEngine engine_;
168 TestCommonDecoder decoder_; 175 TestCommonDecoder decoder_;
169 }; 176 };
170 177
171 TEST_F(CommonDecoderTest, Initialize) { 178 TEST_F(CommonDecoderTest, Initialize) {
172 EXPECT_EQ(0u, engine_.GetGetOffset()); 179 EXPECT_EQ(0, engine_.GetGetOffset());
173 } 180 }
174 181
175 TEST_F(CommonDecoderTest, HandleNoop) { 182 TEST_F(CommonDecoderTest, HandleNoop) {
176 cmd::Noop cmd; 183 cmd::Noop cmd;
177 const uint32 kSkipCount = 5; 184 const uint32 kSkipCount = 5;
178 cmd.Init(kSkipCount); 185 cmd.Init(kSkipCount);
179 EXPECT_EQ(error::kNoError, 186 EXPECT_EQ(error::kNoError,
180 ExecuteImmediateCmd( 187 ExecuteImmediateCmd(
181 cmd, kSkipCount * kCommandBufferEntrySize)); 188 cmd, kSkipCount * kCommandBufferEntrySize));
182 } 189 }
(...skipping 23 matching lines...) Expand all
206 213
207 // NOTE: The read_pointer checks for relative commands do not take into account 214 // NOTE: The read_pointer checks for relative commands do not take into account
208 // that the actual implementation of CommandBufferEngine uses the parse 215 // that the actual implementation of CommandBufferEngine uses the parse
209 // which will advance the read pointer to the start of the next command. 216 // which will advance the read pointer to the start of the next command.
210 217
211 TEST_F(CommonDecoderTest, JumpRelative) { 218 TEST_F(CommonDecoderTest, JumpRelative) {
212 cmd::JumpRelative cmd; 219 cmd::JumpRelative cmd;
213 // Check valid positive offset succeeds. 220 // Check valid positive offset succeeds.
214 const int32 kPositiveOffset = 16; 221 const int32 kPositiveOffset = 16;
215 cmd.Init(kPositiveOffset); 222 cmd.Init(kPositiveOffset);
216 uint32 read_pointer = engine_.GetGetOffset(); 223 int32 read_pointer = engine_.GetGetOffset();
217 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 224 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
218 // See note above. 225 // See note above.
219 EXPECT_EQ(read_pointer + kPositiveOffset, engine_.GetGetOffset()); 226 EXPECT_EQ(read_pointer + kPositiveOffset, engine_.GetGetOffset());
220 // Check valid negative offset succeeds. 227 // Check valid negative offset succeeds.
221 const int32 kNegativeOffset = -8; 228 const int32 kNegativeOffset = -8;
222 read_pointer = engine_.GetGetOffset(); 229 read_pointer = engine_.GetGetOffset();
223 cmd.Init(kNegativeOffset); 230 cmd.Init(kNegativeOffset);
224 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 231 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
225 // See note above. 232 // See note above.
226 EXPECT_EQ(read_pointer + kNegativeOffset, engine_.GetGetOffset()); 233 EXPECT_EQ(read_pointer + kNegativeOffset, engine_.GetGetOffset());
(...skipping 13 matching lines...) Expand all
240 engine_.GetGetOffset()); 247 engine_.GetGetOffset());
241 // Check invalid offset fails. 248 // Check invalid offset fails.
242 cmd.Init(MockCommandBufferEngine::kInvalidOffset); 249 cmd.Init(MockCommandBufferEngine::kInvalidOffset);
243 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 250 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
244 EXPECT_EQ(MockCommandBufferEngine::kValidOffset, 251 EXPECT_EQ(MockCommandBufferEngine::kValidOffset,
245 engine_.GetGetOffset()); 252 engine_.GetGetOffset());
246 // Check that the call values are on the stack. 253 // Check that the call values are on the stack.
247 cmd::Return return_cmd; 254 cmd::Return return_cmd;
248 return_cmd.Init(); 255 return_cmd.Init();
249 EXPECT_EQ(error::kNoError, ExecuteCmd(return_cmd)); 256 EXPECT_EQ(error::kNoError, ExecuteCmd(return_cmd));
250 EXPECT_EQ(0u, engine_.GetGetOffset()); 257 EXPECT_EQ(0, engine_.GetGetOffset());
251 // Check that stack overflow fails. 258 // Check that stack overflow fails.
252 cmd.Init(MockCommandBufferEngine::kValidOffset); 259 cmd.Init(MockCommandBufferEngine::kValidOffset);
253 for (unsigned int ii = 0; ii < CommonDecoder::kMaxStackDepth; ++ii) { 260 for (unsigned int ii = 0; ii < CommonDecoder::kMaxStackDepth; ++ii) {
254 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 261 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
255 } 262 }
256 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 263 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
257 } 264 }
258 265
259 TEST_F(CommonDecoderTest, CallRelative) { 266 TEST_F(CommonDecoderTest, CallRelative) {
260 cmd::CallRelative cmd; 267 cmd::CallRelative cmd;
261 // Check valid positive offset succeeds. 268 // Check valid positive offset succeeds.
262 const int32 kPositiveOffset = 16; 269 const int32 kPositiveOffset = 16;
263 cmd.Init(kPositiveOffset); 270 cmd.Init(kPositiveOffset);
264 uint32 read_pointer_1 = engine_.GetGetOffset(); 271 int32 read_pointer_1 = engine_.GetGetOffset();
265 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 272 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
266 // See note above. 273 // See note above.
267 EXPECT_EQ(read_pointer_1 + kPositiveOffset, engine_.GetGetOffset()); 274 EXPECT_EQ(read_pointer_1 + kPositiveOffset, engine_.GetGetOffset());
268 // Check valid negative offset succeeds. 275 // Check valid negative offset succeeds.
269 const int32 kNegativeOffset = -8; 276 const int32 kNegativeOffset = -8;
270 uint32 read_pointer_2 = engine_.GetGetOffset(); 277 int32 read_pointer_2 = engine_.GetGetOffset();
271 cmd.Init(kNegativeOffset); 278 cmd.Init(kNegativeOffset);
272 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 279 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
273 // See note above. 280 // See note above.
274 EXPECT_EQ(read_pointer_2 + kNegativeOffset, engine_.GetGetOffset()); 281 EXPECT_EQ(read_pointer_2 + kNegativeOffset, engine_.GetGetOffset());
275 // Check invalid offset fails. 282 // Check invalid offset fails.
276 cmd.Init(MockCommandBufferEngine::kInvalidOffset); 283 cmd.Init(MockCommandBufferEngine::kInvalidOffset);
277 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 284 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
278 // See note above. 285 // See note above.
279 EXPECT_EQ(read_pointer_2 + kNegativeOffset, engine_.GetGetOffset()); 286 EXPECT_EQ(read_pointer_2 + kNegativeOffset, engine_.GetGetOffset());
280 287
281 // Check that the call values are on the stack. 288 // Check that the call values are on the stack.
282 cmd::Return return_cmd; 289 cmd::Return return_cmd;
283 return_cmd.Init(); 290 return_cmd.Init();
284 EXPECT_EQ(error::kNoError, ExecuteCmd(return_cmd)); 291 EXPECT_EQ(error::kNoError, ExecuteCmd(return_cmd));
285 // See note above. 292 // See note above.
286 EXPECT_EQ(read_pointer_1 + kPositiveOffset, engine_.GetGetOffset()); 293 EXPECT_EQ(read_pointer_1 + kPositiveOffset, engine_.GetGetOffset());
287 294
288 EXPECT_EQ(error::kNoError, ExecuteCmd(return_cmd)); 295 EXPECT_EQ(error::kNoError, ExecuteCmd(return_cmd));
289 // See note above. 296 // See note above.
290 EXPECT_EQ(0u, engine_.GetGetOffset()); 297 EXPECT_EQ(0, engine_.GetGetOffset());
291 // Check that stack overflow fails. 298 // Check that stack overflow fails.
292 cmd.Init(kPositiveOffset); 299 cmd.Init(kPositiveOffset);
293 for (unsigned int ii = 0; ii < CommonDecoder::kMaxStackDepth; ++ii) { 300 for (unsigned int ii = 0; ii < CommonDecoder::kMaxStackDepth; ++ii) {
294 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 301 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
295 } 302 }
296 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 303 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
297 } 304 }
298 305
299 TEST_F(CommonDecoderTest, Return) { 306 TEST_F(CommonDecoderTest, Return) {
300 // Success is tested by Call and CallRelative 307 // Success is tested by Call and CallRelative
(...skipping 20 matching lines...) Expand all
321 // Check we can change it. 328 // Check we can change it.
322 cmd.Init(kBucketId, kBucketLength2); 329 cmd.Init(kBucketId, kBucketLength2);
323 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 330 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
324 bucket = decoder_.GetBucket(kBucketId); 331 bucket = decoder_.GetBucket(kBucketId);
325 EXPECT_TRUE(NULL != bucket); 332 EXPECT_TRUE(NULL != bucket);
326 EXPECT_EQ(kBucketLength2, bucket->size()); 333 EXPECT_EQ(kBucketLength2, bucket->size());
327 // Check we can delete it. 334 // Check we can delete it.
328 cmd.Init(kBucketId, 0); 335 cmd.Init(kBucketId, 0);
329 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 336 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
330 bucket = decoder_.GetBucket(kBucketId); 337 bucket = decoder_.GetBucket(kBucketId);
331 EXPECT_EQ(0, bucket->size()); 338 EXPECT_EQ(0u, bucket->size());
332 } 339 }
333 340
334 TEST_F(CommonDecoderTest, SetBucketData) { 341 TEST_F(CommonDecoderTest, SetBucketData) {
335 cmd::SetBucketSize size_cmd; 342 cmd::SetBucketSize size_cmd;
336 cmd::SetBucketData cmd; 343 cmd::SetBucketData cmd;
337 344
338 static const char kData[] = "1234567890123456789"; 345 static const char kData[] = "1234567890123456789";
339 346
340 const uint32 kBucketId = 123; 347 const uint32 kBucketId = 123;
341 const uint32 kInvalidBucketId = 124; 348 const uint32 kInvalidBucketId = 124;
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 cmd::GetBucketData cmd; 484 cmd::GetBucketData cmd;
478 485
479 static const char kData[] = "1234567890123456789"; 486 static const char kData[] = "1234567890123456789";
480 static const char zero[sizeof(kData)] = { 0, }; 487 static const char zero[sizeof(kData)] = { 0, };
481 488
482 const uint32 kBucketId = 123; 489 const uint32 kBucketId = 123;
483 const uint32 kInvalidBucketId = 124; 490 const uint32 kInvalidBucketId = 124;
484 491
485 size_cmd.Init(kBucketId, sizeof(kData)); 492 size_cmd.Init(kBucketId, sizeof(kData));
486 EXPECT_EQ(error::kNoError, ExecuteCmd(size_cmd)); 493 EXPECT_EQ(error::kNoError, ExecuteCmd(size_cmd));
487 CommonDecoder::Bucket* bucket = decoder_.GetBucket(kBucketId);
488 const uint32 kSomeOffsetInSharedMemory = 50; 494 const uint32 kSomeOffsetInSharedMemory = 50;
489 uint8* memory = engine_.GetSharedMemoryAs<uint8*>(kSomeOffsetInSharedMemory); 495 uint8* memory = engine_.GetSharedMemoryAs<uint8*>(kSomeOffsetInSharedMemory);
490 memcpy(memory, kData, sizeof(kData)); 496 memcpy(memory, kData, sizeof(kData));
491 set_cmd.Init(kBucketId, 0, sizeof(kData), 497 set_cmd.Init(kBucketId, 0, sizeof(kData),
492 MockCommandBufferEngine::kValidShmId, kSomeOffsetInSharedMemory); 498 MockCommandBufferEngine::kValidShmId, kSomeOffsetInSharedMemory);
493 EXPECT_EQ(error::kNoError, ExecuteCmd(set_cmd)); 499 EXPECT_EQ(error::kNoError, ExecuteCmd(set_cmd));
494 500
495 // Check we can get the whole thing. 501 // Check we can get the whole thing.
496 memset(memory, 0, sizeof(kData)); 502 memset(memory, 0, sizeof(kData));
497 cmd.Init(kBucketId, 0, sizeof(kData), 503 cmd.Init(kBucketId, 0, sizeof(kData),
(...skipping 26 matching lines...) Expand all
524 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 530 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
525 531
526 // Check that it fails if the size is invalid 532 // Check that it fails if the size is invalid
527 cmd.Init(kBucketId, 0, sizeof(kData) + 1, 533 cmd.Init(kBucketId, 0, sizeof(kData) + 1,
528 MockCommandBufferEngine::kValidShmId, kSomeOffsetInSharedMemory); 534 MockCommandBufferEngine::kValidShmId, kSomeOffsetInSharedMemory);
529 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 535 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
530 } 536 }
531 537
532 } // namespace gpu 538 } // namespace gpu
533 539
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698