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

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

Issue 282253002: Remove unneeded shm versions of bucket functions from command buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@no-shm-for-immediate-commands
Patch Set: rebase (1 new added hunk) Created 6 years, 6 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 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 cmd.Init(kInvalidClientId); 684 cmd.Init(kInvalidClientId);
685 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 685 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
686 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 686 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
687 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS 687 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
688 cmd.Init(client_program_id_); 688 cmd.Init(client_program_id_);
689 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 689 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
690 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 690 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
691 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS 691 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS
692 } 692 }
693 693
694 TEST_P(GLES2DecoderTest, ShaderSourceAndGetShaderSourceValidArgs) {
695 const uint32 kBucketId = 123;
696 const char kSource[] = "hello";
697 const uint32 kSourceSize = sizeof(kSource) - 1;
698 memcpy(shared_memory_address_, kSource, kSourceSize);
699 ShaderSource cmd;
700 cmd.Init(
701 client_shader_id_, kSharedMemoryId, kSharedMemoryOffset, kSourceSize);
702 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
703 memset(shared_memory_address_, 0, kSourceSize);
704 GetShaderSource get_cmd;
705 get_cmd.Init(client_shader_id_, kBucketId);
706 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd));
707 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
708 ASSERT_TRUE(bucket != NULL);
709 EXPECT_EQ(kSourceSize + 1, bucket->size());
710 EXPECT_EQ(
711 0, memcmp(bucket->GetData(0, bucket->size()), kSource, bucket->size()));
712 }
713
714 TEST_P(GLES2DecoderTest, ShaderSourceInvalidArgs) {
715 const char kSource[] = "hello";
716 const uint32 kSourceSize = sizeof(kSource) - 1;
717 memcpy(shared_memory_address_, kSource, kSourceSize);
718 ShaderSource cmd;
719 cmd.Init(kInvalidClientId, kSharedMemoryId, kSharedMemoryOffset, kSourceSize);
720 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
721 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
722 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
723 cmd.Init(
724 client_program_id_, kSharedMemoryId, kSharedMemoryOffset, kSourceSize);
725 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
726 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
727 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS
728 cmd.Init(client_shader_id_,
729 kInvalidSharedMemoryId,
730 kSharedMemoryOffset,
731 kSourceSize);
732 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
733 cmd.Init(client_shader_id_,
734 kSharedMemoryId,
735 kInvalidSharedMemoryOffset,
736 kSourceSize);
737 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
738 cmd.Init(client_shader_id_,
739 kSharedMemoryId,
740 kSharedMemoryOffset,
741 kSharedBufferSize);
742 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
743 }
744
745 TEST_P(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) { 694 TEST_P(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) {
746 const uint32 kInBucketId = 123; 695 const uint32 kInBucketId = 123;
747 const uint32 kOutBucketId = 125; 696 const uint32 kOutBucketId = 125;
748 const char kSource[] = "hello"; 697 const char kSource[] = "hello";
749 const uint32 kSourceSize = sizeof(kSource) - 1; 698 const uint32 kSourceSize = sizeof(kSource) - 1;
750 SetBucketAsCString(kInBucketId, kSource); 699 SetBucketAsCString(kInBucketId, kSource);
751 ShaderSourceBucket cmd; 700 ShaderSourceBucket cmd;
752 cmd.Init(client_shader_id_, kInBucketId); 701 cmd.Init(client_shader_id_, kInBucketId);
753 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 702 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
754 ClearSharedMemory(); 703 ClearSharedMemory();
(...skipping 14 matching lines...) Expand all
769 memcpy(shared_memory_address_, kSource, kSourceSize); 718 memcpy(shared_memory_address_, kSource, kSourceSize);
770 ShaderSourceBucket cmd; 719 ShaderSourceBucket cmd;
771 // Test no bucket. 720 // Test no bucket.
772 cmd.Init(client_texture_id_, kBucketId); 721 cmd.Init(client_texture_id_, kBucketId);
773 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 722 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
774 // Test invalid client. 723 // Test invalid client.
775 SetBucketAsCString(kBucketId, kSource); 724 SetBucketAsCString(kBucketId, kSource);
776 cmd.Init(kInvalidClientId, kBucketId); 725 cmd.Init(kInvalidClientId, kBucketId);
777 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 726 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
778 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 727 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
728 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
729 SetBucketAsCString(kBucketId, kSource);
730 cmd.Init(
731 client_program_id_, kBucketId);
732 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
733 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
734 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS
779 } 735 }
780 736
781 TEST_P(GLES2DecoderTest, ShaderSourceStripComments) { 737 TEST_P(GLES2DecoderTest, ShaderSourceStripComments) {
782 const uint32 kInBucketId = 123; 738 const uint32 kInBucketId = 123;
783 const char kSource[] = "hello/*te\ast*/world//a\ab"; 739 const char kSource[] = "hello/*te\ast*/world//a\ab";
784 SetBucketAsCString(kInBucketId, kSource); 740 SetBucketAsCString(kInBucketId, kSource);
785 ShaderSourceBucket cmd; 741 ShaderSourceBucket cmd;
786 cmd.Init(client_shader_id_, kInBucketId); 742 cmd.Init(client_shader_id_, kInBucketId);
787 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 743 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
788 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 744 EXPECT_EQ(GL_NO_ERROR, GetGLError());
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 794
839 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivSamplerIsLimited) { 795 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivSamplerIsLimited) {
840 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); 796 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0);
841 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); 797 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>();
842 GLint temp[] = {kNumTextureUnits}; 798 GLint temp[] = {kNumTextureUnits};
843 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); 799 cmd.Init(kUniform1FakeLocation, 1, &temp[0]);
844 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 800 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
845 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 801 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
846 } 802 }
847 803
848 TEST_P(GLES2DecoderTest, BindAttribLocation) {
849 const GLint kLocation = 2;
850 const char* kName = "testing";
851 const uint32 kNameSize = strlen(kName);
852 EXPECT_CALL(*gl_,
853 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName)))
854 .Times(1);
855 memcpy(shared_memory_address_, kName, kNameSize);
856 BindAttribLocation cmd;
857 cmd.Init(client_program_id_,
858 kLocation,
859 kSharedMemoryId,
860 kSharedMemoryOffset,
861 kNameSize);
862 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
863 }
864
865 TEST_P(GLES2DecoderTest, BindAttribLocationInvalidArgs) {
866 const GLint kLocation = 2;
867 const char* kName = "testing";
868 const char* kBadName = "test\aing";
869 const uint32 kNameSize = strlen(kName);
870 const uint32 kBadNameSize = strlen(kBadName);
871 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0);
872 memcpy(shared_memory_address_, kName, kNameSize);
873 BindAttribLocation cmd;
874 cmd.Init(kInvalidClientId,
875 kLocation,
876 kSharedMemoryId,
877 kSharedMemoryOffset,
878 kNameSize);
879 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
880 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
881 cmd.Init(client_program_id_,
882 kLocation,
883 kInvalidSharedMemoryId,
884 kSharedMemoryOffset,
885 kNameSize);
886 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
887 cmd.Init(client_program_id_,
888 kLocation,
889 kSharedMemoryId,
890 kInvalidSharedMemoryOffset,
891 kNameSize);
892 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
893 cmd.Init(client_program_id_,
894 kLocation,
895 kSharedMemoryId,
896 kSharedMemoryOffset,
897 kSharedBufferSize);
898 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
899 memcpy(shared_memory_address_, kBadName, kBadNameSize);
900 cmd.Init(client_program_id_,
901 kLocation,
902 kSharedMemoryId,
903 kSharedMemoryOffset,
904 kBadNameSize);
905 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
906 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
907 }
908
909 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) { 804 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) {
910 const uint32 kBucketId = 123; 805 const uint32 kBucketId = 123;
911 const GLint kLocation = 2; 806 const GLint kLocation = 2;
912 const char* kName = "testing"; 807 const char* kName = "testing";
913 EXPECT_CALL(*gl_, 808 EXPECT_CALL(*gl_,
914 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) 809 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName)))
915 .Times(1); 810 .Times(1);
916 SetBucketAsCString(kBucketId, kName); 811 SetBucketAsCString(kBucketId, kName);
917 BindAttribLocationBucket cmd; 812 BindAttribLocationBucket cmd;
918 cmd.Init(client_program_id_, kLocation, kBucketId); 813 cmd.Init(client_program_id_, kLocation, kBucketId);
(...skipping 14 matching lines...) Expand all
933 cmd.Init(client_program_id_, kLocation, kBucketId); 828 cmd.Init(client_program_id_, kLocation, kBucketId);
934 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 829 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
935 // Check bad program id 830 // Check bad program id
936 SetBucketAsCString(kBucketId, kName); 831 SetBucketAsCString(kBucketId, kName);
937 cmd.Init(kInvalidClientId, kLocation, kBucketId); 832 cmd.Init(kInvalidClientId, kLocation, kBucketId);
938 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 833 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
939 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 834 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
940 } 835 }
941 836
942 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocation) { 837 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocation) {
943 const uint32 kNameSize = strlen(kAttrib2Name);
944 const char* kNonExistentName = "foobar";
945 const uint32 kNonExistentNameSize = strlen(kNonExistentName);
946 typedef GetAttribLocation::Result Result;
947 Result* result = GetSharedMemoryAs<Result*>();
948 *result = -1;
949 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result));
950 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result);
951 memcpy(name, kAttrib2Name, kNameSize);
952 GetAttribLocation cmd;
953 cmd.Init(client_program_id_,
954 kSharedMemoryId,
955 kNameOffset,
956 kSharedMemoryId,
957 kSharedMemoryOffset,
958 kNameSize);
959 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
960 EXPECT_EQ(kAttrib2Location, *result);
961 *result = -1;
962 memcpy(name, kNonExistentName, kNonExistentNameSize);
963 cmd.Init(client_program_id_,
964 kSharedMemoryId,
965 kNameOffset,
966 kSharedMemoryId,
967 kSharedMemoryOffset,
968 kNonExistentNameSize);
969 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
970 EXPECT_EQ(-1, *result);
971 }
972
973 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationInvalidArgs) {
974 const uint32 kNameSize = strlen(kAttrib2Name);
975 const char* kBadName = "foo\abar";
976 const uint32 kBadNameSize = strlen(kBadName);
977 typedef GetAttribLocation::Result Result;
978 Result* result = GetSharedMemoryAs<Result*>();
979 *result = -1;
980 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result));
981 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result);
982 memcpy(name, kAttrib2Name, kNameSize);
983 GetAttribLocation cmd;
984 cmd.Init(kInvalidClientId,
985 kSharedMemoryId,
986 kNameOffset,
987 kSharedMemoryId,
988 kSharedMemoryOffset,
989 kNameSize);
990 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
991 EXPECT_EQ(-1, *result);
992 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
993 *result = -1;
994 cmd.Init(client_program_id_,
995 kInvalidSharedMemoryId,
996 kNameOffset,
997 kSharedMemoryId,
998 kSharedMemoryOffset,
999 kNameSize);
1000 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1001 EXPECT_EQ(-1, *result);
1002 cmd.Init(client_program_id_,
1003 kSharedMemoryId,
1004 kInvalidSharedMemoryOffset,
1005 kSharedMemoryId,
1006 kSharedMemoryOffset,
1007 kNameSize);
1008 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1009 EXPECT_EQ(-1, *result);
1010 cmd.Init(client_program_id_,
1011 kSharedMemoryId,
1012 kNameOffset,
1013 kInvalidSharedMemoryId,
1014 kSharedMemoryOffset,
1015 kNameSize);
1016 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1017 EXPECT_EQ(-1, *result);
1018 cmd.Init(client_program_id_,
1019 kSharedMemoryId,
1020 kNameOffset,
1021 kSharedMemoryId,
1022 kInvalidSharedMemoryOffset,
1023 kNameSize);
1024 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1025 EXPECT_EQ(-1, *result);
1026 cmd.Init(client_program_id_,
1027 kSharedMemoryId,
1028 kNameOffset,
1029 kSharedMemoryId,
1030 kSharedMemoryOffset,
1031 kSharedBufferSize);
1032 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1033 EXPECT_EQ(-1, *result);
1034 memcpy(name, kBadName, kBadNameSize);
1035 cmd.Init(client_program_id_,
1036 kSharedMemoryId,
1037 kNameOffset,
1038 kSharedMemoryId,
1039 kSharedMemoryOffset,
1040 kBadNameSize);
1041 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1042 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1043 }
1044
1045 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationBucket) {
1046 const uint32 kBucketId = 123; 838 const uint32 kBucketId = 123;
1047 const char* kNonExistentName = "foobar"; 839 const char* kNonExistentName = "foobar";
1048 typedef GetAttribLocationBucket::Result Result; 840 typedef GetAttribLocation::Result Result;
1049 Result* result = GetSharedMemoryAs<Result*>(); 841 Result* result = GetSharedMemoryAs<Result*>();
1050 SetBucketAsCString(kBucketId, kAttrib2Name); 842 SetBucketAsCString(kBucketId, kAttrib2Name);
1051 *result = -1; 843 *result = -1;
1052 GetAttribLocationBucket cmd; 844 GetAttribLocation cmd;
1053 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 845 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1054 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 846 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1055 EXPECT_EQ(kAttrib2Location, *result); 847 EXPECT_EQ(kAttrib2Location, *result);
1056 SetBucketAsCString(kBucketId, kNonExistentName); 848 SetBucketAsCString(kBucketId, kNonExistentName);
1057 *result = -1; 849 *result = -1;
1058 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 850 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1059 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 851 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1060 EXPECT_EQ(-1, *result); 852 EXPECT_EQ(-1, *result);
1061 } 853 }
1062 854
1063 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationBucketInvalidArgs) { 855 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationInvalidArgs) {
1064 const uint32 kBucketId = 123; 856 const uint32 kBucketId = 123;
1065 typedef GetAttribLocationBucket::Result Result; 857 typedef GetAttribLocation::Result Result;
1066 Result* result = GetSharedMemoryAs<Result*>(); 858 Result* result = GetSharedMemoryAs<Result*>();
1067 *result = -1; 859 *result = -1;
1068 GetAttribLocationBucket cmd; 860 GetAttribLocation cmd;
1069 // Check no bucket 861 // Check no bucket
1070 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 862 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1071 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 863 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1072 EXPECT_EQ(-1, *result); 864 EXPECT_EQ(-1, *result);
1073 // Check bad program id. 865 // Check bad program id.
1074 SetBucketAsCString(kBucketId, kAttrib2Name); 866 SetBucketAsCString(kBucketId, kAttrib2Name);
1075 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 867 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1076 *result = -1; 868 *result = -1;
1077 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 869 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1078 EXPECT_EQ(-1, *result); 870 EXPECT_EQ(-1, *result);
1079 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 871 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1080 // Check bad memory 872 // Check bad memory
1081 cmd.Init(client_program_id_, 873 cmd.Init(client_program_id_,
1082 kBucketId, 874 kBucketId,
1083 kInvalidSharedMemoryId, 875 kInvalidSharedMemoryId,
1084 kSharedMemoryOffset); 876 kSharedMemoryOffset);
1085 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 877 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1086 cmd.Init(client_program_id_, 878 cmd.Init(client_program_id_,
1087 kBucketId, 879 kBucketId,
1088 kSharedMemoryId, 880 kSharedMemoryId,
1089 kInvalidSharedMemoryOffset); 881 kInvalidSharedMemoryOffset);
1090 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 882 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1091 } 883 }
1092 884
1093 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocation) { 885 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocation) {
1094 const uint32 kNameSize = strlen(kUniform2Name);
1095 const char* kNonExistentName = "foobar";
1096 const uint32 kNonExistentNameSize = strlen(kNonExistentName);
1097 typedef GetUniformLocation::Result Result;
1098 Result* result = GetSharedMemoryAs<Result*>();
1099 *result = -1;
1100 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result));
1101 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result);
1102 memcpy(name, kUniform2Name, kNameSize);
1103 GetUniformLocation cmd;
1104 cmd.Init(client_program_id_,
1105 kSharedMemoryId,
1106 kNameOffset,
1107 kSharedMemoryId,
1108 kSharedMemoryOffset,
1109 kNameSize);
1110 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1111 EXPECT_EQ(kUniform2FakeLocation, *result);
1112 memcpy(name, kNonExistentName, kNonExistentNameSize);
1113 *result = -1;
1114 cmd.Init(client_program_id_,
1115 kSharedMemoryId,
1116 kNameOffset,
1117 kSharedMemoryId,
1118 kSharedMemoryOffset,
1119 kNonExistentNameSize);
1120 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1121 EXPECT_EQ(-1, *result);
1122 }
1123
1124 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationInvalidArgs) {
1125 const uint32 kNameSize = strlen(kUniform2Name);
1126 const char* kBadName = "foo\abar";
1127 const uint32 kBadNameSize = strlen(kBadName);
1128 typedef GetUniformLocation::Result Result;
1129 Result* result = GetSharedMemoryAs<Result*>();
1130 *result = -1;
1131 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result));
1132 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result);
1133 memcpy(name, kUniform2Name, kNameSize);
1134 GetUniformLocation cmd;
1135 cmd.Init(kInvalidClientId,
1136 kSharedMemoryId,
1137 kNameOffset,
1138 kSharedMemoryId,
1139 kSharedMemoryOffset,
1140 kNameSize);
1141 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1142 EXPECT_EQ(-1, *result);
1143 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1144 *result = -1;
1145 cmd.Init(client_program_id_,
1146 kInvalidSharedMemoryId,
1147 kNameOffset,
1148 kSharedMemoryId,
1149 kSharedMemoryOffset,
1150 kNameSize);
1151 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1152 EXPECT_EQ(-1, *result);
1153 cmd.Init(client_program_id_,
1154 kSharedMemoryId,
1155 kInvalidSharedMemoryOffset,
1156 kSharedMemoryId,
1157 kSharedMemoryOffset,
1158 kNameSize);
1159 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1160 EXPECT_EQ(-1, *result);
1161 cmd.Init(client_program_id_,
1162 kSharedMemoryId,
1163 kNameOffset,
1164 kInvalidSharedMemoryId,
1165 kSharedMemoryOffset,
1166 kNameSize);
1167 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1168 EXPECT_EQ(-1, *result);
1169 cmd.Init(client_program_id_,
1170 kSharedMemoryId,
1171 kNameOffset,
1172 kSharedMemoryId,
1173 kInvalidSharedMemoryOffset,
1174 kNameSize);
1175 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1176 EXPECT_EQ(-1, *result);
1177 cmd.Init(client_program_id_,
1178 kSharedMemoryId,
1179 kNameOffset,
1180 kSharedMemoryId,
1181 kSharedMemoryOffset,
1182 kSharedBufferSize);
1183 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1184 EXPECT_EQ(-1, *result);
1185 memcpy(name, kBadName, kBadNameSize);
1186 cmd.Init(client_program_id_,
1187 kSharedMemoryId,
1188 kNameOffset,
1189 kSharedMemoryId,
1190 kSharedMemoryOffset,
1191 kBadNameSize);
1192 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1193 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1194 }
1195
1196 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationBucket) {
1197 const uint32 kBucketId = 123; 886 const uint32 kBucketId = 123;
1198 const char* kNonExistentName = "foobar"; 887 const char* kNonExistentName = "foobar";
1199 typedef GetUniformLocationBucket::Result Result; 888 typedef GetUniformLocation::Result Result;
1200 Result* result = GetSharedMemoryAs<Result*>(); 889 Result* result = GetSharedMemoryAs<Result*>();
1201 SetBucketAsCString(kBucketId, kUniform2Name); 890 SetBucketAsCString(kBucketId, kUniform2Name);
1202 *result = -1; 891 *result = -1;
1203 GetUniformLocationBucket cmd; 892 GetUniformLocation cmd;
1204 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 893 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1205 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 894 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1206 EXPECT_EQ(kUniform2FakeLocation, *result); 895 EXPECT_EQ(kUniform2FakeLocation, *result);
1207 SetBucketAsCString(kBucketId, kNonExistentName); 896 SetBucketAsCString(kBucketId, kNonExistentName);
1208 *result = -1; 897 *result = -1;
1209 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 898 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1210 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 899 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1211 EXPECT_EQ(-1, *result); 900 EXPECT_EQ(-1, *result);
1212 } 901 }
1213 902
1214 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationBucketInvalidArgs) { 903 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationInvalidArgs) {
1215 const uint32 kBucketId = 123; 904 const uint32 kBucketId = 123;
1216 typedef GetUniformLocationBucket::Result Result; 905 typedef GetUniformLocation::Result Result;
1217 Result* result = GetSharedMemoryAs<Result*>(); 906 Result* result = GetSharedMemoryAs<Result*>();
1218 *result = -1; 907 *result = -1;
1219 GetUniformLocationBucket cmd; 908 GetUniformLocation cmd;
1220 // Check no bucket 909 // Check no bucket
1221 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 910 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1222 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 911 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1223 EXPECT_EQ(-1, *result); 912 EXPECT_EQ(-1, *result);
1224 // Check bad program id. 913 // Check bad program id.
1225 SetBucketAsCString(kBucketId, kUniform2Name); 914 SetBucketAsCString(kBucketId, kUniform2Name);
1226 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 915 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1227 *result = -1; 916 *result = -1;
1228 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 917 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1229 EXPECT_EQ(-1, *result); 918 EXPECT_EQ(-1, *result);
1230 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 919 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1231 // Check bad memory 920 // Check bad memory
1232 cmd.Init(client_program_id_, 921 cmd.Init(client_program_id_,
1233 kBucketId, 922 kBucketId,
1234 kInvalidSharedMemoryId, 923 kInvalidSharedMemoryId,
1235 kSharedMemoryOffset); 924 kSharedMemoryOffset);
1236 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 925 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1237 cmd.Init(client_program_id_, 926 cmd.Init(client_program_id_,
1238 kBucketId, 927 kBucketId,
1239 kSharedMemoryId, 928 kSharedMemoryId,
1240 kInvalidSharedMemoryOffset); 929 kInvalidSharedMemoryOffset);
1241 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 930 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1242 } 931 }
1243 932
1244 TEST_P(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUM) { 933 TEST_P(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUMBucket) {
934 const uint32 kBucketId = 123;
1245 const GLint kLocation = 2; 935 const GLint kLocation = 2;
1246 const char* kName = "testing"; 936 const char* kName = "testing";
1247 const uint32 kNameSize = strlen(kName);
1248 const char* kBadName1 = "gl_testing"; 937 const char* kBadName1 = "gl_testing";
1249 const uint32 kBadName1Size = strlen(kBadName1);
1250 const char* kBadName2 = "testing[1]"; 938 const char* kBadName2 = "testing[1]";
1251 const uint32 kBadName2Size = strlen(kBadName2); 939
1252 memcpy(shared_memory_address_, kName, kNameSize); 940 SetBucketAsCString(kBucketId, kName);
1253 BindUniformLocationCHROMIUM cmd; 941 BindUniformLocationCHROMIUMBucket cmd;
1254 cmd.Init(client_program_id_, 942 cmd.Init(client_program_id_,
1255 kLocation, 943 kLocation,
1256 kSharedMemoryId, 944 kBucketId);
1257 kSharedMemoryOffset,
1258 kNameSize);
1259 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 945 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1260 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 946 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1261 // check negative location 947 // check negative location
1262 memcpy(shared_memory_address_, kName, kNameSize); 948 SetBucketAsCString(kBucketId, kName);
1263 cmd.Init( 949 cmd.Init(client_program_id_, -1, kBucketId);
1264 client_program_id_, -1, kSharedMemoryId, kSharedMemoryOffset, kNameSize);
1265 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 950 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1266 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 951 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1267 // check highest location 952 // check highest location
1268 memcpy(shared_memory_address_, kName, kNameSize); 953 SetBucketAsCString(kBucketId, kName);
1269 GLint kMaxLocation = 954 GLint kMaxLocation =
1270 (kMaxFragmentUniformVectors + kMaxVertexUniformVectors) * 4 - 1; 955 (kMaxFragmentUniformVectors + kMaxVertexUniformVectors) * 4 - 1;
1271 cmd.Init(client_program_id_, 956 cmd.Init(client_program_id_,
1272 kMaxLocation, 957 kMaxLocation,
1273 kSharedMemoryId, 958 kBucketId);
1274 kSharedMemoryOffset,
1275 kNameSize);
1276 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 959 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1277 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 960 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1278 // check too high location 961 // check too high location
1279 memcpy(shared_memory_address_, kName, kNameSize); 962 SetBucketAsCString(kBucketId, kName);
1280 cmd.Init(client_program_id_, 963 cmd.Init(client_program_id_,
1281 kMaxLocation + 1, 964 kMaxLocation + 1,
1282 kSharedMemoryId, 965 kBucketId);
1283 kSharedMemoryOffset,
1284 kNameSize);
1285 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 966 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1286 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 967 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1287 // check bad name "gl_..." 968 // check bad name "gl_..."
1288 memcpy(shared_memory_address_, kBadName1, kBadName1Size); 969 SetBucketAsCString(kBucketId, kBadName1);
1289 cmd.Init(client_program_id_, 970 cmd.Init(client_program_id_,
1290 kLocation, 971 kLocation,
1291 kSharedMemoryId, 972 kBucketId);
1292 kSharedMemoryOffset,
1293 kBadName1Size);
1294 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 973 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1295 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 974 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
1296 // check bad name "name[1]" non zero 975 // check bad name "name[1]" non zero
1297 memcpy(shared_memory_address_, kBadName2, kBadName2Size); 976 SetBucketAsCString(kBucketId, kBadName2);
1298 cmd.Init(client_program_id_, 977 cmd.Init(client_program_id_,
1299 kLocation, 978 kLocation,
1300 kSharedMemoryId, 979 kBucketId);
1301 kSharedMemoryOffset,
1302 kBadName2Size);
1303 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 980 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1304 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 981 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1305 } 982 }
1306 983
1307 TEST_P(GLES2DecoderManualInitTest, ClearUniformsBeforeFirstProgramUse) { 984 TEST_P(GLES2DecoderManualInitTest, ClearUniformsBeforeFirstProgramUse) {
1308 CommandLine command_line(0, NULL); 985 CommandLine command_line(0, NULL);
1309 command_line.AppendSwitchASCII( 986 command_line.AppendSwitchASCII(
1310 switches::kGpuDriverBugWorkarounds, 987 switches::kGpuDriverBugWorkarounds,
1311 base::IntToString(gpu::CLEAR_UNIFORMS_BEFORE_FIRST_PROGRAM_USE)); 988 base::IntToString(gpu::CLEAR_UNIFORMS_BEFORE_FIRST_PROGRAM_USE));
1312 InitState init; 989 InitState init;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1360 } 1037 }
1361 1038
1362 // TODO(gman): DeleteProgram 1039 // TODO(gman): DeleteProgram
1363 1040
1364 // TODO(gman): UseProgram 1041 // TODO(gman): UseProgram
1365 1042
1366 // TODO(gman): DeleteShader 1043 // TODO(gman): DeleteShader
1367 1044
1368 } // namespace gles2 1045 } // namespace gles2
1369 } // namespace gpu 1046 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698