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

Side by Side Diff: gpu/command_buffer/client/gles2_implementation_unittest.cc

Issue 754433003: Update from https://crrev.com/305340 (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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // Tests for GLES2Implementation. 5 // Tests for GLES2Implementation.
6 6
7 #include "gpu/command_buffer/client/gles2_implementation.h" 7 #include "gpu/command_buffer/client/gles2_implementation.h"
8 8
9 #include <limits> 9 #include <limits>
10 10
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 struct ExpectedMemoryInfo { 86 struct ExpectedMemoryInfo {
87 uint32 offset; 87 uint32 offset;
88 int32 id; 88 int32 id;
89 uint8* ptr; 89 uint8* ptr;
90 }; 90 };
91 91
92 MockTransferBuffer( 92 MockTransferBuffer(
93 CommandBuffer* command_buffer, 93 CommandBuffer* command_buffer,
94 unsigned int size, 94 unsigned int size,
95 unsigned int result_size, 95 unsigned int result_size,
96 unsigned int alignment) 96 unsigned int alignment,
97 bool initialize_fail)
97 : command_buffer_(command_buffer), 98 : command_buffer_(command_buffer),
98 size_(size), 99 size_(size),
99 result_size_(result_size), 100 result_size_(result_size),
100 alignment_(alignment), 101 alignment_(alignment),
101 actual_buffer_index_(0), 102 actual_buffer_index_(0),
102 expected_buffer_index_(0), 103 expected_buffer_index_(0),
103 last_alloc_(NULL), 104 last_alloc_(NULL),
104 expected_offset_(result_size), 105 expected_offset_(result_size),
105 actual_offset_(result_size) { 106 actual_offset_(result_size),
107 initialize_fail_(initialize_fail) {
106 // We have to allocate the buffers here because 108 // We have to allocate the buffers here because
107 // we need to know their address before GLES2Implementation::Initialize 109 // we need to know their address before GLES2Implementation::Initialize
108 // is called. 110 // is called.
109 for (int ii = 0; ii < kNumBuffers; ++ii) { 111 for (int ii = 0; ii < kNumBuffers; ++ii) {
110 buffers_[ii] = command_buffer_->CreateTransferBuffer( 112 buffers_[ii] = command_buffer_->CreateTransferBuffer(
111 size_ + ii * alignment_, 113 size_ + ii * alignment_,
112 &buffer_ids_[ii]); 114 &buffer_ids_[ii]);
113 EXPECT_NE(-1, buffer_ids_[ii]); 115 EXPECT_NE(-1, buffer_ids_[ii]);
114 } 116 }
115 } 117 }
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 size_t size_; 215 size_t size_;
214 size_t result_size_; 216 size_t result_size_;
215 uint32 alignment_; 217 uint32 alignment_;
216 int buffer_ids_[kNumBuffers]; 218 int buffer_ids_[kNumBuffers];
217 scoped_refptr<Buffer> buffers_[kNumBuffers]; 219 scoped_refptr<Buffer> buffers_[kNumBuffers];
218 int actual_buffer_index_; 220 int actual_buffer_index_;
219 int expected_buffer_index_; 221 int expected_buffer_index_;
220 void* last_alloc_; 222 void* last_alloc_;
221 uint32 expected_offset_; 223 uint32 expected_offset_;
222 uint32 actual_offset_; 224 uint32 actual_offset_;
225 bool initialize_fail_;
223 226
224 DISALLOW_COPY_AND_ASSIGN(MockTransferBuffer); 227 DISALLOW_COPY_AND_ASSIGN(MockTransferBuffer);
225 }; 228 };
226 229
227 bool MockTransferBuffer::Initialize( 230 bool MockTransferBuffer::Initialize(
228 unsigned int starting_buffer_size, 231 unsigned int starting_buffer_size,
229 unsigned int result_size, 232 unsigned int result_size,
230 unsigned int /* min_buffer_size */, 233 unsigned int /* min_buffer_size */,
231 unsigned int /* max_buffer_size */, 234 unsigned int /* max_buffer_size */,
232 unsigned int alignment, 235 unsigned int alignment,
233 unsigned int /* size_to_flush */) { 236 unsigned int /* size_to_flush */) {
234 // Just check they match. 237 // Just check they match.
235 return size_ == starting_buffer_size && 238 return size_ == starting_buffer_size &&
236 result_size_ == result_size && 239 result_size_ == result_size &&
237 alignment_ == alignment; 240 alignment_ == alignment && !initialize_fail_;
238 }; 241 };
239 242
240 int MockTransferBuffer::GetShmId() { 243 int MockTransferBuffer::GetShmId() {
241 return buffer_ids_[actual_buffer_index_]; 244 return buffer_ids_[actual_buffer_index_];
242 } 245 }
243 246
244 void* MockTransferBuffer::GetResultBuffer() { 247 void* MockTransferBuffer::GetResultBuffer() {
245 return actual_buffer() + actual_buffer_index_ * alignment_; 248 return actual_buffer() + actual_buffer_index_ * alignment_;
246 } 249 }
247 250
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 390
388 typedef MockTransferBuffer::ExpectedMemoryInfo ExpectedMemoryInfo; 391 typedef MockTransferBuffer::ExpectedMemoryInfo ExpectedMemoryInfo;
389 392
390 class TestContext { 393 class TestContext {
391 public: 394 public:
392 TestContext() : commands_(NULL), token_(0) {} 395 TestContext() : commands_(NULL), token_(0) {}
393 396
394 bool Initialize(ShareGroup* share_group, 397 bool Initialize(ShareGroup* share_group,
395 bool bind_generates_resource_client, 398 bool bind_generates_resource_client,
396 bool bind_generates_resource_service, 399 bool bind_generates_resource_service,
397 bool lose_context_when_out_of_memory) { 400 bool lose_context_when_out_of_memory,
401 bool transfer_buffer_initialize_fail) {
398 command_buffer_.reset(new StrictMock<MockClientCommandBuffer>()); 402 command_buffer_.reset(new StrictMock<MockClientCommandBuffer>());
399 if (!command_buffer_->Initialize()) 403 if (!command_buffer_->Initialize())
400 return false; 404 return false;
401 405
402 transfer_buffer_.reset( 406 transfer_buffer_.reset(
403 new MockTransferBuffer(command_buffer_.get(), 407 new MockTransferBuffer(command_buffer_.get(),
404 kTransferBufferSize, 408 kTransferBufferSize,
405 GLES2Implementation::kStartingOffset, 409 GLES2Implementation::kStartingOffset,
406 GLES2Implementation::kAlignment)); 410 GLES2Implementation::kAlignment,
411 transfer_buffer_initialize_fail));
407 412
408 helper_.reset(new GLES2CmdHelper(command_buffer())); 413 helper_.reset(new GLES2CmdHelper(command_buffer()));
409 helper_->Initialize(kCommandBufferSizeBytes); 414 helper_->Initialize(kCommandBufferSizeBytes);
410 415
411 gpu_control_.reset(new StrictMock<MockClientGpuControl>()); 416 gpu_control_.reset(new StrictMock<MockClientGpuControl>());
412 Capabilities capabilities; 417 Capabilities capabilities;
413 capabilities.VisitPrecisions( 418 capabilities.VisitPrecisions(
414 [](GLenum shader, GLenum type, 419 [](GLenum shader, GLenum type,
415 Capabilities::ShaderPrecision* precision) { 420 Capabilities::ShaderPrecision* precision) {
416 precision->min_range = 3; 421 precision->min_range = 3;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 } 520 }
516 521
517 QueryTracker::Query* GetQuery(GLuint id) { 522 QueryTracker::Query* GetQuery(GLuint id) {
518 return gl_->query_tracker_->GetQuery(id); 523 return gl_->query_tracker_->GetQuery(id);
519 } 524 }
520 525
521 struct ContextInitOptions { 526 struct ContextInitOptions {
522 ContextInitOptions() 527 ContextInitOptions()
523 : bind_generates_resource_client(true), 528 : bind_generates_resource_client(true),
524 bind_generates_resource_service(true), 529 bind_generates_resource_service(true),
525 lose_context_when_out_of_memory(false) {} 530 lose_context_when_out_of_memory(false),
531 transfer_buffer_initialize_fail(false) {}
526 532
527 bool bind_generates_resource_client; 533 bool bind_generates_resource_client;
528 bool bind_generates_resource_service; 534 bool bind_generates_resource_service;
529 bool lose_context_when_out_of_memory; 535 bool lose_context_when_out_of_memory;
536 bool transfer_buffer_initialize_fail;
530 }; 537 };
531 538
532 bool Initialize(const ContextInitOptions& init_options) { 539 bool Initialize(const ContextInitOptions& init_options) {
533 bool success = true; 540 bool success = true;
534 share_group_ = new ShareGroup(init_options.bind_generates_resource_client); 541 share_group_ = new ShareGroup(init_options.bind_generates_resource_client);
535 542
536 for (int i = 0; i < kNumTestContexts; i++) { 543 for (int i = 0; i < kNumTestContexts; i++) {
537 if (!test_contexts_[i].Initialize( 544 if (!test_contexts_[i].Initialize(
538 share_group_.get(), 545 share_group_.get(),
539 init_options.bind_generates_resource_client, 546 init_options.bind_generates_resource_client,
540 init_options.bind_generates_resource_service, 547 init_options.bind_generates_resource_service,
541 init_options.lose_context_when_out_of_memory)) 548 init_options.lose_context_when_out_of_memory,
549 init_options.transfer_buffer_initialize_fail))
542 success = false; 550 success = false;
543 } 551 }
544 552
545 // Default to test context 0. 553 // Default to test context 0.
546 gpu_control_ = test_contexts_[0].gpu_control_.get(); 554 gpu_control_ = test_contexts_[0].gpu_control_.get();
547 helper_ = test_contexts_[0].helper_.get(); 555 helper_ = test_contexts_[0].helper_.get();
548 transfer_buffer_ = test_contexts_[0].transfer_buffer_.get(); 556 transfer_buffer_ = test_contexts_[0].transfer_buffer_.get();
549 gl_ = test_contexts_[0].gl_.get(); 557 gl_ = test_contexts_[0].gl_.get();
550 commands_ = test_contexts_[0].commands_; 558 commands_ = test_contexts_[0].commands_;
551 return success; 559 return success;
(...skipping 2743 matching lines...) Expand 10 before | Expand all | Expand 10 after
3295 EXPECT_FALSE(Initialize(init_options)); 3303 EXPECT_FALSE(Initialize(init_options));
3296 } 3304 }
3297 3305
3298 TEST_F(GLES2ImplementationManualInitTest, FailInitOnBGRMismatch2) { 3306 TEST_F(GLES2ImplementationManualInitTest, FailInitOnBGRMismatch2) {
3299 ContextInitOptions init_options; 3307 ContextInitOptions init_options;
3300 init_options.bind_generates_resource_client = true; 3308 init_options.bind_generates_resource_client = true;
3301 init_options.bind_generates_resource_service = false; 3309 init_options.bind_generates_resource_service = false;
3302 EXPECT_FALSE(Initialize(init_options)); 3310 EXPECT_FALSE(Initialize(init_options));
3303 } 3311 }
3304 3312
3313 TEST_F(GLES2ImplementationManualInitTest, FailInitOnTransferBufferFail) {
3314 ContextInitOptions init_options;
3315 init_options.transfer_buffer_initialize_fail = true;
3316 EXPECT_FALSE(Initialize(init_options));
3317 }
3318
3305 #include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h" 3319 #include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h"
3306 3320
3307 } // namespace gles2 3321 } // namespace gles2
3308 } // namespace gpu 3322 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/client/gles2_implementation.cc ('k') | gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698