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

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

Issue 2461023002: command buffer: audit validation of ES3 commands (part 2) (Closed)
Patch Set: update mocked unittests Created 4 years, 1 month 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
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 871 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER, 882 GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER,
883 GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER, 883 GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER,
884 }; 884 };
885 for (size_t ii = 0; ii < arraysize(kPname); ++ii) { 885 for (size_t ii = 0; ii < arraysize(kPname); ++ii) {
886 result->SetNumResults(0); 886 result->SetNumResults(0);
887 cmd.Init(client_program_id_, 887 cmd.Init(client_program_id_,
888 0, 888 0,
889 kPname[ii], 889 kPname[ii],
890 shared_memory_id_, 890 shared_memory_id_,
891 shared_memory_offset_); 891 shared_memory_offset_);
892 EXPECT_CALL(*gl_, GetError())
893 .WillOnce(Return(GL_NO_ERROR))
894 .WillOnce(Return(GL_NO_ERROR))
895 .RetiresOnSaturation();
896 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 892 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
897 .WillOnce(SetArgPointee<2>(GL_TRUE)) 893 .WillOnce(SetArgPointee<2>(GL_TRUE))
898 .RetiresOnSaturation(); 894 .RetiresOnSaturation();
899 if (kPname[ii] == GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) { 895 if (kPname[ii] == GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) {
900 EXPECT_CALL(*gl_, GetError()) 896 EXPECT_CALL(*gl_, GetError())
901 .WillOnce(Return(GL_NO_ERROR)) 897 .WillOnce(Return(GL_NO_ERROR))
902 .RetiresOnSaturation(); 898 .RetiresOnSaturation();
903 EXPECT_CALL(*gl_, 899 EXPECT_CALL(*gl_,
904 GetActiveUniformBlockiv(kServiceProgramId, 0, 900 GetActiveUniformBlockiv(kServiceProgramId, 0,
905 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) 901 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _))
(...skipping 18 matching lines...) Expand all
924 typedef GetActiveUniformBlockiv::Result Result; 920 typedef GetActiveUniformBlockiv::Result Result;
925 Result* result = static_cast<Result*>(shared_memory_address_); 921 Result* result = static_cast<Result*>(shared_memory_address_);
926 result->SetNumResults(0); 922 result->SetNumResults(0);
927 cmd.Init(client_program_id_, 923 cmd.Init(client_program_id_,
928 0, 924 0,
929 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, 925 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES,
930 shared_memory_id_, 926 shared_memory_id_,
931 shared_memory_offset_); 927 shared_memory_offset_);
932 EXPECT_CALL(*gl_, GetError()) 928 EXPECT_CALL(*gl_, GetError())
933 .WillOnce(Return(GL_NO_ERROR)) 929 .WillOnce(Return(GL_NO_ERROR))
934 .WillOnce(Return(GL_NO_ERROR))
935 .WillOnce(Return(GL_NO_ERROR))
936 .RetiresOnSaturation(); 930 .RetiresOnSaturation();
937 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 931 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
938 .WillOnce(SetArgPointee<2>(GL_TRUE)) 932 .WillOnce(SetArgPointee<2>(GL_TRUE))
939 .RetiresOnSaturation(); 933 .RetiresOnSaturation();
940 EXPECT_CALL(*gl_, 934 EXPECT_CALL(*gl_,
941 GetActiveUniformBlockiv( 935 GetActiveUniformBlockiv(
942 kServiceProgramId, 0, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) 936 kServiceProgramId, 0, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _))
943 .WillOnce(SetArgPointee<3>(0)) 937 .WillOnce(SetArgPointee<3>(0))
944 .RetiresOnSaturation(); 938 .RetiresOnSaturation();
945 EXPECT_CALL(*gl_, 939 EXPECT_CALL(*gl_,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
977 Result* result = static_cast<Result*>(shared_memory_address_); 971 Result* result = static_cast<Result*>(shared_memory_address_);
978 result->SetNumResults(1); // Should be initialized to 0. 972 result->SetNumResults(1); // Should be initialized to 0.
979 cmd.Init(client_program_id_, 973 cmd.Init(client_program_id_,
980 0, 974 0,
981 GL_UNIFORM_BLOCK_BINDING, 975 GL_UNIFORM_BLOCK_BINDING,
982 shared_memory_id_, 976 shared_memory_id_,
983 shared_memory_offset_); 977 shared_memory_offset_);
984 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 978 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
985 .WillOnce(SetArgPointee<2>(GL_TRUE)) 979 .WillOnce(SetArgPointee<2>(GL_TRUE))
986 .RetiresOnSaturation(); 980 .RetiresOnSaturation();
987 EXPECT_CALL(*gl_, GetError())
988 .WillOnce(Return(GL_NO_ERROR))
989 .RetiresOnSaturation();
990 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 981 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
991 } 982 }
992 983
993 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockivBadProgramFails) { 984 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockivBadProgramFails) {
994 GetActiveUniformBlockiv cmd; 985 GetActiveUniformBlockiv cmd;
995 typedef GetActiveUniformBlockiv::Result Result; 986 typedef GetActiveUniformBlockiv::Result Result;
996 Result* result = static_cast<Result*>(shared_memory_address_); 987 Result* result = static_cast<Result*>(shared_memory_address_);
997 result->SetNumResults(0); 988 result->SetNumResults(0);
998 cmd.Init(kInvalidClientId, 989 cmd.Init(kInvalidClientId,
999 0, 990 0,
1000 GL_UNIFORM_BLOCK_BINDING, 991 GL_UNIFORM_BLOCK_BINDING,
1001 shared_memory_id_, 992 shared_memory_id_,
1002 shared_memory_offset_); 993 shared_memory_offset_);
1003 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 994 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1004 EXPECT_EQ(0, result->GetNumResults()); 995 EXPECT_EQ(0, result->GetNumResults());
1005 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 996 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1006 } 997 }
1007 998
1008 TEST_P(GLES3DecoderWithShaderTest, 999 TEST_P(GLES3DecoderWithShaderTest,
1009 GetActiveUniformBlockivBadSharedMemoryFails) { 1000 GetActiveUniformBlockivBadSharedMemoryFails) {
1010 GetActiveUniformBlockiv cmd; 1001 GetActiveUniformBlockiv cmd;
1011 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1002 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1012 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1003 .WillOnce(SetArgPointee<2>(GL_TRUE))
1013 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1004 .WillOnce(SetArgPointee<2>(GL_TRUE))
1014 .RetiresOnSaturation(); 1005 .RetiresOnSaturation();
1015 EXPECT_CALL(*gl_, GetError())
1016 .WillOnce(Return(GL_NO_ERROR))
1017 .WillOnce(Return(GL_NO_ERROR))
1018 .RetiresOnSaturation();
1019 cmd.Init(client_program_id_, 1006 cmd.Init(client_program_id_,
1020 0, 1007 0,
1021 GL_UNIFORM_BLOCK_BINDING, 1008 GL_UNIFORM_BLOCK_BINDING,
1022 kInvalidSharedMemoryId, 1009 kInvalidSharedMemoryId,
1023 shared_memory_offset_); 1010 shared_memory_offset_);
1024 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1011 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1025 cmd.Init(client_program_id_, 1012 cmd.Init(client_program_id_,
1026 0, 1013 0,
1027 GL_UNIFORM_BLOCK_BINDING, 1014 GL_UNIFORM_BLOCK_BINDING,
1028 shared_memory_id_, 1015 shared_memory_id_,
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
1291 kSharedMemoryId, 1278 kSharedMemoryId,
1292 kSharedMemoryOffset); 1279 kSharedMemoryOffset);
1293 EXPECT_CALL(*gl_, 1280 EXPECT_CALL(*gl_,
1294 GetActiveUniformsiv( 1281 GetActiveUniformsiv(
1295 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) 1282 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _))
1296 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) 1283 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount))
1297 .RetiresOnSaturation(); 1284 .RetiresOnSaturation();
1298 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1285 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1299 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1286 .WillOnce(SetArgPointee<2>(GL_TRUE))
1300 .RetiresOnSaturation(); 1287 .RetiresOnSaturation();
1301 EXPECT_CALL(*gl_, GetError())
1302 .WillOnce(Return(GL_NO_ERROR))
1303 .WillOnce(Return(GL_NO_ERROR))
1304 .RetiresOnSaturation();
1305 result->size = 0; 1288 result->size = 0;
1306 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1289 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1307 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); 1290 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults()));
1308 for (size_t ii = 0; ii < kCount; ++ii) { 1291 for (size_t ii = 0; ii < kCount; ++ii) {
1309 EXPECT_EQ(kResults[ii], result->GetData()[ii]); 1292 EXPECT_EQ(kResults[ii], result->GetData()[ii]);
1310 } 1293 }
1311 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1294 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1312 } 1295 }
1313 1296
1314 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadProgramFails) { 1297 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadProgramFails) {
(...skipping 24 matching lines...) Expand all
1339 .WillOnce(SetArgPointee<2>(GL_FALSE)) 1322 .WillOnce(SetArgPointee<2>(GL_FALSE))
1340 .RetiresOnSaturation(); 1323 .RetiresOnSaturation();
1341 result->size = 0; 1324 result->size = 0;
1342 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1343 EXPECT_EQ(0, result->GetNumResults()); 1326 EXPECT_EQ(0, result->GetNumResults());
1344 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 1327 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
1345 } 1328 }
1346 1329
1347 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadParamsFails) { 1330 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadParamsFails) {
1348 const uint32_t kBucketId = 123; 1331 const uint32_t kBucketId = 123;
1349 const GLuint kIndices[] = { 1, 2 }; 1332 const GLuint kIndices[] = { 1, 100 };
1350 const GLint kResults[] = { 1976, 321 };
1351 const size_t kCount = arraysize(kIndices); 1333 const size_t kCount = arraysize(kIndices);
1352 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); 1334 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount);
1353 GetActiveUniformsiv::Result* result = 1335 GetActiveUniformsiv::Result* result =
1354 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); 1336 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_);
1355 GetActiveUniformsiv cmd; 1337 GetActiveUniformsiv cmd;
1356 cmd.Init(client_program_id_, 1338 cmd.Init(client_program_id_,
1357 kBucketId, 1339 kBucketId,
1358 GL_UNIFORM_TYPE, 1340 GL_UNIFORM_TYPE,
1359 kSharedMemoryId, 1341 kSharedMemoryId,
1360 kSharedMemoryOffset); 1342 kSharedMemoryOffset);
1361 EXPECT_CALL(*gl_,
1362 GetActiveUniformsiv(
1363 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _))
1364 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount))
1365 .RetiresOnSaturation();
1366 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1367 .WillOnce(SetArgPointee<2>(GL_TRUE))
1368 .RetiresOnSaturation();
1369 EXPECT_CALL(*gl_, GetError())
1370 .WillOnce(Return(GL_NO_ERROR))
1371 .WillOnce(Return(GL_INVALID_VALUE))
1372 .RetiresOnSaturation();
1373 result->size = 0; 1343 result->size = 0;
1374 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1344 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1375 EXPECT_EQ(0, result->GetNumResults()); 1345 EXPECT_EQ(0, result->GetNumResults());
1376 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1346 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1377 } 1347 }
1378 1348
1379 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadPnameFails) { 1349 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadPnameFails) {
1380 const uint32_t kBucketId = 123; 1350 const uint32_t kBucketId = 123;
1381 const GLuint kIndices[] = { 1, 2 }; 1351 const GLuint kIndices[] = { 1, 2 };
1382 const size_t kCount = arraysize(kIndices); 1352 const size_t kCount = arraysize(kIndices);
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after
2266 } 2236 }
2267 2237
2268 // TODO(gman): DeleteProgram 2238 // TODO(gman): DeleteProgram
2269 2239
2270 // TODO(gman): UseProgram 2240 // TODO(gman): UseProgram
2271 2241
2272 // TODO(gman): DeleteShader 2242 // TODO(gman): DeleteShader
2273 2243
2274 } // namespace gles2 2244 } // namespace gles2
2275 } // namespace gpu 2245 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698