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

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

Issue 2444813002: Remove unsafe mode to enable es3 api by default for WebGL2 and ES3 context (Closed)
Patch Set: remove runtime flag unsafeES3APIs from blink webgl module 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
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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 const uint32_t kBucketId = 123; 83 const uint32_t kBucketId = 123;
84 GetUniformBlocksCHROMIUM cmd; 84 GetUniformBlocksCHROMIUM cmd;
85 cmd.Init(client_program_id_, kBucketId); 85 cmd.Init(client_program_id_, kBucketId);
86 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 86 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
87 .WillOnce(SetArgPointee<2>(GL_TRUE)) 87 .WillOnce(SetArgPointee<2>(GL_TRUE))
88 .RetiresOnSaturation(); 88 .RetiresOnSaturation();
89 EXPECT_CALL(*gl_, 89 EXPECT_CALL(*gl_,
90 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORM_BLOCKS, _)) 90 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORM_BLOCKS, _))
91 .WillOnce(SetArgPointee<2>(0)) 91 .WillOnce(SetArgPointee<2>(0))
92 .RetiresOnSaturation(); 92 .RetiresOnSaturation();
93 decoder_->set_unsafe_es3_apis_enabled(true); 93 decoder_->set_es3_apis_enabled(true);
94 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 94 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
95 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 95 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
96 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); 96 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size());
97 UniformBlocksHeader* header = 97 UniformBlocksHeader* header =
98 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); 98 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader));
99 EXPECT_TRUE(header != NULL); 99 EXPECT_TRUE(header != NULL);
100 EXPECT_EQ(0u, header->num_uniform_blocks); 100 EXPECT_EQ(0u, header->num_uniform_blocks);
101 decoder_->set_unsafe_es3_apis_enabled(false); 101 decoder_->set_es3_apis_enabled(false);
102 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 102 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
103 } 103 }
104 104
105 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlocksCHROMIUMInvalidArgs) { 105 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlocksCHROMIUMInvalidArgs) {
106 const uint32_t kBucketId = 123; 106 const uint32_t kBucketId = 123;
107 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 107 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
108 EXPECT_TRUE(bucket == NULL); 108 EXPECT_TRUE(bucket == NULL);
109 GetUniformBlocksCHROMIUM cmd; 109 GetUniformBlocksCHROMIUM cmd;
110 cmd.Init(kInvalidClientId, kBucketId); 110 cmd.Init(kInvalidClientId, kBucketId);
111 decoder_->set_unsafe_es3_apis_enabled(true); 111 decoder_->set_es3_apis_enabled(true);
112 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 112 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
113 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 113 EXPECT_EQ(GL_NO_ERROR, GetGLError());
114 bucket = decoder_->GetBucket(kBucketId); 114 bucket = decoder_->GetBucket(kBucketId);
115 ASSERT_TRUE(bucket != NULL); 115 ASSERT_TRUE(bucket != NULL);
116 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); 116 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size());
117 UniformBlocksHeader* header = 117 UniformBlocksHeader* header =
118 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); 118 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader));
119 ASSERT_TRUE(header != NULL); 119 ASSERT_TRUE(header != NULL);
120 EXPECT_EQ(0u, header->num_uniform_blocks); 120 EXPECT_EQ(0u, header->num_uniform_blocks);
121 } 121 }
122 122
123 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMValidArgs) { 123 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMValidArgs) {
124 const uint32_t kBucketId = 123; 124 const uint32_t kBucketId = 123;
125 GetUniformsES3CHROMIUM cmd; 125 GetUniformsES3CHROMIUM cmd;
126 cmd.Init(client_program_id_, kBucketId); 126 cmd.Init(client_program_id_, kBucketId);
127 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 127 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
128 .WillOnce(SetArgPointee<2>(GL_TRUE)) 128 .WillOnce(SetArgPointee<2>(GL_TRUE))
129 .RetiresOnSaturation(); 129 .RetiresOnSaturation();
130 EXPECT_CALL(*gl_, 130 EXPECT_CALL(*gl_,
131 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORMS, _)) 131 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORMS, _))
132 .WillOnce(SetArgPointee<2>(0)) 132 .WillOnce(SetArgPointee<2>(0))
133 .RetiresOnSaturation(); 133 .RetiresOnSaturation();
134 decoder_->set_unsafe_es3_apis_enabled(true); 134 decoder_->set_es3_apis_enabled(true);
135 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 135 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
136 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 136 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
137 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); 137 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size());
138 UniformsES3Header* header = 138 UniformsES3Header* header =
139 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); 139 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header));
140 EXPECT_TRUE(header != NULL); 140 EXPECT_TRUE(header != NULL);
141 EXPECT_EQ(0u, header->num_uniforms); 141 EXPECT_EQ(0u, header->num_uniforms);
142 decoder_->set_unsafe_es3_apis_enabled(false); 142 decoder_->set_es3_apis_enabled(false);
143 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 143 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
144 } 144 }
145 145
146 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMInvalidArgs) { 146 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMInvalidArgs) {
147 const uint32_t kBucketId = 123; 147 const uint32_t kBucketId = 123;
148 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 148 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
149 EXPECT_TRUE(bucket == NULL); 149 EXPECT_TRUE(bucket == NULL);
150 GetUniformsES3CHROMIUM cmd; 150 GetUniformsES3CHROMIUM cmd;
151 cmd.Init(kInvalidClientId, kBucketId); 151 cmd.Init(kInvalidClientId, kBucketId);
152 decoder_->set_unsafe_es3_apis_enabled(true); 152 decoder_->set_es3_apis_enabled(true);
153 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 153 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
154 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 154 EXPECT_EQ(GL_NO_ERROR, GetGLError());
155 bucket = decoder_->GetBucket(kBucketId); 155 bucket = decoder_->GetBucket(kBucketId);
156 ASSERT_TRUE(bucket != NULL); 156 ASSERT_TRUE(bucket != NULL);
157 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); 157 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size());
158 UniformsES3Header* header = 158 UniformsES3Header* header =
159 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); 159 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header));
160 ASSERT_TRUE(header != NULL); 160 ASSERT_TRUE(header != NULL);
161 EXPECT_EQ(0u, header->num_uniforms); 161 EXPECT_EQ(0u, header->num_uniforms);
162 } 162 }
(...skipping 10 matching lines...) Expand all
173 .WillOnce(SetArgPointee<2>(GL_INTERLEAVED_ATTRIBS)) 173 .WillOnce(SetArgPointee<2>(GL_INTERLEAVED_ATTRIBS))
174 .RetiresOnSaturation(); 174 .RetiresOnSaturation();
175 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 175 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
176 .WillOnce(SetArgPointee<2>(GL_TRUE)) 176 .WillOnce(SetArgPointee<2>(GL_TRUE))
177 .RetiresOnSaturation(); 177 .RetiresOnSaturation();
178 EXPECT_CALL(*gl_, 178 EXPECT_CALL(*gl_,
179 GetProgramiv( 179 GetProgramiv(
180 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _)) 180 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _))
181 .WillOnce(SetArgPointee<2>(0)) 181 .WillOnce(SetArgPointee<2>(0))
182 .RetiresOnSaturation(); 182 .RetiresOnSaturation();
183 decoder_->set_unsafe_es3_apis_enabled(true); 183 decoder_->set_es3_apis_enabled(true);
184 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 184 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
185 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 185 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
186 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); 186 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size());
187 TransformFeedbackVaryingsHeader* header = 187 TransformFeedbackVaryingsHeader* header =
188 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( 188 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>(
189 0, sizeof(TransformFeedbackVaryingsHeader)); 189 0, sizeof(TransformFeedbackVaryingsHeader));
190 EXPECT_TRUE(header != NULL); 190 EXPECT_TRUE(header != NULL);
191 EXPECT_EQ(static_cast<uint32_t>(GL_INTERLEAVED_ATTRIBS), 191 EXPECT_EQ(static_cast<uint32_t>(GL_INTERLEAVED_ATTRIBS),
192 header->transform_feedback_buffer_mode); 192 header->transform_feedback_buffer_mode);
193 EXPECT_EQ(0u, header->num_transform_feedback_varyings); 193 EXPECT_EQ(0u, header->num_transform_feedback_varyings);
194 decoder_->set_unsafe_es3_apis_enabled(false); 194 decoder_->set_es3_apis_enabled(false);
195 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 195 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
196 } 196 }
197 197
198 TEST_P(GLES2DecoderWithShaderTest, 198 TEST_P(GLES2DecoderWithShaderTest,
199 GetTransformFeedbackVaryingsCHROMIUMInvalidArgs) { 199 GetTransformFeedbackVaryingsCHROMIUMInvalidArgs) {
200 const uint32_t kBucketId = 123; 200 const uint32_t kBucketId = 123;
201 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 201 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
202 EXPECT_TRUE(bucket == NULL); 202 EXPECT_TRUE(bucket == NULL);
203 GetTransformFeedbackVaryingsCHROMIUM cmd; 203 GetTransformFeedbackVaryingsCHROMIUM cmd;
204 cmd.Init(kInvalidClientId, kBucketId); 204 cmd.Init(kInvalidClientId, kBucketId);
205 decoder_->set_unsafe_es3_apis_enabled(true); 205 decoder_->set_es3_apis_enabled(true);
206 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 206 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
207 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 207 EXPECT_EQ(GL_NO_ERROR, GetGLError());
208 bucket = decoder_->GetBucket(kBucketId); 208 bucket = decoder_->GetBucket(kBucketId);
209 ASSERT_TRUE(bucket != NULL); 209 ASSERT_TRUE(bucket != NULL);
210 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); 210 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size());
211 TransformFeedbackVaryingsHeader* header = 211 TransformFeedbackVaryingsHeader* header =
212 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( 212 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>(
213 0, sizeof(TransformFeedbackVaryingsHeader)); 213 0, sizeof(TransformFeedbackVaryingsHeader));
214 ASSERT_TRUE(header != NULL); 214 ASSERT_TRUE(header != NULL);
215 EXPECT_EQ(0u, header->num_transform_feedback_varyings); 215 EXPECT_EQ(0u, header->num_transform_feedback_varyings);
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 GetUniformuiv::Result* result = 327 GetUniformuiv::Result* result =
328 static_cast<GetUniformuiv::Result*>(shared_memory_address_); 328 static_cast<GetUniformuiv::Result*>(shared_memory_address_);
329 result->size = 0; 329 result->size = 0;
330 GetUniformuiv cmd; 330 GetUniformuiv cmd;
331 cmd.Init(client_program_id_, 331 cmd.Init(client_program_id_,
332 kUniform2FakeLocation, 332 kUniform2FakeLocation,
333 kSharedMemoryId, 333 kSharedMemoryId,
334 kSharedMemoryOffset); 334 kSharedMemoryOffset);
335 EXPECT_CALL(*gl_, GetUniformuiv(kServiceProgramId, kUniform2RealLocation, _)) 335 EXPECT_CALL(*gl_, GetUniformuiv(kServiceProgramId, kUniform2RealLocation, _))
336 .Times(1); 336 .Times(1);
337 decoder_->set_unsafe_es3_apis_enabled(true); 337 decoder_->set_es3_apis_enabled(true);
338 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 338 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
339 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), 339 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type),
340 static_cast<uint32_t>(result->GetNumResults())); 340 static_cast<uint32_t>(result->GetNumResults()));
341 decoder_->set_unsafe_es3_apis_enabled(false); 341 decoder_->set_es3_apis_enabled(false);
342 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 342 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
343 } 343 }
344 344
345 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivArrayElementSucceeds) { 345 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivArrayElementSucceeds) {
346 GetUniformuiv::Result* result = 346 GetUniformuiv::Result* result =
347 static_cast<GetUniformuiv::Result*>(shared_memory_address_); 347 static_cast<GetUniformuiv::Result*>(shared_memory_address_);
348 result->size = 0; 348 result->size = 0;
349 GetUniformuiv cmd; 349 GetUniformuiv cmd;
350 cmd.Init(client_program_id_, 350 cmd.Init(client_program_id_,
351 kUniform2ElementFakeLocation, 351 kUniform2ElementFakeLocation,
352 kSharedMemoryId, 352 kSharedMemoryId,
353 kSharedMemoryOffset); 353 kSharedMemoryOffset);
354 EXPECT_CALL(*gl_, 354 EXPECT_CALL(*gl_,
355 GetUniformuiv(kServiceProgramId, kUniform2ElementRealLocation, _)) 355 GetUniformuiv(kServiceProgramId, kUniform2ElementRealLocation, _))
356 .Times(1); 356 .Times(1);
357 decoder_->set_unsafe_es3_apis_enabled(true); 357 decoder_->set_es3_apis_enabled(true);
358 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 358 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
359 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), 359 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type),
360 static_cast<uint32_t>(result->GetNumResults())); 360 static_cast<uint32_t>(result->GetNumResults()));
361 } 361 }
362 362
363 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadProgramFails) { 363 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadProgramFails) {
364 GetUniformuiv::Result* result = 364 GetUniformuiv::Result* result =
365 static_cast<GetUniformuiv::Result*>(shared_memory_address_); 365 static_cast<GetUniformuiv::Result*>(shared_memory_address_);
366 result->size = 0; 366 result->size = 0;
367 GetUniformuiv cmd; 367 GetUniformuiv cmd;
368 // non-existant program 368 // non-existant program
369 cmd.Init(kInvalidClientId, 369 cmd.Init(kInvalidClientId,
370 kUniform2FakeLocation, 370 kUniform2FakeLocation,
371 kSharedMemoryId, 371 kSharedMemoryId,
372 kSharedMemoryOffset); 372 kSharedMemoryOffset);
373 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); 373 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0);
374 decoder_->set_unsafe_es3_apis_enabled(true); 374 decoder_->set_es3_apis_enabled(true);
375 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 375 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
376 EXPECT_EQ(0U, result->size); 376 EXPECT_EQ(0U, result->size);
377 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 377 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
378 // Valid id that is not a program. The GL spec requires a different error for 378 // Valid id that is not a program. The GL spec requires a different error for
379 // this case. 379 // this case.
380 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS 380 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
381 result->size = kInitialResult; 381 result->size = kInitialResult;
382 cmd.Init(client_shader_id_, 382 cmd.Init(client_shader_id_,
383 kUniform2FakeLocation, 383 kUniform2FakeLocation,
384 kSharedMemoryId, 384 kSharedMemoryId,
(...skipping 24 matching lines...) Expand all
409 GetUniformuiv::Result* result = 409 GetUniformuiv::Result* result =
410 static_cast<GetUniformuiv::Result*>(shared_memory_address_); 410 static_cast<GetUniformuiv::Result*>(shared_memory_address_);
411 result->size = 0; 411 result->size = 0;
412 GetUniformuiv cmd; 412 GetUniformuiv cmd;
413 // invalid location 413 // invalid location
414 cmd.Init(client_program_id_, 414 cmd.Init(client_program_id_,
415 kInvalidUniformLocation, 415 kInvalidUniformLocation,
416 kSharedMemoryId, 416 kSharedMemoryId,
417 kSharedMemoryOffset); 417 kSharedMemoryOffset);
418 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); 418 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0);
419 decoder_->set_unsafe_es3_apis_enabled(true); 419 decoder_->set_es3_apis_enabled(true);
420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
421 EXPECT_EQ(0U, result->size); 421 EXPECT_EQ(0U, result->size);
422 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 422 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
423 } 423 }
424 424
425 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadSharedMemoryFails) { 425 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadSharedMemoryFails) {
426 GetUniformuiv cmd; 426 GetUniformuiv cmd;
427 cmd.Init(client_program_id_, 427 cmd.Init(client_program_id_,
428 kUniform2FakeLocation, 428 kUniform2FakeLocation,
429 kInvalidSharedMemoryId, 429 kInvalidSharedMemoryId,
430 kSharedMemoryOffset); 430 kSharedMemoryOffset);
431 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); 431 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0);
432 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 432 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
433 decoder_->set_unsafe_es3_apis_enabled(true); 433 decoder_->set_es3_apis_enabled(true);
434 cmd.Init(client_program_id_, 434 cmd.Init(client_program_id_,
435 kUniform2FakeLocation, 435 kUniform2FakeLocation,
436 kSharedMemoryId, 436 kSharedMemoryId,
437 kInvalidSharedMemoryOffset); 437 kInvalidSharedMemoryOffset);
438 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 438 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
439 }; 439 };
440 440
441 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { 441 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) {
442 GetUniformfv::Result* result = 442 GetUniformfv::Result* result =
443 static_cast<GetUniformfv::Result*>(shared_memory_address_); 443 static_cast<GetUniformfv::Result*>(shared_memory_address_);
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 EXPECT_CALL(*gl_, 804 EXPECT_CALL(*gl_,
805 GetProgramiv(kServiceProgramId, 805 GetProgramiv(kServiceProgramId,
806 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, _)) 806 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, _))
807 .WillOnce(SetArgPointee<2>(kMaxLength)) 807 .WillOnce(SetArgPointee<2>(kMaxLength))
808 .RetiresOnSaturation(); 808 .RetiresOnSaturation();
809 EXPECT_CALL(*gl_, 809 EXPECT_CALL(*gl_,
810 GetActiveUniformBlockName(kServiceProgramId, 0, _, _, _)) 810 GetActiveUniformBlockName(kServiceProgramId, 0, _, _, _))
811 .WillOnce(DoAll(SetArgPointee<3>(strlen(kName)), 811 .WillOnce(DoAll(SetArgPointee<3>(strlen(kName)),
812 SetArrayArgument<4>(kName, kName + strlen(kName) + 1))) 812 SetArrayArgument<4>(kName, kName + strlen(kName) + 1)))
813 .RetiresOnSaturation(); 813 .RetiresOnSaturation();
814 decoder_->set_unsafe_es3_apis_enabled(true); 814 decoder_->set_es3_apis_enabled(true);
815 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 815 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
816 EXPECT_NE(0, *result); 816 EXPECT_NE(0, *result);
817 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 817 EXPECT_EQ(GL_NO_ERROR, GetGLError());
818 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 818 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
819 ASSERT_TRUE(bucket != NULL); 819 ASSERT_TRUE(bucket != NULL);
820 EXPECT_EQ(0, 820 EXPECT_EQ(0,
821 memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); 821 memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size()));
822 decoder_->set_unsafe_es3_apis_enabled(false); 822 decoder_->set_es3_apis_enabled(false);
823 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 823 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
824 } 824 }
825 825
826 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameUnlinkedProgram) { 826 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameUnlinkedProgram) {
827 const uint32_t kBucketId = 123; 827 const uint32_t kBucketId = 123;
828 GetActiveUniformBlockName cmd; 828 GetActiveUniformBlockName cmd;
829 typedef GetActiveUniformBlockName::Result Result; 829 typedef GetActiveUniformBlockName::Result Result;
830 Result* result = static_cast<Result*>(shared_memory_address_); 830 Result* result = static_cast<Result*>(shared_memory_address_);
831 *result = 0; 831 *result = 0;
832 cmd.Init(client_program_id_, 832 cmd.Init(client_program_id_,
833 0, 833 0,
834 kBucketId, 834 kBucketId,
835 shared_memory_id_, 835 shared_memory_id_,
836 shared_memory_offset_); 836 shared_memory_offset_);
837 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 837 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
838 .WillOnce(SetArgPointee<2>(GL_FALSE)) 838 .WillOnce(SetArgPointee<2>(GL_FALSE))
839 .RetiresOnSaturation(); 839 .RetiresOnSaturation();
840 decoder_->set_unsafe_es3_apis_enabled(true); 840 decoder_->set_es3_apis_enabled(true);
841 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 841 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
842 EXPECT_EQ(0, *result); 842 EXPECT_EQ(0, *result);
843 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 843 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
844 } 844 }
845 845
846 TEST_P(GLES2DecoderWithShaderTest, 846 TEST_P(GLES2DecoderWithShaderTest,
847 GetActiveUniformBlockNameResultNotInitFails) { 847 GetActiveUniformBlockNameResultNotInitFails) {
848 const uint32_t kBucketId = 123; 848 const uint32_t kBucketId = 123;
849 GetActiveUniformBlockName cmd; 849 GetActiveUniformBlockName cmd;
850 typedef GetActiveUniformBlockName::Result Result; 850 typedef GetActiveUniformBlockName::Result Result;
851 Result* result = static_cast<Result*>(shared_memory_address_); 851 Result* result = static_cast<Result*>(shared_memory_address_);
852 *result = 1; 852 *result = 1;
853 cmd.Init(client_program_id_, 853 cmd.Init(client_program_id_,
854 0, 854 0,
855 kBucketId, 855 kBucketId,
856 shared_memory_id_, 856 shared_memory_id_,
857 shared_memory_offset_); 857 shared_memory_offset_);
858 decoder_->set_unsafe_es3_apis_enabled(true); 858 decoder_->set_es3_apis_enabled(true);
859 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 859 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
860 } 860 }
861 861
862 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameBadProgramFails) { 862 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameBadProgramFails) {
863 const uint32_t kBucketId = 123; 863 const uint32_t kBucketId = 123;
864 GetActiveUniformBlockName cmd; 864 GetActiveUniformBlockName cmd;
865 typedef GetActiveUniformBlockName::Result Result; 865 typedef GetActiveUniformBlockName::Result Result;
866 Result* result = static_cast<Result*>(shared_memory_address_); 866 Result* result = static_cast<Result*>(shared_memory_address_);
867 *result = 0; 867 *result = 0;
868 cmd.Init(kInvalidClientId, 868 cmd.Init(kInvalidClientId,
869 0, 869 0,
870 kBucketId, 870 kBucketId,
871 shared_memory_id_, 871 shared_memory_id_,
872 shared_memory_offset_); 872 shared_memory_offset_);
873 decoder_->set_unsafe_es3_apis_enabled(true); 873 decoder_->set_es3_apis_enabled(true);
874 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 874 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
875 EXPECT_EQ(0, *result); 875 EXPECT_EQ(0, *result);
876 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 876 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
877 } 877 }
878 878
879 TEST_P(GLES2DecoderWithShaderTest, 879 TEST_P(GLES2DecoderWithShaderTest,
880 GetActiveUniformBlockNameBadSharedMemoryFails) { 880 GetActiveUniformBlockNameBadSharedMemoryFails) {
881 const uint32_t kBucketId = 123; 881 const uint32_t kBucketId = 123;
882 GetActiveUniformBlockName cmd; 882 GetActiveUniformBlockName cmd;
883 decoder_->set_unsafe_es3_apis_enabled(true); 883 decoder_->set_es3_apis_enabled(true);
884 cmd.Init(client_program_id_, 884 cmd.Init(client_program_id_,
885 0, 885 0,
886 kBucketId, 886 kBucketId,
887 kInvalidSharedMemoryId, 887 kInvalidSharedMemoryId,
888 shared_memory_offset_); 888 shared_memory_offset_);
889 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 889 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
890 cmd.Init(client_program_id_, 890 cmd.Init(client_program_id_,
891 0, 891 0,
892 kBucketId, 892 kBucketId,
893 shared_memory_id_, 893 shared_memory_id_,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 GetActiveUniformBlockiv(kServiceProgramId, 0, 930 GetActiveUniformBlockiv(kServiceProgramId, 0,
931 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) 931 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _))
932 .WillOnce(SetArgPointee<3>(1)) 932 .WillOnce(SetArgPointee<3>(1))
933 .RetiresOnSaturation(); 933 .RetiresOnSaturation();
934 } 934 }
935 EXPECT_CALL(*gl_, 935 EXPECT_CALL(*gl_,
936 GetActiveUniformBlockiv( 936 GetActiveUniformBlockiv(
937 kServiceProgramId, 0, kPname[ii], _)) 937 kServiceProgramId, 0, kPname[ii], _))
938 .WillOnce(SetArgPointee<3>(1976)) 938 .WillOnce(SetArgPointee<3>(1976))
939 .RetiresOnSaturation(); 939 .RetiresOnSaturation();
940 decoder_->set_unsafe_es3_apis_enabled(true); 940 decoder_->set_es3_apis_enabled(true);
941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
942 EXPECT_EQ(1, result->GetNumResults()); 942 EXPECT_EQ(1, result->GetNumResults());
943 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 943 EXPECT_EQ(GL_NO_ERROR, GetGLError());
944 EXPECT_EQ(1976, result->GetData()[0]); 944 EXPECT_EQ(1976, result->GetData()[0]);
945 decoder_->set_unsafe_es3_apis_enabled(false); 945 decoder_->set_es3_apis_enabled(false);
946 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 946 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
947 } 947 }
948 } 948 }
949 949
950 TEST_P(GLES2DecoderWithShaderTest, 950 TEST_P(GLES2DecoderWithShaderTest,
951 GetActiveUniformBlockivSucceedsZeroUniforms) { 951 GetActiveUniformBlockivSucceedsZeroUniforms) {
952 GetActiveUniformBlockiv cmd; 952 GetActiveUniformBlockiv cmd;
953 typedef GetActiveUniformBlockiv::Result Result; 953 typedef GetActiveUniformBlockiv::Result Result;
954 Result* result = static_cast<Result*>(shared_memory_address_); 954 Result* result = static_cast<Result*>(shared_memory_address_);
955 result->SetNumResults(0); 955 result->SetNumResults(0);
(...skipping 13 matching lines...) Expand all
969 EXPECT_CALL(*gl_, 969 EXPECT_CALL(*gl_,
970 GetActiveUniformBlockiv( 970 GetActiveUniformBlockiv(
971 kServiceProgramId, 0, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) 971 kServiceProgramId, 0, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _))
972 .WillOnce(SetArgPointee<3>(0)) 972 .WillOnce(SetArgPointee<3>(0))
973 .RetiresOnSaturation(); 973 .RetiresOnSaturation();
974 EXPECT_CALL(*gl_, 974 EXPECT_CALL(*gl_,
975 GetActiveUniformBlockiv(kServiceProgramId, 0, 975 GetActiveUniformBlockiv(kServiceProgramId, 0,
976 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, _)) 976 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, _))
977 .Times(1) 977 .Times(1)
978 .RetiresOnSaturation(); 978 .RetiresOnSaturation();
979 decoder_->set_unsafe_es3_apis_enabled(true); 979 decoder_->set_es3_apis_enabled(true);
980 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 980 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
981 EXPECT_EQ(0, result->GetNumResults()); 981 EXPECT_EQ(0, result->GetNumResults());
982 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 982 EXPECT_EQ(GL_NO_ERROR, GetGLError());
983 } 983 }
984 984
985 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivUnlinkedProgram) { 985 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivUnlinkedProgram) {
986 GetActiveUniformBlockiv cmd; 986 GetActiveUniformBlockiv cmd;
987 typedef GetActiveUniformBlockiv::Result Result; 987 typedef GetActiveUniformBlockiv::Result Result;
988 Result* result = static_cast<Result*>(shared_memory_address_); 988 Result* result = static_cast<Result*>(shared_memory_address_);
989 result->SetNumResults(0); 989 result->SetNumResults(0);
990 cmd.Init(client_program_id_, 990 cmd.Init(client_program_id_,
991 0, 991 0,
992 GL_UNIFORM_BLOCK_BINDING, 992 GL_UNIFORM_BLOCK_BINDING,
993 shared_memory_id_, 993 shared_memory_id_,
994 shared_memory_offset_); 994 shared_memory_offset_);
995 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 995 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
996 .WillOnce(SetArgPointee<2>(GL_FALSE)) 996 .WillOnce(SetArgPointee<2>(GL_FALSE))
997 .RetiresOnSaturation(); 997 .RetiresOnSaturation();
998 decoder_->set_unsafe_es3_apis_enabled(true); 998 decoder_->set_es3_apis_enabled(true);
999 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 999 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1000 EXPECT_EQ(0, result->GetNumResults()); 1000 EXPECT_EQ(0, result->GetNumResults());
1001 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 1001 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
1002 } 1002 }
1003 1003
1004 TEST_P(GLES2DecoderWithShaderTest, 1004 TEST_P(GLES2DecoderWithShaderTest,
1005 GetActiveUniformBlockivResultNotInitFails) { 1005 GetActiveUniformBlockivResultNotInitFails) {
1006 GetActiveUniformBlockiv cmd; 1006 GetActiveUniformBlockiv cmd;
1007 typedef GetActiveUniformBlockiv::Result Result; 1007 typedef GetActiveUniformBlockiv::Result Result;
1008 Result* result = static_cast<Result*>(shared_memory_address_); 1008 Result* result = static_cast<Result*>(shared_memory_address_);
1009 result->SetNumResults(1); // Should be initialized to 0. 1009 result->SetNumResults(1); // Should be initialized to 0.
1010 cmd.Init(client_program_id_, 1010 cmd.Init(client_program_id_,
1011 0, 1011 0,
1012 GL_UNIFORM_BLOCK_BINDING, 1012 GL_UNIFORM_BLOCK_BINDING,
1013 shared_memory_id_, 1013 shared_memory_id_,
1014 shared_memory_offset_); 1014 shared_memory_offset_);
1015 decoder_->set_unsafe_es3_apis_enabled(true); 1015 decoder_->set_es3_apis_enabled(true);
1016 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1016 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1017 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1017 .WillOnce(SetArgPointee<2>(GL_TRUE))
1018 .RetiresOnSaturation(); 1018 .RetiresOnSaturation();
1019 EXPECT_CALL(*gl_, GetError()) 1019 EXPECT_CALL(*gl_, GetError())
1020 .WillOnce(Return(GL_NO_ERROR)) 1020 .WillOnce(Return(GL_NO_ERROR))
1021 .RetiresOnSaturation(); 1021 .RetiresOnSaturation();
1022 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1022 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1023 } 1023 }
1024 1024
1025 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivBadProgramFails) { 1025 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivBadProgramFails) {
1026 GetActiveUniformBlockiv cmd; 1026 GetActiveUniformBlockiv cmd;
1027 typedef GetActiveUniformBlockiv::Result Result; 1027 typedef GetActiveUniformBlockiv::Result Result;
1028 Result* result = static_cast<Result*>(shared_memory_address_); 1028 Result* result = static_cast<Result*>(shared_memory_address_);
1029 result->SetNumResults(0); 1029 result->SetNumResults(0);
1030 cmd.Init(kInvalidClientId, 1030 cmd.Init(kInvalidClientId,
1031 0, 1031 0,
1032 GL_UNIFORM_BLOCK_BINDING, 1032 GL_UNIFORM_BLOCK_BINDING,
1033 shared_memory_id_, 1033 shared_memory_id_,
1034 shared_memory_offset_); 1034 shared_memory_offset_);
1035 decoder_->set_unsafe_es3_apis_enabled(true); 1035 decoder_->set_es3_apis_enabled(true);
1036 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1036 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1037 EXPECT_EQ(0, result->GetNumResults()); 1037 EXPECT_EQ(0, result->GetNumResults());
1038 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1038 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1039 } 1039 }
1040 1040
1041 TEST_P(GLES2DecoderWithShaderTest, 1041 TEST_P(GLES2DecoderWithShaderTest,
1042 GetActiveUniformBlockivBadSharedMemoryFails) { 1042 GetActiveUniformBlockivBadSharedMemoryFails) {
1043 GetActiveUniformBlockiv cmd; 1043 GetActiveUniformBlockiv cmd;
1044 decoder_->set_unsafe_es3_apis_enabled(true); 1044 decoder_->set_es3_apis_enabled(true);
1045 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1045 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1046 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1046 .WillOnce(SetArgPointee<2>(GL_TRUE))
1047 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1047 .WillOnce(SetArgPointee<2>(GL_TRUE))
1048 .RetiresOnSaturation(); 1048 .RetiresOnSaturation();
1049 EXPECT_CALL(*gl_, GetError()) 1049 EXPECT_CALL(*gl_, GetError())
1050 .WillOnce(Return(GL_NO_ERROR)) 1050 .WillOnce(Return(GL_NO_ERROR))
1051 .WillOnce(Return(GL_NO_ERROR)) 1051 .WillOnce(Return(GL_NO_ERROR))
1052 .RetiresOnSaturation(); 1052 .RetiresOnSaturation();
1053 cmd.Init(client_program_id_, 1053 cmd.Init(client_program_id_,
1054 0, 1054 0,
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
1184 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) 1184 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _))
1185 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) 1185 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount))
1186 .RetiresOnSaturation(); 1186 .RetiresOnSaturation();
1187 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1187 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1188 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1188 .WillOnce(SetArgPointee<2>(GL_TRUE))
1189 .RetiresOnSaturation(); 1189 .RetiresOnSaturation();
1190 EXPECT_CALL(*gl_, GetError()) 1190 EXPECT_CALL(*gl_, GetError())
1191 .WillOnce(Return(GL_NO_ERROR)) 1191 .WillOnce(Return(GL_NO_ERROR))
1192 .WillOnce(Return(GL_NO_ERROR)) 1192 .WillOnce(Return(GL_NO_ERROR))
1193 .RetiresOnSaturation(); 1193 .RetiresOnSaturation();
1194 decoder_->set_unsafe_es3_apis_enabled(true); 1194 decoder_->set_es3_apis_enabled(true);
1195 result->size = 0; 1195 result->size = 0;
1196 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1196 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1197 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); 1197 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults()));
1198 for (size_t ii = 0; ii < kCount; ++ii) { 1198 for (size_t ii = 0; ii < kCount; ++ii) {
1199 EXPECT_EQ(kIndices[ii], result->GetData()[ii]); 1199 EXPECT_EQ(kIndices[ii], result->GetData()[ii]);
1200 } 1200 }
1201 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1201 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1202 decoder_->set_unsafe_es3_apis_enabled(false); 1202 decoder_->set_es3_apis_enabled(false);
1203 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 1203 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1204 } 1204 }
1205 1205
1206 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadProgramFails) { 1206 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadProgramFails) {
1207 const uint32_t kBucketId = 123; 1207 const uint32_t kBucketId = 123;
1208 const char kName0[] = "Cow"; 1208 const char kName0[] = "Cow";
1209 const char kName1[] = "Chicken"; 1209 const char kName1[] = "Chicken";
1210 const char* kNames[] = { kName0, kName1 }; 1210 const char* kNames[] = { kName0, kName1 };
1211 const size_t kCount = arraysize(kNames); 1211 const size_t kCount = arraysize(kNames);
1212 const char kValidStrEnd = 0; 1212 const char kValidStrEnd = 0;
1213 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); 1213 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd);
1214 GetUniformIndices::Result* result = 1214 GetUniformIndices::Result* result =
1215 static_cast<GetUniformIndices::Result*>(shared_memory_address_); 1215 static_cast<GetUniformIndices::Result*>(shared_memory_address_);
1216 decoder_->set_unsafe_es3_apis_enabled(true); 1216 decoder_->set_es3_apis_enabled(true);
1217 GetUniformIndices cmd; 1217 GetUniformIndices cmd;
1218 // None-existant program 1218 // None-existant program
1219 cmd.Init(kInvalidClientId, 1219 cmd.Init(kInvalidClientId,
1220 kBucketId, 1220 kBucketId,
1221 kSharedMemoryId, 1221 kSharedMemoryId,
1222 kSharedMemoryOffset); 1222 kSharedMemoryOffset);
1223 result->size = 0; 1223 result->size = 0;
1224 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1224 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1225 EXPECT_EQ(0, result->GetNumResults()); 1225 EXPECT_EQ(0, result->GetNumResults());
1226 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1226 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
(...skipping 30 matching lines...) Expand all
1257 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) 1257 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _))
1258 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) 1258 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount))
1259 .RetiresOnSaturation(); 1259 .RetiresOnSaturation();
1260 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1260 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1261 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1261 .WillOnce(SetArgPointee<2>(GL_TRUE))
1262 .RetiresOnSaturation(); 1262 .RetiresOnSaturation();
1263 EXPECT_CALL(*gl_, GetError()) 1263 EXPECT_CALL(*gl_, GetError())
1264 .WillOnce(Return(GL_NO_ERROR)) 1264 .WillOnce(Return(GL_NO_ERROR))
1265 .WillOnce(Return(GL_INVALID_VALUE)) 1265 .WillOnce(Return(GL_INVALID_VALUE))
1266 .RetiresOnSaturation(); 1266 .RetiresOnSaturation();
1267 decoder_->set_unsafe_es3_apis_enabled(true); 1267 decoder_->set_es3_apis_enabled(true);
1268 result->size = 0; 1268 result->size = 0;
1269 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1269 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1270 EXPECT_EQ(0, result->GetNumResults()); 1270 EXPECT_EQ(0, result->GetNumResults());
1271 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1271 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1272 } 1272 }
1273 1273
1274 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesResultNotInitFails) { 1274 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesResultNotInitFails) {
1275 const uint32_t kBucketId = 123; 1275 const uint32_t kBucketId = 123;
1276 const char kName0[] = "Cow"; 1276 const char kName0[] = "Cow";
1277 const char kName1[] = "Chicken"; 1277 const char kName1[] = "Chicken";
1278 const char* kNames[] = { kName0, kName1 }; 1278 const char* kNames[] = { kName0, kName1 };
1279 const size_t kCount = arraysize(kNames); 1279 const size_t kCount = arraysize(kNames);
1280 const char kValidStrEnd = 0; 1280 const char kValidStrEnd = 0;
1281 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); 1281 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd);
1282 GetUniformIndices::Result* result = 1282 GetUniformIndices::Result* result =
1283 static_cast<GetUniformIndices::Result*>(shared_memory_address_); 1283 static_cast<GetUniformIndices::Result*>(shared_memory_address_);
1284 decoder_->set_unsafe_es3_apis_enabled(true); 1284 decoder_->set_es3_apis_enabled(true);
1285 GetUniformIndices cmd; 1285 GetUniformIndices cmd;
1286 result->size = 1976; // Any value other than 0. 1286 result->size = 1976; // Any value other than 0.
1287 cmd.Init(kInvalidClientId, 1287 cmd.Init(kInvalidClientId,
1288 kBucketId, 1288 kBucketId,
1289 kSharedMemoryId, 1289 kSharedMemoryId,
1290 kSharedMemoryOffset); 1290 kSharedMemoryOffset);
1291 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1291 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1292 } 1292 }
1293 1293
1294 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadSharedMemoryFails) { 1294 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadSharedMemoryFails) {
1295 const uint32_t kBucketId = 123; 1295 const uint32_t kBucketId = 123;
1296 const char kName0[] = "Cow"; 1296 const char kName0[] = "Cow";
1297 const char kName1[] = "Chicken"; 1297 const char kName1[] = "Chicken";
1298 const char* kNames[] = { kName0, kName1 }; 1298 const char* kNames[] = { kName0, kName1 };
1299 const size_t kCount = arraysize(kNames); 1299 const size_t kCount = arraysize(kNames);
1300 const char kValidStrEnd = 0; 1300 const char kValidStrEnd = 0;
1301 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); 1301 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd);
1302 GetUniformIndices::Result* result = 1302 GetUniformIndices::Result* result =
1303 static_cast<GetUniformIndices::Result*>(shared_memory_address_); 1303 static_cast<GetUniformIndices::Result*>(shared_memory_address_);
1304 decoder_->set_unsafe_es3_apis_enabled(true); 1304 decoder_->set_es3_apis_enabled(true);
1305 GetUniformIndices cmd; 1305 GetUniformIndices cmd;
1306 cmd.Init(client_program_id_, 1306 cmd.Init(client_program_id_,
1307 kBucketId, 1307 kBucketId,
1308 kInvalidSharedMemoryId, 1308 kInvalidSharedMemoryId,
1309 kSharedMemoryOffset); 1309 kSharedMemoryOffset);
1310 result->size = 0; 1310 result->size = 0;
1311 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1311 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1312 cmd.Init(client_program_id_, 1312 cmd.Init(client_program_id_,
1313 kBucketId, 1313 kBucketId,
1314 kSharedMemoryId, 1314 kSharedMemoryId,
(...skipping 21 matching lines...) Expand all
1336 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) 1336 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _))
1337 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) 1337 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount))
1338 .RetiresOnSaturation(); 1338 .RetiresOnSaturation();
1339 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1339 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1340 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1340 .WillOnce(SetArgPointee<2>(GL_TRUE))
1341 .RetiresOnSaturation(); 1341 .RetiresOnSaturation();
1342 EXPECT_CALL(*gl_, GetError()) 1342 EXPECT_CALL(*gl_, GetError())
1343 .WillOnce(Return(GL_NO_ERROR)) 1343 .WillOnce(Return(GL_NO_ERROR))
1344 .WillOnce(Return(GL_NO_ERROR)) 1344 .WillOnce(Return(GL_NO_ERROR))
1345 .RetiresOnSaturation(); 1345 .RetiresOnSaturation();
1346 decoder_->set_unsafe_es3_apis_enabled(true); 1346 decoder_->set_es3_apis_enabled(true);
1347 result->size = 0; 1347 result->size = 0;
1348 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1348 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1349 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); 1349 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults()));
1350 for (size_t ii = 0; ii < kCount; ++ii) { 1350 for (size_t ii = 0; ii < kCount; ++ii) {
1351 EXPECT_EQ(kResults[ii], result->GetData()[ii]); 1351 EXPECT_EQ(kResults[ii], result->GetData()[ii]);
1352 } 1352 }
1353 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1353 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1354 decoder_->set_unsafe_es3_apis_enabled(false); 1354 decoder_->set_es3_apis_enabled(false);
1355 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 1355 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1356 } 1356 }
1357 1357
1358 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadProgramFails) { 1358 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadProgramFails) {
1359 const uint32_t kBucketId = 123; 1359 const uint32_t kBucketId = 123;
1360 const GLuint kIndices[] = { 1, 2 }; 1360 const GLuint kIndices[] = { 1, 2 };
1361 const size_t kCount = arraysize(kIndices); 1361 const size_t kCount = arraysize(kIndices);
1362 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); 1362 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount);
1363 GetActiveUniformsiv::Result* result = 1363 GetActiveUniformsiv::Result* result =
1364 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); 1364 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_);
1365 decoder_->set_unsafe_es3_apis_enabled(true); 1365 decoder_->set_es3_apis_enabled(true);
1366 GetActiveUniformsiv cmd; 1366 GetActiveUniformsiv cmd;
1367 // None-existant program 1367 // None-existant program
1368 cmd.Init(kInvalidClientId, 1368 cmd.Init(kInvalidClientId,
1369 kBucketId, 1369 kBucketId,
1370 GL_UNIFORM_TYPE, 1370 GL_UNIFORM_TYPE,
1371 kSharedMemoryId, 1371 kSharedMemoryId,
1372 kSharedMemoryOffset); 1372 kSharedMemoryOffset);
1373 result->size = 0; 1373 result->size = 0;
1374 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1374 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1375 EXPECT_EQ(0, result->GetNumResults()); 1375 EXPECT_EQ(0, result->GetNumResults());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1408 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) 1408 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _))
1409 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) 1409 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount))
1410 .RetiresOnSaturation(); 1410 .RetiresOnSaturation();
1411 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1411 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1412 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1412 .WillOnce(SetArgPointee<2>(GL_TRUE))
1413 .RetiresOnSaturation(); 1413 .RetiresOnSaturation();
1414 EXPECT_CALL(*gl_, GetError()) 1414 EXPECT_CALL(*gl_, GetError())
1415 .WillOnce(Return(GL_NO_ERROR)) 1415 .WillOnce(Return(GL_NO_ERROR))
1416 .WillOnce(Return(GL_INVALID_VALUE)) 1416 .WillOnce(Return(GL_INVALID_VALUE))
1417 .RetiresOnSaturation(); 1417 .RetiresOnSaturation();
1418 decoder_->set_unsafe_es3_apis_enabled(true); 1418 decoder_->set_es3_apis_enabled(true);
1419 result->size = 0; 1419 result->size = 0;
1420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1421 EXPECT_EQ(0, result->GetNumResults()); 1421 EXPECT_EQ(0, result->GetNumResults());
1422 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1422 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1423 } 1423 }
1424 1424
1425 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadPnameFails) { 1425 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadPnameFails) {
1426 const uint32_t kBucketId = 123; 1426 const uint32_t kBucketId = 123;
1427 const GLuint kIndices[] = { 1, 2 }; 1427 const GLuint kIndices[] = { 1, 2 };
1428 const size_t kCount = arraysize(kIndices); 1428 const size_t kCount = arraysize(kIndices);
1429 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); 1429 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount);
1430 GetActiveUniformsiv::Result* result = 1430 GetActiveUniformsiv::Result* result =
1431 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); 1431 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_);
1432 decoder_->set_unsafe_es3_apis_enabled(true); 1432 decoder_->set_es3_apis_enabled(true);
1433 GetActiveUniformsiv cmd; 1433 GetActiveUniformsiv cmd;
1434 // GL_UNIFORM_BLOCK_NAME_LENGTH should not be supported. 1434 // GL_UNIFORM_BLOCK_NAME_LENGTH should not be supported.
1435 cmd.Init(client_program_id_, 1435 cmd.Init(client_program_id_,
1436 kBucketId, 1436 kBucketId,
1437 GL_UNIFORM_BLOCK_NAME_LENGTH, 1437 GL_UNIFORM_BLOCK_NAME_LENGTH,
1438 kSharedMemoryId, 1438 kSharedMemoryId,
1439 kSharedMemoryOffset); 1439 kSharedMemoryOffset);
1440 result->size = 0; 1440 result->size = 0;
1441 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1441 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1442 EXPECT_EQ(0, result->GetNumResults()); 1442 EXPECT_EQ(0, result->GetNumResults());
(...skipping 16 matching lines...) Expand all
1459 const size_t kCount = arraysize(kIndices); 1459 const size_t kCount = arraysize(kIndices);
1460 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); 1460 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount);
1461 GetActiveUniformsiv::Result* result = 1461 GetActiveUniformsiv::Result* result =
1462 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); 1462 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_);
1463 GetActiveUniformsiv cmd; 1463 GetActiveUniformsiv cmd;
1464 cmd.Init(client_program_id_, 1464 cmd.Init(client_program_id_,
1465 kBucketId, 1465 kBucketId,
1466 GL_UNIFORM_TYPE, 1466 GL_UNIFORM_TYPE,
1467 kSharedMemoryId, 1467 kSharedMemoryId,
1468 kSharedMemoryOffset); 1468 kSharedMemoryOffset);
1469 decoder_->set_unsafe_es3_apis_enabled(true); 1469 decoder_->set_es3_apis_enabled(true);
1470 result->size = 1976; // Any value other than 0. 1470 result->size = 1976; // Any value other than 0.
1471 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1471 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1472 } 1472 }
1473 1473
1474 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadSharedMemoryFails) { 1474 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadSharedMemoryFails) {
1475 const uint32_t kBucketId = 123; 1475 const uint32_t kBucketId = 123;
1476 const GLuint kIndices[] = { 1, 2 }; 1476 const GLuint kIndices[] = { 1, 2 };
1477 const size_t kCount = arraysize(kIndices); 1477 const size_t kCount = arraysize(kIndices);
1478 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); 1478 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount);
1479 GetActiveUniformsiv::Result* result = 1479 GetActiveUniformsiv::Result* result =
1480 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); 1480 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_);
1481 GetActiveUniformsiv cmd; 1481 GetActiveUniformsiv cmd;
1482 decoder_->set_unsafe_es3_apis_enabled(true); 1482 decoder_->set_es3_apis_enabled(true);
1483 result->size = 0; 1483 result->size = 0;
1484 cmd.Init(client_program_id_, 1484 cmd.Init(client_program_id_,
1485 kBucketId, 1485 kBucketId,
1486 GL_UNIFORM_TYPE, 1486 GL_UNIFORM_TYPE,
1487 kInvalidSharedMemoryId, 1487 kInvalidSharedMemoryId,
1488 kSharedMemoryOffset); 1488 kSharedMemoryOffset);
1489 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1489 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1490 result->size = 0; 1490 result->size = 0;
1491 cmd.Init(client_program_id_, 1491 cmd.Init(client_program_id_,
1492 kBucketId, 1492 kBucketId,
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1569 .WillOnce(DoAll(SetArgPointee<3>(kBufferSize - 1), 1569 .WillOnce(DoAll(SetArgPointee<3>(kBufferSize - 1),
1570 SetArgPointee<4>(kSize), 1570 SetArgPointee<4>(kSize),
1571 SetArgPointee<5>(kType), 1571 SetArgPointee<5>(kType),
1572 SetArrayArgument<6>(kName, kName + kBufferSize))) 1572 SetArrayArgument<6>(kName, kName + kBufferSize)))
1573 .RetiresOnSaturation(); 1573 .RetiresOnSaturation();
1574 cmd.Init(client_program_id_, 1574 cmd.Init(client_program_id_,
1575 kIndex, 1575 kIndex,
1576 kBucketId, 1576 kBucketId,
1577 shared_memory_id_, 1577 shared_memory_id_,
1578 shared_memory_offset_); 1578 shared_memory_offset_);
1579 decoder_->set_unsafe_es3_apis_enabled(true); 1579 decoder_->set_es3_apis_enabled(true);
1580 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1580 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1581 EXPECT_NE(0, result->success); 1581 EXPECT_NE(0, result->success);
1582 EXPECT_EQ(kSize, static_cast<GLsizei>(result->size)); 1582 EXPECT_EQ(kSize, static_cast<GLsizei>(result->size));
1583 EXPECT_EQ(kType, static_cast<GLenum>(result->type)); 1583 EXPECT_EQ(kType, static_cast<GLenum>(result->type));
1584 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1584 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1585 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 1585 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
1586 ASSERT_TRUE(bucket != NULL); 1586 ASSERT_TRUE(bucket != NULL);
1587 EXPECT_EQ( 1587 EXPECT_EQ(
1588 0, memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); 1588 0, memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size()));
1589 decoder_->set_unsafe_es3_apis_enabled(false); 1589 decoder_->set_es3_apis_enabled(false);
1590 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 1590 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1591 } 1591 }
1592 1592
1593 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingNotInitFails) { 1593 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingNotInitFails) {
1594 const GLuint kIndex = 1; 1594 const GLuint kIndex = 1;
1595 const uint32_t kBucketId = 123; 1595 const uint32_t kBucketId = 123;
1596 GetTransformFeedbackVarying cmd; 1596 GetTransformFeedbackVarying cmd;
1597 typedef GetTransformFeedbackVarying::Result Result; 1597 typedef GetTransformFeedbackVarying::Result Result;
1598 Result* result = static_cast<Result*>(shared_memory_address_); 1598 Result* result = static_cast<Result*>(shared_memory_address_);
1599 result->success = 1; 1599 result->success = 1;
1600 cmd.Init(client_program_id_, 1600 cmd.Init(client_program_id_,
1601 kIndex, 1601 kIndex,
1602 kBucketId, 1602 kBucketId,
1603 shared_memory_id_, 1603 shared_memory_id_,
1604 shared_memory_offset_); 1604 shared_memory_offset_);
1605 decoder_->set_unsafe_es3_apis_enabled(true); 1605 decoder_->set_es3_apis_enabled(true);
1606 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1606 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1607 } 1607 }
1608 1608
1609 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadProgramFails) { 1609 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadProgramFails) {
1610 const GLuint kIndex = 1; 1610 const GLuint kIndex = 1;
1611 const uint32_t kBucketId = 123; 1611 const uint32_t kBucketId = 123;
1612 GetTransformFeedbackVarying cmd; 1612 GetTransformFeedbackVarying cmd;
1613 typedef GetTransformFeedbackVarying::Result Result; 1613 typedef GetTransformFeedbackVarying::Result Result;
1614 Result* result = static_cast<Result*>(shared_memory_address_); 1614 Result* result = static_cast<Result*>(shared_memory_address_);
1615 result->success = 0; 1615 result->success = 0;
1616 cmd.Init(kInvalidClientId, 1616 cmd.Init(kInvalidClientId,
1617 kIndex, 1617 kIndex,
1618 kBucketId, 1618 kBucketId,
1619 shared_memory_id_, 1619 shared_memory_id_,
1620 shared_memory_offset_); 1620 shared_memory_offset_);
1621 decoder_->set_unsafe_es3_apis_enabled(true); 1621 decoder_->set_es3_apis_enabled(true);
1622 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1622 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1623 EXPECT_EQ(0, result->success); 1623 EXPECT_EQ(0, result->success);
1624 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1624 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1625 } 1625 }
1626 1626
1627 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadParamsFails) { 1627 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadParamsFails) {
1628 const GLuint kIndex = 1; 1628 const GLuint kIndex = 1;
1629 const uint32_t kBucketId = 123; 1629 const uint32_t kBucketId = 123;
1630 const GLsizei kBufferSize = 10; 1630 const GLsizei kBufferSize = 10;
1631 GetTransformFeedbackVarying cmd; 1631 GetTransformFeedbackVarying cmd;
(...skipping 14 matching lines...) Expand all
1646 .RetiresOnSaturation(); 1646 .RetiresOnSaturation();
1647 EXPECT_CALL(*gl_, GetError()) 1647 EXPECT_CALL(*gl_, GetError())
1648 .WillOnce(Return(GL_NO_ERROR)) 1648 .WillOnce(Return(GL_NO_ERROR))
1649 .WillOnce(Return(GL_INVALID_VALUE)) 1649 .WillOnce(Return(GL_INVALID_VALUE))
1650 .RetiresOnSaturation(); 1650 .RetiresOnSaturation();
1651 EXPECT_CALL(*gl_, 1651 EXPECT_CALL(*gl_,
1652 GetTransformFeedbackVarying( 1652 GetTransformFeedbackVarying(
1653 kServiceProgramId, kIndex, _, _, _, _, _)) 1653 kServiceProgramId, kIndex, _, _, _, _, _))
1654 .Times(1) 1654 .Times(1)
1655 .RetiresOnSaturation(); 1655 .RetiresOnSaturation();
1656 decoder_->set_unsafe_es3_apis_enabled(true); 1656 decoder_->set_es3_apis_enabled(true);
1657 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1657 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1658 EXPECT_EQ(0, result->success); 1658 EXPECT_EQ(0, result->success);
1659 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1659 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1660 } 1660 }
1661 1661
1662 TEST_P(GLES2DecoderWithShaderTest, 1662 TEST_P(GLES2DecoderWithShaderTest,
1663 GetTransformFeedbackVaryingBadSharedMemoryFails) { 1663 GetTransformFeedbackVaryingBadSharedMemoryFails) {
1664 const GLuint kIndex = 1; 1664 const GLuint kIndex = 1;
1665 const uint32_t kBucketId = 123; 1665 const uint32_t kBucketId = 123;
1666 GetTransformFeedbackVarying cmd; 1666 GetTransformFeedbackVarying cmd;
1667 typedef GetTransformFeedbackVarying::Result Result; 1667 typedef GetTransformFeedbackVarying::Result Result;
1668 Result* result = static_cast<Result*>(shared_memory_address_); 1668 Result* result = static_cast<Result*>(shared_memory_address_);
1669 result->success = 0; 1669 result->success = 0;
1670 decoder_->set_unsafe_es3_apis_enabled(true); 1670 decoder_->set_es3_apis_enabled(true);
1671 cmd.Init(client_program_id_, 1671 cmd.Init(client_program_id_,
1672 kIndex, 1672 kIndex,
1673 kBucketId, 1673 kBucketId,
1674 kInvalidSharedMemoryId, 1674 kInvalidSharedMemoryId,
1675 shared_memory_offset_); 1675 shared_memory_offset_);
1676 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1676 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1677 cmd.Init(client_program_id_, 1677 cmd.Init(client_program_id_,
1678 kIndex, 1678 kIndex,
1679 kBucketId, 1679 kBucketId,
1680 shared_memory_id_, 1680 shared_memory_id_,
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1783 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); 1783 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2));
1784 Uniform1i cmd; 1784 Uniform1i cmd;
1785 cmd.Init(kUniform1FakeLocation, 2); 1785 cmd.Init(kUniform1FakeLocation, 2);
1786 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1786 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1787 } 1787 }
1788 1788
1789 TEST_P(GLES2DecoderWithShaderTest, Uniform1uiValidArgs) { 1789 TEST_P(GLES2DecoderWithShaderTest, Uniform1uiValidArgs) {
1790 EXPECT_CALL(*gl_, Uniform1uiv(kUniform4RealLocation, 1, _)); 1790 EXPECT_CALL(*gl_, Uniform1uiv(kUniform4RealLocation, 1, _));
1791 Uniform1ui cmd; 1791 Uniform1ui cmd;
1792 cmd.Init(kUniform4FakeLocation, 2); 1792 cmd.Init(kUniform4FakeLocation, 2);
1793 decoder_->set_unsafe_es3_apis_enabled(true); 1793 decoder_->set_es3_apis_enabled(true);
1794 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1794 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1795 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1795 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1796 decoder_->set_unsafe_es3_apis_enabled(false); 1796 decoder_->set_es3_apis_enabled(false);
1797 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 1797 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1798 } 1798 }
1799 1799
1800 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { 1800 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) {
1801 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); 1801 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>();
1802 GLint temp[1] = { 1802 GLint temp[1] = {
1803 0, 1803 0,
1804 }; 1804 };
1805 EXPECT_CALL(*gl_, 1805 EXPECT_CALL(*gl_,
1806 Uniform1iv(kUniform1RealLocation, 1, PointsToArray(temp, 1))); 1806 Uniform1iv(kUniform1RealLocation, 1, PointsToArray(temp, 1)));
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1866 1866
1867 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateValidArgs) { 1867 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateValidArgs) {
1868 Uniform1uivImmediate& cmd = 1868 Uniform1uivImmediate& cmd =
1869 *GetImmediateAs<Uniform1uivImmediate>(); 1869 *GetImmediateAs<Uniform1uivImmediate>();
1870 GLuint temp[1] = { 1870 GLuint temp[1] = {
1871 0, 1871 0,
1872 }; 1872 };
1873 EXPECT_CALL(*gl_, 1873 EXPECT_CALL(*gl_,
1874 Uniform1uiv(kUniform4RealLocation, 1, PointsToArray(temp, 1))); 1874 Uniform1uiv(kUniform4RealLocation, 1, PointsToArray(temp, 1)));
1875 cmd.Init(kUniform4FakeLocation, 1, &temp[0]); 1875 cmd.Init(kUniform4FakeLocation, 1, &temp[0]);
1876 decoder_->set_unsafe_es3_apis_enabled(true); 1876 decoder_->set_es3_apis_enabled(true);
1877 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1877 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1878 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1878 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1879 decoder_->set_unsafe_es3_apis_enabled(false); 1879 decoder_->set_es3_apis_enabled(false);
1880 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); 1880 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1881 } 1881 }
1882 1882
1883 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateInvalidType) { 1883 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateInvalidType) {
1884 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); 1884 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0);
1885 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); 1885 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>();
1886 GLuint temp[1 * 2] = { 1886 GLuint temp[1 * 2] = {
1887 0, 1887 0,
1888 }; 1888 };
1889 // uniform1 is SAMPLER type. 1889 // uniform1 is SAMPLER type.
1890 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); 1890 cmd.Init(kUniform1FakeLocation, 1, &temp[0]);
1891 decoder_->set_unsafe_es3_apis_enabled(true); 1891 decoder_->set_es3_apis_enabled(true);
1892 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1892 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1893 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 1893 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
1894 } 1894 }
1895 1895
1896 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivZeroCount) { 1896 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivZeroCount) {
1897 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); 1897 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0);
1898 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); 1898 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>();
1899 GLuint temp = 0; 1899 GLuint temp = 0;
1900 cmd.Init(kUniform4FakeLocation, 0, &temp); 1900 cmd.Init(kUniform4FakeLocation, 0, &temp);
1901 decoder_->set_unsafe_es3_apis_enabled(true); 1901 decoder_->set_es3_apis_enabled(true);
1902 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1902 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1903 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1903 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1904 } 1904 }
1905 1905
1906 TEST_P(GLES2DecoderWithShaderTest, Uniform2uiValidArgs) { 1906 TEST_P(GLES2DecoderWithShaderTest, Uniform2uiValidArgs) {
1907 EXPECT_CALL(*gl_, Uniform2uiv(kUniform5RealLocation, 1, _)); 1907 EXPECT_CALL(*gl_, Uniform2uiv(kUniform5RealLocation, 1, _));
1908 Uniform2ui cmd; 1908 Uniform2ui cmd;
1909 cmd.Init(kUniform5FakeLocation, 2, 3); 1909 cmd.Init(kUniform5FakeLocation, 2, 3);
1910 decoder_->set_unsafe_es3_apis_enabled(true); 1910 decoder_->set_es3_apis_enabled(true);
1911 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1911 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1912 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1912 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1913 decoder_->set_unsafe_es3_apis_enabled(false); 1913 decoder_->set_es3_apis_enabled(false);
1914 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 1914 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1915 } 1915 }
1916 1916
1917 TEST_P(GLES2DecoderWithShaderTest, Uniform2uivImmediateValidArgs) { 1917 TEST_P(GLES2DecoderWithShaderTest, Uniform2uivImmediateValidArgs) {
1918 Uniform2uivImmediate& cmd = 1918 Uniform2uivImmediate& cmd =
1919 *GetImmediateAs<Uniform2uivImmediate>(); 1919 *GetImmediateAs<Uniform2uivImmediate>();
1920 GLuint temp[2 * 1] = { 1920 GLuint temp[2 * 1] = {
1921 0, 1921 0,
1922 }; 1922 };
1923 EXPECT_CALL(*gl_, 1923 EXPECT_CALL(*gl_,
1924 Uniform2uiv(kUniform5RealLocation, 1, PointsToArray(temp, 2))); 1924 Uniform2uiv(kUniform5RealLocation, 1, PointsToArray(temp, 2)));
1925 cmd.Init(kUniform5FakeLocation, 1, &temp[0]); 1925 cmd.Init(kUniform5FakeLocation, 1, &temp[0]);
1926 decoder_->set_unsafe_es3_apis_enabled(true); 1926 decoder_->set_es3_apis_enabled(true);
1927 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1927 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1928 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1928 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1929 decoder_->set_unsafe_es3_apis_enabled(false); 1929 decoder_->set_es3_apis_enabled(false);
1930 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); 1930 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1931 } 1931 }
1932 1932
1933 TEST_P(GLES2DecoderWithShaderTest, Uniform3uiValidArgs) { 1933 TEST_P(GLES2DecoderWithShaderTest, Uniform3uiValidArgs) {
1934 EXPECT_CALL(*gl_, Uniform3uiv(kUniform6RealLocation, 1, _)); 1934 EXPECT_CALL(*gl_, Uniform3uiv(kUniform6RealLocation, 1, _));
1935 Uniform3ui cmd; 1935 Uniform3ui cmd;
1936 cmd.Init(kUniform6FakeLocation, 2, 3, 4); 1936 cmd.Init(kUniform6FakeLocation, 2, 3, 4);
1937 decoder_->set_unsafe_es3_apis_enabled(true); 1937 decoder_->set_es3_apis_enabled(true);
1938 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1938 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1939 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1939 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1940 decoder_->set_unsafe_es3_apis_enabled(false); 1940 decoder_->set_es3_apis_enabled(false);
1941 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 1941 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1942 } 1942 }
1943 1943
1944 TEST_P(GLES2DecoderWithShaderTest, Uniform3uivImmediateValidArgs) { 1944 TEST_P(GLES2DecoderWithShaderTest, Uniform3uivImmediateValidArgs) {
1945 Uniform3uivImmediate& cmd = 1945 Uniform3uivImmediate& cmd =
1946 *GetImmediateAs<Uniform3uivImmediate>(); 1946 *GetImmediateAs<Uniform3uivImmediate>();
1947 GLuint temp[3 * 1] = { 1947 GLuint temp[3 * 1] = {
1948 0, 1948 0,
1949 }; 1949 };
1950 EXPECT_CALL(*gl_, 1950 EXPECT_CALL(*gl_,
1951 Uniform3uiv(kUniform6RealLocation, 1, PointsToArray(temp, 3))); 1951 Uniform3uiv(kUniform6RealLocation, 1, PointsToArray(temp, 3)));
1952 cmd.Init(kUniform6FakeLocation, 1, &temp[0]); 1952 cmd.Init(kUniform6FakeLocation, 1, &temp[0]);
1953 decoder_->set_unsafe_es3_apis_enabled(true); 1953 decoder_->set_es3_apis_enabled(true);
1954 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1954 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1955 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1955 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1956 decoder_->set_unsafe_es3_apis_enabled(false); 1956 decoder_->set_es3_apis_enabled(false);
1957 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); 1957 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1958 } 1958 }
1959 1959
1960 TEST_P(GLES2DecoderWithShaderTest, Uniform4uiValidArgs) { 1960 TEST_P(GLES2DecoderWithShaderTest, Uniform4uiValidArgs) {
1961 EXPECT_CALL(*gl_, Uniform4uiv(kUniform7RealLocation, 1, _)); 1961 EXPECT_CALL(*gl_, Uniform4uiv(kUniform7RealLocation, 1, _));
1962 Uniform4ui cmd; 1962 Uniform4ui cmd;
1963 cmd.Init(kUniform7FakeLocation, 2, 3, 4, 5); 1963 cmd.Init(kUniform7FakeLocation, 2, 3, 4, 5);
1964 decoder_->set_unsafe_es3_apis_enabled(true); 1964 decoder_->set_es3_apis_enabled(true);
1965 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1965 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1966 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1966 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1967 decoder_->set_unsafe_es3_apis_enabled(false); 1967 decoder_->set_es3_apis_enabled(false);
1968 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 1968 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1969 } 1969 }
1970 1970
1971 TEST_P(GLES2DecoderWithShaderTest, Uniform4uivImmediateValidArgs) { 1971 TEST_P(GLES2DecoderWithShaderTest, Uniform4uivImmediateValidArgs) {
1972 Uniform4uivImmediate& cmd = 1972 Uniform4uivImmediate& cmd =
1973 *GetImmediateAs<Uniform4uivImmediate>(); 1973 *GetImmediateAs<Uniform4uivImmediate>();
1974 GLuint temp[4 * 1] = { 1974 GLuint temp[4 * 1] = {
1975 0, 1975 0,
1976 }; 1976 };
1977 EXPECT_CALL(*gl_, 1977 EXPECT_CALL(*gl_,
1978 Uniform4uiv(kUniform7RealLocation, 1, PointsToArray(temp, 4))); 1978 Uniform4uiv(kUniform7RealLocation, 1, PointsToArray(temp, 4)));
1979 cmd.Init(kUniform7FakeLocation, 1, &temp[0]); 1979 cmd.Init(kUniform7FakeLocation, 1, &temp[0]);
1980 decoder_->set_unsafe_es3_apis_enabled(true); 1980 decoder_->set_es3_apis_enabled(true);
1981 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1981 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1982 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1982 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1983 decoder_->set_unsafe_es3_apis_enabled(false); 1983 decoder_->set_es3_apis_enabled(false);
1984 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); 1984 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1985 } 1985 }
1986 1986
1987 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) { 1987 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) {
1988 const uint32_t kBucketId = 123; 1988 const uint32_t kBucketId = 123;
1989 const GLint kLocation = 2; 1989 const GLint kLocation = 2;
1990 const char* kName = "testing"; 1990 const char* kName = "testing";
1991 EXPECT_CALL(*gl_, 1991 EXPECT_CALL(*gl_,
1992 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) 1992 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName)))
1993 .Times(1); 1993 .Times(1);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
2066 } 2066 }
2067 2067
2068 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocation) { 2068 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocation) {
2069 const uint32_t kBucketId = 123; 2069 const uint32_t kBucketId = 123;
2070 typedef GetFragDataLocation::Result Result; 2070 typedef GetFragDataLocation::Result Result;
2071 Result* result = GetSharedMemoryAs<Result*>(); 2071 Result* result = GetSharedMemoryAs<Result*>();
2072 SetBucketAsCString(kBucketId, kOutputVariable1NameESSL3); 2072 SetBucketAsCString(kBucketId, kOutputVariable1NameESSL3);
2073 *result = -1; 2073 *result = -1;
2074 GetFragDataLocation cmd; 2074 GetFragDataLocation cmd;
2075 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 2075 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2076 decoder_->set_unsafe_es3_apis_enabled(true); 2076 decoder_->set_es3_apis_enabled(true);
2077 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2077 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
2078 EXPECT_EQ(static_cast<GLint>(kOutputVariable1ColorName), *result); 2078 EXPECT_EQ(static_cast<GLint>(kOutputVariable1ColorName), *result);
2079 decoder_->set_unsafe_es3_apis_enabled(false); 2079 decoder_->set_es3_apis_enabled(false);
2080 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 2080 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
2081 } 2081 }
2082 2082
2083 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocationInvalidArgs) { 2083 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocationInvalidArgs) {
2084 const uint32_t kBucketId = 123; 2084 const uint32_t kBucketId = 123;
2085 typedef GetFragDataLocation::Result Result; 2085 typedef GetFragDataLocation::Result Result;
2086 Result* result = GetSharedMemoryAs<Result*>(); 2086 Result* result = GetSharedMemoryAs<Result*>();
2087 *result = -1; 2087 *result = -1;
2088 GetFragDataLocation cmd; 2088 GetFragDataLocation cmd;
2089 decoder_->set_unsafe_es3_apis_enabled(true); 2089 decoder_->set_es3_apis_enabled(true);
2090 // Check no bucket 2090 // Check no bucket
2091 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 2091 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2092 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 2092 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2093 EXPECT_EQ(-1, *result); 2093 EXPECT_EQ(-1, *result);
2094 // Check bad program id. 2094 // Check bad program id.
2095 const char* kName = "color"; 2095 const char* kName = "color";
2096 SetBucketAsCString(kBucketId, kName); 2096 SetBucketAsCString(kBucketId, kName);
2097 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 2097 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2098 *result = -1; 2098 *result = -1;
2099 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2099 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
(...skipping 18 matching lines...) Expand all
2118 const char* kName = "color"; 2118 const char* kName = "color";
2119 typedef GetUniformBlockIndex::Result Result; 2119 typedef GetUniformBlockIndex::Result Result;
2120 Result* result = GetSharedMemoryAs<Result*>(); 2120 Result* result = GetSharedMemoryAs<Result*>();
2121 SetBucketAsCString(kBucketId, kName); 2121 SetBucketAsCString(kBucketId, kName);
2122 *result = GL_INVALID_INDEX; 2122 *result = GL_INVALID_INDEX;
2123 GetUniformBlockIndex cmd; 2123 GetUniformBlockIndex cmd;
2124 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 2124 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2125 EXPECT_CALL(*gl_, GetUniformBlockIndex(kServiceProgramId, StrEq(kName))) 2125 EXPECT_CALL(*gl_, GetUniformBlockIndex(kServiceProgramId, StrEq(kName)))
2126 .WillOnce(Return(kIndex)) 2126 .WillOnce(Return(kIndex))
2127 .RetiresOnSaturation(); 2127 .RetiresOnSaturation();
2128 decoder_->set_unsafe_es3_apis_enabled(true); 2128 decoder_->set_es3_apis_enabled(true);
2129 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2129 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
2130 EXPECT_EQ(kIndex, *result); 2130 EXPECT_EQ(kIndex, *result);
2131 decoder_->set_unsafe_es3_apis_enabled(false); 2131 decoder_->set_es3_apis_enabled(false);
2132 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 2132 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
2133 } 2133 }
2134 2134
2135 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlockIndexInvalidArgs) { 2135 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlockIndexInvalidArgs) {
2136 const uint32_t kBucketId = 123; 2136 const uint32_t kBucketId = 123;
2137 typedef GetUniformBlockIndex::Result Result; 2137 typedef GetUniformBlockIndex::Result Result;
2138 Result* result = GetSharedMemoryAs<Result*>(); 2138 Result* result = GetSharedMemoryAs<Result*>();
2139 *result = GL_INVALID_INDEX; 2139 *result = GL_INVALID_INDEX;
2140 GetUniformBlockIndex cmd; 2140 GetUniformBlockIndex cmd;
2141 decoder_->set_unsafe_es3_apis_enabled(true); 2141 decoder_->set_es3_apis_enabled(true);
2142 // Check no bucket 2142 // Check no bucket
2143 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 2143 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2144 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 2144 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2145 EXPECT_EQ(GL_INVALID_INDEX, *result); 2145 EXPECT_EQ(GL_INVALID_INDEX, *result);
2146 // Check bad program id. 2146 // Check bad program id.
2147 const char* kName = "color"; 2147 const char* kName = "color";
2148 SetBucketAsCString(kBucketId, kName); 2148 SetBucketAsCString(kBucketId, kName);
2149 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 2149 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2150 *result = GL_INVALID_INDEX; 2150 *result = GL_INVALID_INDEX;
2151 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2151 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
2207 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 2207 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2208 cmd.Init(client_program_id_, 2208 cmd.Init(client_program_id_,
2209 kBucketId, 2209 kBucketId,
2210 kSharedMemoryId, 2210 kSharedMemoryId,
2211 kInvalidSharedMemoryOffset); 2211 kInvalidSharedMemoryOffset);
2212 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 2212 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2213 } 2213 }
2214 2214
2215 TEST_P(GLES3DecoderWithESSL3ShaderTest, Basic) { 2215 TEST_P(GLES3DecoderWithESSL3ShaderTest, Basic) {
2216 // Make sure the setup is correct for ES3. 2216 // Make sure the setup is correct for ES3.
2217 EXPECT_TRUE(decoder_->unsafe_es3_apis_enabled()); 2217 EXPECT_TRUE(decoder_->es3_apis_enabled());
2218 EXPECT_TRUE(feature_info()->validators()->texture_bind_target.IsValid( 2218 EXPECT_TRUE(feature_info()->validators()->texture_bind_target.IsValid(
2219 GL_TEXTURE_3D)); 2219 GL_TEXTURE_3D));
2220 } 2220 }
2221 2221
2222 TEST_P(GLES3DecoderWithESSL3ShaderTest, UniformBlockBindingValidArgs) { 2222 TEST_P(GLES3DecoderWithESSL3ShaderTest, UniformBlockBindingValidArgs) {
2223 EXPECT_CALL(*gl_, UniformBlockBinding(kServiceProgramId, 1, 3)); 2223 EXPECT_CALL(*gl_, UniformBlockBinding(kServiceProgramId, 1, 3));
2224 SpecializedSetup<UniformBlockBinding, 0>(true); 2224 SpecializedSetup<UniformBlockBinding, 0>(true);
2225 UniformBlockBinding cmd; 2225 UniformBlockBinding cmd;
2226 cmd.Init(client_program_id_, 1, 3); 2226 cmd.Init(client_program_id_, 1, 3);
2227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
2356 } 2356 }
2357 2357
2358 // TODO(gman): DeleteProgram 2358 // TODO(gman): DeleteProgram
2359 2359
2360 // TODO(gman): UseProgram 2360 // TODO(gman): UseProgram
2361 2361
2362 // TODO(gman): DeleteShader 2362 // TODO(gman): DeleteShader
2363 2363
2364 } // namespace gles2 2364 } // namespace gles2
2365 } // namespace gpu 2365 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698