OLD | NEW |
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 "gpu/command_buffer/service/gles2_cmd_decoder.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
6 | 6 |
7 #include "base/atomicops.h" | 7 #include "base/atomicops.h" |
8 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 8 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
9 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 9 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
10 #include "gpu/command_buffer/common/gl_mock.h" | 10 #include "gpu/command_buffer/common/gl_mock.h" |
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 cmd.Init(kIndexToTest, GL_VERTEX_ATTRIB_ARRAY_POINTER, | 533 cmd.Init(kIndexToTest, GL_VERTEX_ATTRIB_ARRAY_POINTER, |
534 shared_memory_id_, kInvalidSharedMemoryOffset); | 534 shared_memory_id_, kInvalidSharedMemoryOffset); |
535 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 535 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
536 } | 536 } |
537 | 537 |
538 TEST_F(GLES2DecoderWithShaderTest, GetUniformivSucceeds) { | 538 TEST_F(GLES2DecoderWithShaderTest, GetUniformivSucceeds) { |
539 GetUniformiv::Result* result = | 539 GetUniformiv::Result* result = |
540 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 540 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
541 result->size = 0; | 541 result->size = 0; |
542 GetUniformiv cmd; | 542 GetUniformiv cmd; |
543 cmd.Init(client_program_id_, kUniform2Location, | 543 cmd.Init(client_program_id_, |
| 544 program_manager()->SwizzleLocation(kUniform2Location), |
544 kSharedMemoryId, kSharedMemoryOffset); | 545 kSharedMemoryId, kSharedMemoryOffset); |
545 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2Location, _)) | 546 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2Location, _)) |
546 .Times(1); | 547 .Times(1); |
547 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 548 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
548 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 549 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
549 result->size); | 550 result->size); |
550 } | 551 } |
551 | 552 |
552 TEST_F(GLES2DecoderWithShaderTest, GetUniformivArrayElementSucceeds) { | 553 TEST_F(GLES2DecoderWithShaderTest, GetUniformivArrayElementSucceeds) { |
553 GetUniformiv::Result* result = | 554 GetUniformiv::Result* result = |
554 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 555 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
555 result->size = 0; | 556 result->size = 0; |
556 GetUniformiv cmd; | 557 GetUniformiv cmd; |
557 cmd.Init(client_program_id_, kUniform2ElementLocation, | 558 cmd.Init(client_program_id_, |
| 559 program_manager()->SwizzleLocation(kUniform2ElementLocation), |
558 kSharedMemoryId, kSharedMemoryOffset); | 560 kSharedMemoryId, kSharedMemoryOffset); |
559 EXPECT_CALL(*gl_, | 561 EXPECT_CALL(*gl_, |
560 GetUniformiv(kServiceProgramId, kUniform2ElementLocation, _)) | 562 GetUniformiv(kServiceProgramId, kUniform2ElementLocation, _)) |
561 .Times(1); | 563 .Times(1); |
562 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 564 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
563 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 565 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
564 result->size); | 566 result->size); |
565 } | 567 } |
566 | 568 |
567 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadProgramFails) { | 569 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadProgramFails) { |
568 GetUniformiv::Result* result = | 570 GetUniformiv::Result* result = |
569 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 571 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
570 result->size = 0; | 572 result->size = 0; |
571 GetUniformiv cmd; | 573 GetUniformiv cmd; |
572 // non-existant program | 574 // non-existant program |
573 cmd.Init(kInvalidClientId, kUniform2Location, | 575 cmd.Init(kInvalidClientId, |
| 576 program_manager()->SwizzleLocation(kUniform2Location), |
574 kSharedMemoryId, kSharedMemoryOffset); | 577 kSharedMemoryId, kSharedMemoryOffset); |
575 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) | 578 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) |
576 .Times(0); | 579 .Times(0); |
577 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 580 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
578 EXPECT_EQ(0U, result->size); | 581 EXPECT_EQ(0U, result->size); |
579 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 582 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
580 // Valid id that is not a program. The GL spec requires a different error for | 583 // Valid id that is not a program. The GL spec requires a different error for |
581 // this case. | 584 // this case. |
582 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 585 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
583 result->size = kInitialResult; | 586 result->size = kInitialResult; |
584 cmd.Init(client_shader_id_, kUniform2Location, | 587 cmd.Init(client_shader_id_, |
| 588 program_manager()->SwizzleLocation(kUniform2Location), |
585 kSharedMemoryId, kSharedMemoryOffset); | 589 kSharedMemoryId, kSharedMemoryOffset); |
586 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 590 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
587 EXPECT_EQ(0U, result->size); | 591 EXPECT_EQ(0U, result->size); |
588 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 592 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
589 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS | 593 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS |
590 // Unlinked program | 594 // Unlinked program |
591 EXPECT_CALL(*gl_, CreateProgram()) | 595 EXPECT_CALL(*gl_, CreateProgram()) |
592 .Times(1) | 596 .Times(1) |
593 .WillOnce(Return(kNewServiceId)) | 597 .WillOnce(Return(kNewServiceId)) |
594 .RetiresOnSaturation(); | 598 .RetiresOnSaturation(); |
595 CreateProgram cmd2; | 599 CreateProgram cmd2; |
596 cmd2.Init(kNewClientId); | 600 cmd2.Init(kNewClientId); |
597 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 601 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
598 result->size = kInitialResult; | 602 result->size = kInitialResult; |
599 cmd.Init(kNewClientId, kUniform2Location, | 603 cmd.Init(kNewClientId, |
| 604 program_manager()->SwizzleLocation(kUniform2Location), |
600 kSharedMemoryId, kSharedMemoryOffset); | 605 kSharedMemoryId, kSharedMemoryOffset); |
601 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 606 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
602 EXPECT_EQ(0U, result->size); | 607 EXPECT_EQ(0U, result->size); |
603 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 608 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
604 } | 609 } |
605 | 610 |
606 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadLocationFails) { | 611 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadLocationFails) { |
607 GetUniformiv::Result* result = | 612 GetUniformiv::Result* result = |
608 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 613 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
609 result->size = 0; | 614 result->size = 0; |
610 GetUniformiv cmd; | 615 GetUniformiv cmd; |
611 // invalid location | 616 // invalid location |
612 cmd.Init(client_program_id_, kInvalidUniformLocation, | 617 cmd.Init(client_program_id_, kInvalidUniformLocation, |
613 kSharedMemoryId, kSharedMemoryOffset); | 618 kSharedMemoryId, kSharedMemoryOffset); |
614 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) | 619 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) |
615 .Times(0); | 620 .Times(0); |
616 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 621 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
617 EXPECT_EQ(0U, result->size); | 622 EXPECT_EQ(0U, result->size); |
618 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 623 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
619 } | 624 } |
620 | 625 |
621 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadSharedMemoryFails) { | 626 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadSharedMemoryFails) { |
622 GetUniformiv cmd; | 627 GetUniformiv cmd; |
623 cmd.Init(client_program_id_, kUniform2Location, | 628 cmd.Init(client_program_id_, |
| 629 program_manager()->SwizzleLocation(kUniform2Location), |
624 kInvalidSharedMemoryId, kSharedMemoryOffset); | 630 kInvalidSharedMemoryId, kSharedMemoryOffset); |
625 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) | 631 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) |
626 .Times(0); | 632 .Times(0); |
627 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 633 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
628 cmd.Init(client_program_id_, kUniform2Location, | 634 cmd.Init(client_program_id_, kUniform2Location, |
629 kSharedMemoryId, kInvalidSharedMemoryOffset); | 635 kSharedMemoryId, kInvalidSharedMemoryOffset); |
630 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 636 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
631 }; | 637 }; |
632 | 638 |
633 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { | 639 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { |
634 GetUniformfv::Result* result = | 640 GetUniformfv::Result* result = |
635 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 641 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
636 result->size = 0; | 642 result->size = 0; |
637 GetUniformfv cmd; | 643 GetUniformfv cmd; |
638 cmd.Init(client_program_id_, kUniform2Location, | 644 cmd.Init(client_program_id_, |
| 645 program_manager()->SwizzleLocation(kUniform2Location), |
639 kSharedMemoryId, kSharedMemoryOffset); | 646 kSharedMemoryId, kSharedMemoryOffset); |
640 EXPECT_CALL(*gl_, GetUniformfv(kServiceProgramId, kUniform2Location, _)) | 647 EXPECT_CALL(*gl_, GetUniformfv(kServiceProgramId, kUniform2Location, _)) |
641 .Times(1); | 648 .Times(1); |
642 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 649 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
643 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 650 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
644 result->size); | 651 result->size); |
645 } | 652 } |
646 | 653 |
647 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvArrayElementSucceeds) { | 654 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvArrayElementSucceeds) { |
648 GetUniformfv::Result* result = | 655 GetUniformfv::Result* result = |
649 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 656 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
650 result->size = 0; | 657 result->size = 0; |
651 GetUniformfv cmd; | 658 GetUniformfv cmd; |
652 cmd.Init(client_program_id_, kUniform2ElementLocation, | 659 cmd.Init(client_program_id_, |
| 660 program_manager()->SwizzleLocation(kUniform2ElementLocation), |
653 kSharedMemoryId, kSharedMemoryOffset); | 661 kSharedMemoryId, kSharedMemoryOffset); |
654 EXPECT_CALL(*gl_, | 662 EXPECT_CALL(*gl_, |
655 GetUniformfv(kServiceProgramId, kUniform2ElementLocation, _)) | 663 GetUniformfv(kServiceProgramId, kUniform2ElementLocation, _)) |
656 .Times(1); | 664 .Times(1); |
657 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 665 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
658 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 666 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
659 result->size); | 667 result->size); |
660 } | 668 } |
661 | 669 |
662 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadProgramFails) { | 670 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadProgramFails) { |
663 GetUniformfv::Result* result = | 671 GetUniformfv::Result* result = |
664 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 672 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
665 result->size = 0; | 673 result->size = 0; |
666 GetUniformfv cmd; | 674 GetUniformfv cmd; |
667 // non-existant program | 675 // non-existant program |
668 cmd.Init(kInvalidClientId, kUniform2Location, | 676 cmd.Init(kInvalidClientId, |
| 677 program_manager()->SwizzleLocation(kUniform2Location), |
669 kSharedMemoryId, kSharedMemoryOffset); | 678 kSharedMemoryId, kSharedMemoryOffset); |
670 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) | 679 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) |
671 .Times(0); | 680 .Times(0); |
672 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 681 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
673 EXPECT_EQ(0U, result->size); | 682 EXPECT_EQ(0U, result->size); |
674 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 683 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
675 // Valid id that is not a program. The GL spec requires a different error for | 684 // Valid id that is not a program. The GL spec requires a different error for |
676 // this case. | 685 // this case. |
677 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 686 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
678 result->size = kInitialResult; | 687 result->size = kInitialResult; |
679 cmd.Init(client_shader_id_, kUniform2Location, | 688 cmd.Init(client_shader_id_, |
| 689 program_manager()->SwizzleLocation(kUniform2Location), |
680 kSharedMemoryId, kSharedMemoryOffset); | 690 kSharedMemoryId, kSharedMemoryOffset); |
681 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 691 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
682 EXPECT_EQ(0U, result->size); | 692 EXPECT_EQ(0U, result->size); |
683 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 693 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
684 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS | 694 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS |
685 // Unlinked program | 695 // Unlinked program |
686 EXPECT_CALL(*gl_, CreateProgram()) | 696 EXPECT_CALL(*gl_, CreateProgram()) |
687 .Times(1) | 697 .Times(1) |
688 .WillOnce(Return(kNewServiceId)) | 698 .WillOnce(Return(kNewServiceId)) |
689 .RetiresOnSaturation(); | 699 .RetiresOnSaturation(); |
690 CreateProgram cmd2; | 700 CreateProgram cmd2; |
691 cmd2.Init(kNewClientId); | 701 cmd2.Init(kNewClientId); |
692 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 702 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
693 result->size = kInitialResult; | 703 result->size = kInitialResult; |
694 cmd.Init(kNewClientId, kUniform2Location, | 704 cmd.Init(kNewClientId, program_manager()->SwizzleLocation(kUniform2Location), |
695 kSharedMemoryId, kSharedMemoryOffset); | 705 kSharedMemoryId, kSharedMemoryOffset); |
696 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 706 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
697 EXPECT_EQ(0U, result->size); | 707 EXPECT_EQ(0U, result->size); |
698 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 708 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
699 } | 709 } |
700 | 710 |
701 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadLocationFails) { | 711 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadLocationFails) { |
702 GetUniformfv::Result* result = | 712 GetUniformfv::Result* result = |
703 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 713 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
704 result->size = 0; | 714 result->size = 0; |
705 GetUniformfv cmd; | 715 GetUniformfv cmd; |
706 // invalid location | 716 // invalid location |
707 cmd.Init(client_program_id_, kInvalidUniformLocation, | 717 cmd.Init(client_program_id_, kInvalidUniformLocation, |
708 kSharedMemoryId, kSharedMemoryOffset); | 718 kSharedMemoryId, kSharedMemoryOffset); |
709 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) | 719 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) |
710 .Times(0); | 720 .Times(0); |
711 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 721 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
712 EXPECT_EQ(0U, result->size); | 722 EXPECT_EQ(0U, result->size); |
713 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 723 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
714 } | 724 } |
715 | 725 |
716 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadSharedMemoryFails) { | 726 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadSharedMemoryFails) { |
717 GetUniformfv cmd; | 727 GetUniformfv cmd; |
718 cmd.Init(client_program_id_, kUniform2Location, | 728 cmd.Init(client_program_id_, |
| 729 program_manager()->SwizzleLocation(kUniform2Location), |
719 kInvalidSharedMemoryId, kSharedMemoryOffset); | 730 kInvalidSharedMemoryId, kSharedMemoryOffset); |
720 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) | 731 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) |
721 .Times(0); | 732 .Times(0); |
722 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 733 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
723 cmd.Init(client_program_id_, kUniform2Location, | 734 cmd.Init(client_program_id_, kUniform2Location, |
724 kSharedMemoryId, kInvalidSharedMemoryOffset); | 735 kSharedMemoryId, kInvalidSharedMemoryOffset); |
725 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 736 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
726 }; | 737 }; |
727 | 738 |
728 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersSucceeds) { | 739 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersSucceeds) { |
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1224 0, 0); | 1235 0, 0); |
1225 GenerateMipmap cmd; | 1236 GenerateMipmap cmd; |
1226 cmd.Init(GL_TEXTURE_2D); | 1237 cmd.Init(GL_TEXTURE_2D); |
1227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1238 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1228 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1239 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
1229 } | 1240 } |
1230 | 1241 |
1231 TEST_F(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { | 1242 TEST_F(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { |
1232 EXPECT_CALL(*gl_, Uniform1i(kUniform1Location, 2)); | 1243 EXPECT_CALL(*gl_, Uniform1i(kUniform1Location, 2)); |
1233 Uniform1i cmd; | 1244 Uniform1i cmd; |
1234 cmd.Init(kUniform1Location, 2); | 1245 cmd.Init(program_manager()->SwizzleLocation(kUniform1Location), 2); |
1235 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1246 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1236 } | 1247 } |
1237 | 1248 |
1238 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) { | 1249 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) { |
1239 EXPECT_CALL( | 1250 EXPECT_CALL( |
1240 *gl_, Uniform1iv( | 1251 *gl_, Uniform1iv(kUniform1Location, 1, |
1241 kUniform1Location, 1, | |
1242 reinterpret_cast<const GLint*>(shared_memory_address_))); | 1252 reinterpret_cast<const GLint*>(shared_memory_address_))); |
1243 Uniform1iv cmd; | 1253 Uniform1iv cmd; |
1244 cmd.Init(kUniform1Location, 1, shared_memory_id_, shared_memory_offset_); | 1254 cmd.Init(program_manager()->SwizzleLocation(kUniform1Location), |
| 1255 1, shared_memory_id_, shared_memory_offset_); |
1245 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1256 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1246 } | 1257 } |
1247 | 1258 |
1248 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) { | 1259 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) { |
1249 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 1260 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
1250 Uniform1iv cmd; | 1261 Uniform1iv cmd; |
1251 cmd.Init(kUniform1Location, 1, kInvalidSharedMemoryId, 0); | 1262 cmd.Init(program_manager()->SwizzleLocation(kUniform1Location), |
| 1263 1, kInvalidSharedMemoryId, 0); |
1252 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); | 1264 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); |
1253 } | 1265 } |
1254 | 1266 |
1255 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_1) { | 1267 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_1) { |
1256 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 1268 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
1257 Uniform1iv cmd; | 1269 Uniform1iv cmd; |
1258 cmd.Init(kUniform1Location, 1, shared_memory_id_, kInvalidSharedMemoryOffset); | 1270 cmd.Init(program_manager()->SwizzleLocation(kUniform1Location), |
| 1271 1, shared_memory_id_, kInvalidSharedMemoryOffset); |
1259 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); | 1272 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); |
1260 } | 1273 } |
1261 | 1274 |
1262 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { | 1275 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { |
1263 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); | 1276 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); |
1264 EXPECT_CALL( | 1277 EXPECT_CALL( |
1265 *gl_, | 1278 *gl_, |
1266 Uniform1iv(kUniform1Location, 1, | 1279 Uniform1iv(kUniform1Location, 1, |
1267 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); | 1280 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); |
1268 GLint temp[1 * 2] = { 0, }; | 1281 GLint temp[1 * 2] = { 0, }; |
1269 cmd.Init(kUniform1Location, 1, &temp[0]); | 1282 cmd.Init(program_manager()->SwizzleLocation(kUniform1Location), 1, &temp[0]); |
1270 EXPECT_EQ(error::kNoError, | 1283 EXPECT_EQ(error::kNoError, |
1271 ExecuteImmediateCmd(cmd, sizeof(temp))); | 1284 ExecuteImmediateCmd(cmd, sizeof(temp))); |
1272 } | 1285 } |
1273 | 1286 |
1274 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidValidArgs) { | 1287 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidValidArgs) { |
1275 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 1288 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
1276 Uniform1iv cmd; | 1289 Uniform1iv cmd; |
1277 cmd.Init(kUniform1Location, 2, shared_memory_id_, shared_memory_offset_); | 1290 cmd.Init(program_manager()->SwizzleLocation(kUniform1Location), |
| 1291 2, shared_memory_id_, shared_memory_offset_); |
1278 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1292 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1279 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1293 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
1280 } | 1294 } |
1281 | 1295 |
1282 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivZeroCount) { | 1296 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivZeroCount) { |
1283 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 1297 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
1284 Uniform1iv cmd; | 1298 Uniform1iv cmd; |
1285 cmd.Init(kUniform1Location, 0, shared_memory_id_, shared_memory_offset_); | 1299 cmd.Init(program_manager()->SwizzleLocation(kUniform1Location), |
| 1300 0, shared_memory_id_, shared_memory_offset_); |
1286 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1301 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1287 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1302 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
1288 } | 1303 } |
1289 | 1304 |
1290 | 1305 |
1291 TEST_F(GLES2DecoderWithShaderTest, BindBufferToDifferentTargetFails) { | 1306 TEST_F(GLES2DecoderWithShaderTest, BindBufferToDifferentTargetFails) { |
1292 // Bind the buffer to GL_ARRAY_BUFFER | 1307 // Bind the buffer to GL_ARRAY_BUFFER |
1293 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); | 1308 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); |
1294 // Attempt to rebind to GL_ELEMENT_ARRAY_BUFFER | 1309 // Attempt to rebind to GL_ELEMENT_ARRAY_BUFFER |
1295 // NOTE: Real GLES2 does not have this restriction but WebGL and we do. | 1310 // NOTE: Real GLES2 does not have this restriction but WebGL and we do. |
(...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2139 *result = -1; | 2154 *result = -1; |
2140 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); | 2155 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); |
2141 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); | 2156 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); |
2142 memcpy(name, kUniform2Name, kNameSize); | 2157 memcpy(name, kUniform2Name, kNameSize); |
2143 GetUniformLocation cmd; | 2158 GetUniformLocation cmd; |
2144 cmd.Init(client_program_id_, | 2159 cmd.Init(client_program_id_, |
2145 kSharedMemoryId, kNameOffset, | 2160 kSharedMemoryId, kNameOffset, |
2146 kSharedMemoryId, kSharedMemoryOffset, | 2161 kSharedMemoryId, kSharedMemoryOffset, |
2147 kNameSize); | 2162 kNameSize); |
2148 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2163 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2149 EXPECT_EQ(kUniform2Location, *result); | 2164 EXPECT_EQ(program_manager()->SwizzleLocation(kUniform2Location), *result); |
2150 memcpy(name, kNonExistentName, kNonExistentNameSize); | 2165 memcpy(name, kNonExistentName, kNonExistentNameSize); |
2151 *result = -1; | 2166 *result = -1; |
2152 cmd.Init(client_program_id_, | 2167 cmd.Init(client_program_id_, |
2153 kSharedMemoryId, kNameOffset, | 2168 kSharedMemoryId, kNameOffset, |
2154 kSharedMemoryId, kSharedMemoryOffset, | 2169 kSharedMemoryId, kSharedMemoryOffset, |
2155 kNonExistentNameSize); | 2170 kNonExistentNameSize); |
2156 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2171 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2157 EXPECT_EQ(-1, *result); | 2172 EXPECT_EQ(-1, *result); |
2158 } | 2173 } |
2159 | 2174 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2220 const char* kNonExistentName = "foobar"; | 2235 const char* kNonExistentName = "foobar"; |
2221 const uint32 kNonExistentNameSize = strlen(kNonExistentName); | 2236 const uint32 kNonExistentNameSize = strlen(kNonExistentName); |
2222 typedef GetUniformLocationImmediate::Result Result; | 2237 typedef GetUniformLocationImmediate::Result Result; |
2223 Result* result = GetSharedMemoryAs<Result*>(); | 2238 Result* result = GetSharedMemoryAs<Result*>(); |
2224 *result = -1; | 2239 *result = -1; |
2225 GetUniformLocationImmediate& cmd = | 2240 GetUniformLocationImmediate& cmd = |
2226 *GetImmediateAs<GetUniformLocationImmediate>(); | 2241 *GetImmediateAs<GetUniformLocationImmediate>(); |
2227 cmd.Init(client_program_id_, kUniform2Name, | 2242 cmd.Init(client_program_id_, kUniform2Name, |
2228 kSharedMemoryId, kSharedMemoryOffset); | 2243 kSharedMemoryId, kSharedMemoryOffset); |
2229 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, kNameSize)); | 2244 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, kNameSize)); |
2230 EXPECT_EQ(kUniform2Location, *result); | 2245 EXPECT_EQ(program_manager()->SwizzleLocation(kUniform2Location), *result); |
2231 *result = -1; | 2246 *result = -1; |
2232 cmd.Init(client_program_id_, kNonExistentName, | 2247 cmd.Init(client_program_id_, kNonExistentName, |
2233 kSharedMemoryId, kSharedMemoryOffset); | 2248 kSharedMemoryId, kSharedMemoryOffset); |
2234 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, kNonExistentNameSize)); | 2249 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, kNonExistentNameSize)); |
2235 EXPECT_EQ(-1, *result); | 2250 EXPECT_EQ(-1, *result); |
2236 } | 2251 } |
2237 | 2252 |
2238 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationImmediateInvalidArgs) { | 2253 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationImmediateInvalidArgs) { |
2239 const uint32 kNameSize = strlen(kUniform2Name); | 2254 const uint32 kNameSize = strlen(kUniform2Name); |
2240 typedef GetUniformLocationImmediate::Result Result; | 2255 typedef GetUniformLocationImmediate::Result Result; |
(...skipping 21 matching lines...) Expand all Loading... |
2262 const uint32 kBucketId = 123; | 2277 const uint32 kBucketId = 123; |
2263 const char* kNonExistentName = "foobar"; | 2278 const char* kNonExistentName = "foobar"; |
2264 typedef GetUniformLocationBucket::Result Result; | 2279 typedef GetUniformLocationBucket::Result Result; |
2265 Result* result = GetSharedMemoryAs<Result*>(); | 2280 Result* result = GetSharedMemoryAs<Result*>(); |
2266 SetBucketAsCString(kBucketId, kUniform2Name); | 2281 SetBucketAsCString(kBucketId, kUniform2Name); |
2267 *result = -1; | 2282 *result = -1; |
2268 GetUniformLocationBucket cmd; | 2283 GetUniformLocationBucket cmd; |
2269 cmd.Init(client_program_id_, kBucketId, | 2284 cmd.Init(client_program_id_, kBucketId, |
2270 kSharedMemoryId, kSharedMemoryOffset); | 2285 kSharedMemoryId, kSharedMemoryOffset); |
2271 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2286 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2272 EXPECT_EQ(kUniform2Location, *result); | 2287 EXPECT_EQ(program_manager()->SwizzleLocation(kUniform2Location), *result); |
2273 SetBucketAsCString(kBucketId, kNonExistentName); | 2288 SetBucketAsCString(kBucketId, kNonExistentName); |
2274 *result = -1; | 2289 *result = -1; |
2275 cmd.Init(client_program_id_, kBucketId, | 2290 cmd.Init(client_program_id_, kBucketId, |
2276 kSharedMemoryId, kSharedMemoryOffset); | 2291 kSharedMemoryId, kSharedMemoryOffset); |
2277 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2292 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2278 EXPECT_EQ(-1, *result); | 2293 EXPECT_EQ(-1, *result); |
2279 } | 2294 } |
2280 | 2295 |
2281 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationBucketInvalidArgs) { | 2296 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationBucketInvalidArgs) { |
2282 const uint32 kBucketId = 123; | 2297 const uint32 kBucketId = 123; |
(...skipping 3680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5963 // TODO(gman): TexImage2DImmediate | 5978 // TODO(gman): TexImage2DImmediate |
5964 | 5979 |
5965 // TODO(gman): TexSubImage2DImmediate | 5980 // TODO(gman): TexSubImage2DImmediate |
5966 | 5981 |
5967 // TODO(gman): UseProgram | 5982 // TODO(gman): UseProgram |
5968 | 5983 |
5969 // TODO(gman): SwapBuffers | 5984 // TODO(gman): SwapBuffers |
5970 | 5985 |
5971 } // namespace gles2 | 5986 } // namespace gles2 |
5972 } // namespace gpu | 5987 } // namespace gpu |
OLD | NEW |