OLD | NEW |
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 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 client_sampler_id_(104), | 93 client_sampler_id_(104), |
94 client_shader_id_(105), | 94 client_shader_id_(105), |
95 client_texture_id_(106), | 95 client_texture_id_(106), |
96 client_element_buffer_id_(107), | 96 client_element_buffer_id_(107), |
97 client_vertex_shader_id_(121), | 97 client_vertex_shader_id_(121), |
98 client_fragment_shader_id_(122), | 98 client_fragment_shader_id_(122), |
99 client_query_id_(123), | 99 client_query_id_(123), |
100 client_vertexarray_id_(124), | 100 client_vertexarray_id_(124), |
101 client_valuebuffer_id_(125), | 101 client_valuebuffer_id_(125), |
102 client_transformfeedback_id_(126), | 102 client_transformfeedback_id_(126), |
| 103 client_sync_id_(127), |
103 service_renderbuffer_id_(0), | 104 service_renderbuffer_id_(0), |
104 service_renderbuffer_valid_(false), | 105 service_renderbuffer_valid_(false), |
105 ignore_cached_state_for_test_(GetParam()), | 106 ignore_cached_state_for_test_(GetParam()), |
106 cached_color_mask_red_(true), | 107 cached_color_mask_red_(true), |
107 cached_color_mask_green_(true), | 108 cached_color_mask_green_(true), |
108 cached_color_mask_blue_(true), | 109 cached_color_mask_blue_(true), |
109 cached_color_mask_alpha_(true), | 110 cached_color_mask_alpha_(true), |
110 cached_depth_mask_(true), | 111 cached_depth_mask_(true), |
111 cached_stencil_front_mask_(static_cast<GLuint>(-1)), | 112 cached_stencil_front_mask_(static_cast<GLuint>(-1)), |
112 cached_stencil_back_mask_(static_cast<GLuint>(-1)) { | 113 cached_stencil_back_mask_(static_cast<GLuint>(-1)) { |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 reset_unsafe_es3_apis_enabled = true; | 424 reset_unsafe_es3_apis_enabled = true; |
424 } | 425 } |
425 EXPECT_CALL(*gl_, GenSamplers(_, _)) | 426 EXPECT_CALL(*gl_, GenSamplers(_, _)) |
426 .WillOnce(SetArgumentPointee<1>(kServiceSamplerId)) | 427 .WillOnce(SetArgumentPointee<1>(kServiceSamplerId)) |
427 .RetiresOnSaturation(); | 428 .RetiresOnSaturation(); |
428 GenHelper<cmds::GenSamplersImmediate>(client_sampler_id_); | 429 GenHelper<cmds::GenSamplersImmediate>(client_sampler_id_); |
429 EXPECT_CALL(*gl_, GenTransformFeedbacks(_, _)) | 430 EXPECT_CALL(*gl_, GenTransformFeedbacks(_, _)) |
430 .WillOnce(SetArgumentPointee<1>(kServiceTransformFeedbackId)) | 431 .WillOnce(SetArgumentPointee<1>(kServiceTransformFeedbackId)) |
431 .RetiresOnSaturation(); | 432 .RetiresOnSaturation(); |
432 GenHelper<cmds::GenTransformFeedbacksImmediate>(client_transformfeedback_id_); | 433 GenHelper<cmds::GenTransformFeedbacksImmediate>(client_transformfeedback_id_); |
| 434 DoFenceSync(client_sync_id_, kServiceSyncId); |
433 if (reset_unsafe_es3_apis_enabled) { | 435 if (reset_unsafe_es3_apis_enabled) { |
434 decoder_->set_unsafe_es3_apis_enabled(false); | 436 decoder_->set_unsafe_es3_apis_enabled(false); |
435 } | 437 } |
436 | 438 |
437 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 439 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
438 } | 440 } |
439 | 441 |
440 void GLES2DecoderTestBase::ResetDecoder() { | 442 void GLES2DecoderTestBase::ResetDecoder() { |
441 if (!decoder_.get()) | 443 if (!decoder_.get()) |
442 return; | 444 return; |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
529 return IsObjectHelper<cmds::IsProgram, cmds::IsProgram::Result>(client_id); | 531 return IsObjectHelper<cmds::IsProgram, cmds::IsProgram::Result>(client_id); |
530 } | 532 } |
531 | 533 |
532 void GLES2DecoderTestBase::DoDeleteProgram( | 534 void GLES2DecoderTestBase::DoDeleteProgram( |
533 GLuint client_id, GLuint /* service_id */) { | 535 GLuint client_id, GLuint /* service_id */) { |
534 cmds::DeleteProgram cmd; | 536 cmds::DeleteProgram cmd; |
535 cmd.Init(client_id); | 537 cmd.Init(client_id); |
536 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 538 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
537 } | 539 } |
538 | 540 |
| 541 void GLES2DecoderTestBase::DoFenceSync( |
| 542 GLuint client_id, GLuint service_id) { |
| 543 EXPECT_CALL(*gl_, FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0)) |
| 544 .Times(1) |
| 545 .WillOnce(Return(reinterpret_cast<GLsync>(service_id))) |
| 546 .RetiresOnSaturation(); |
| 547 cmds::FenceSync cmd; |
| 548 cmd.Init(client_id); |
| 549 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 550 } |
| 551 |
539 void GLES2DecoderTestBase::SetBucketAsCString( | 552 void GLES2DecoderTestBase::SetBucketAsCString( |
540 uint32 bucket_id, const char* str) { | 553 uint32 bucket_id, const char* str) { |
541 uint32 size = str ? (strlen(str) + 1) : 0; | 554 uint32 size = str ? (strlen(str) + 1) : 0; |
542 cmd::SetBucketSize cmd1; | 555 cmd::SetBucketSize cmd1; |
543 cmd1.Init(bucket_id, size); | 556 cmd1.Init(bucket_id, size); |
544 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 557 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
545 if (str) { | 558 if (str) { |
546 memcpy(shared_memory_address_, str, size); | 559 memcpy(shared_memory_address_, str, size); |
547 cmd::SetBucketData cmd2; | 560 cmd::SetBucketData cmd2; |
548 cmd2.Init(bucket_id, 0, size, kSharedMemoryId, kSharedMemoryOffset); | 561 cmd2.Init(bucket_id, 0, size, kSharedMemoryId, kSharedMemoryOffset); |
549 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 562 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
550 ClearSharedMemory(); | 563 ClearSharedMemory(); |
551 } | 564 } |
552 } | 565 } |
553 | 566 |
| 567 void GLES2DecoderTestBase::SetBucketAsCStrings( |
| 568 uint32 bucket_id, GLsizei count, const char** str, |
| 569 GLsizei count_in_header, char str_end) { |
| 570 uint32_t header_size = sizeof(GLint) * (count + 1); |
| 571 uint32_t total_size = header_size; |
| 572 scoped_ptr<GLint[]> header(new GLint[count + 1]); |
| 573 header[0] = static_cast<GLint>(count_in_header); |
| 574 for (GLsizei ii = 0; ii < count; ++ii) { |
| 575 header[ii + 1] = str && str[ii] ? strlen(str[ii]) : 0; |
| 576 total_size += header[ii + 1] + 1; |
| 577 } |
| 578 cmd::SetBucketSize cmd1; |
| 579 cmd1.Init(bucket_id, total_size); |
| 580 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 581 memcpy(shared_memory_address_, header.get(), header_size); |
| 582 uint32_t offset = header_size; |
| 583 for (GLsizei ii = 0; ii < count; ++ii) { |
| 584 if (str && str[ii]) { |
| 585 size_t str_len = strlen(str[ii]); |
| 586 memcpy(reinterpret_cast<char*>(shared_memory_address_) + offset, |
| 587 str[ii], str_len); |
| 588 offset += str_len; |
| 589 } |
| 590 memcpy(reinterpret_cast<char*>(shared_memory_address_) + offset, |
| 591 &str_end, 1); |
| 592 offset += 1; |
| 593 } |
| 594 cmd::SetBucketData cmd2; |
| 595 cmd2.Init(bucket_id, 0, total_size, kSharedMemoryId, kSharedMemoryOffset); |
| 596 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 597 ClearSharedMemory(); |
| 598 } |
| 599 |
554 void GLES2DecoderTestBase::SetupClearTextureExpectations( | 600 void GLES2DecoderTestBase::SetupClearTextureExpectations( |
555 GLuint service_id, | 601 GLuint service_id, |
556 GLuint old_service_id, | 602 GLuint old_service_id, |
557 GLenum bind_target, | 603 GLenum bind_target, |
558 GLenum target, | 604 GLenum target, |
559 GLint level, | 605 GLint level, |
560 GLenum internal_format, | 606 GLenum internal_format, |
561 GLenum format, | 607 GLenum format, |
562 GLenum type, | 608 GLenum type, |
563 GLsizei width, | 609 GLsizei width, |
(...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1267 const GLuint GLES2DecoderTestBase::kServiceFramebufferId; | 1313 const GLuint GLES2DecoderTestBase::kServiceFramebufferId; |
1268 const GLuint GLES2DecoderTestBase::kServiceRenderbufferId; | 1314 const GLuint GLES2DecoderTestBase::kServiceRenderbufferId; |
1269 const GLuint GLES2DecoderTestBase::kServiceSamplerId; | 1315 const GLuint GLES2DecoderTestBase::kServiceSamplerId; |
1270 const GLuint GLES2DecoderTestBase::kServiceTextureId; | 1316 const GLuint GLES2DecoderTestBase::kServiceTextureId; |
1271 const GLuint GLES2DecoderTestBase::kServiceProgramId; | 1317 const GLuint GLES2DecoderTestBase::kServiceProgramId; |
1272 const GLuint GLES2DecoderTestBase::kServiceShaderId; | 1318 const GLuint GLES2DecoderTestBase::kServiceShaderId; |
1273 const GLuint GLES2DecoderTestBase::kServiceElementBufferId; | 1319 const GLuint GLES2DecoderTestBase::kServiceElementBufferId; |
1274 const GLuint GLES2DecoderTestBase::kServiceQueryId; | 1320 const GLuint GLES2DecoderTestBase::kServiceQueryId; |
1275 const GLuint GLES2DecoderTestBase::kServiceVertexArrayId; | 1321 const GLuint GLES2DecoderTestBase::kServiceVertexArrayId; |
1276 const GLuint GLES2DecoderTestBase::kServiceTransformFeedbackId; | 1322 const GLuint GLES2DecoderTestBase::kServiceTransformFeedbackId; |
| 1323 const GLuint GLES2DecoderTestBase::kServiceSyncId; |
1277 | 1324 |
1278 const int32 GLES2DecoderTestBase::kSharedMemoryId; | 1325 const int32 GLES2DecoderTestBase::kSharedMemoryId; |
1279 const size_t GLES2DecoderTestBase::kSharedBufferSize; | 1326 const size_t GLES2DecoderTestBase::kSharedBufferSize; |
1280 const uint32 GLES2DecoderTestBase::kSharedMemoryOffset; | 1327 const uint32 GLES2DecoderTestBase::kSharedMemoryOffset; |
1281 const int32 GLES2DecoderTestBase::kInvalidSharedMemoryId; | 1328 const int32 GLES2DecoderTestBase::kInvalidSharedMemoryId; |
1282 const uint32 GLES2DecoderTestBase::kInvalidSharedMemoryOffset; | 1329 const uint32 GLES2DecoderTestBase::kInvalidSharedMemoryOffset; |
1283 const uint32 GLES2DecoderTestBase::kInitialResult; | 1330 const uint32 GLES2DecoderTestBase::kInitialResult; |
1284 const uint8 GLES2DecoderTestBase::kInitialMemoryValue; | 1331 const uint8 GLES2DecoderTestBase::kInitialMemoryValue; |
1285 | 1332 |
1286 const uint32 GLES2DecoderTestBase::kNewClientId; | 1333 const uint32 GLES2DecoderTestBase::kNewClientId; |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1696 SetupDefaultProgram(); | 1743 SetupDefaultProgram(); |
1697 } | 1744 } |
1698 | 1745 |
1699 // Include the auto-generated part of this file. We split this because it means | 1746 // Include the auto-generated part of this file. We split this because it means |
1700 // we can easily edit the non-auto generated parts right here in this file | 1747 // we can easily edit the non-auto generated parts right here in this file |
1701 // instead of having to edit some template or the code generator. | 1748 // instead of having to edit some template or the code generator. |
1702 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_0_autogen.h" | 1749 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_0_autogen.h" |
1703 | 1750 |
1704 } // namespace gles2 | 1751 } // namespace gles2 |
1705 } // namespace gpu | 1752 } // namespace gpu |
OLD | NEW |