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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc

Issue 863253002: Update from https://crrev.com/312600 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 11 months 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/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 675 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS 686 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
687 cmd.Init(client_program_id_); 687 cmd.Init(client_program_id_);
688 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 688 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
689 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 689 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
690 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS 690 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS
691 } 691 }
692 692
693 TEST_P(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) { 693 TEST_P(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) {
694 const uint32 kInBucketId = 123; 694 const uint32 kInBucketId = 123;
695 const uint32 kOutBucketId = 125; 695 const uint32 kOutBucketId = 125;
696 const char kSource[] = "hello"; 696 const char kSource0[] = "hello";
697 const uint32 kSourceSize = sizeof(kSource) - 1; 697 const char* kSource[] = { kSource0 };
698 SetBucketAsCString(kInBucketId, kSource); 698 const char kValidStrEnd = 0;
699 SetBucketAsCStrings(kInBucketId, 1, kSource, 1, kValidStrEnd);
699 ShaderSourceBucket cmd; 700 ShaderSourceBucket cmd;
700 cmd.Init(client_shader_id_, kInBucketId); 701 cmd.Init(client_shader_id_, kInBucketId);
701 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 702 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
702 ClearSharedMemory(); 703 ClearSharedMemory();
703 GetShaderSource get_cmd; 704 GetShaderSource get_cmd;
704 get_cmd.Init(client_shader_id_, kOutBucketId); 705 get_cmd.Init(client_shader_id_, kOutBucketId);
705 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd)); 706 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd));
706 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kOutBucketId); 707 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kOutBucketId);
707 ASSERT_TRUE(bucket != NULL); 708 ASSERT_TRUE(bucket != NULL);
708 EXPECT_EQ(kSourceSize + 1, bucket->size()); 709 EXPECT_EQ(sizeof(kSource0), bucket->size());
709 EXPECT_EQ( 710 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()),
710 0, memcmp(bucket->GetData(0, bucket->size()), kSource, bucket->size())); 711 kSource0, bucket->size()));
711 } 712 }
712 713
713 TEST_P(GLES2DecoderTest, ShaderSourceBucketInvalidArgs) { 714 TEST_P(GLES2DecoderTest, ShaderSourceBucketInvalidArgs) {
714 const uint32 kBucketId = 123; 715 const uint32 kBucketId = 123;
715 const char kSource[] = "hello"; 716 const char kSource0[] = "hello";
716 const uint32 kSourceSize = sizeof(kSource) - 1; 717 const char* kSource[] = { kSource0 };
717 memcpy(shared_memory_address_, kSource, kSourceSize); 718 const char kValidStrEnd = 0;
718 ShaderSourceBucket cmd; 719 ShaderSourceBucket cmd;
719 // Test no bucket. 720 // Test no bucket.
720 cmd.Init(client_texture_id_, kBucketId); 721 cmd.Init(client_shader_id_, kBucketId);
721 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 722 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
722 // Test invalid client. 723 // Test invalid client.
723 SetBucketAsCString(kBucketId, kSource); 724 SetBucketAsCStrings(kBucketId, 1, kSource, 1, kValidStrEnd);
724 cmd.Init(kInvalidClientId, kBucketId); 725 cmd.Init(kInvalidClientId, kBucketId);
725 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 726 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
726 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 727 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
727 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS 728 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
728 SetBucketAsCString(kBucketId, kSource); 729 SetBucketAsCStrings(kBucketId, 1, kSource);
729 cmd.Init( 730 cmd.Init(
730 client_program_id_, kBucketId); 731 client_program_id_, kBucketId);
731 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 732 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
732 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 733 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
733 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS 734 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS
734 } 735 }
735 736
736 TEST_P(GLES2DecoderTest, ShaderSourceStripComments) { 737 TEST_P(GLES2DecoderTest, ShaderSourceStripComments) {
737 const uint32 kInBucketId = 123; 738 const uint32 kInBucketId = 123;
738 const char kSource[] = "hello/*te\ast*/world//a\ab"; 739 const char kSource0[] = "hello/*te\ast*/world//a\ab";
739 SetBucketAsCString(kInBucketId, kSource); 740 const char* kSource[] = { kSource0 };
741 const char kValidStrEnd = 0;
742 SetBucketAsCStrings(kInBucketId, 1, kSource, 1, kValidStrEnd);
740 ShaderSourceBucket cmd; 743 ShaderSourceBucket cmd;
741 cmd.Init(client_shader_id_, kInBucketId); 744 cmd.Init(client_shader_id_, kInBucketId);
742 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 745 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
743 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 746 EXPECT_EQ(GL_NO_ERROR, GetGLError());
744 } 747 }
745 748
749 TEST_P(GLES2DecoderTest, ShaderSourceInvalidHeader) {
750 const uint32 kInBucketId = 123;
751 const char kSource0[] = "hello";
752 const char* kSource[] = { kSource0 };
753 const char kValidStrEnd = 0;
754 const GLsizei kCount = 1;
755 const GLsizei kTests[] = {
756 kCount + 1,
757 0,
758 std::numeric_limits<GLsizei>::max(),
759 -1,
760 kCount
761 };
762 size_t kTestCount = 5;
763 for (size_t ii = 0; ii < kTestCount; ++ii) {
764 SetBucketAsCStrings(kInBucketId, 1, kSource, kTests[ii], kValidStrEnd);
765 ShaderSourceBucket cmd;
766 cmd.Init(client_shader_id_, kInBucketId);
767 if (kTests[ii] == kCount) {
768 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
769 } else {
770 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
771 }
772 }
773 EXPECT_EQ(GL_NO_ERROR, GetGLError());
774 }
775
776 TEST_P(GLES2DecoderTest, ShaderSourceInvalidStringEnding) {
777 const uint32 kInBucketId = 123;
778 const char kSource0[] = "hello";
779 const char* kSource[] = { kSource0 };
780 const char kInvalidStrEnd = '*';
781 SetBucketAsCStrings(kInBucketId, 1, kSource, 1, kInvalidStrEnd);
782 ShaderSourceBucket cmd;
783 cmd.Init(client_shader_id_, kInBucketId);
784 EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
785 EXPECT_EQ(GL_NO_ERROR, GetGLError());
786 }
787
746 TEST_P(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { 788 TEST_P(GLES2DecoderWithShaderTest, Uniform1iValidArgs) {
747 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); 789 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2));
748 Uniform1i cmd; 790 Uniform1i cmd;
749 cmd.Init(kUniform1FakeLocation, 2); 791 cmd.Init(kUniform1FakeLocation, 2);
750 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 792 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
751 } 793 }
752 794
753 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { 795 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) {
754 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); 796 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>();
755 EXPECT_CALL(*gl_, 797 EXPECT_CALL(*gl_,
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1036 } 1078 }
1037 1079
1038 // TODO(gman): DeleteProgram 1080 // TODO(gman): DeleteProgram
1039 1081
1040 // TODO(gman): UseProgram 1082 // TODO(gman): UseProgram
1041 1083
1042 // TODO(gman): DeleteShader 1084 // TODO(gman): DeleteShader
1043 1085
1044 } // namespace gles2 1086 } // namespace gles2
1045 } // namespace gpu 1087 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698