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

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

Issue 903273002: Update from https://crrev.com/315085 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 ASSERT_TRUE(bucket != NULL); 74 ASSERT_TRUE(bucket != NULL);
75 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size()); 75 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size());
76 ProgramInfoHeader* info = 76 ProgramInfoHeader* info =
77 bucket->GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader)); 77 bucket->GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader));
78 ASSERT_TRUE(info != 0); 78 ASSERT_TRUE(info != 0);
79 EXPECT_EQ(0u, info->link_status); 79 EXPECT_EQ(0u, info->link_status);
80 EXPECT_EQ(0u, info->num_attribs); 80 EXPECT_EQ(0u, info->num_attribs);
81 EXPECT_EQ(0u, info->num_uniforms); 81 EXPECT_EQ(0u, info->num_uniforms);
82 } 82 }
83 83
84 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlocksCHROMIUMValidArgs) {
85 const uint32 kBucketId = 123;
86 GetUniformBlocksCHROMIUM cmd;
87 cmd.Init(client_program_id_, kBucketId);
88 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
89 .WillOnce(SetArgPointee<2>(GL_TRUE))
90 .RetiresOnSaturation();
91 EXPECT_CALL(*gl_,
92 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORM_BLOCKS, _))
93 .WillOnce(SetArgPointee<2>(0))
94 .RetiresOnSaturation();
95 decoder_->set_unsafe_es3_apis_enabled(true);
96 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
97 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
98 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size());
99 UniformBlocksHeader* header =
100 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader));
101 EXPECT_TRUE(header != NULL);
102 EXPECT_EQ(0u, header->num_uniform_blocks);
103 decoder_->set_unsafe_es3_apis_enabled(false);
104 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
105 }
106
107 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlocksCHROMIUMInvalidArgs) {
108 const uint32 kBucketId = 123;
109 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
110 EXPECT_TRUE(bucket == NULL);
111 GetUniformBlocksCHROMIUM cmd;
112 cmd.Init(kInvalidClientId, kBucketId);
113 decoder_->set_unsafe_es3_apis_enabled(true);
114 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
115 EXPECT_EQ(GL_NO_ERROR, GetGLError());
116 bucket = decoder_->GetBucket(kBucketId);
117 ASSERT_TRUE(bucket != NULL);
118 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size());
119 UniformBlocksHeader* header =
120 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader));
121 ASSERT_TRUE(header != NULL);
122 EXPECT_EQ(0u, header->num_uniform_blocks);
123 }
124
84 TEST_P(GLES2DecoderWithShaderTest, GetUniformivSucceeds) { 125 TEST_P(GLES2DecoderWithShaderTest, GetUniformivSucceeds) {
85 GetUniformiv::Result* result = 126 GetUniformiv::Result* result =
86 static_cast<GetUniformiv::Result*>(shared_memory_address_); 127 static_cast<GetUniformiv::Result*>(shared_memory_address_);
87 result->size = 0; 128 result->size = 0;
88 GetUniformiv cmd; 129 GetUniformiv cmd;
89 cmd.Init(client_program_id_, 130 cmd.Init(client_program_id_,
90 kUniform2FakeLocation, 131 kUniform2FakeLocation,
91 kSharedMemoryId, 132 kSharedMemoryId,
92 kSharedMemoryOffset); 133 kSharedMemoryOffset);
93 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2RealLocation, _)) 134 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2RealLocation, _))
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 shared_memory_offset_); 564 shared_memory_offset_);
524 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 565 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
525 cmd.Init(client_program_id_, 566 cmd.Init(client_program_id_,
526 kUniformIndex, 567 kUniformIndex,
527 kBucketId, 568 kBucketId,
528 shared_memory_id_, 569 shared_memory_id_,
529 kInvalidSharedMemoryOffset); 570 kInvalidSharedMemoryOffset);
530 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 571 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
531 } 572 }
532 573
574 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameSucceeds) {
575 const uint32 kBucketId = 123;
576 GetActiveUniformBlockName cmd;
577 typedef GetActiveUniformBlockName::Result Result;
578 Result* result = static_cast<Result*>(shared_memory_address_);
579 *result = 0;
580 cmd.Init(client_program_id_,
581 0,
582 kBucketId,
583 shared_memory_id_,
584 shared_memory_offset_);
585 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
586 .WillOnce(SetArgPointee<2>(GL_TRUE))
587 .RetiresOnSaturation();
588 const char kName[] = "HolyCow";
589 const GLsizei kMaxLength = strlen(kName) + 1;
590 EXPECT_CALL(*gl_,
591 GetProgramiv(kServiceProgramId,
592 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, _))
593 .WillOnce(SetArgPointee<2>(kMaxLength))
594 .RetiresOnSaturation();
595 EXPECT_CALL(*gl_,
596 GetActiveUniformBlockName(kServiceProgramId, 0, _, _, _))
597 .WillOnce(DoAll(SetArgPointee<3>(strlen(kName)),
598 SetArrayArgument<4>(kName, kName + strlen(kName) + 1)))
599 .RetiresOnSaturation();
600 decoder_->set_unsafe_es3_apis_enabled(true);
601 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
602 EXPECT_NE(0, *result);
603 EXPECT_EQ(GL_NO_ERROR, GetGLError());
604 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
605 ASSERT_TRUE(bucket != NULL);
606 EXPECT_EQ(0,
607 memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size()));
608 decoder_->set_unsafe_es3_apis_enabled(false);
609 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
610 }
611
612 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameUnlinkedProgram) {
613 const uint32 kBucketId = 123;
614 GetActiveUniformBlockName cmd;
615 typedef GetActiveUniformBlockName::Result Result;
616 Result* result = static_cast<Result*>(shared_memory_address_);
617 *result = 0;
618 cmd.Init(client_program_id_,
619 0,
620 kBucketId,
621 shared_memory_id_,
622 shared_memory_offset_);
623 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
624 .WillOnce(SetArgPointee<2>(GL_FALSE))
625 .RetiresOnSaturation();
626 decoder_->set_unsafe_es3_apis_enabled(true);
627 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
628 EXPECT_EQ(0, *result);
629 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
630 }
631
632 TEST_P(GLES2DecoderWithShaderTest,
633 GetActiveUniformBlockNameResultNotInitFails) {
634 const uint32 kBucketId = 123;
635 GetActiveUniformBlockName cmd;
636 typedef GetActiveUniformBlockName::Result Result;
637 Result* result = static_cast<Result*>(shared_memory_address_);
638 *result = 1;
639 cmd.Init(client_program_id_,
640 0,
641 kBucketId,
642 shared_memory_id_,
643 shared_memory_offset_);
644 decoder_->set_unsafe_es3_apis_enabled(true);
645 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
646 }
647
648 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameBadProgramFails) {
649 const uint32 kBucketId = 123;
650 GetActiveUniformBlockName cmd;
651 typedef GetActiveUniformBlockName::Result Result;
652 Result* result = static_cast<Result*>(shared_memory_address_);
653 *result = 0;
654 cmd.Init(kInvalidClientId,
655 0,
656 kBucketId,
657 shared_memory_id_,
658 shared_memory_offset_);
659 decoder_->set_unsafe_es3_apis_enabled(true);
660 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
661 EXPECT_EQ(0, *result);
662 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
663 }
664
665 TEST_P(GLES2DecoderWithShaderTest,
666 GetActiveUniformBlockNameBadSharedMemoryFails) {
667 const uint32 kBucketId = 123;
668 GetActiveUniformBlockName cmd;
669 decoder_->set_unsafe_es3_apis_enabled(true);
670 cmd.Init(client_program_id_,
671 0,
672 kBucketId,
673 kInvalidSharedMemoryId,
674 shared_memory_offset_);
675 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
676 cmd.Init(client_program_id_,
677 0,
678 kBucketId,
679 shared_memory_id_,
680 kInvalidSharedMemoryOffset);
681 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
682 }
683
533 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribSucceeds) { 684 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribSucceeds) {
534 const GLuint kAttribIndex = 1; 685 const GLuint kAttribIndex = 1;
535 const uint32 kBucketId = 123; 686 const uint32 kBucketId = 123;
536 GetActiveAttrib cmd; 687 GetActiveAttrib cmd;
537 typedef GetActiveAttrib::Result Result; 688 typedef GetActiveAttrib::Result Result;
538 Result* result = static_cast<Result*>(shared_memory_address_); 689 Result* result = static_cast<Result*>(shared_memory_address_);
539 result->success = 0; 690 result->success = 0;
540 cmd.Init(client_program_id_, 691 cmd.Init(client_program_id_,
541 kAttribIndex, 692 kAttribIndex,
542 kBucketId, 693 kBucketId,
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 kInvalidSharedMemoryId, 1071 kInvalidSharedMemoryId,
921 kSharedMemoryOffset); 1072 kSharedMemoryOffset);
922 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1073 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
923 cmd.Init(client_program_id_, 1074 cmd.Init(client_program_id_,
924 kBucketId, 1075 kBucketId,
925 kSharedMemoryId, 1076 kSharedMemoryId,
926 kInvalidSharedMemoryOffset); 1077 kInvalidSharedMemoryOffset);
927 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1078 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
928 } 1079 }
929 1080
1081 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlockIndex) {
1082 const uint32 kBucketId = 123;
1083 const GLuint kIndex = 10;
1084 const char* kName = "color";
1085 typedef GetUniformBlockIndex::Result Result;
1086 Result* result = GetSharedMemoryAs<Result*>();
1087 SetBucketAsCString(kBucketId, kName);
1088 *result = GL_INVALID_INDEX;
1089 GetUniformBlockIndex cmd;
1090 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1091 EXPECT_CALL(*gl_, GetUniformBlockIndex(kServiceProgramId, StrEq(kName)))
1092 .WillOnce(Return(kIndex))
1093 .RetiresOnSaturation();
1094 decoder_->set_unsafe_es3_apis_enabled(true);
1095 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1096 EXPECT_EQ(kIndex, *result);
1097 decoder_->set_unsafe_es3_apis_enabled(false);
1098 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1099 }
1100
1101 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlockIndexInvalidArgs) {
1102 const uint32 kBucketId = 123;
1103 typedef GetUniformBlockIndex::Result Result;
1104 Result* result = GetSharedMemoryAs<Result*>();
1105 *result = GL_INVALID_INDEX;
1106 GetUniformBlockIndex cmd;
1107 decoder_->set_unsafe_es3_apis_enabled(true);
1108 // Check no bucket
1109 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1110 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1111 EXPECT_EQ(GL_INVALID_INDEX, *result);
1112 // Check bad program id.
1113 const char* kName = "color";
1114 SetBucketAsCString(kBucketId, kName);
1115 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1116 *result = GL_INVALID_INDEX;
1117 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1118 EXPECT_EQ(GL_INVALID_INDEX, *result);
1119 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1120 // Check bad memory
1121 cmd.Init(client_program_id_,
1122 kBucketId,
1123 kInvalidSharedMemoryId,
1124 kSharedMemoryOffset);
1125 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1126 cmd.Init(client_program_id_,
1127 kBucketId,
1128 kSharedMemoryId,
1129 kInvalidSharedMemoryOffset);
1130 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1131 }
1132
930 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocation) { 1133 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocation) {
931 const uint32 kBucketId = 123; 1134 const uint32 kBucketId = 123;
932 const char* kNonExistentName = "foobar"; 1135 const char* kNonExistentName = "foobar";
933 typedef GetUniformLocation::Result Result; 1136 typedef GetUniformLocation::Result Result;
934 Result* result = GetSharedMemoryAs<Result*>(); 1137 Result* result = GetSharedMemoryAs<Result*>();
935 SetBucketAsCString(kBucketId, kUniform2Name); 1138 SetBucketAsCString(kBucketId, kUniform2Name);
936 *result = -1; 1139 *result = -1;
937 GetUniformLocation cmd; 1140 GetUniformLocation cmd;
938 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 1141 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
939 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1142 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1081 } 1284 }
1082 1285
1083 // TODO(gman): DeleteProgram 1286 // TODO(gman): DeleteProgram
1084 1287
1085 // TODO(gman): UseProgram 1288 // TODO(gman): UseProgram
1086 1289
1087 // TODO(gman): DeleteShader 1290 // TODO(gman): DeleteShader
1088 1291
1089 } // namespace gles2 1292 } // namespace gles2
1090 } // namespace gpu 1293 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698