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

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

Issue 2445323006: command buffer: remove "unsafe" from autogenerated ES3 apis; cleanly separate ES3 tests (Closed)
Patch Set: address comment 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_unittest_base.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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 ASSERT_TRUE(bucket != NULL); 72 ASSERT_TRUE(bucket != NULL);
73 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size()); 73 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size());
74 ProgramInfoHeader* info = 74 ProgramInfoHeader* info =
75 bucket->GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader)); 75 bucket->GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader));
76 ASSERT_TRUE(info != 0); 76 ASSERT_TRUE(info != 0);
77 EXPECT_EQ(0u, info->link_status); 77 EXPECT_EQ(0u, info->link_status);
78 EXPECT_EQ(0u, info->num_attribs); 78 EXPECT_EQ(0u, info->num_attribs);
79 EXPECT_EQ(0u, info->num_uniforms); 79 EXPECT_EQ(0u, info->num_uniforms);
80 } 80 }
81 81
82 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlocksCHROMIUMValidArgs) { 82 TEST_P(GLES3DecoderWithShaderTest, GetUniformBlocksCHROMIUMValidArgs) {
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);
94 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 93 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
95 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 94 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
96 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); 95 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size());
97 UniformBlocksHeader* header = 96 UniformBlocksHeader* header =
98 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); 97 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader));
99 EXPECT_TRUE(header != NULL); 98 EXPECT_TRUE(header != NULL);
100 EXPECT_EQ(0u, header->num_uniform_blocks); 99 EXPECT_EQ(0u, header->num_uniform_blocks);
101 decoder_->set_unsafe_es3_apis_enabled(false);
102 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
103 } 100 }
104 101
105 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlocksCHROMIUMInvalidArgs) { 102 TEST_P(GLES3DecoderWithShaderTest, GetUniformBlocksCHROMIUMInvalidArgs) {
106 const uint32_t kBucketId = 123; 103 const uint32_t kBucketId = 123;
107 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 104 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
108 EXPECT_TRUE(bucket == NULL); 105 EXPECT_TRUE(bucket == NULL);
109 GetUniformBlocksCHROMIUM cmd; 106 GetUniformBlocksCHROMIUM cmd;
110 cmd.Init(kInvalidClientId, kBucketId); 107 cmd.Init(kInvalidClientId, kBucketId);
111 decoder_->set_unsafe_es3_apis_enabled(true);
112 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 108 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
113 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 109 EXPECT_EQ(GL_NO_ERROR, GetGLError());
114 bucket = decoder_->GetBucket(kBucketId); 110 bucket = decoder_->GetBucket(kBucketId);
115 ASSERT_TRUE(bucket != NULL); 111 ASSERT_TRUE(bucket != NULL);
116 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size()); 112 EXPECT_EQ(sizeof(UniformBlocksHeader), bucket->size());
117 UniformBlocksHeader* header = 113 UniformBlocksHeader* header =
118 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader)); 114 bucket->GetDataAs<UniformBlocksHeader*>(0, sizeof(UniformBlocksHeader));
119 ASSERT_TRUE(header != NULL); 115 ASSERT_TRUE(header != NULL);
120 EXPECT_EQ(0u, header->num_uniform_blocks); 116 EXPECT_EQ(0u, header->num_uniform_blocks);
121 } 117 }
122 118
123 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMValidArgs) { 119 TEST_P(GLES3DecoderWithShaderTest, GetUniformsES3CHROMIUMValidArgs) {
124 const uint32_t kBucketId = 123; 120 const uint32_t kBucketId = 123;
125 GetUniformsES3CHROMIUM cmd; 121 GetUniformsES3CHROMIUM cmd;
126 cmd.Init(client_program_id_, kBucketId); 122 cmd.Init(client_program_id_, kBucketId);
127 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 123 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
128 .WillOnce(SetArgPointee<2>(GL_TRUE)) 124 .WillOnce(SetArgPointee<2>(GL_TRUE))
129 .RetiresOnSaturation(); 125 .RetiresOnSaturation();
130 EXPECT_CALL(*gl_, 126 EXPECT_CALL(*gl_,
131 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORMS, _)) 127 GetProgramiv(kServiceProgramId, GL_ACTIVE_UNIFORMS, _))
132 .WillOnce(SetArgPointee<2>(0)) 128 .WillOnce(SetArgPointee<2>(0))
133 .RetiresOnSaturation(); 129 .RetiresOnSaturation();
134 decoder_->set_unsafe_es3_apis_enabled(true);
135 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 130 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
136 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 131 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
137 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); 132 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size());
138 UniformsES3Header* header = 133 UniformsES3Header* header =
139 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); 134 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header));
140 EXPECT_TRUE(header != NULL); 135 EXPECT_TRUE(header != NULL);
141 EXPECT_EQ(0u, header->num_uniforms); 136 EXPECT_EQ(0u, header->num_uniforms);
142 decoder_->set_unsafe_es3_apis_enabled(false);
143 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
144 } 137 }
145 138
146 TEST_P(GLES2DecoderWithShaderTest, GetUniformsES3CHROMIUMInvalidArgs) { 139 TEST_P(GLES3DecoderWithShaderTest, GetUniformsES3CHROMIUMInvalidArgs) {
147 const uint32_t kBucketId = 123; 140 const uint32_t kBucketId = 123;
148 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 141 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
149 EXPECT_TRUE(bucket == NULL); 142 EXPECT_TRUE(bucket == NULL);
150 GetUniformsES3CHROMIUM cmd; 143 GetUniformsES3CHROMIUM cmd;
151 cmd.Init(kInvalidClientId, kBucketId); 144 cmd.Init(kInvalidClientId, kBucketId);
152 decoder_->set_unsafe_es3_apis_enabled(true);
153 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 145 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
154 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 146 EXPECT_EQ(GL_NO_ERROR, GetGLError());
155 bucket = decoder_->GetBucket(kBucketId); 147 bucket = decoder_->GetBucket(kBucketId);
156 ASSERT_TRUE(bucket != NULL); 148 ASSERT_TRUE(bucket != NULL);
157 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size()); 149 EXPECT_EQ(sizeof(UniformsES3Header), bucket->size());
158 UniformsES3Header* header = 150 UniformsES3Header* header =
159 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header)); 151 bucket->GetDataAs<UniformsES3Header*>(0, sizeof(UniformsES3Header));
160 ASSERT_TRUE(header != NULL); 152 ASSERT_TRUE(header != NULL);
161 EXPECT_EQ(0u, header->num_uniforms); 153 EXPECT_EQ(0u, header->num_uniforms);
162 } 154 }
163 155
164 TEST_P(GLES2DecoderWithShaderTest, 156 TEST_P(GLES3DecoderWithShaderTest,
165 GetTransformFeedbackVaryingsCHROMIUMValidArgs) { 157 GetTransformFeedbackVaryingsCHROMIUMValidArgs) {
166 const uint32_t kBucketId = 123; 158 const uint32_t kBucketId = 123;
167 GetTransformFeedbackVaryingsCHROMIUM cmd; 159 GetTransformFeedbackVaryingsCHROMIUM cmd;
168 cmd.Init(client_program_id_, kBucketId); 160 cmd.Init(client_program_id_, kBucketId);
169 EXPECT_CALL(*(gl_.get()), 161 EXPECT_CALL(*(gl_.get()),
170 GetProgramiv(kServiceProgramId, 162 GetProgramiv(kServiceProgramId,
171 GL_TRANSFORM_FEEDBACK_BUFFER_MODE, 163 GL_TRANSFORM_FEEDBACK_BUFFER_MODE,
172 _)) 164 _))
173 .WillOnce(SetArgPointee<2>(GL_INTERLEAVED_ATTRIBS)) 165 .WillOnce(SetArgPointee<2>(GL_INTERLEAVED_ATTRIBS))
174 .RetiresOnSaturation(); 166 .RetiresOnSaturation();
175 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 167 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
176 .WillOnce(SetArgPointee<2>(GL_TRUE)) 168 .WillOnce(SetArgPointee<2>(GL_TRUE))
177 .RetiresOnSaturation(); 169 .RetiresOnSaturation();
178 EXPECT_CALL(*gl_, 170 EXPECT_CALL(*gl_,
179 GetProgramiv( 171 GetProgramiv(
180 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _)) 172 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _))
181 .WillOnce(SetArgPointee<2>(0)) 173 .WillOnce(SetArgPointee<2>(0))
182 .RetiresOnSaturation(); 174 .RetiresOnSaturation();
183 decoder_->set_unsafe_es3_apis_enabled(true);
184 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 175 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
185 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 176 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
186 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); 177 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size());
187 TransformFeedbackVaryingsHeader* header = 178 TransformFeedbackVaryingsHeader* header =
188 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( 179 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>(
189 0, sizeof(TransformFeedbackVaryingsHeader)); 180 0, sizeof(TransformFeedbackVaryingsHeader));
190 EXPECT_TRUE(header != NULL); 181 EXPECT_TRUE(header != NULL);
191 EXPECT_EQ(static_cast<uint32_t>(GL_INTERLEAVED_ATTRIBS), 182 EXPECT_EQ(static_cast<uint32_t>(GL_INTERLEAVED_ATTRIBS),
192 header->transform_feedback_buffer_mode); 183 header->transform_feedback_buffer_mode);
193 EXPECT_EQ(0u, header->num_transform_feedback_varyings); 184 EXPECT_EQ(0u, header->num_transform_feedback_varyings);
194 decoder_->set_unsafe_es3_apis_enabled(false);
195 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
196 } 185 }
197 186
198 TEST_P(GLES2DecoderWithShaderTest, 187 TEST_P(GLES3DecoderWithShaderTest,
199 GetTransformFeedbackVaryingsCHROMIUMInvalidArgs) { 188 GetTransformFeedbackVaryingsCHROMIUMInvalidArgs) {
200 const uint32_t kBucketId = 123; 189 const uint32_t kBucketId = 123;
201 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 190 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
202 EXPECT_TRUE(bucket == NULL); 191 EXPECT_TRUE(bucket == NULL);
203 GetTransformFeedbackVaryingsCHROMIUM cmd; 192 GetTransformFeedbackVaryingsCHROMIUM cmd;
204 cmd.Init(kInvalidClientId, kBucketId); 193 cmd.Init(kInvalidClientId, kBucketId);
205 decoder_->set_unsafe_es3_apis_enabled(true);
206 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 194 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
207 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 195 EXPECT_EQ(GL_NO_ERROR, GetGLError());
208 bucket = decoder_->GetBucket(kBucketId); 196 bucket = decoder_->GetBucket(kBucketId);
209 ASSERT_TRUE(bucket != NULL); 197 ASSERT_TRUE(bucket != NULL);
210 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size()); 198 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket->size());
211 TransformFeedbackVaryingsHeader* header = 199 TransformFeedbackVaryingsHeader* header =
212 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>( 200 bucket->GetDataAs<TransformFeedbackVaryingsHeader*>(
213 0, sizeof(TransformFeedbackVaryingsHeader)); 201 0, sizeof(TransformFeedbackVaryingsHeader));
214 ASSERT_TRUE(header != NULL); 202 ASSERT_TRUE(header != NULL);
215 EXPECT_EQ(0u, header->num_transform_feedback_varyings); 203 EXPECT_EQ(0u, header->num_transform_feedback_varyings);
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 kSharedMemoryOffset); 304 kSharedMemoryOffset);
317 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); 305 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0);
318 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 306 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
319 cmd.Init(client_program_id_, 307 cmd.Init(client_program_id_,
320 kUniform2FakeLocation, 308 kUniform2FakeLocation,
321 kSharedMemoryId, 309 kSharedMemoryId,
322 kInvalidSharedMemoryOffset); 310 kInvalidSharedMemoryOffset);
323 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 311 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
324 }; 312 };
325 313
326 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivSucceeds) { 314 TEST_P(GLES3DecoderWithShaderTest, GetUniformuivSucceeds) {
327 GetUniformuiv::Result* result = 315 GetUniformuiv::Result* result =
328 static_cast<GetUniformuiv::Result*>(shared_memory_address_); 316 static_cast<GetUniformuiv::Result*>(shared_memory_address_);
329 result->size = 0; 317 result->size = 0;
330 GetUniformuiv cmd; 318 GetUniformuiv cmd;
331 cmd.Init(client_program_id_, 319 cmd.Init(client_program_id_,
332 kUniform2FakeLocation, 320 kUniform2FakeLocation,
333 kSharedMemoryId, 321 kSharedMemoryId,
334 kSharedMemoryOffset); 322 kSharedMemoryOffset);
335 EXPECT_CALL(*gl_, GetUniformuiv(kServiceProgramId, kUniform2RealLocation, _)) 323 EXPECT_CALL(*gl_, GetUniformuiv(kServiceProgramId, kUniform2RealLocation, _))
336 .Times(1); 324 .Times(1);
337 decoder_->set_unsafe_es3_apis_enabled(true);
338 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
339 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), 326 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type),
340 static_cast<uint32_t>(result->GetNumResults())); 327 static_cast<uint32_t>(result->GetNumResults()));
341 decoder_->set_unsafe_es3_apis_enabled(false);
342 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
343 } 328 }
344 329
345 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivArrayElementSucceeds) { 330 TEST_P(GLES3DecoderWithShaderTest, GetUniformuivArrayElementSucceeds) {
346 GetUniformuiv::Result* result = 331 GetUniformuiv::Result* result =
347 static_cast<GetUniformuiv::Result*>(shared_memory_address_); 332 static_cast<GetUniformuiv::Result*>(shared_memory_address_);
348 result->size = 0; 333 result->size = 0;
349 GetUniformuiv cmd; 334 GetUniformuiv cmd;
350 cmd.Init(client_program_id_, 335 cmd.Init(client_program_id_,
351 kUniform2ElementFakeLocation, 336 kUniform2ElementFakeLocation,
352 kSharedMemoryId, 337 kSharedMemoryId,
353 kSharedMemoryOffset); 338 kSharedMemoryOffset);
354 EXPECT_CALL(*gl_, 339 EXPECT_CALL(*gl_,
355 GetUniformuiv(kServiceProgramId, kUniform2ElementRealLocation, _)) 340 GetUniformuiv(kServiceProgramId, kUniform2ElementRealLocation, _))
356 .Times(1); 341 .Times(1);
357 decoder_->set_unsafe_es3_apis_enabled(true);
358 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 342 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
359 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type), 343 EXPECT_EQ(GLES2Util::GetElementCountForUniformType(kUniform2Type),
360 static_cast<uint32_t>(result->GetNumResults())); 344 static_cast<uint32_t>(result->GetNumResults()));
361 } 345 }
362 346
363 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadProgramFails) { 347 TEST_P(GLES3DecoderWithShaderTest, GetUniformuivBadProgramFails) {
364 GetUniformuiv::Result* result = 348 GetUniformuiv::Result* result =
365 static_cast<GetUniformuiv::Result*>(shared_memory_address_); 349 static_cast<GetUniformuiv::Result*>(shared_memory_address_);
366 result->size = 0; 350 result->size = 0;
367 GetUniformuiv cmd; 351 GetUniformuiv cmd;
368 // non-existant program 352 // non-existant program
369 cmd.Init(kInvalidClientId, 353 cmd.Init(kInvalidClientId,
370 kUniform2FakeLocation, 354 kUniform2FakeLocation,
371 kSharedMemoryId, 355 kSharedMemoryId,
372 kSharedMemoryOffset); 356 kSharedMemoryOffset);
373 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); 357 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0);
374 decoder_->set_unsafe_es3_apis_enabled(true);
375 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 358 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
376 EXPECT_EQ(0U, result->size); 359 EXPECT_EQ(0U, result->size);
377 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 360 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
378 // Valid id that is not a program. The GL spec requires a different error for 361 // Valid id that is not a program. The GL spec requires a different error for
379 // this case. 362 // this case.
380 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS 363 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
381 result->size = kInitialResult; 364 result->size = kInitialResult;
382 cmd.Init(client_shader_id_, 365 cmd.Init(client_shader_id_,
383 kUniform2FakeLocation, 366 kUniform2FakeLocation,
384 kSharedMemoryId, 367 kSharedMemoryId,
(...skipping 13 matching lines...) Expand all
398 result->size = kInitialResult; 381 result->size = kInitialResult;
399 cmd.Init(kNewClientId, 382 cmd.Init(kNewClientId,
400 kUniform2FakeLocation, 383 kUniform2FakeLocation,
401 kSharedMemoryId, 384 kSharedMemoryId,
402 kSharedMemoryOffset); 385 kSharedMemoryOffset);
403 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 386 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
404 EXPECT_EQ(0U, result->size); 387 EXPECT_EQ(0U, result->size);
405 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 388 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
406 } 389 }
407 390
408 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadLocationFails) { 391 TEST_P(GLES3DecoderWithShaderTest, GetUniformuivBadLocationFails) {
409 GetUniformuiv::Result* result = 392 GetUniformuiv::Result* result =
410 static_cast<GetUniformuiv::Result*>(shared_memory_address_); 393 static_cast<GetUniformuiv::Result*>(shared_memory_address_);
411 result->size = 0; 394 result->size = 0;
412 GetUniformuiv cmd; 395 GetUniformuiv cmd;
413 // invalid location 396 // invalid location
414 cmd.Init(client_program_id_, 397 cmd.Init(client_program_id_,
415 kInvalidUniformLocation, 398 kInvalidUniformLocation,
416 kSharedMemoryId, 399 kSharedMemoryId,
417 kSharedMemoryOffset); 400 kSharedMemoryOffset);
418 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); 401 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0);
419 decoder_->set_unsafe_es3_apis_enabled(true);
420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 402 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
421 EXPECT_EQ(0U, result->size); 403 EXPECT_EQ(0U, result->size);
422 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 404 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
423 } 405 }
424 406
425 TEST_P(GLES2DecoderWithShaderTest, GetUniformuivBadSharedMemoryFails) { 407 TEST_P(GLES3DecoderWithShaderTest, GetUniformuivBadSharedMemoryFails) {
426 GetUniformuiv cmd; 408 GetUniformuiv cmd;
427 cmd.Init(client_program_id_, 409 cmd.Init(client_program_id_,
428 kUniform2FakeLocation, 410 kUniform2FakeLocation,
429 kInvalidSharedMemoryId, 411 kInvalidSharedMemoryId,
430 kSharedMemoryOffset); 412 kSharedMemoryOffset);
431 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0); 413 EXPECT_CALL(*gl_, GetUniformuiv(_, _, _)).Times(0);
432 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 414 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
433 decoder_->set_unsafe_es3_apis_enabled(true);
434 cmd.Init(client_program_id_, 415 cmd.Init(client_program_id_,
435 kUniform2FakeLocation, 416 kUniform2FakeLocation,
436 kSharedMemoryId, 417 kSharedMemoryId,
437 kInvalidSharedMemoryOffset); 418 kInvalidSharedMemoryOffset);
438 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 419 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
439 }; 420 };
440 421
441 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { 422 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) {
442 GetUniformfv::Result* result = 423 GetUniformfv::Result* result =
443 static_cast<GetUniformfv::Result*>(shared_memory_address_); 424 static_cast<GetUniformfv::Result*>(shared_memory_address_);
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 shared_memory_offset_); 759 shared_memory_offset_);
779 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 760 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
780 cmd.Init(client_program_id_, 761 cmd.Init(client_program_id_,
781 kUniformIndex, 762 kUniformIndex,
782 kBucketId, 763 kBucketId,
783 shared_memory_id_, 764 shared_memory_id_,
784 kInvalidSharedMemoryOffset); 765 kInvalidSharedMemoryOffset);
785 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 766 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
786 } 767 }
787 768
788 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameSucceeds) { 769 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockNameSucceeds) {
789 const uint32_t kBucketId = 123; 770 const uint32_t kBucketId = 123;
790 GetActiveUniformBlockName cmd; 771 GetActiveUniformBlockName cmd;
791 typedef GetActiveUniformBlockName::Result Result; 772 typedef GetActiveUniformBlockName::Result Result;
792 Result* result = static_cast<Result*>(shared_memory_address_); 773 Result* result = static_cast<Result*>(shared_memory_address_);
793 *result = 0; 774 *result = 0;
794 cmd.Init(client_program_id_, 775 cmd.Init(client_program_id_,
795 0, 776 0,
796 kBucketId, 777 kBucketId,
797 shared_memory_id_, 778 shared_memory_id_,
798 shared_memory_offset_); 779 shared_memory_offset_);
799 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 780 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
800 .WillOnce(SetArgPointee<2>(GL_TRUE)) 781 .WillOnce(SetArgPointee<2>(GL_TRUE))
801 .RetiresOnSaturation(); 782 .RetiresOnSaturation();
802 const char kName[] = "HolyCow"; 783 const char kName[] = "HolyCow";
803 const GLsizei kMaxLength = strlen(kName) + 1; 784 const GLsizei kMaxLength = strlen(kName) + 1;
804 EXPECT_CALL(*gl_, 785 EXPECT_CALL(*gl_,
805 GetProgramiv(kServiceProgramId, 786 GetProgramiv(kServiceProgramId,
806 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, _)) 787 GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, _))
807 .WillOnce(SetArgPointee<2>(kMaxLength)) 788 .WillOnce(SetArgPointee<2>(kMaxLength))
808 .RetiresOnSaturation(); 789 .RetiresOnSaturation();
809 EXPECT_CALL(*gl_, 790 EXPECT_CALL(*gl_,
810 GetActiveUniformBlockName(kServiceProgramId, 0, _, _, _)) 791 GetActiveUniformBlockName(kServiceProgramId, 0, _, _, _))
811 .WillOnce(DoAll(SetArgPointee<3>(strlen(kName)), 792 .WillOnce(DoAll(SetArgPointee<3>(strlen(kName)),
812 SetArrayArgument<4>(kName, kName + strlen(kName) + 1))) 793 SetArrayArgument<4>(kName, kName + strlen(kName) + 1)))
813 .RetiresOnSaturation(); 794 .RetiresOnSaturation();
814 decoder_->set_unsafe_es3_apis_enabled(true);
815 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 795 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
816 EXPECT_NE(0, *result); 796 EXPECT_NE(0, *result);
817 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 797 EXPECT_EQ(GL_NO_ERROR, GetGLError());
818 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 798 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
819 ASSERT_TRUE(bucket != NULL); 799 ASSERT_TRUE(bucket != NULL);
820 EXPECT_EQ(0, 800 EXPECT_EQ(0,
821 memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); 801 memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size()));
822 decoder_->set_unsafe_es3_apis_enabled(false);
823 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
824 } 802 }
825 803
826 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameUnlinkedProgram) { 804 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockNameUnlinkedProgram) {
827 const uint32_t kBucketId = 123; 805 const uint32_t kBucketId = 123;
828 GetActiveUniformBlockName cmd; 806 GetActiveUniformBlockName cmd;
829 typedef GetActiveUniformBlockName::Result Result; 807 typedef GetActiveUniformBlockName::Result Result;
830 Result* result = static_cast<Result*>(shared_memory_address_); 808 Result* result = static_cast<Result*>(shared_memory_address_);
831 *result = 0; 809 *result = 0;
832 cmd.Init(client_program_id_, 810 cmd.Init(client_program_id_,
833 0, 811 0,
834 kBucketId, 812 kBucketId,
835 shared_memory_id_, 813 shared_memory_id_,
836 shared_memory_offset_); 814 shared_memory_offset_);
837 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 815 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
838 .WillOnce(SetArgPointee<2>(GL_FALSE)) 816 .WillOnce(SetArgPointee<2>(GL_FALSE))
839 .RetiresOnSaturation(); 817 .RetiresOnSaturation();
840 decoder_->set_unsafe_es3_apis_enabled(true);
841 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 818 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
842 EXPECT_EQ(0, *result); 819 EXPECT_EQ(0, *result);
843 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 820 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
844 } 821 }
845 822
846 TEST_P(GLES2DecoderWithShaderTest, 823 TEST_P(GLES3DecoderWithShaderTest,
847 GetActiveUniformBlockNameResultNotInitFails) { 824 GetActiveUniformBlockNameResultNotInitFails) {
848 const uint32_t kBucketId = 123; 825 const uint32_t kBucketId = 123;
849 GetActiveUniformBlockName cmd; 826 GetActiveUniformBlockName cmd;
850 typedef GetActiveUniformBlockName::Result Result; 827 typedef GetActiveUniformBlockName::Result Result;
851 Result* result = static_cast<Result*>(shared_memory_address_); 828 Result* result = static_cast<Result*>(shared_memory_address_);
852 *result = 1; 829 *result = 1;
853 cmd.Init(client_program_id_, 830 cmd.Init(client_program_id_,
854 0, 831 0,
855 kBucketId, 832 kBucketId,
856 shared_memory_id_, 833 shared_memory_id_,
857 shared_memory_offset_); 834 shared_memory_offset_);
858 decoder_->set_unsafe_es3_apis_enabled(true);
859 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 835 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
860 } 836 }
861 837
862 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockNameBadProgramFails) { 838 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockNameBadProgramFails) {
863 const uint32_t kBucketId = 123; 839 const uint32_t kBucketId = 123;
864 GetActiveUniformBlockName cmd; 840 GetActiveUniformBlockName cmd;
865 typedef GetActiveUniformBlockName::Result Result; 841 typedef GetActiveUniformBlockName::Result Result;
866 Result* result = static_cast<Result*>(shared_memory_address_); 842 Result* result = static_cast<Result*>(shared_memory_address_);
867 *result = 0; 843 *result = 0;
868 cmd.Init(kInvalidClientId, 844 cmd.Init(kInvalidClientId,
869 0, 845 0,
870 kBucketId, 846 kBucketId,
871 shared_memory_id_, 847 shared_memory_id_,
872 shared_memory_offset_); 848 shared_memory_offset_);
873 decoder_->set_unsafe_es3_apis_enabled(true);
874 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 849 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
875 EXPECT_EQ(0, *result); 850 EXPECT_EQ(0, *result);
876 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 851 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
877 } 852 }
878 853
879 TEST_P(GLES2DecoderWithShaderTest, 854 TEST_P(GLES3DecoderWithShaderTest,
880 GetActiveUniformBlockNameBadSharedMemoryFails) { 855 GetActiveUniformBlockNameBadSharedMemoryFails) {
881 const uint32_t kBucketId = 123; 856 const uint32_t kBucketId = 123;
882 GetActiveUniformBlockName cmd; 857 GetActiveUniformBlockName cmd;
883 decoder_->set_unsafe_es3_apis_enabled(true);
884 cmd.Init(client_program_id_, 858 cmd.Init(client_program_id_,
885 0, 859 0,
886 kBucketId, 860 kBucketId,
887 kInvalidSharedMemoryId, 861 kInvalidSharedMemoryId,
888 shared_memory_offset_); 862 shared_memory_offset_);
889 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 863 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
890 cmd.Init(client_program_id_, 864 cmd.Init(client_program_id_,
891 0, 865 0,
892 kBucketId, 866 kBucketId,
893 shared_memory_id_, 867 shared_memory_id_,
894 kInvalidSharedMemoryOffset); 868 kInvalidSharedMemoryOffset);
895 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 869 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
896 } 870 }
897 871
898 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivSucceeds) { 872 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockivSucceeds) {
899 GetActiveUniformBlockiv cmd; 873 GetActiveUniformBlockiv cmd;
900 typedef GetActiveUniformBlockiv::Result Result; 874 typedef GetActiveUniformBlockiv::Result Result;
901 Result* result = static_cast<Result*>(shared_memory_address_); 875 Result* result = static_cast<Result*>(shared_memory_address_);
902 GLenum kPname[] { 876 GLenum kPname[] {
903 GL_UNIFORM_BLOCK_BINDING, 877 GL_UNIFORM_BLOCK_BINDING,
904 GL_UNIFORM_BLOCK_DATA_SIZE, 878 GL_UNIFORM_BLOCK_DATA_SIZE,
905 GL_UNIFORM_BLOCK_NAME_LENGTH, 879 GL_UNIFORM_BLOCK_NAME_LENGTH,
906 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, 880 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS,
907 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, 881 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES,
908 GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER, 882 GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER,
(...skipping 21 matching lines...) Expand all
930 GetActiveUniformBlockiv(kServiceProgramId, 0, 904 GetActiveUniformBlockiv(kServiceProgramId, 0,
931 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) 905 GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _))
932 .WillOnce(SetArgPointee<3>(1)) 906 .WillOnce(SetArgPointee<3>(1))
933 .RetiresOnSaturation(); 907 .RetiresOnSaturation();
934 } 908 }
935 EXPECT_CALL(*gl_, 909 EXPECT_CALL(*gl_,
936 GetActiveUniformBlockiv( 910 GetActiveUniformBlockiv(
937 kServiceProgramId, 0, kPname[ii], _)) 911 kServiceProgramId, 0, kPname[ii], _))
938 .WillOnce(SetArgPointee<3>(1976)) 912 .WillOnce(SetArgPointee<3>(1976))
939 .RetiresOnSaturation(); 913 .RetiresOnSaturation();
940 decoder_->set_unsafe_es3_apis_enabled(true);
941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 914 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
942 EXPECT_EQ(1, result->GetNumResults()); 915 EXPECT_EQ(1, result->GetNumResults());
943 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 916 EXPECT_EQ(GL_NO_ERROR, GetGLError());
944 EXPECT_EQ(1976, result->GetData()[0]); 917 EXPECT_EQ(1976, result->GetData()[0]);
945 decoder_->set_unsafe_es3_apis_enabled(false);
946 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
947 } 918 }
948 } 919 }
949 920
950 TEST_P(GLES2DecoderWithShaderTest, 921 TEST_P(GLES3DecoderWithShaderTest,
951 GetActiveUniformBlockivSucceedsZeroUniforms) { 922 GetActiveUniformBlockivSucceedsZeroUniforms) {
952 GetActiveUniformBlockiv cmd; 923 GetActiveUniformBlockiv cmd;
953 typedef GetActiveUniformBlockiv::Result Result; 924 typedef GetActiveUniformBlockiv::Result Result;
954 Result* result = static_cast<Result*>(shared_memory_address_); 925 Result* result = static_cast<Result*>(shared_memory_address_);
955 result->SetNumResults(0); 926 result->SetNumResults(0);
956 cmd.Init(client_program_id_, 927 cmd.Init(client_program_id_,
957 0, 928 0,
958 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, 929 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES,
959 shared_memory_id_, 930 shared_memory_id_,
960 shared_memory_offset_); 931 shared_memory_offset_);
961 EXPECT_CALL(*gl_, GetError()) 932 EXPECT_CALL(*gl_, GetError())
962 .WillOnce(Return(GL_NO_ERROR)) 933 .WillOnce(Return(GL_NO_ERROR))
963 .WillOnce(Return(GL_NO_ERROR)) 934 .WillOnce(Return(GL_NO_ERROR))
964 .WillOnce(Return(GL_NO_ERROR)) 935 .WillOnce(Return(GL_NO_ERROR))
965 .RetiresOnSaturation(); 936 .RetiresOnSaturation();
966 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 937 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
967 .WillOnce(SetArgPointee<2>(GL_TRUE)) 938 .WillOnce(SetArgPointee<2>(GL_TRUE))
968 .RetiresOnSaturation(); 939 .RetiresOnSaturation();
969 EXPECT_CALL(*gl_, 940 EXPECT_CALL(*gl_,
970 GetActiveUniformBlockiv( 941 GetActiveUniformBlockiv(
971 kServiceProgramId, 0, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _)) 942 kServiceProgramId, 0, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, _))
972 .WillOnce(SetArgPointee<3>(0)) 943 .WillOnce(SetArgPointee<3>(0))
973 .RetiresOnSaturation(); 944 .RetiresOnSaturation();
974 EXPECT_CALL(*gl_, 945 EXPECT_CALL(*gl_,
975 GetActiveUniformBlockiv(kServiceProgramId, 0, 946 GetActiveUniformBlockiv(kServiceProgramId, 0,
976 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, _)) 947 GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, _))
977 .Times(1) 948 .Times(1)
978 .RetiresOnSaturation(); 949 .RetiresOnSaturation();
979 decoder_->set_unsafe_es3_apis_enabled(true);
980 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 950 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
981 EXPECT_EQ(0, result->GetNumResults()); 951 EXPECT_EQ(0, result->GetNumResults());
982 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 952 EXPECT_EQ(GL_NO_ERROR, GetGLError());
983 } 953 }
984 954
985 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivUnlinkedProgram) { 955 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockivUnlinkedProgram) {
986 GetActiveUniformBlockiv cmd; 956 GetActiveUniformBlockiv cmd;
987 typedef GetActiveUniformBlockiv::Result Result; 957 typedef GetActiveUniformBlockiv::Result Result;
988 Result* result = static_cast<Result*>(shared_memory_address_); 958 Result* result = static_cast<Result*>(shared_memory_address_);
989 result->SetNumResults(0); 959 result->SetNumResults(0);
990 cmd.Init(client_program_id_, 960 cmd.Init(client_program_id_,
991 0, 961 0,
992 GL_UNIFORM_BLOCK_BINDING, 962 GL_UNIFORM_BLOCK_BINDING,
993 shared_memory_id_, 963 shared_memory_id_,
994 shared_memory_offset_); 964 shared_memory_offset_);
995 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 965 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
996 .WillOnce(SetArgPointee<2>(GL_FALSE)) 966 .WillOnce(SetArgPointee<2>(GL_FALSE))
997 .RetiresOnSaturation(); 967 .RetiresOnSaturation();
998 decoder_->set_unsafe_es3_apis_enabled(true);
999 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 968 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1000 EXPECT_EQ(0, result->GetNumResults()); 969 EXPECT_EQ(0, result->GetNumResults());
1001 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 970 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
1002 } 971 }
1003 972
1004 TEST_P(GLES2DecoderWithShaderTest, 973 TEST_P(GLES3DecoderWithShaderTest,
1005 GetActiveUniformBlockivResultNotInitFails) { 974 GetActiveUniformBlockivResultNotInitFails) {
1006 GetActiveUniformBlockiv cmd; 975 GetActiveUniformBlockiv cmd;
1007 typedef GetActiveUniformBlockiv::Result Result; 976 typedef GetActiveUniformBlockiv::Result Result;
1008 Result* result = static_cast<Result*>(shared_memory_address_); 977 Result* result = static_cast<Result*>(shared_memory_address_);
1009 result->SetNumResults(1); // Should be initialized to 0. 978 result->SetNumResults(1); // Should be initialized to 0.
1010 cmd.Init(client_program_id_, 979 cmd.Init(client_program_id_,
1011 0, 980 0,
1012 GL_UNIFORM_BLOCK_BINDING, 981 GL_UNIFORM_BLOCK_BINDING,
1013 shared_memory_id_, 982 shared_memory_id_,
1014 shared_memory_offset_); 983 shared_memory_offset_);
1015 decoder_->set_unsafe_es3_apis_enabled(true);
1016 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 984 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1017 .WillOnce(SetArgPointee<2>(GL_TRUE)) 985 .WillOnce(SetArgPointee<2>(GL_TRUE))
1018 .RetiresOnSaturation(); 986 .RetiresOnSaturation();
1019 EXPECT_CALL(*gl_, GetError()) 987 EXPECT_CALL(*gl_, GetError())
1020 .WillOnce(Return(GL_NO_ERROR)) 988 .WillOnce(Return(GL_NO_ERROR))
1021 .RetiresOnSaturation(); 989 .RetiresOnSaturation();
1022 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 990 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1023 } 991 }
1024 992
1025 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBlockivBadProgramFails) { 993 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformBlockivBadProgramFails) {
1026 GetActiveUniformBlockiv cmd; 994 GetActiveUniformBlockiv cmd;
1027 typedef GetActiveUniformBlockiv::Result Result; 995 typedef GetActiveUniformBlockiv::Result Result;
1028 Result* result = static_cast<Result*>(shared_memory_address_); 996 Result* result = static_cast<Result*>(shared_memory_address_);
1029 result->SetNumResults(0); 997 result->SetNumResults(0);
1030 cmd.Init(kInvalidClientId, 998 cmd.Init(kInvalidClientId,
1031 0, 999 0,
1032 GL_UNIFORM_BLOCK_BINDING, 1000 GL_UNIFORM_BLOCK_BINDING,
1033 shared_memory_id_, 1001 shared_memory_id_,
1034 shared_memory_offset_); 1002 shared_memory_offset_);
1035 decoder_->set_unsafe_es3_apis_enabled(true);
1036 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1003 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1037 EXPECT_EQ(0, result->GetNumResults()); 1004 EXPECT_EQ(0, result->GetNumResults());
1038 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1005 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1039 } 1006 }
1040 1007
1041 TEST_P(GLES2DecoderWithShaderTest, 1008 TEST_P(GLES3DecoderWithShaderTest,
1042 GetActiveUniformBlockivBadSharedMemoryFails) { 1009 GetActiveUniformBlockivBadSharedMemoryFails) {
1043 GetActiveUniformBlockiv cmd; 1010 GetActiveUniformBlockiv cmd;
1044 decoder_->set_unsafe_es3_apis_enabled(true);
1045 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1011 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1046 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1012 .WillOnce(SetArgPointee<2>(GL_TRUE))
1047 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1013 .WillOnce(SetArgPointee<2>(GL_TRUE))
1048 .RetiresOnSaturation(); 1014 .RetiresOnSaturation();
1049 EXPECT_CALL(*gl_, GetError()) 1015 EXPECT_CALL(*gl_, GetError())
1050 .WillOnce(Return(GL_NO_ERROR)) 1016 .WillOnce(Return(GL_NO_ERROR))
1051 .WillOnce(Return(GL_NO_ERROR)) 1017 .WillOnce(Return(GL_NO_ERROR))
1052 .RetiresOnSaturation(); 1018 .RetiresOnSaturation();
1053 cmd.Init(client_program_id_, 1019 cmd.Init(client_program_id_,
1054 0, 1020 0,
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1158 shared_memory_offset_); 1124 shared_memory_offset_);
1159 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1125 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1160 cmd.Init(client_program_id_, 1126 cmd.Init(client_program_id_,
1161 kAttribIndex, 1127 kAttribIndex,
1162 kBucketId, 1128 kBucketId,
1163 shared_memory_id_, 1129 shared_memory_id_,
1164 kInvalidSharedMemoryOffset); 1130 kInvalidSharedMemoryOffset);
1165 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1131 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1166 } 1132 }
1167 1133
1168 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesSucceeds) { 1134 TEST_P(GLES3DecoderWithShaderTest, GetUniformIndicesSucceeds) {
1169 const uint32_t kBucketId = 123; 1135 const uint32_t kBucketId = 123;
1170 const char kName0[] = "Cow"; 1136 const char kName0[] = "Cow";
1171 const char kName1[] = "Chicken"; 1137 const char kName1[] = "Chicken";
1172 const char* kNames[] = { kName0, kName1 }; 1138 const char* kNames[] = { kName0, kName1 };
1173 const size_t kCount = arraysize(kNames); 1139 const size_t kCount = arraysize(kNames);
1174 const char kValidStrEnd = 0; 1140 const char kValidStrEnd = 0;
1175 const GLuint kIndices[] = { 1, 2 }; 1141 const GLuint kIndices[] = { 1, 2 };
1176 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); 1142 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd);
1177 GetUniformIndices::Result* result = 1143 GetUniformIndices::Result* result =
1178 static_cast<GetUniformIndices::Result*>(shared_memory_address_); 1144 static_cast<GetUniformIndices::Result*>(shared_memory_address_);
1179 GetUniformIndices cmd; 1145 GetUniformIndices cmd;
1180 cmd.Init(client_program_id_, 1146 cmd.Init(client_program_id_,
1181 kBucketId, 1147 kBucketId,
1182 kSharedMemoryId, 1148 kSharedMemoryId,
1183 kSharedMemoryOffset); 1149 kSharedMemoryOffset);
1184 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) 1150 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _))
1185 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) 1151 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount))
1186 .RetiresOnSaturation(); 1152 .RetiresOnSaturation();
1187 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1153 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1188 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1154 .WillOnce(SetArgPointee<2>(GL_TRUE))
1189 .RetiresOnSaturation(); 1155 .RetiresOnSaturation();
1190 EXPECT_CALL(*gl_, GetError()) 1156 EXPECT_CALL(*gl_, GetError())
1191 .WillOnce(Return(GL_NO_ERROR)) 1157 .WillOnce(Return(GL_NO_ERROR))
1192 .WillOnce(Return(GL_NO_ERROR)) 1158 .WillOnce(Return(GL_NO_ERROR))
1193 .RetiresOnSaturation(); 1159 .RetiresOnSaturation();
1194 decoder_->set_unsafe_es3_apis_enabled(true);
1195 result->size = 0; 1160 result->size = 0;
1196 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1161 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1197 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); 1162 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults()));
1198 for (size_t ii = 0; ii < kCount; ++ii) { 1163 for (size_t ii = 0; ii < kCount; ++ii) {
1199 EXPECT_EQ(kIndices[ii], result->GetData()[ii]); 1164 EXPECT_EQ(kIndices[ii], result->GetData()[ii]);
1200 } 1165 }
1201 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1166 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1202 decoder_->set_unsafe_es3_apis_enabled(false);
1203 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1204 } 1167 }
1205 1168
1206 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadProgramFails) { 1169 TEST_P(GLES3DecoderWithShaderTest, GetUniformIndicesBadProgramFails) {
1207 const uint32_t kBucketId = 123; 1170 const uint32_t kBucketId = 123;
1208 const char kName0[] = "Cow"; 1171 const char kName0[] = "Cow";
1209 const char kName1[] = "Chicken"; 1172 const char kName1[] = "Chicken";
1210 const char* kNames[] = { kName0, kName1 }; 1173 const char* kNames[] = { kName0, kName1 };
1211 const size_t kCount = arraysize(kNames); 1174 const size_t kCount = arraysize(kNames);
1212 const char kValidStrEnd = 0; 1175 const char kValidStrEnd = 0;
1213 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); 1176 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd);
1214 GetUniformIndices::Result* result = 1177 GetUniformIndices::Result* result =
1215 static_cast<GetUniformIndices::Result*>(shared_memory_address_); 1178 static_cast<GetUniformIndices::Result*>(shared_memory_address_);
1216 decoder_->set_unsafe_es3_apis_enabled(true);
1217 GetUniformIndices cmd; 1179 GetUniformIndices cmd;
1218 // None-existant program 1180 // None-existant program
1219 cmd.Init(kInvalidClientId, 1181 cmd.Init(kInvalidClientId,
1220 kBucketId, 1182 kBucketId,
1221 kSharedMemoryId, 1183 kSharedMemoryId,
1222 kSharedMemoryOffset); 1184 kSharedMemoryOffset);
1223 result->size = 0; 1185 result->size = 0;
1224 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1186 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1225 EXPECT_EQ(0, result->GetNumResults()); 1187 EXPECT_EQ(0, result->GetNumResults());
1226 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1188 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1227 // Unlinked program. 1189 // Unlinked program.
1228 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1190 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1229 .WillOnce(SetArgPointee<2>(GL_FALSE)) 1191 .WillOnce(SetArgPointee<2>(GL_FALSE))
1230 .RetiresOnSaturation(); 1192 .RetiresOnSaturation();
1231 cmd.Init(client_program_id_, 1193 cmd.Init(client_program_id_,
1232 kBucketId, 1194 kBucketId,
1233 kSharedMemoryId, 1195 kSharedMemoryId,
1234 kSharedMemoryOffset); 1196 kSharedMemoryOffset);
1235 result->size = 0; 1197 result->size = 0;
1236 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1198 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1237 EXPECT_EQ(0, result->GetNumResults()); 1199 EXPECT_EQ(0, result->GetNumResults());
1238 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 1200 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
1239 } 1201 }
1240 1202
1241 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadParamsFails) { 1203 TEST_P(GLES3DecoderWithShaderTest, GetUniformIndicesBadParamsFails) {
1242 const uint32_t kBucketId = 123; 1204 const uint32_t kBucketId = 123;
1243 const char kName0[] = "Cow"; 1205 const char kName0[] = "Cow";
1244 const char kName1[] = "Chicken"; 1206 const char kName1[] = "Chicken";
1245 const char* kNames[] = { kName0, kName1 }; 1207 const char* kNames[] = { kName0, kName1 };
1246 const size_t kCount = arraysize(kNames); 1208 const size_t kCount = arraysize(kNames);
1247 const char kValidStrEnd = 0; 1209 const char kValidStrEnd = 0;
1248 const GLuint kIndices[] = { 1, 2 }; 1210 const GLuint kIndices[] = { 1, 2 };
1249 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); 1211 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd);
1250 GetUniformIndices::Result* result = 1212 GetUniformIndices::Result* result =
1251 static_cast<GetUniformIndices::Result*>(shared_memory_address_); 1213 static_cast<GetUniformIndices::Result*>(shared_memory_address_);
1252 GetUniformIndices cmd; 1214 GetUniformIndices cmd;
1253 cmd.Init(client_program_id_, 1215 cmd.Init(client_program_id_,
1254 kBucketId, 1216 kBucketId,
1255 kSharedMemoryId, 1217 kSharedMemoryId,
1256 kSharedMemoryOffset); 1218 kSharedMemoryOffset);
1257 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _)) 1219 EXPECT_CALL(*gl_, GetUniformIndices(kServiceProgramId, kCount, _, _))
1258 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount)) 1220 .WillOnce(SetArrayArgument<3>(kIndices, kIndices + kCount))
1259 .RetiresOnSaturation(); 1221 .RetiresOnSaturation();
1260 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1222 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1261 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1223 .WillOnce(SetArgPointee<2>(GL_TRUE))
1262 .RetiresOnSaturation(); 1224 .RetiresOnSaturation();
1263 EXPECT_CALL(*gl_, GetError()) 1225 EXPECT_CALL(*gl_, GetError())
1264 .WillOnce(Return(GL_NO_ERROR)) 1226 .WillOnce(Return(GL_NO_ERROR))
1265 .WillOnce(Return(GL_INVALID_VALUE)) 1227 .WillOnce(Return(GL_INVALID_VALUE))
1266 .RetiresOnSaturation(); 1228 .RetiresOnSaturation();
1267 decoder_->set_unsafe_es3_apis_enabled(true);
1268 result->size = 0; 1229 result->size = 0;
1269 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1230 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1270 EXPECT_EQ(0, result->GetNumResults()); 1231 EXPECT_EQ(0, result->GetNumResults());
1271 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1232 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1272 } 1233 }
1273 1234
1274 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesResultNotInitFails) { 1235 TEST_P(GLES3DecoderWithShaderTest, GetUniformIndicesResultNotInitFails) {
1275 const uint32_t kBucketId = 123; 1236 const uint32_t kBucketId = 123;
1276 const char kName0[] = "Cow"; 1237 const char kName0[] = "Cow";
1277 const char kName1[] = "Chicken"; 1238 const char kName1[] = "Chicken";
1278 const char* kNames[] = { kName0, kName1 }; 1239 const char* kNames[] = { kName0, kName1 };
1279 const size_t kCount = arraysize(kNames); 1240 const size_t kCount = arraysize(kNames);
1280 const char kValidStrEnd = 0; 1241 const char kValidStrEnd = 0;
1281 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); 1242 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd);
1282 GetUniformIndices::Result* result = 1243 GetUniformIndices::Result* result =
1283 static_cast<GetUniformIndices::Result*>(shared_memory_address_); 1244 static_cast<GetUniformIndices::Result*>(shared_memory_address_);
1284 decoder_->set_unsafe_es3_apis_enabled(true);
1285 GetUniformIndices cmd; 1245 GetUniformIndices cmd;
1286 result->size = 1976; // Any value other than 0. 1246 result->size = 1976; // Any value other than 0.
1287 cmd.Init(kInvalidClientId, 1247 cmd.Init(kInvalidClientId,
1288 kBucketId, 1248 kBucketId,
1289 kSharedMemoryId, 1249 kSharedMemoryId,
1290 kSharedMemoryOffset); 1250 kSharedMemoryOffset);
1291 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1251 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1292 } 1252 }
1293 1253
1294 TEST_P(GLES2DecoderWithShaderTest, GetUniformIndicesBadSharedMemoryFails) { 1254 TEST_P(GLES3DecoderWithShaderTest, GetUniformIndicesBadSharedMemoryFails) {
1295 const uint32_t kBucketId = 123; 1255 const uint32_t kBucketId = 123;
1296 const char kName0[] = "Cow"; 1256 const char kName0[] = "Cow";
1297 const char kName1[] = "Chicken"; 1257 const char kName1[] = "Chicken";
1298 const char* kNames[] = { kName0, kName1 }; 1258 const char* kNames[] = { kName0, kName1 };
1299 const size_t kCount = arraysize(kNames); 1259 const size_t kCount = arraysize(kNames);
1300 const char kValidStrEnd = 0; 1260 const char kValidStrEnd = 0;
1301 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd); 1261 SetBucketAsCStrings(kBucketId, kCount, kNames, kCount, kValidStrEnd);
1302 GetUniformIndices::Result* result = 1262 GetUniformIndices::Result* result =
1303 static_cast<GetUniformIndices::Result*>(shared_memory_address_); 1263 static_cast<GetUniformIndices::Result*>(shared_memory_address_);
1304 decoder_->set_unsafe_es3_apis_enabled(true);
1305 GetUniformIndices cmd; 1264 GetUniformIndices cmd;
1306 cmd.Init(client_program_id_, 1265 cmd.Init(client_program_id_,
1307 kBucketId, 1266 kBucketId,
1308 kInvalidSharedMemoryId, 1267 kInvalidSharedMemoryId,
1309 kSharedMemoryOffset); 1268 kSharedMemoryOffset);
1310 result->size = 0; 1269 result->size = 0;
1311 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1270 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1312 cmd.Init(client_program_id_, 1271 cmd.Init(client_program_id_,
1313 kBucketId, 1272 kBucketId,
1314 kSharedMemoryId, 1273 kSharedMemoryId,
1315 kInvalidSharedMemoryOffset); 1274 kInvalidSharedMemoryOffset);
1316 result->size = 0; 1275 result->size = 0;
1317 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1276 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1318 } 1277 }
1319 1278
1320 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivSucceeds) { 1279 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivSucceeds) {
1321 const uint32_t kBucketId = 123; 1280 const uint32_t kBucketId = 123;
1322 const GLuint kIndices[] = { 1, 2 }; 1281 const GLuint kIndices[] = { 1, 2 };
1323 const GLint kResults[] = { 1976, 321 }; 1282 const GLint kResults[] = { 1976, 321 };
1324 const size_t kCount = arraysize(kIndices); 1283 const size_t kCount = arraysize(kIndices);
1325 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); 1284 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount);
1326 GetActiveUniformsiv::Result* result = 1285 GetActiveUniformsiv::Result* result =
1327 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); 1286 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_);
1328 GetActiveUniformsiv cmd; 1287 GetActiveUniformsiv cmd;
1329 cmd.Init(client_program_id_, 1288 cmd.Init(client_program_id_,
1330 kBucketId, 1289 kBucketId,
1331 GL_UNIFORM_TYPE, 1290 GL_UNIFORM_TYPE,
1332 kSharedMemoryId, 1291 kSharedMemoryId,
1333 kSharedMemoryOffset); 1292 kSharedMemoryOffset);
1334 EXPECT_CALL(*gl_, 1293 EXPECT_CALL(*gl_,
1335 GetActiveUniformsiv( 1294 GetActiveUniformsiv(
1336 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) 1295 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _))
1337 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) 1296 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount))
1338 .RetiresOnSaturation(); 1297 .RetiresOnSaturation();
1339 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1298 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1340 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1299 .WillOnce(SetArgPointee<2>(GL_TRUE))
1341 .RetiresOnSaturation(); 1300 .RetiresOnSaturation();
1342 EXPECT_CALL(*gl_, GetError()) 1301 EXPECT_CALL(*gl_, GetError())
1343 .WillOnce(Return(GL_NO_ERROR)) 1302 .WillOnce(Return(GL_NO_ERROR))
1344 .WillOnce(Return(GL_NO_ERROR)) 1303 .WillOnce(Return(GL_NO_ERROR))
1345 .RetiresOnSaturation(); 1304 .RetiresOnSaturation();
1346 decoder_->set_unsafe_es3_apis_enabled(true);
1347 result->size = 0; 1305 result->size = 0;
1348 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1306 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1349 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults())); 1307 EXPECT_EQ(kCount, static_cast<size_t>(result->GetNumResults()));
1350 for (size_t ii = 0; ii < kCount; ++ii) { 1308 for (size_t ii = 0; ii < kCount; ++ii) {
1351 EXPECT_EQ(kResults[ii], result->GetData()[ii]); 1309 EXPECT_EQ(kResults[ii], result->GetData()[ii]);
1352 } 1310 }
1353 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1311 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1354 decoder_->set_unsafe_es3_apis_enabled(false);
1355 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1356 } 1312 }
1357 1313
1358 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadProgramFails) { 1314 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadProgramFails) {
1359 const uint32_t kBucketId = 123; 1315 const uint32_t kBucketId = 123;
1360 const GLuint kIndices[] = { 1, 2 }; 1316 const GLuint kIndices[] = { 1, 2 };
1361 const size_t kCount = arraysize(kIndices); 1317 const size_t kCount = arraysize(kIndices);
1362 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); 1318 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount);
1363 GetActiveUniformsiv::Result* result = 1319 GetActiveUniformsiv::Result* result =
1364 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); 1320 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_);
1365 decoder_->set_unsafe_es3_apis_enabled(true);
1366 GetActiveUniformsiv cmd; 1321 GetActiveUniformsiv cmd;
1367 // None-existant program 1322 // None-existant program
1368 cmd.Init(kInvalidClientId, 1323 cmd.Init(kInvalidClientId,
1369 kBucketId, 1324 kBucketId,
1370 GL_UNIFORM_TYPE, 1325 GL_UNIFORM_TYPE,
1371 kSharedMemoryId, 1326 kSharedMemoryId,
1372 kSharedMemoryOffset); 1327 kSharedMemoryOffset);
1373 result->size = 0; 1328 result->size = 0;
1374 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1329 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1375 EXPECT_EQ(0, result->GetNumResults()); 1330 EXPECT_EQ(0, result->GetNumResults());
1376 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1331 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1377 // Unlinked program. 1332 // Unlinked program.
1378 cmd.Init(client_program_id_, 1333 cmd.Init(client_program_id_,
1379 kBucketId, 1334 kBucketId,
1380 GL_UNIFORM_TYPE, 1335 GL_UNIFORM_TYPE,
1381 kSharedMemoryId, 1336 kSharedMemoryId,
1382 kSharedMemoryOffset); 1337 kSharedMemoryOffset);
1383 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1338 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1384 .WillOnce(SetArgPointee<2>(GL_FALSE)) 1339 .WillOnce(SetArgPointee<2>(GL_FALSE))
1385 .RetiresOnSaturation(); 1340 .RetiresOnSaturation();
1386 result->size = 0; 1341 result->size = 0;
1387 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1342 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1388 EXPECT_EQ(0, result->GetNumResults()); 1343 EXPECT_EQ(0, result->GetNumResults());
1389 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 1344 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
1390 } 1345 }
1391 1346
1392 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadParamsFails) { 1347 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadParamsFails) {
1393 const uint32_t kBucketId = 123; 1348 const uint32_t kBucketId = 123;
1394 const GLuint kIndices[] = { 1, 2 }; 1349 const GLuint kIndices[] = { 1, 2 };
1395 const GLint kResults[] = { 1976, 321 }; 1350 const GLint kResults[] = { 1976, 321 };
1396 const size_t kCount = arraysize(kIndices); 1351 const size_t kCount = arraysize(kIndices);
1397 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); 1352 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount);
1398 GetActiveUniformsiv::Result* result = 1353 GetActiveUniformsiv::Result* result =
1399 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); 1354 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_);
1400 GetActiveUniformsiv cmd; 1355 GetActiveUniformsiv cmd;
1401 cmd.Init(client_program_id_, 1356 cmd.Init(client_program_id_,
1402 kBucketId, 1357 kBucketId,
1403 GL_UNIFORM_TYPE, 1358 GL_UNIFORM_TYPE,
1404 kSharedMemoryId, 1359 kSharedMemoryId,
1405 kSharedMemoryOffset); 1360 kSharedMemoryOffset);
1406 EXPECT_CALL(*gl_, 1361 EXPECT_CALL(*gl_,
1407 GetActiveUniformsiv( 1362 GetActiveUniformsiv(
1408 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _)) 1363 kServiceProgramId, kCount, _, GL_UNIFORM_TYPE, _))
1409 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount)) 1364 .WillOnce(SetArrayArgument<4>(kResults, kResults + kCount))
1410 .RetiresOnSaturation(); 1365 .RetiresOnSaturation();
1411 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1366 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1412 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1367 .WillOnce(SetArgPointee<2>(GL_TRUE))
1413 .RetiresOnSaturation(); 1368 .RetiresOnSaturation();
1414 EXPECT_CALL(*gl_, GetError()) 1369 EXPECT_CALL(*gl_, GetError())
1415 .WillOnce(Return(GL_NO_ERROR)) 1370 .WillOnce(Return(GL_NO_ERROR))
1416 .WillOnce(Return(GL_INVALID_VALUE)) 1371 .WillOnce(Return(GL_INVALID_VALUE))
1417 .RetiresOnSaturation(); 1372 .RetiresOnSaturation();
1418 decoder_->set_unsafe_es3_apis_enabled(true);
1419 result->size = 0; 1373 result->size = 0;
1420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1374 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1421 EXPECT_EQ(0, result->GetNumResults()); 1375 EXPECT_EQ(0, result->GetNumResults());
1422 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1376 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1423 } 1377 }
1424 1378
1425 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadPnameFails) { 1379 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadPnameFails) {
1426 const uint32_t kBucketId = 123; 1380 const uint32_t kBucketId = 123;
1427 const GLuint kIndices[] = { 1, 2 }; 1381 const GLuint kIndices[] = { 1, 2 };
1428 const size_t kCount = arraysize(kIndices); 1382 const size_t kCount = arraysize(kIndices);
1429 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); 1383 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount);
1430 GetActiveUniformsiv::Result* result = 1384 GetActiveUniformsiv::Result* result =
1431 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); 1385 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_);
1432 decoder_->set_unsafe_es3_apis_enabled(true);
1433 GetActiveUniformsiv cmd; 1386 GetActiveUniformsiv cmd;
1434 // GL_UNIFORM_BLOCK_NAME_LENGTH should not be supported. 1387 // GL_UNIFORM_BLOCK_NAME_LENGTH should not be supported.
1435 cmd.Init(client_program_id_, 1388 cmd.Init(client_program_id_,
1436 kBucketId, 1389 kBucketId,
1437 GL_UNIFORM_BLOCK_NAME_LENGTH, 1390 GL_UNIFORM_BLOCK_NAME_LENGTH,
1438 kSharedMemoryId, 1391 kSharedMemoryId,
1439 kSharedMemoryOffset); 1392 kSharedMemoryOffset);
1440 result->size = 0; 1393 result->size = 0;
1441 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1394 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1442 EXPECT_EQ(0, result->GetNumResults()); 1395 EXPECT_EQ(0, result->GetNumResults());
1443 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1396 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1444 // Invalid pname 1397 // Invalid pname
1445 cmd.Init(client_program_id_, 1398 cmd.Init(client_program_id_,
1446 kBucketId, 1399 kBucketId,
1447 1, 1400 1,
1448 kSharedMemoryId, 1401 kSharedMemoryId,
1449 kSharedMemoryOffset); 1402 kSharedMemoryOffset);
1450 result->size = 0; 1403 result->size = 0;
1451 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1404 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1452 EXPECT_EQ(0, result->GetNumResults()); 1405 EXPECT_EQ(0, result->GetNumResults());
1453 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 1406 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
1454 } 1407 }
1455 1408
1456 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivResultNotInitFails) { 1409 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivResultNotInitFails) {
1457 const uint32_t kBucketId = 123; 1410 const uint32_t kBucketId = 123;
1458 const GLuint kIndices[] = { 1, 2 }; 1411 const GLuint kIndices[] = { 1, 2 };
1459 const size_t kCount = arraysize(kIndices); 1412 const size_t kCount = arraysize(kIndices);
1460 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); 1413 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount);
1461 GetActiveUniformsiv::Result* result = 1414 GetActiveUniformsiv::Result* result =
1462 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); 1415 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_);
1463 GetActiveUniformsiv cmd; 1416 GetActiveUniformsiv cmd;
1464 cmd.Init(client_program_id_, 1417 cmd.Init(client_program_id_,
1465 kBucketId, 1418 kBucketId,
1466 GL_UNIFORM_TYPE, 1419 GL_UNIFORM_TYPE,
1467 kSharedMemoryId, 1420 kSharedMemoryId,
1468 kSharedMemoryOffset); 1421 kSharedMemoryOffset);
1469 decoder_->set_unsafe_es3_apis_enabled(true);
1470 result->size = 1976; // Any value other than 0. 1422 result->size = 1976; // Any value other than 0.
1471 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1423 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1472 } 1424 }
1473 1425
1474 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformsivBadSharedMemoryFails) { 1426 TEST_P(GLES3DecoderWithShaderTest, GetActiveUniformsivBadSharedMemoryFails) {
1475 const uint32_t kBucketId = 123; 1427 const uint32_t kBucketId = 123;
1476 const GLuint kIndices[] = { 1, 2 }; 1428 const GLuint kIndices[] = { 1, 2 };
1477 const size_t kCount = arraysize(kIndices); 1429 const size_t kCount = arraysize(kIndices);
1478 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount); 1430 SetBucketData(kBucketId, kIndices, sizeof(GLuint) * kCount);
1479 GetActiveUniformsiv::Result* result = 1431 GetActiveUniformsiv::Result* result =
1480 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_); 1432 static_cast<GetActiveUniformsiv::Result*>(shared_memory_address_);
1481 GetActiveUniformsiv cmd; 1433 GetActiveUniformsiv cmd;
1482 decoder_->set_unsafe_es3_apis_enabled(true);
1483 result->size = 0; 1434 result->size = 0;
1484 cmd.Init(client_program_id_, 1435 cmd.Init(client_program_id_,
1485 kBucketId, 1436 kBucketId,
1486 GL_UNIFORM_TYPE, 1437 GL_UNIFORM_TYPE,
1487 kInvalidSharedMemoryId, 1438 kInvalidSharedMemoryId,
1488 kSharedMemoryOffset); 1439 kSharedMemoryOffset);
1489 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1440 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1490 result->size = 0; 1441 result->size = 0;
1491 cmd.Init(client_program_id_, 1442 cmd.Init(client_program_id_,
1492 kBucketId, 1443 kBucketId,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1534 } 1485 }
1535 1486
1536 TEST_P(GLES2DecoderWithShaderTest, GetShaderInfoLogInvalidArgs) { 1487 TEST_P(GLES2DecoderWithShaderTest, GetShaderInfoLogInvalidArgs) {
1537 const uint32_t kBucketId = 123; 1488 const uint32_t kBucketId = 123;
1538 GetShaderInfoLog cmd; 1489 GetShaderInfoLog cmd;
1539 cmd.Init(kInvalidClientId, kBucketId); 1490 cmd.Init(kInvalidClientId, kBucketId);
1540 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1491 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1541 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1492 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1542 } 1493 }
1543 1494
1544 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingSucceeds) { 1495 TEST_P(GLES3DecoderWithShaderTest, GetTransformFeedbackVaryingSucceeds) {
1545 const GLuint kIndex = 1; 1496 const GLuint kIndex = 1;
1546 const uint32_t kBucketId = 123; 1497 const uint32_t kBucketId = 123;
1547 const char kName[] = "HolyCow"; 1498 const char kName[] = "HolyCow";
1548 const GLsizei kBufferSize = static_cast<GLsizei>(strlen(kName) + 1); 1499 const GLsizei kBufferSize = static_cast<GLsizei>(strlen(kName) + 1);
1549 const GLsizei kSize = 2; 1500 const GLsizei kSize = 2;
1550 const GLenum kType = GL_FLOAT_VEC2; 1501 const GLenum kType = GL_FLOAT_VEC2;
1551 GetTransformFeedbackVarying cmd; 1502 GetTransformFeedbackVarying cmd;
1552 typedef GetTransformFeedbackVarying::Result Result; 1503 typedef GetTransformFeedbackVarying::Result Result;
1553 Result* result = static_cast<Result*>(shared_memory_address_); 1504 Result* result = static_cast<Result*>(shared_memory_address_);
1554 result->success = 0; 1505 result->success = 0;
(...skipping 14 matching lines...) Expand all
1569 .WillOnce(DoAll(SetArgPointee<3>(kBufferSize - 1), 1520 .WillOnce(DoAll(SetArgPointee<3>(kBufferSize - 1),
1570 SetArgPointee<4>(kSize), 1521 SetArgPointee<4>(kSize),
1571 SetArgPointee<5>(kType), 1522 SetArgPointee<5>(kType),
1572 SetArrayArgument<6>(kName, kName + kBufferSize))) 1523 SetArrayArgument<6>(kName, kName + kBufferSize)))
1573 .RetiresOnSaturation(); 1524 .RetiresOnSaturation();
1574 cmd.Init(client_program_id_, 1525 cmd.Init(client_program_id_,
1575 kIndex, 1526 kIndex,
1576 kBucketId, 1527 kBucketId,
1577 shared_memory_id_, 1528 shared_memory_id_,
1578 shared_memory_offset_); 1529 shared_memory_offset_);
1579 decoder_->set_unsafe_es3_apis_enabled(true);
1580 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1530 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1581 EXPECT_NE(0, result->success); 1531 EXPECT_NE(0, result->success);
1582 EXPECT_EQ(kSize, static_cast<GLsizei>(result->size)); 1532 EXPECT_EQ(kSize, static_cast<GLsizei>(result->size));
1583 EXPECT_EQ(kType, static_cast<GLenum>(result->type)); 1533 EXPECT_EQ(kType, static_cast<GLenum>(result->type));
1584 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1534 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1585 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 1535 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
1586 ASSERT_TRUE(bucket != NULL); 1536 ASSERT_TRUE(bucket != NULL);
1587 EXPECT_EQ( 1537 EXPECT_EQ(
1588 0, memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size())); 1538 0, memcmp(bucket->GetData(0, bucket->size()), kName, bucket->size()));
1589 decoder_->set_unsafe_es3_apis_enabled(false);
1590 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1591 } 1539 }
1592 1540
1593 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingNotInitFails) { 1541 TEST_P(GLES3DecoderWithShaderTest, GetTransformFeedbackVaryingNotInitFails) {
1594 const GLuint kIndex = 1; 1542 const GLuint kIndex = 1;
1595 const uint32_t kBucketId = 123; 1543 const uint32_t kBucketId = 123;
1596 GetTransformFeedbackVarying cmd; 1544 GetTransformFeedbackVarying cmd;
1597 typedef GetTransformFeedbackVarying::Result Result; 1545 typedef GetTransformFeedbackVarying::Result Result;
1598 Result* result = static_cast<Result*>(shared_memory_address_); 1546 Result* result = static_cast<Result*>(shared_memory_address_);
1599 result->success = 1; 1547 result->success = 1;
1600 cmd.Init(client_program_id_, 1548 cmd.Init(client_program_id_,
1601 kIndex, 1549 kIndex,
1602 kBucketId, 1550 kBucketId,
1603 shared_memory_id_, 1551 shared_memory_id_,
1604 shared_memory_offset_); 1552 shared_memory_offset_);
1605 decoder_->set_unsafe_es3_apis_enabled(true);
1606 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1553 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1607 } 1554 }
1608 1555
1609 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadProgramFails) { 1556 TEST_P(GLES3DecoderWithShaderTest, GetTransformFeedbackVaryingBadProgramFails) {
1610 const GLuint kIndex = 1; 1557 const GLuint kIndex = 1;
1611 const uint32_t kBucketId = 123; 1558 const uint32_t kBucketId = 123;
1612 GetTransformFeedbackVarying cmd; 1559 GetTransformFeedbackVarying cmd;
1613 typedef GetTransformFeedbackVarying::Result Result; 1560 typedef GetTransformFeedbackVarying::Result Result;
1614 Result* result = static_cast<Result*>(shared_memory_address_); 1561 Result* result = static_cast<Result*>(shared_memory_address_);
1615 result->success = 0; 1562 result->success = 0;
1616 cmd.Init(kInvalidClientId, 1563 cmd.Init(kInvalidClientId,
1617 kIndex, 1564 kIndex,
1618 kBucketId, 1565 kBucketId,
1619 shared_memory_id_, 1566 shared_memory_id_,
1620 shared_memory_offset_); 1567 shared_memory_offset_);
1621 decoder_->set_unsafe_es3_apis_enabled(true);
1622 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1568 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1623 EXPECT_EQ(0, result->success); 1569 EXPECT_EQ(0, result->success);
1624 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1570 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1625 } 1571 }
1626 1572
1627 TEST_P(GLES2DecoderWithShaderTest, GetTransformFeedbackVaryingBadParamsFails) { 1573 TEST_P(GLES3DecoderWithShaderTest, GetTransformFeedbackVaryingBadParamsFails) {
1628 const GLuint kIndex = 1; 1574 const GLuint kIndex = 1;
1629 const uint32_t kBucketId = 123; 1575 const uint32_t kBucketId = 123;
1630 const GLsizei kBufferSize = 10; 1576 const GLsizei kBufferSize = 10;
1631 GetTransformFeedbackVarying cmd; 1577 GetTransformFeedbackVarying cmd;
1632 typedef GetTransformFeedbackVarying::Result Result; 1578 typedef GetTransformFeedbackVarying::Result Result;
1633 Result* result = static_cast<Result*>(shared_memory_address_); 1579 Result* result = static_cast<Result*>(shared_memory_address_);
1634 result->success = 0; 1580 result->success = 0;
1635 cmd.Init(client_program_id_, 1581 cmd.Init(client_program_id_,
1636 kIndex, 1582 kIndex,
1637 kBucketId, 1583 kBucketId,
1638 shared_memory_id_, 1584 shared_memory_id_,
1639 shared_memory_offset_); 1585 shared_memory_offset_);
1640 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1586 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1641 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1587 .WillOnce(SetArgPointee<2>(GL_TRUE))
1642 .RetiresOnSaturation(); 1588 .RetiresOnSaturation();
1643 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, 1589 EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId,
1644 GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH, _)) 1590 GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH, _))
1645 .WillOnce(SetArgPointee<2>(kBufferSize)) 1591 .WillOnce(SetArgPointee<2>(kBufferSize))
1646 .RetiresOnSaturation(); 1592 .RetiresOnSaturation();
1647 EXPECT_CALL(*gl_, GetError()) 1593 EXPECT_CALL(*gl_, GetError())
1648 .WillOnce(Return(GL_NO_ERROR)) 1594 .WillOnce(Return(GL_NO_ERROR))
1649 .WillOnce(Return(GL_INVALID_VALUE)) 1595 .WillOnce(Return(GL_INVALID_VALUE))
1650 .RetiresOnSaturation(); 1596 .RetiresOnSaturation();
1651 EXPECT_CALL(*gl_, 1597 EXPECT_CALL(*gl_,
1652 GetTransformFeedbackVarying( 1598 GetTransformFeedbackVarying(
1653 kServiceProgramId, kIndex, _, _, _, _, _)) 1599 kServiceProgramId, kIndex, _, _, _, _, _))
1654 .Times(1) 1600 .Times(1)
1655 .RetiresOnSaturation(); 1601 .RetiresOnSaturation();
1656 decoder_->set_unsafe_es3_apis_enabled(true);
1657 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1602 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1658 EXPECT_EQ(0, result->success); 1603 EXPECT_EQ(0, result->success);
1659 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1604 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1660 } 1605 }
1661 1606
1662 TEST_P(GLES2DecoderWithShaderTest, 1607 TEST_P(GLES3DecoderWithShaderTest,
1663 GetTransformFeedbackVaryingBadSharedMemoryFails) { 1608 GetTransformFeedbackVaryingBadSharedMemoryFails) {
1664 const GLuint kIndex = 1; 1609 const GLuint kIndex = 1;
1665 const uint32_t kBucketId = 123; 1610 const uint32_t kBucketId = 123;
1666 GetTransformFeedbackVarying cmd; 1611 GetTransformFeedbackVarying cmd;
1667 typedef GetTransformFeedbackVarying::Result Result; 1612 typedef GetTransformFeedbackVarying::Result Result;
1668 Result* result = static_cast<Result*>(shared_memory_address_); 1613 Result* result = static_cast<Result*>(shared_memory_address_);
1669 result->success = 0; 1614 result->success = 0;
1670 decoder_->set_unsafe_es3_apis_enabled(true);
1671 cmd.Init(client_program_id_, 1615 cmd.Init(client_program_id_,
1672 kIndex, 1616 kIndex,
1673 kBucketId, 1617 kBucketId,
1674 kInvalidSharedMemoryId, 1618 kInvalidSharedMemoryId,
1675 shared_memory_offset_); 1619 shared_memory_offset_);
1676 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1620 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1677 cmd.Init(client_program_id_, 1621 cmd.Init(client_program_id_,
1678 kIndex, 1622 kIndex,
1679 kBucketId, 1623 kBucketId,
1680 shared_memory_id_, 1624 shared_memory_id_,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
1779 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1723 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1780 } 1724 }
1781 1725
1782 TEST_P(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { 1726 TEST_P(GLES2DecoderWithShaderTest, Uniform1iValidArgs) {
1783 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); 1727 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2));
1784 Uniform1i cmd; 1728 Uniform1i cmd;
1785 cmd.Init(kUniform1FakeLocation, 2); 1729 cmd.Init(kUniform1FakeLocation, 2);
1786 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1730 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1787 } 1731 }
1788 1732
1789 TEST_P(GLES2DecoderWithShaderTest, Uniform1uiValidArgs) { 1733 TEST_P(GLES3DecoderWithShaderTest, Uniform1uiValidArgs) {
1790 EXPECT_CALL(*gl_, Uniform1uiv(kUniform4RealLocation, 1, _)); 1734 EXPECT_CALL(*gl_, Uniform1uiv(kUniform4RealLocation, 1, _));
1791 Uniform1ui cmd; 1735 Uniform1ui cmd;
1792 cmd.Init(kUniform4FakeLocation, 2); 1736 cmd.Init(kUniform4FakeLocation, 2);
1793 decoder_->set_unsafe_es3_apis_enabled(true);
1794 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1737 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1795 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1738 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1796 decoder_->set_unsafe_es3_apis_enabled(false);
1797 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1798 } 1739 }
1799 1740
1800 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { 1741 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) {
1801 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); 1742 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>();
1802 GLint temp[1] = { 1743 GLint temp[1] = {
1803 0, 1744 0,
1804 }; 1745 };
1805 EXPECT_CALL(*gl_, 1746 EXPECT_CALL(*gl_,
1806 Uniform1iv(kUniform1RealLocation, 1, PointsToArray(temp, 1))); 1747 Uniform1iv(kUniform1RealLocation, 1, PointsToArray(temp, 1)));
1807 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); 1748 cmd.Init(kUniform1FakeLocation, 1, &temp[0]);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1857 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1798 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1858 1799
1859 EXPECT_CALL(*gl_, 1800 EXPECT_CALL(*gl_,
1860 Uniform1iv(kUniform8RealLocation, 2, PointsToArray(temp, 2))); 1801 Uniform1iv(kUniform8RealLocation, 2, PointsToArray(temp, 2)));
1861 cmd.Init(kUniform8FakeLocation, 3, &temp[0]); 1802 cmd.Init(kUniform8FakeLocation, 3, &temp[0]);
1862 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1803 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1863 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1804 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1864 } 1805 }
1865 1806
1866 1807
1867 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateValidArgs) { 1808 TEST_P(GLES3DecoderWithShaderTest, Uniform1uivImmediateValidArgs) {
1868 Uniform1uivImmediate& cmd = 1809 Uniform1uivImmediate& cmd =
1869 *GetImmediateAs<Uniform1uivImmediate>(); 1810 *GetImmediateAs<Uniform1uivImmediate>();
1870 GLuint temp[1] = { 1811 GLuint temp[1] = {
1871 0, 1812 0,
1872 }; 1813 };
1873 EXPECT_CALL(*gl_, 1814 EXPECT_CALL(*gl_,
1874 Uniform1uiv(kUniform4RealLocation, 1, PointsToArray(temp, 1))); 1815 Uniform1uiv(kUniform4RealLocation, 1, PointsToArray(temp, 1)));
1875 cmd.Init(kUniform4FakeLocation, 1, &temp[0]); 1816 cmd.Init(kUniform4FakeLocation, 1, &temp[0]);
1876 decoder_->set_unsafe_es3_apis_enabled(true);
1877 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1817 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1878 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1818 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1879 decoder_->set_unsafe_es3_apis_enabled(false);
1880 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1881 } 1819 }
1882 1820
1883 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateInvalidType) { 1821 TEST_P(GLES3DecoderWithShaderTest, Uniform1uivImmediateInvalidType) {
1884 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); 1822 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0);
1885 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); 1823 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>();
1886 GLuint temp[1 * 2] = { 1824 GLuint temp[1 * 2] = {
1887 0, 1825 0,
1888 }; 1826 };
1889 // uniform1 is SAMPLER type. 1827 // uniform1 is SAMPLER type.
1890 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); 1828 cmd.Init(kUniform1FakeLocation, 1, &temp[0]);
1891 decoder_->set_unsafe_es3_apis_enabled(true);
1892 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1829 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1893 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 1830 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
1894 } 1831 }
1895 1832
1896 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivZeroCount) { 1833 TEST_P(GLES3DecoderWithShaderTest, Uniform1uivZeroCount) {
1897 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); 1834 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0);
1898 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); 1835 Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>();
1899 GLuint temp = 0; 1836 GLuint temp = 0;
1900 cmd.Init(kUniform4FakeLocation, 0, &temp); 1837 cmd.Init(kUniform4FakeLocation, 0, &temp);
1901 decoder_->set_unsafe_es3_apis_enabled(true);
1902 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1838 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1903 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1839 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1904 } 1840 }
1905 1841
1906 TEST_P(GLES2DecoderWithShaderTest, Uniform2uiValidArgs) { 1842 TEST_P(GLES3DecoderWithShaderTest, Uniform2uiValidArgs) {
1907 EXPECT_CALL(*gl_, Uniform2uiv(kUniform5RealLocation, 1, _)); 1843 EXPECT_CALL(*gl_, Uniform2uiv(kUniform5RealLocation, 1, _));
1908 Uniform2ui cmd; 1844 Uniform2ui cmd;
1909 cmd.Init(kUniform5FakeLocation, 2, 3); 1845 cmd.Init(kUniform5FakeLocation, 2, 3);
1910 decoder_->set_unsafe_es3_apis_enabled(true);
1911 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1846 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1912 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1847 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1913 decoder_->set_unsafe_es3_apis_enabled(false);
1914 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1915 } 1848 }
1916 1849
1917 TEST_P(GLES2DecoderWithShaderTest, Uniform2uivImmediateValidArgs) { 1850 TEST_P(GLES3DecoderWithShaderTest, Uniform2uivImmediateValidArgs) {
1918 Uniform2uivImmediate& cmd = 1851 Uniform2uivImmediate& cmd =
1919 *GetImmediateAs<Uniform2uivImmediate>(); 1852 *GetImmediateAs<Uniform2uivImmediate>();
1920 GLuint temp[2 * 1] = { 1853 GLuint temp[2 * 1] = {
1921 0, 1854 0,
1922 }; 1855 };
1923 EXPECT_CALL(*gl_, 1856 EXPECT_CALL(*gl_,
1924 Uniform2uiv(kUniform5RealLocation, 1, PointsToArray(temp, 2))); 1857 Uniform2uiv(kUniform5RealLocation, 1, PointsToArray(temp, 2)));
1925 cmd.Init(kUniform5FakeLocation, 1, &temp[0]); 1858 cmd.Init(kUniform5FakeLocation, 1, &temp[0]);
1926 decoder_->set_unsafe_es3_apis_enabled(true);
1927 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1859 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1928 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1860 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1929 decoder_->set_unsafe_es3_apis_enabled(false);
1930 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1931 } 1861 }
1932 1862
1933 TEST_P(GLES2DecoderWithShaderTest, Uniform3uiValidArgs) { 1863 TEST_P(GLES3DecoderWithShaderTest, Uniform3uiValidArgs) {
1934 EXPECT_CALL(*gl_, Uniform3uiv(kUniform6RealLocation, 1, _)); 1864 EXPECT_CALL(*gl_, Uniform3uiv(kUniform6RealLocation, 1, _));
1935 Uniform3ui cmd; 1865 Uniform3ui cmd;
1936 cmd.Init(kUniform6FakeLocation, 2, 3, 4); 1866 cmd.Init(kUniform6FakeLocation, 2, 3, 4);
1937 decoder_->set_unsafe_es3_apis_enabled(true);
1938 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1867 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1939 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1868 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1940 decoder_->set_unsafe_es3_apis_enabled(false);
1941 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1942 } 1869 }
1943 1870
1944 TEST_P(GLES2DecoderWithShaderTest, Uniform3uivImmediateValidArgs) { 1871 TEST_P(GLES3DecoderWithShaderTest, Uniform3uivImmediateValidArgs) {
1945 Uniform3uivImmediate& cmd = 1872 Uniform3uivImmediate& cmd =
1946 *GetImmediateAs<Uniform3uivImmediate>(); 1873 *GetImmediateAs<Uniform3uivImmediate>();
1947 GLuint temp[3 * 1] = { 1874 GLuint temp[3 * 1] = {
1948 0, 1875 0,
1949 }; 1876 };
1950 EXPECT_CALL(*gl_, 1877 EXPECT_CALL(*gl_,
1951 Uniform3uiv(kUniform6RealLocation, 1, PointsToArray(temp, 3))); 1878 Uniform3uiv(kUniform6RealLocation, 1, PointsToArray(temp, 3)));
1952 cmd.Init(kUniform6FakeLocation, 1, &temp[0]); 1879 cmd.Init(kUniform6FakeLocation, 1, &temp[0]);
1953 decoder_->set_unsafe_es3_apis_enabled(true);
1954 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1880 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1955 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1881 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1956 decoder_->set_unsafe_es3_apis_enabled(false);
1957 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1958 } 1882 }
1959 1883
1960 TEST_P(GLES2DecoderWithShaderTest, Uniform4uiValidArgs) { 1884 TEST_P(GLES3DecoderWithShaderTest, Uniform4uiValidArgs) {
1961 EXPECT_CALL(*gl_, Uniform4uiv(kUniform7RealLocation, 1, _)); 1885 EXPECT_CALL(*gl_, Uniform4uiv(kUniform7RealLocation, 1, _));
1962 Uniform4ui cmd; 1886 Uniform4ui cmd;
1963 cmd.Init(kUniform7FakeLocation, 2, 3, 4, 5); 1887 cmd.Init(kUniform7FakeLocation, 2, 3, 4, 5);
1964 decoder_->set_unsafe_es3_apis_enabled(true);
1965 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1888 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1966 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1889 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1967 decoder_->set_unsafe_es3_apis_enabled(false);
1968 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1969 } 1890 }
1970 1891
1971 TEST_P(GLES2DecoderWithShaderTest, Uniform4uivImmediateValidArgs) { 1892 TEST_P(GLES3DecoderWithShaderTest, Uniform4uivImmediateValidArgs) {
1972 Uniform4uivImmediate& cmd = 1893 Uniform4uivImmediate& cmd =
1973 *GetImmediateAs<Uniform4uivImmediate>(); 1894 *GetImmediateAs<Uniform4uivImmediate>();
1974 GLuint temp[4 * 1] = { 1895 GLuint temp[4 * 1] = {
1975 0, 1896 0,
1976 }; 1897 };
1977 EXPECT_CALL(*gl_, 1898 EXPECT_CALL(*gl_,
1978 Uniform4uiv(kUniform7RealLocation, 1, PointsToArray(temp, 4))); 1899 Uniform4uiv(kUniform7RealLocation, 1, PointsToArray(temp, 4)));
1979 cmd.Init(kUniform7FakeLocation, 1, &temp[0]); 1900 cmd.Init(kUniform7FakeLocation, 1, &temp[0]);
1980 decoder_->set_unsafe_es3_apis_enabled(true);
1981 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1901 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1982 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1902 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1983 decoder_->set_unsafe_es3_apis_enabled(false);
1984 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1985 } 1903 }
1986 1904
1987 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) { 1905 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) {
1988 const uint32_t kBucketId = 123; 1906 const uint32_t kBucketId = 123;
1989 const GLint kLocation = 2; 1907 const GLint kLocation = 2;
1990 const char* kName = "testing"; 1908 const char* kName = "testing";
1991 EXPECT_CALL(*gl_, 1909 EXPECT_CALL(*gl_,
1992 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) 1910 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName)))
1993 .Times(1); 1911 .Times(1);
1994 SetBucketAsCString(kBucketId, kName); 1912 SetBucketAsCString(kBucketId, kName);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
2058 kInvalidSharedMemoryId, 1976 kInvalidSharedMemoryId,
2059 kSharedMemoryOffset); 1977 kSharedMemoryOffset);
2060 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1978 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2061 cmd.Init(client_program_id_, 1979 cmd.Init(client_program_id_,
2062 kBucketId, 1980 kBucketId,
2063 kSharedMemoryId, 1981 kSharedMemoryId,
2064 kInvalidSharedMemoryOffset); 1982 kInvalidSharedMemoryOffset);
2065 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1983 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2066 } 1984 }
2067 1985
2068 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocation) { 1986 TEST_P(GLES3DecoderWithShaderTest, GetFragDataLocation) {
2069 const uint32_t kBucketId = 123; 1987 const uint32_t kBucketId = 123;
2070 typedef GetFragDataLocation::Result Result; 1988 typedef GetFragDataLocation::Result Result;
2071 Result* result = GetSharedMemoryAs<Result*>(); 1989 Result* result = GetSharedMemoryAs<Result*>();
2072 SetBucketAsCString(kBucketId, kOutputVariable1NameESSL3); 1990 SetBucketAsCString(kBucketId, kOutputVariable1NameESSL3);
2073 *result = -1; 1991 *result = -1;
2074 GetFragDataLocation cmd; 1992 GetFragDataLocation cmd;
2075 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 1993 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2076 decoder_->set_unsafe_es3_apis_enabled(true);
2077 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1994 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
2078 EXPECT_EQ(static_cast<GLint>(kOutputVariable1ColorName), *result); 1995 EXPECT_EQ(static_cast<GLint>(kOutputVariable1ColorName), *result);
2079 decoder_->set_unsafe_es3_apis_enabled(false);
2080 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
2081 } 1996 }
2082 1997
2083 TEST_P(GLES3DecoderWithESSL3ShaderTest, GetFragDataLocationInvalidArgs) { 1998 TEST_P(GLES3DecoderWithShaderTest, GetFragDataLocationInvalidArgs) {
2084 const uint32_t kBucketId = 123; 1999 const uint32_t kBucketId = 123;
2085 typedef GetFragDataLocation::Result Result; 2000 typedef GetFragDataLocation::Result Result;
2086 Result* result = GetSharedMemoryAs<Result*>(); 2001 Result* result = GetSharedMemoryAs<Result*>();
2087 *result = -1; 2002 *result = -1;
2088 GetFragDataLocation cmd; 2003 GetFragDataLocation cmd;
2089 decoder_->set_unsafe_es3_apis_enabled(true);
2090 // Check no bucket 2004 // Check no bucket
2091 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 2005 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2092 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 2006 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2093 EXPECT_EQ(-1, *result); 2007 EXPECT_EQ(-1, *result);
2094 // Check bad program id. 2008 // Check bad program id.
2095 const char* kName = "color"; 2009 const char* kName = "color";
2096 SetBucketAsCString(kBucketId, kName); 2010 SetBucketAsCString(kBucketId, kName);
2097 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 2011 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2098 *result = -1; 2012 *result = -1;
2099 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2013 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
2100 EXPECT_EQ(-1, *result); 2014 EXPECT_EQ(-1, *result);
2101 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 2015 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
2102 // Check bad memory 2016 // Check bad memory
2103 cmd.Init(client_program_id_, 2017 cmd.Init(client_program_id_,
2104 kBucketId, 2018 kBucketId,
2105 kInvalidSharedMemoryId, 2019 kInvalidSharedMemoryId,
2106 kSharedMemoryOffset); 2020 kSharedMemoryOffset);
2107 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 2021 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2108 cmd.Init(client_program_id_, 2022 cmd.Init(client_program_id_,
2109 kBucketId, 2023 kBucketId,
2110 kSharedMemoryId, 2024 kSharedMemoryId,
2111 kInvalidSharedMemoryOffset); 2025 kInvalidSharedMemoryOffset);
2112 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 2026 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2113 } 2027 }
2114 2028
2115 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlockIndex) { 2029 TEST_P(GLES3DecoderWithShaderTest, GetUniformBlockIndex) {
2116 const uint32_t kBucketId = 123; 2030 const uint32_t kBucketId = 123;
2117 const GLuint kIndex = 10; 2031 const GLuint kIndex = 10;
2118 const char* kName = "color"; 2032 const char* kName = "color";
2119 typedef GetUniformBlockIndex::Result Result; 2033 typedef GetUniformBlockIndex::Result Result;
2120 Result* result = GetSharedMemoryAs<Result*>(); 2034 Result* result = GetSharedMemoryAs<Result*>();
2121 SetBucketAsCString(kBucketId, kName); 2035 SetBucketAsCString(kBucketId, kName);
2122 *result = GL_INVALID_INDEX; 2036 *result = GL_INVALID_INDEX;
2123 GetUniformBlockIndex cmd; 2037 GetUniformBlockIndex cmd;
2124 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 2038 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2125 EXPECT_CALL(*gl_, GetUniformBlockIndex(kServiceProgramId, StrEq(kName))) 2039 EXPECT_CALL(*gl_, GetUniformBlockIndex(kServiceProgramId, StrEq(kName)))
2126 .WillOnce(Return(kIndex)) 2040 .WillOnce(Return(kIndex))
2127 .RetiresOnSaturation(); 2041 .RetiresOnSaturation();
2128 decoder_->set_unsafe_es3_apis_enabled(true);
2129 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2042 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
2130 EXPECT_EQ(kIndex, *result); 2043 EXPECT_EQ(kIndex, *result);
2131 decoder_->set_unsafe_es3_apis_enabled(false);
2132 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
2133 } 2044 }
2134 2045
2135 TEST_P(GLES2DecoderWithShaderTest, GetUniformBlockIndexInvalidArgs) { 2046 TEST_P(GLES3DecoderWithShaderTest, GetUniformBlockIndexInvalidArgs) {
2136 const uint32_t kBucketId = 123; 2047 const uint32_t kBucketId = 123;
2137 typedef GetUniformBlockIndex::Result Result; 2048 typedef GetUniformBlockIndex::Result Result;
2138 Result* result = GetSharedMemoryAs<Result*>(); 2049 Result* result = GetSharedMemoryAs<Result*>();
2139 *result = GL_INVALID_INDEX; 2050 *result = GL_INVALID_INDEX;
2140 GetUniformBlockIndex cmd; 2051 GetUniformBlockIndex cmd;
2141 decoder_->set_unsafe_es3_apis_enabled(true);
2142 // Check no bucket 2052 // Check no bucket
2143 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 2053 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2144 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 2054 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2145 EXPECT_EQ(GL_INVALID_INDEX, *result); 2055 EXPECT_EQ(GL_INVALID_INDEX, *result);
2146 // Check bad program id. 2056 // Check bad program id.
2147 const char* kName = "color"; 2057 const char* kName = "color";
2148 SetBucketAsCString(kBucketId, kName); 2058 SetBucketAsCString(kBucketId, kName);
2149 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 2059 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
2150 *result = GL_INVALID_INDEX; 2060 *result = GL_INVALID_INDEX;
2151 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2061 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
2205 kInvalidSharedMemoryId, 2115 kInvalidSharedMemoryId,
2206 kSharedMemoryOffset); 2116 kSharedMemoryOffset);
2207 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 2117 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2208 cmd.Init(client_program_id_, 2118 cmd.Init(client_program_id_,
2209 kBucketId, 2119 kBucketId,
2210 kSharedMemoryId, 2120 kSharedMemoryId,
2211 kInvalidSharedMemoryOffset); 2121 kInvalidSharedMemoryOffset);
2212 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 2122 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
2213 } 2123 }
2214 2124
2215 TEST_P(GLES3DecoderWithESSL3ShaderTest, Basic) { 2125 TEST_P(GLES3DecoderWithShaderTest, Basic) {
2216 // Make sure the setup is correct for ES3. 2126 // Make sure the setup is correct for ES3.
2217 EXPECT_TRUE(decoder_->unsafe_es3_apis_enabled()); 2127 EXPECT_TRUE(decoder_->unsafe_es3_apis_enabled());
2218 EXPECT_TRUE(feature_info()->validators()->texture_bind_target.IsValid( 2128 EXPECT_TRUE(feature_info()->validators()->texture_bind_target.IsValid(
2219 GL_TEXTURE_3D)); 2129 GL_TEXTURE_3D));
2220 } 2130 }
2221 2131
2222 TEST_P(GLES3DecoderWithESSL3ShaderTest, UniformBlockBindingValidArgs) { 2132 TEST_P(GLES3DecoderWithShaderTest, UniformBlockBindingValidArgs) {
2223 EXPECT_CALL(*gl_, UniformBlockBinding(kServiceProgramId, 1, 3)); 2133 EXPECT_CALL(*gl_, UniformBlockBinding(kServiceProgramId, 1, 3));
2224 SpecializedSetup<UniformBlockBinding, 0>(true); 2134 SpecializedSetup<UniformBlockBinding, 0>(true);
2225 UniformBlockBinding cmd; 2135 UniformBlockBinding cmd;
2226 cmd.Init(client_program_id_, 1, 3); 2136 cmd.Init(client_program_id_, 1, 3);
2227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2137 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
2228 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2138 EXPECT_EQ(GL_NO_ERROR, GetGLError());
2229 } 2139 }
2230 2140
2231 TEST_P(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUMBucket) { 2141 TEST_P(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUMBucket) {
2232 const uint32_t kBucketId = 123; 2142 const uint32_t kBucketId = 123;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
2356 } 2266 }
2357 2267
2358 // TODO(gman): DeleteProgram 2268 // TODO(gman): DeleteProgram
2359 2269
2360 // TODO(gman): UseProgram 2270 // TODO(gman): UseProgram
2361 2271
2362 // TODO(gman): DeleteShader 2272 // TODO(gman): DeleteShader
2363 2273
2364 } // namespace gles2 2274 } // namespace gles2
2365 } // namespace gpu 2275 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698