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.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 9 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 EXPECT_CALL(*gl, GetError()) | 448 EXPECT_CALL(*gl, GetError()) |
449 .WillOnce(Return(GL_NO_ERROR)) | 449 .WillOnce(Return(GL_NO_ERROR)) |
450 .RetiresOnSaturation(); | 450 .RetiresOnSaturation(); |
451 } | 451 } |
452 GLsync kGlSync = reinterpret_cast<GLsync>(0xdeadbeef); | 452 GLsync kGlSync = reinterpret_cast<GLsync>(0xdeadbeef); |
453 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) { | 453 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) { |
454 EXPECT_CALL(*gl, Flush()).RetiresOnSaturation(); | 454 EXPECT_CALL(*gl, Flush()).RetiresOnSaturation(); |
455 EXPECT_CALL(*gl, FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0)) | 455 EXPECT_CALL(*gl, FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0)) |
456 .WillOnce(Return(kGlSync)) | 456 .WillOnce(Return(kGlSync)) |
457 .RetiresOnSaturation(); | 457 .RetiresOnSaturation(); |
458 #if DCHECK_IS_ON | 458 #if DCHECK_IS_ON() |
459 EXPECT_CALL(*gl, IsSync(kGlSync)) | 459 EXPECT_CALL(*gl, IsSync(kGlSync)) |
460 .WillOnce(Return(GL_TRUE)) | 460 .WillOnce(Return(GL_TRUE)) |
461 .RetiresOnSaturation(); | 461 .RetiresOnSaturation(); |
462 #endif | 462 #endif |
463 } | 463 } |
464 | 464 |
465 EndQueryEXT end_cmd; | 465 EndQueryEXT end_cmd; |
466 end_cmd.Init(query_type.type, 1); | 466 end_cmd.Init(query_type.type, 1); |
467 error::Error error2 = test->ExecuteCmd(end_cmd); | 467 error::Error error2 = test->ExecuteCmd(end_cmd); |
468 | 468 |
469 if (query_type.is_gl) { | 469 if (query_type.is_gl) { |
470 EXPECT_CALL( | 470 EXPECT_CALL( |
471 *gl, GetQueryObjectuivARB(service_id, GL_QUERY_RESULT_AVAILABLE_EXT, _)) | 471 *gl, GetQueryObjectuivARB(service_id, GL_QUERY_RESULT_AVAILABLE_EXT, _)) |
472 .WillOnce(SetArgumentPointee<2>(1)) | 472 .WillOnce(SetArgumentPointee<2>(1)) |
473 .RetiresOnSaturation(); | 473 .RetiresOnSaturation(); |
474 EXPECT_CALL(*gl, GetQueryObjectuivARB(service_id, GL_QUERY_RESULT_EXT, _)) | 474 EXPECT_CALL(*gl, GetQueryObjectuivARB(service_id, GL_QUERY_RESULT_EXT, _)) |
475 .WillOnce(SetArgumentPointee<2>(1)) | 475 .WillOnce(SetArgumentPointee<2>(1)) |
476 .RetiresOnSaturation(); | 476 .RetiresOnSaturation(); |
477 } | 477 } |
478 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) { | 478 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) { |
479 #if DCHECK_IS_ON | 479 #if DCHECK_IS_ON() |
480 EXPECT_CALL(*gl, IsSync(kGlSync)) | 480 EXPECT_CALL(*gl, IsSync(kGlSync)) |
481 .WillOnce(Return(GL_TRUE)) | 481 .WillOnce(Return(GL_TRUE)) |
482 .RetiresOnSaturation(); | 482 .RetiresOnSaturation(); |
483 #endif | 483 #endif |
484 EXPECT_CALL(*gl, ClientWaitSync(kGlSync, _, _)) | 484 EXPECT_CALL(*gl, ClientWaitSync(kGlSync, _, _)) |
485 .WillOnce(Return(GL_ALREADY_SIGNALED)) | 485 .WillOnce(Return(GL_ALREADY_SIGNALED)) |
486 .RetiresOnSaturation(); | 486 .RetiresOnSaturation(); |
487 } | 487 } |
488 | 488 |
489 QueryManager* query_manager = test->GetDecoder()->GetQueryManager(); | 489 QueryManager* query_manager = test->GetDecoder()->GetQueryManager(); |
490 ASSERT_TRUE(query_manager != NULL); | 490 ASSERT_TRUE(query_manager != NULL); |
491 bool process_success = query_manager->ProcessPendingQueries(false); | 491 bool process_success = query_manager->ProcessPendingQueries(false); |
492 | 492 |
493 EXPECT_TRUE(error1 != error::kNoError || error2 != error::kNoError || | 493 EXPECT_TRUE(error1 != error::kNoError || error2 != error::kNoError || |
494 !process_success); | 494 !process_success); |
495 | 495 |
496 if (query_type.is_gl) { | 496 if (query_type.is_gl) { |
497 EXPECT_CALL(*gl, DeleteQueriesARB(1, _)).Times(1).RetiresOnSaturation(); | 497 EXPECT_CALL(*gl, DeleteQueriesARB(1, _)).Times(1).RetiresOnSaturation(); |
498 } | 498 } |
499 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) { | 499 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) { |
500 #if DCHECK_IS_ON | 500 #if DCHECK_IS_ON() |
501 EXPECT_CALL(*gl, IsSync(kGlSync)) | 501 EXPECT_CALL(*gl, IsSync(kGlSync)) |
502 .WillOnce(Return(GL_TRUE)) | 502 .WillOnce(Return(GL_TRUE)) |
503 .RetiresOnSaturation(); | 503 .RetiresOnSaturation(); |
504 #endif | 504 #endif |
505 EXPECT_CALL(*gl, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation(); | 505 EXPECT_CALL(*gl, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation(); |
506 } | 506 } |
507 test->ResetDecoder(); | 507 test->ResetDecoder(); |
508 } | 508 } |
509 | 509 |
510 TEST_P(GLES2DecoderManualInitTest, BeginEndQueryEXTBadMemoryIdFails) { | 510 TEST_P(GLES2DecoderManualInitTest, BeginEndQueryEXTBadMemoryIdFails) { |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 ASSERT_TRUE(query_manager != NULL); | 622 ASSERT_TRUE(query_manager != NULL); |
623 QueryManager::Query* query = query_manager->GetQuery(kNewClientId); | 623 QueryManager::Query* query = query_manager->GetQuery(kNewClientId); |
624 ASSERT_TRUE(query != NULL); | 624 ASSERT_TRUE(query != NULL); |
625 EXPECT_FALSE(query->pending()); | 625 EXPECT_FALSE(query->pending()); |
626 | 626 |
627 GLsync kGlSync = reinterpret_cast<GLsync>(0xdeadbeef); | 627 GLsync kGlSync = reinterpret_cast<GLsync>(0xdeadbeef); |
628 EXPECT_CALL(*gl_, Flush()).RetiresOnSaturation(); | 628 EXPECT_CALL(*gl_, Flush()).RetiresOnSaturation(); |
629 EXPECT_CALL(*gl_, FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0)) | 629 EXPECT_CALL(*gl_, FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0)) |
630 .WillOnce(Return(kGlSync)) | 630 .WillOnce(Return(kGlSync)) |
631 .RetiresOnSaturation(); | 631 .RetiresOnSaturation(); |
632 #if DCHECK_IS_ON | 632 #if DCHECK_IS_ON() |
633 EXPECT_CALL(*gl_, IsSync(kGlSync)) | 633 EXPECT_CALL(*gl_, IsSync(kGlSync)) |
634 .WillOnce(Return(GL_TRUE)) | 634 .WillOnce(Return(GL_TRUE)) |
635 .RetiresOnSaturation(); | 635 .RetiresOnSaturation(); |
636 #endif | 636 #endif |
637 | 637 |
638 EndQueryEXT end_cmd; | 638 EndQueryEXT end_cmd; |
639 end_cmd.Init(GL_COMMANDS_COMPLETED_CHROMIUM, 1); | 639 end_cmd.Init(GL_COMMANDS_COMPLETED_CHROMIUM, 1); |
640 EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd)); | 640 EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd)); |
641 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 641 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
642 EXPECT_TRUE(query->pending()); | 642 EXPECT_TRUE(query->pending()); |
643 | 643 |
644 #if DCHECK_IS_ON | 644 #if DCHECK_IS_ON() |
645 EXPECT_CALL(*gl_, IsSync(kGlSync)) | 645 EXPECT_CALL(*gl_, IsSync(kGlSync)) |
646 .WillOnce(Return(GL_TRUE)) | 646 .WillOnce(Return(GL_TRUE)) |
647 .RetiresOnSaturation(); | 647 .RetiresOnSaturation(); |
648 #endif | 648 #endif |
649 EXPECT_CALL(*gl_, ClientWaitSync(kGlSync, _, _)) | 649 EXPECT_CALL(*gl_, ClientWaitSync(kGlSync, _, _)) |
650 .WillOnce(Return(GL_TIMEOUT_EXPIRED)) | 650 .WillOnce(Return(GL_TIMEOUT_EXPIRED)) |
651 .RetiresOnSaturation(); | 651 .RetiresOnSaturation(); |
652 bool process_success = query_manager->ProcessPendingQueries(false); | 652 bool process_success = query_manager->ProcessPendingQueries(false); |
653 | 653 |
654 EXPECT_TRUE(process_success); | 654 EXPECT_TRUE(process_success); |
655 EXPECT_TRUE(query->pending()); | 655 EXPECT_TRUE(query->pending()); |
656 | 656 |
657 #if DCHECK_IS_ON | 657 #if DCHECK_IS_ON() |
658 EXPECT_CALL(*gl_, IsSync(kGlSync)) | 658 EXPECT_CALL(*gl_, IsSync(kGlSync)) |
659 .WillOnce(Return(GL_TRUE)) | 659 .WillOnce(Return(GL_TRUE)) |
660 .RetiresOnSaturation(); | 660 .RetiresOnSaturation(); |
661 #endif | 661 #endif |
662 EXPECT_CALL(*gl_, ClientWaitSync(kGlSync, _, _)) | 662 EXPECT_CALL(*gl_, ClientWaitSync(kGlSync, _, _)) |
663 .WillOnce(Return(GL_ALREADY_SIGNALED)) | 663 .WillOnce(Return(GL_ALREADY_SIGNALED)) |
664 .RetiresOnSaturation(); | 664 .RetiresOnSaturation(); |
665 process_success = query_manager->ProcessPendingQueries(false); | 665 process_success = query_manager->ProcessPendingQueries(false); |
666 | 666 |
667 EXPECT_TRUE(process_success); | 667 EXPECT_TRUE(process_success); |
668 EXPECT_FALSE(query->pending()); | 668 EXPECT_FALSE(query->pending()); |
669 | 669 |
670 #if DCHECK_IS_ON | 670 #if DCHECK_IS_ON() |
671 EXPECT_CALL(*gl_, IsSync(kGlSync)) | 671 EXPECT_CALL(*gl_, IsSync(kGlSync)) |
672 .WillOnce(Return(GL_TRUE)) | 672 .WillOnce(Return(GL_TRUE)) |
673 .RetiresOnSaturation(); | 673 .RetiresOnSaturation(); |
674 #endif | 674 #endif |
675 EXPECT_CALL(*gl_, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation(); | 675 EXPECT_CALL(*gl_, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation(); |
676 ResetDecoder(); | 676 ResetDecoder(); |
677 } | 677 } |
678 | 678 |
679 TEST_P(GLES2DecoderTest, IsEnabledReturnsCachedValue) { | 679 TEST_P(GLES2DecoderTest, IsEnabledReturnsCachedValue) { |
680 // NOTE: There are no expectations because no GL functions should be | 680 // NOTE: There are no expectations because no GL functions should be |
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1158 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderManualInitTest, ::testing::Bool()); | 1158 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderManualInitTest, ::testing::Bool()); |
1159 | 1159 |
1160 INSTANTIATE_TEST_CASE_P(Service, | 1160 INSTANTIATE_TEST_CASE_P(Service, |
1161 GLES2DecoderRGBBackbufferTest, | 1161 GLES2DecoderRGBBackbufferTest, |
1162 ::testing::Bool()); | 1162 ::testing::Bool()); |
1163 | 1163 |
1164 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderDoCommandsTest, ::testing::Bool()); | 1164 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderDoCommandsTest, ::testing::Bool()); |
1165 | 1165 |
1166 } // namespace gles2 | 1166 } // namespace gles2 |
1167 } // namespace gpu | 1167 } // namespace gpu |
OLD | NEW |