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

Side by Side Diff: gpu/command_buffer/client/gles2_implementation_unittest.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 (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 883 matching lines...) Expand 10 before | Expand all | Expand 10 after
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) { 899 TEST_F(GLES2ImplementationTest, ShaderSource) {
900 const uint32 kBucketId = GLES2Implementation::kResultBucketId; 900 const uint32 kBucketId = GLES2Implementation::kResultBucketId;
901 const GLuint kShaderId = 456; 901 const GLuint kShaderId = 456;
902 const char* kString1 = "foobar"; 902 const char* kString1 = "foobar";
903 const char* kString2 = "barfoo"; 903 const char* kString2 = "barfoo";
904 const size_t kString1Size = strlen(kString1); 904 const size_t kString1Size = strlen(kString1) + 1;
905 const size_t kString2Size = strlen(kString2); 905 const size_t kString2Size = strlen(kString2) + 1;
906 const size_t kString3Size = 1; // Want the NULL; 906 const size_t kHeaderSize = sizeof(GLint) * 3;
907 const size_t kSourceSize = kString1Size + kString2Size + kString3Size; 907 const size_t kSourceSize = kHeaderSize + kString1Size + kString2Size;
908 const size_t kPaddedHeaderSize =
909 transfer_buffer_->RoundToAlignment(kHeaderSize);
908 const size_t kPaddedString1Size = 910 const size_t kPaddedString1Size =
909 transfer_buffer_->RoundToAlignment(kString1Size); 911 transfer_buffer_->RoundToAlignment(kString1Size);
910 const size_t kPaddedString2Size = 912 const size_t kPaddedString2Size =
911 transfer_buffer_->RoundToAlignment(kString2Size); 913 transfer_buffer_->RoundToAlignment(kString2Size);
912 const size_t kPaddedString3Size =
913 transfer_buffer_->RoundToAlignment(kString3Size);
914 struct Cmds { 914 struct Cmds {
915 cmd::SetBucketSize set_bucket_size; 915 cmd::SetBucketSize set_bucket_size;
916 cmd::SetBucketData set_bucket_header;
917 cmd::SetToken set_token1;
916 cmd::SetBucketData set_bucket_data1; 918 cmd::SetBucketData set_bucket_data1;
917 cmd::SetToken set_token1; 919 cmd::SetToken set_token2;
918 cmd::SetBucketData set_bucket_data2; 920 cmd::SetBucketData set_bucket_data2;
919 cmd::SetToken set_token2;
920 cmd::SetBucketData set_bucket_data3;
921 cmd::SetToken set_token3; 921 cmd::SetToken set_token3;
922 cmds::ShaderSourceBucket shader_source_bucket; 922 cmds::ShaderSourceBucket shader_source_bucket;
923 cmd::SetBucketSize clear_bucket_size; 923 cmd::SetBucketSize clear_bucket_size;
924 }; 924 };
925 925
926 ExpectedMemoryInfo mem0 = GetExpectedMemory(kPaddedHeaderSize);
926 ExpectedMemoryInfo mem1 = GetExpectedMemory(kPaddedString1Size); 927 ExpectedMemoryInfo mem1 = GetExpectedMemory(kPaddedString1Size);
927 ExpectedMemoryInfo mem2 = GetExpectedMemory(kPaddedString2Size); 928 ExpectedMemoryInfo mem2 = GetExpectedMemory(kPaddedString2Size);
928 ExpectedMemoryInfo mem3 = GetExpectedMemory(kPaddedString3Size);
929 929
930 Cmds expected; 930 Cmds expected;
931 expected.set_bucket_size.Init(kBucketId, kSourceSize); 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());
932 expected.set_bucket_data1.Init( 935 expected.set_bucket_data1.Init(
933 kBucketId, 0, kString1Size, mem1.id, mem1.offset); 936 kBucketId, kHeaderSize, kString1Size, mem1.id, mem1.offset);
934 expected.set_token1.Init(GetNextToken()); 937 expected.set_token2.Init(GetNextToken());
935 expected.set_bucket_data2.Init( 938 expected.set_bucket_data2.Init(
936 kBucketId, kString1Size, kString2Size, mem2.id, mem2.offset); 939 kBucketId, kHeaderSize + kString1Size, kString2Size, mem2.id,
937 expected.set_token2.Init(GetNextToken()); 940 mem2.offset);
938 expected.set_bucket_data3.Init(
939 kBucketId, kString1Size + kString2Size,
940 kString3Size, mem3.id, mem3.offset);
941 expected.set_token3.Init(GetNextToken()); 941 expected.set_token3.Init(GetNextToken());
942 expected.shader_source_bucket.Init(kShaderId, kBucketId); 942 expected.shader_source_bucket.Init(kShaderId, kBucketId);
943 expected.clear_bucket_size.Init(kBucketId, 0); 943 expected.clear_bucket_size.Init(kBucketId, 0);
944 const char* strings[] = { 944 const char* kStrings[] = {
945 kString1, 945 kString1,
946 kString2, 946 kString2,
947 }; 947 };
948 gl_->ShaderSource(kShaderId, 2, strings, NULL); 948 gl_->ShaderSource(kShaderId, 2, kStrings, NULL);
949 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 949 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
950 } 950 }
951 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
952 TEST_F(GLES2ImplementationTest, GetShaderSource) { 993 TEST_F(GLES2ImplementationTest, GetShaderSource) {
953 const uint32 kBucketId = GLES2Implementation::kResultBucketId; 994 const uint32 kBucketId = GLES2Implementation::kResultBucketId;
954 const GLuint kShaderId = 456; 995 const GLuint kShaderId = 456;
955 const Str7 kString = {"foobar"}; 996 const Str7 kString = {"foobar"};
956 const char kBad = 0x12; 997 const char kBad = 0x12;
957 struct Cmds { 998 struct Cmds {
958 cmd::SetBucketSize set_bucket_size1; 999 cmd::SetBucketSize set_bucket_size1;
959 cmds::GetShaderSource get_shader_source; 1000 cmds::GetShaderSource get_shader_source;
960 cmd::GetBucketStart get_bucket_start; 1001 cmd::GetBucketStart get_bucket_start;
961 cmd::SetToken set_token1; 1002 cmd::SetToken set_token1;
(...skipping 2545 matching lines...) Expand 10 before | Expand all | Expand 10 after
3507 EXPECT_EQ(GL_NO_ERROR, CheckError()); 3548 EXPECT_EQ(GL_NO_ERROR, CheckError());
3508 3549
3509 gl_->TraceEndCHROMIUM(); 3550 gl_->TraceEndCHROMIUM();
3510 EXPECT_EQ(GL_NO_ERROR, CheckError()); 3551 EXPECT_EQ(GL_NO_ERROR, CheckError());
3511 3552
3512 // No more corresponding begin tracer marker should error. 3553 // No more corresponding begin tracer marker should error.
3513 gl_->TraceEndCHROMIUM(); 3554 gl_->TraceEndCHROMIUM();
3514 EXPECT_EQ(GL_INVALID_OPERATION, CheckError()); 3555 EXPECT_EQ(GL_INVALID_OPERATION, CheckError());
3515 } 3556 }
3516 3557
3558 TEST_F(GLES2ImplementationTest, IsEnabled) {
3559 // If we use a valid enum, its state is cached on client side, so no command
3560 // is actually generated, and this test will fail.
3561 // TODO(zmo): it seems we never need the command. Maybe remove it.
3562 GLenum kCap = 1;
3563 struct Cmds {
3564 cmds::IsEnabled cmd;
3565 };
3566
3567 Cmds expected;
3568 ExpectedMemoryInfo result1 =
3569 GetExpectedResultMemory(sizeof(cmds::IsEnabled::Result));
3570 expected.cmd.Init(kCap, result1.id, result1.offset);
3571
3572 EXPECT_CALL(*command_buffer(), OnFlush())
3573 .WillOnce(SetMemory(result1.ptr, uint32_t(kCap)))
3574 .RetiresOnSaturation();
3575
3576 GLboolean result = gl_->IsEnabled(kCap);
3577 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
3578 EXPECT_TRUE(result);
3579 }
3580
3517 TEST_F(GLES2ImplementationManualInitTest, LoseContextOnOOM) { 3581 TEST_F(GLES2ImplementationManualInitTest, LoseContextOnOOM) {
3518 ContextInitOptions init_options; 3582 ContextInitOptions init_options;
3519 init_options.lose_context_when_out_of_memory = true; 3583 init_options.lose_context_when_out_of_memory = true;
3520 ASSERT_TRUE(Initialize(init_options)); 3584 ASSERT_TRUE(Initialize(init_options));
3521 3585
3522 struct Cmds { 3586 struct Cmds {
3523 cmds::LoseContextCHROMIUM cmd; 3587 cmds::LoseContextCHROMIUM cmd;
3524 }; 3588 };
3525 3589
3526 GLsizei max = std::numeric_limits<GLsizei>::max(); 3590 GLsizei max = std::numeric_limits<GLsizei>::max();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
3566 TEST_F(GLES2ImplementationManualInitTest, FailInitOnTransferBufferFail) { 3630 TEST_F(GLES2ImplementationManualInitTest, FailInitOnTransferBufferFail) {
3567 ContextInitOptions init_options; 3631 ContextInitOptions init_options;
3568 init_options.transfer_buffer_initialize_fail = true; 3632 init_options.transfer_buffer_initialize_fail = true;
3569 EXPECT_FALSE(Initialize(init_options)); 3633 EXPECT_FALSE(Initialize(init_options));
3570 } 3634 }
3571 3635
3572 #include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h" 3636 #include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h"
3573 3637
3574 } // namespace gles2 3638 } // namespace gles2
3575 } // namespace gpu 3639 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698