OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Tests for GLES2Implementation. | 5 // Tests for GLES2Implementation. |
6 | 6 |
7 #include "gpu/command_buffer/client/gles2_implementation.h" | 7 #include "gpu/command_buffer/client/gles2_implementation.h" |
8 | 8 |
9 #include <limits> | 9 #include <limits> |
10 | 10 |
(...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
889 GLint precision4 = 0; | 889 GLint precision4 = 0; |
890 gl_->GetShaderPrecisionFormat(GL_FRAGMENT_SHADER, GL_MEDIUM_FLOAT, range4, | 890 gl_->GetShaderPrecisionFormat(GL_FRAGMENT_SHADER, GL_MEDIUM_FLOAT, range4, |
891 &precision4); | 891 &precision4); |
892 const void* commands5 = GetPut(); | 892 const void* commands5 = GetPut(); |
893 EXPECT_EQ(commands4, commands5); | 893 EXPECT_EQ(commands4, commands5); |
894 EXPECT_EQ(range4[0], 3); | 894 EXPECT_EQ(range4[0], 3); |
895 EXPECT_EQ(range4[1], 5); | 895 EXPECT_EQ(range4[1], 5); |
896 EXPECT_EQ(precision4, 7); | 896 EXPECT_EQ(precision4, 7); |
897 } | 897 } |
898 | 898 |
899 TEST_F(GLES2ImplementationTest, ShaderSource) { | |
900 const uint32 kBucketId = GLES2Implementation::kResultBucketId; | |
901 const GLuint kShaderId = 456; | |
902 const char* kString1 = "foobar"; | |
903 const char* kString2 = "barfoo"; | |
904 const size_t kString1Size = strlen(kString1) + 1; | |
905 const size_t kString2Size = strlen(kString2) + 1; | |
906 const size_t kHeaderSize = sizeof(GLint) * 3; | |
907 const size_t kSourceSize = kHeaderSize + kString1Size + kString2Size; | |
908 const size_t kPaddedHeaderSize = | |
909 transfer_buffer_->RoundToAlignment(kHeaderSize); | |
910 const size_t kPaddedString1Size = | |
911 transfer_buffer_->RoundToAlignment(kString1Size); | |
912 const size_t kPaddedString2Size = | |
913 transfer_buffer_->RoundToAlignment(kString2Size); | |
914 struct Cmds { | |
915 cmd::SetBucketSize set_bucket_size; | |
916 cmd::SetBucketData set_bucket_header; | |
917 cmd::SetToken set_token1; | |
918 cmd::SetBucketData set_bucket_data1; | |
919 cmd::SetToken set_token2; | |
920 cmd::SetBucketData set_bucket_data2; | |
921 cmd::SetToken set_token3; | |
922 cmds::ShaderSourceBucket shader_source_bucket; | |
923 cmd::SetBucketSize clear_bucket_size; | |
924 }; | |
925 | |
926 ExpectedMemoryInfo mem0 = GetExpectedMemory(kPaddedHeaderSize); | |
927 ExpectedMemoryInfo mem1 = GetExpectedMemory(kPaddedString1Size); | |
928 ExpectedMemoryInfo mem2 = GetExpectedMemory(kPaddedString2Size); | |
929 | |
930 Cmds expected; | |
931 expected.set_bucket_size.Init(kBucketId, kSourceSize); | |
932 expected.set_bucket_header.Init( | |
933 kBucketId, 0, kHeaderSize, mem0.id, mem0.offset); | |
934 expected.set_token1.Init(GetNextToken()); | |
935 expected.set_bucket_data1.Init( | |
936 kBucketId, kHeaderSize, kString1Size, mem1.id, mem1.offset); | |
937 expected.set_token2.Init(GetNextToken()); | |
938 expected.set_bucket_data2.Init( | |
939 kBucketId, kHeaderSize + kString1Size, kString2Size, mem2.id, | |
940 mem2.offset); | |
941 expected.set_token3.Init(GetNextToken()); | |
942 expected.shader_source_bucket.Init(kShaderId, kBucketId); | |
943 expected.clear_bucket_size.Init(kBucketId, 0); | |
944 const char* kStrings[] = { | |
945 kString1, | |
946 kString2, | |
947 }; | |
948 gl_->ShaderSource(kShaderId, 2, kStrings, NULL); | |
949 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | |
950 } | |
951 | |
952 TEST_F(GLES2ImplementationTest, ShaderSourceWithLength) { | |
953 const uint32 kBucketId = GLES2Implementation::kResultBucketId; | |
954 const GLuint kShaderId = 456; | |
955 const char* kString = "foobar******"; | |
956 const size_t kStringSize = 6; // We only need "foobar". | |
957 const size_t kHeaderSize = sizeof(GLint) * 2; | |
958 const size_t kSourceSize = kHeaderSize + kStringSize + 1; | |
959 const size_t kPaddedHeaderSize = | |
960 transfer_buffer_->RoundToAlignment(kHeaderSize); | |
961 const size_t kPaddedStringSize = | |
962 transfer_buffer_->RoundToAlignment(kStringSize + 1); | |
963 | |
964 struct Cmds { | |
965 cmd::SetBucketSize set_bucket_size; | |
966 cmd::SetBucketData set_bucket_header; | |
967 cmd::SetToken set_token1; | |
968 cmd::SetBucketData set_bucket_data; | |
969 cmd::SetToken set_token2; | |
970 cmds::ShaderSourceBucket shader_source_bucket; | |
971 cmd::SetBucketSize clear_bucket_size; | |
972 }; | |
973 | |
974 ExpectedMemoryInfo mem0 = GetExpectedMemory(kPaddedHeaderSize); | |
975 ExpectedMemoryInfo mem1 = GetExpectedMemory(kPaddedStringSize); | |
976 | |
977 Cmds expected; | |
978 expected.set_bucket_size.Init(kBucketId, kSourceSize); | |
979 expected.set_bucket_header.Init( | |
980 kBucketId, 0, kHeaderSize, mem0.id, mem0.offset); | |
981 expected.set_token1.Init(GetNextToken()); | |
982 expected.set_bucket_data.Init( | |
983 kBucketId, kHeaderSize, kStringSize + 1, mem1.id, mem1.offset); | |
984 expected.set_token2.Init(GetNextToken()); | |
985 expected.shader_source_bucket.Init(kShaderId, kBucketId); | |
986 expected.clear_bucket_size.Init(kBucketId, 0); | |
987 const char* kStrings[] = { kString }; | |
988 const GLint kLength[] = { kStringSize }; | |
989 gl_->ShaderSource(kShaderId, 1, kStrings, kLength); | |
990 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | |
991 } | |
992 | |
993 TEST_F(GLES2ImplementationTest, GetShaderSource) { | 899 TEST_F(GLES2ImplementationTest, GetShaderSource) { |
994 const uint32 kBucketId = GLES2Implementation::kResultBucketId; | 900 const uint32 kBucketId = GLES2Implementation::kResultBucketId; |
995 const GLuint kShaderId = 456; | 901 const GLuint kShaderId = 456; |
996 const Str7 kString = {"foobar"}; | 902 const Str7 kString = {"foobar"}; |
997 const char kBad = 0x12; | 903 const char kBad = 0x12; |
998 struct Cmds { | 904 struct Cmds { |
999 cmd::SetBucketSize set_bucket_size1; | 905 cmd::SetBucketSize set_bucket_size1; |
1000 cmds::GetShaderSource get_shader_source; | 906 cmds::GetShaderSource get_shader_source; |
1001 cmd::GetBucketStart get_bucket_start; | 907 cmd::GetBucketStart get_bucket_start; |
1002 cmd::SetToken set_token1; | 908 cmd::SetToken set_token1; |
(...skipping 2627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3630 TEST_F(GLES2ImplementationManualInitTest, FailInitOnTransferBufferFail) { | 3536 TEST_F(GLES2ImplementationManualInitTest, FailInitOnTransferBufferFail) { |
3631 ContextInitOptions init_options; | 3537 ContextInitOptions init_options; |
3632 init_options.transfer_buffer_initialize_fail = true; | 3538 init_options.transfer_buffer_initialize_fail = true; |
3633 EXPECT_FALSE(Initialize(init_options)); | 3539 EXPECT_FALSE(Initialize(init_options)); |
3634 } | 3540 } |
3635 | 3541 |
3636 #include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h" | 3542 #include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h" |
3637 | 3543 |
3638 } // namespace gles2 | 3544 } // namespace gles2 |
3639 } // namespace gpu | 3545 } // namespace gpu |
OLD | NEW |