| 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 |