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

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

Issue 245923008: Optimize GLES2DecoderImpl::ApplyDirtyState. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase on refactored gles2_cmd_decoder_unittest.cc Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "gpu/command_buffer/common/gles2_cmd_format.h" 9 #include "gpu/command_buffer/common/gles2_cmd_format.h"
10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 using ::testing::SetArgumentPointee; 47 using ::testing::SetArgumentPointee;
48 using ::testing::SetArgPointee; 48 using ::testing::SetArgPointee;
49 using ::testing::StrEq; 49 using ::testing::StrEq;
50 using ::testing::StrictMock; 50 using ::testing::StrictMock;
51 51
52 namespace gpu { 52 namespace gpu {
53 namespace gles2 { 53 namespace gles2 {
54 54
55 using namespace cmds; 55 using namespace cmds;
56 56
57 TEST_F(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMValidArgs) { 57 TEST_P(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMValidArgs) {
58 const uint32 kBucketId = 123; 58 const uint32 kBucketId = 123;
59 GetProgramInfoCHROMIUM cmd; 59 GetProgramInfoCHROMIUM cmd;
60 cmd.Init(client_program_id_, kBucketId); 60 cmd.Init(client_program_id_, kBucketId);
61 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 61 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
62 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 62 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
63 EXPECT_GT(bucket->size(), 0u); 63 EXPECT_GT(bucket->size(), 0u);
64 } 64 }
65 65
66 TEST_F(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMInvalidArgs) { 66 TEST_P(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMInvalidArgs) {
67 const uint32 kBucketId = 123; 67 const uint32 kBucketId = 123;
68 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 68 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
69 EXPECT_TRUE(bucket == NULL); 69 EXPECT_TRUE(bucket == NULL);
70 GetProgramInfoCHROMIUM cmd; 70 GetProgramInfoCHROMIUM cmd;
71 cmd.Init(kInvalidClientId, kBucketId); 71 cmd.Init(kInvalidClientId, kBucketId);
72 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 72 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
73 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 73 EXPECT_EQ(GL_NO_ERROR, GetGLError());
74 bucket = decoder_->GetBucket(kBucketId); 74 bucket = decoder_->GetBucket(kBucketId);
75 ASSERT_TRUE(bucket != NULL); 75 ASSERT_TRUE(bucket != NULL);
76 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size()); 76 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size());
77 ProgramInfoHeader* info = 77 ProgramInfoHeader* info =
78 bucket->GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader)); 78 bucket->GetDataAs<ProgramInfoHeader*>(0, sizeof(ProgramInfoHeader));
79 ASSERT_TRUE(info != 0); 79 ASSERT_TRUE(info != 0);
80 EXPECT_EQ(0u, info->link_status); 80 EXPECT_EQ(0u, info->link_status);
81 EXPECT_EQ(0u, info->num_attribs); 81 EXPECT_EQ(0u, info->num_attribs);
82 EXPECT_EQ(0u, info->num_uniforms); 82 EXPECT_EQ(0u, info->num_uniforms);
83 } 83 }
84 84
85 TEST_F(GLES2DecoderWithShaderTest, GetUniformivSucceeds) { 85 TEST_P(GLES2DecoderWithShaderTest, GetUniformivSucceeds) {
86 GetUniformiv::Result* result = 86 GetUniformiv::Result* result =
87 static_cast<GetUniformiv::Result*>(shared_memory_address_); 87 static_cast<GetUniformiv::Result*>(shared_memory_address_);
88 result->size = 0; 88 result->size = 0;
89 GetUniformiv cmd; 89 GetUniformiv cmd;
90 cmd.Init(client_program_id_, 90 cmd.Init(client_program_id_,
91 kUniform2FakeLocation, 91 kUniform2FakeLocation,
92 kSharedMemoryId, 92 kSharedMemoryId,
93 kSharedMemoryOffset); 93 kSharedMemoryOffset);
94 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2RealLocation, _)) 94 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2RealLocation, _))
95 .Times(1); 95 .Times(1);
96 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 96 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
97 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), 97 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type),
98 result->size); 98 result->size);
99 } 99 }
100 100
101 TEST_F(GLES2DecoderWithShaderTest, GetUniformivArrayElementSucceeds) { 101 TEST_P(GLES2DecoderWithShaderTest, GetUniformivArrayElementSucceeds) {
102 GetUniformiv::Result* result = 102 GetUniformiv::Result* result =
103 static_cast<GetUniformiv::Result*>(shared_memory_address_); 103 static_cast<GetUniformiv::Result*>(shared_memory_address_);
104 result->size = 0; 104 result->size = 0;
105 GetUniformiv cmd; 105 GetUniformiv cmd;
106 cmd.Init(client_program_id_, 106 cmd.Init(client_program_id_,
107 kUniform2ElementFakeLocation, 107 kUniform2ElementFakeLocation,
108 kSharedMemoryId, 108 kSharedMemoryId,
109 kSharedMemoryOffset); 109 kSharedMemoryOffset);
110 EXPECT_CALL(*gl_, 110 EXPECT_CALL(*gl_,
111 GetUniformiv(kServiceProgramId, kUniform2ElementRealLocation, _)) 111 GetUniformiv(kServiceProgramId, kUniform2ElementRealLocation, _))
112 .Times(1); 112 .Times(1);
113 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 113 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
114 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), 114 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type),
115 result->size); 115 result->size);
116 } 116 }
117 117
118 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadProgramFails) { 118 TEST_P(GLES2DecoderWithShaderTest, GetUniformivBadProgramFails) {
119 GetUniformiv::Result* result = 119 GetUniformiv::Result* result =
120 static_cast<GetUniformiv::Result*>(shared_memory_address_); 120 static_cast<GetUniformiv::Result*>(shared_memory_address_);
121 result->size = 0; 121 result->size = 0;
122 GetUniformiv cmd; 122 GetUniformiv cmd;
123 // non-existant program 123 // non-existant program
124 cmd.Init(kInvalidClientId, 124 cmd.Init(kInvalidClientId,
125 kUniform2FakeLocation, 125 kUniform2FakeLocation,
126 kSharedMemoryId, 126 kSharedMemoryId,
127 kSharedMemoryOffset); 127 kSharedMemoryOffset);
128 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); 128 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0);
(...skipping 23 matching lines...) Expand all
152 result->size = kInitialResult; 152 result->size = kInitialResult;
153 cmd.Init(kNewClientId, 153 cmd.Init(kNewClientId,
154 kUniform2FakeLocation, 154 kUniform2FakeLocation,
155 kSharedMemoryId, 155 kSharedMemoryId,
156 kSharedMemoryOffset); 156 kSharedMemoryOffset);
157 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 157 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
158 EXPECT_EQ(0U, result->size); 158 EXPECT_EQ(0U, result->size);
159 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 159 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
160 } 160 }
161 161
162 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadLocationFails) { 162 TEST_P(GLES2DecoderWithShaderTest, GetUniformivBadLocationFails) {
163 GetUniformiv::Result* result = 163 GetUniformiv::Result* result =
164 static_cast<GetUniformiv::Result*>(shared_memory_address_); 164 static_cast<GetUniformiv::Result*>(shared_memory_address_);
165 result->size = 0; 165 result->size = 0;
166 GetUniformiv cmd; 166 GetUniformiv cmd;
167 // invalid location 167 // invalid location
168 cmd.Init(client_program_id_, 168 cmd.Init(client_program_id_,
169 kInvalidUniformLocation, 169 kInvalidUniformLocation,
170 kSharedMemoryId, 170 kSharedMemoryId,
171 kSharedMemoryOffset); 171 kSharedMemoryOffset);
172 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); 172 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0);
173 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 173 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
174 EXPECT_EQ(0U, result->size); 174 EXPECT_EQ(0U, result->size);
175 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 175 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
176 } 176 }
177 177
178 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadSharedMemoryFails) { 178 TEST_P(GLES2DecoderWithShaderTest, GetUniformivBadSharedMemoryFails) {
179 GetUniformiv cmd; 179 GetUniformiv cmd;
180 cmd.Init(client_program_id_, 180 cmd.Init(client_program_id_,
181 kUniform2FakeLocation, 181 kUniform2FakeLocation,
182 kInvalidSharedMemoryId, 182 kInvalidSharedMemoryId,
183 kSharedMemoryOffset); 183 kSharedMemoryOffset);
184 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0); 184 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)).Times(0);
185 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 185 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
186 cmd.Init(client_program_id_, 186 cmd.Init(client_program_id_,
187 kUniform2FakeLocation, 187 kUniform2FakeLocation,
188 kSharedMemoryId, 188 kSharedMemoryId,
189 kInvalidSharedMemoryOffset); 189 kInvalidSharedMemoryOffset);
190 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 190 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
191 }; 191 };
192 192
193 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { 193 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) {
194 GetUniformfv::Result* result = 194 GetUniformfv::Result* result =
195 static_cast<GetUniformfv::Result*>(shared_memory_address_); 195 static_cast<GetUniformfv::Result*>(shared_memory_address_);
196 result->size = 0; 196 result->size = 0;
197 GetUniformfv cmd; 197 GetUniformfv cmd;
198 cmd.Init(client_program_id_, 198 cmd.Init(client_program_id_,
199 kUniform2FakeLocation, 199 kUniform2FakeLocation,
200 kSharedMemoryId, 200 kSharedMemoryId,
201 kSharedMemoryOffset); 201 kSharedMemoryOffset);
202 EXPECT_CALL(*gl_, GetUniformfv(kServiceProgramId, kUniform2RealLocation, _)) 202 EXPECT_CALL(*gl_, GetUniformfv(kServiceProgramId, kUniform2RealLocation, _))
203 .Times(1); 203 .Times(1);
204 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 204 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
205 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), 205 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type),
206 result->size); 206 result->size);
207 } 207 }
208 208
209 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvArrayElementSucceeds) { 209 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvArrayElementSucceeds) {
210 GetUniformfv::Result* result = 210 GetUniformfv::Result* result =
211 static_cast<GetUniformfv::Result*>(shared_memory_address_); 211 static_cast<GetUniformfv::Result*>(shared_memory_address_);
212 result->size = 0; 212 result->size = 0;
213 GetUniformfv cmd; 213 GetUniformfv cmd;
214 cmd.Init(client_program_id_, 214 cmd.Init(client_program_id_,
215 kUniform2ElementFakeLocation, 215 kUniform2ElementFakeLocation,
216 kSharedMemoryId, 216 kSharedMemoryId,
217 kSharedMemoryOffset); 217 kSharedMemoryOffset);
218 EXPECT_CALL(*gl_, 218 EXPECT_CALL(*gl_,
219 GetUniformfv(kServiceProgramId, kUniform2ElementRealLocation, _)) 219 GetUniformfv(kServiceProgramId, kUniform2ElementRealLocation, _))
220 .Times(1); 220 .Times(1);
221 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 221 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
222 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), 222 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type),
223 result->size); 223 result->size);
224 } 224 }
225 225
226 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadProgramFails) { 226 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvBadProgramFails) {
227 GetUniformfv::Result* result = 227 GetUniformfv::Result* result =
228 static_cast<GetUniformfv::Result*>(shared_memory_address_); 228 static_cast<GetUniformfv::Result*>(shared_memory_address_);
229 result->size = 0; 229 result->size = 0;
230 GetUniformfv cmd; 230 GetUniformfv cmd;
231 // non-existant program 231 // non-existant program
232 cmd.Init(kInvalidClientId, 232 cmd.Init(kInvalidClientId,
233 kUniform2FakeLocation, 233 kUniform2FakeLocation,
234 kSharedMemoryId, 234 kSharedMemoryId,
235 kSharedMemoryOffset); 235 kSharedMemoryOffset);
236 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0); 236 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0);
(...skipping 23 matching lines...) Expand all
260 result->size = kInitialResult; 260 result->size = kInitialResult;
261 cmd.Init(kNewClientId, 261 cmd.Init(kNewClientId,
262 kUniform2FakeLocation, 262 kUniform2FakeLocation,
263 kSharedMemoryId, 263 kSharedMemoryId,
264 kSharedMemoryOffset); 264 kSharedMemoryOffset);
265 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 265 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
266 EXPECT_EQ(0U, result->size); 266 EXPECT_EQ(0U, result->size);
267 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 267 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
268 } 268 }
269 269
270 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadLocationFails) { 270 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvBadLocationFails) {
271 GetUniformfv::Result* result = 271 GetUniformfv::Result* result =
272 static_cast<GetUniformfv::Result*>(shared_memory_address_); 272 static_cast<GetUniformfv::Result*>(shared_memory_address_);
273 result->size = 0; 273 result->size = 0;
274 GetUniformfv cmd; 274 GetUniformfv cmd;
275 // invalid location 275 // invalid location
276 cmd.Init(client_program_id_, 276 cmd.Init(client_program_id_,
277 kInvalidUniformLocation, 277 kInvalidUniformLocation,
278 kSharedMemoryId, 278 kSharedMemoryId,
279 kSharedMemoryOffset); 279 kSharedMemoryOffset);
280 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0); 280 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0);
281 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 281 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
282 EXPECT_EQ(0U, result->size); 282 EXPECT_EQ(0U, result->size);
283 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 283 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
284 } 284 }
285 285
286 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadSharedMemoryFails) { 286 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvBadSharedMemoryFails) {
287 GetUniformfv cmd; 287 GetUniformfv cmd;
288 cmd.Init(client_program_id_, 288 cmd.Init(client_program_id_,
289 kUniform2FakeLocation, 289 kUniform2FakeLocation,
290 kInvalidSharedMemoryId, 290 kInvalidSharedMemoryId,
291 kSharedMemoryOffset); 291 kSharedMemoryOffset);
292 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0); 292 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)).Times(0);
293 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 293 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
294 cmd.Init(client_program_id_, 294 cmd.Init(client_program_id_,
295 kUniform2FakeLocation, 295 kUniform2FakeLocation,
296 kSharedMemoryId, 296 kSharedMemoryId,
297 kInvalidSharedMemoryOffset); 297 kInvalidSharedMemoryOffset);
298 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 298 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
299 }; 299 };
300 300
301 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersSucceeds) { 301 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersSucceeds) {
302 GetAttachedShaders cmd; 302 GetAttachedShaders cmd;
303 typedef GetAttachedShaders::Result Result; 303 typedef GetAttachedShaders::Result Result;
304 Result* result = static_cast<Result*>(shared_memory_address_); 304 Result* result = static_cast<Result*>(shared_memory_address_);
305 result->size = 0; 305 result->size = 0;
306 EXPECT_CALL(*gl_, GetAttachedShaders(kServiceProgramId, 1, _, _)).WillOnce( 306 EXPECT_CALL(*gl_, GetAttachedShaders(kServiceProgramId, 1, _, _)).WillOnce(
307 DoAll(SetArgumentPointee<2>(1), SetArgumentPointee<3>(kServiceShaderId))); 307 DoAll(SetArgumentPointee<2>(1), SetArgumentPointee<3>(kServiceShaderId)));
308 cmd.Init(client_program_id_, 308 cmd.Init(client_program_id_,
309 shared_memory_id_, 309 shared_memory_id_,
310 shared_memory_offset_, 310 shared_memory_offset_,
311 Result::ComputeSize(1)); 311 Result::ComputeSize(1));
312 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 312 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
313 EXPECT_EQ(1, result->GetNumResults()); 313 EXPECT_EQ(1, result->GetNumResults());
314 EXPECT_EQ(client_shader_id_, result->GetData()[0]); 314 EXPECT_EQ(client_shader_id_, result->GetData()[0]);
315 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 315 EXPECT_EQ(GL_NO_ERROR, GetGLError());
316 } 316 }
317 317
318 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersResultNotInitFail) { 318 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersResultNotInitFail) {
319 GetAttachedShaders cmd; 319 GetAttachedShaders cmd;
320 typedef GetAttachedShaders::Result Result; 320 typedef GetAttachedShaders::Result Result;
321 Result* result = static_cast<Result*>(shared_memory_address_); 321 Result* result = static_cast<Result*>(shared_memory_address_);
322 result->size = 1; 322 result->size = 1;
323 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0); 323 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0);
324 cmd.Init(client_program_id_, 324 cmd.Init(client_program_id_,
325 shared_memory_id_, 325 shared_memory_id_,
326 shared_memory_offset_, 326 shared_memory_offset_,
327 Result::ComputeSize(1)); 327 Result::ComputeSize(1));
328 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 328 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
329 } 329 }
330 330
331 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersBadProgramFails) { 331 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersBadProgramFails) {
332 GetAttachedShaders cmd; 332 GetAttachedShaders cmd;
333 typedef GetAttachedShaders::Result Result; 333 typedef GetAttachedShaders::Result Result;
334 Result* result = static_cast<Result*>(shared_memory_address_); 334 Result* result = static_cast<Result*>(shared_memory_address_);
335 result->size = 0; 335 result->size = 0;
336 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0); 336 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0);
337 cmd.Init(kInvalidClientId, 337 cmd.Init(kInvalidClientId,
338 shared_memory_id_, 338 shared_memory_id_,
339 shared_memory_offset_, 339 shared_memory_offset_,
340 Result::ComputeSize(1)); 340 Result::ComputeSize(1));
341 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 341 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
342 EXPECT_EQ(0U, result->size); 342 EXPECT_EQ(0U, result->size);
343 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 343 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
344 } 344 }
345 345
346 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersBadSharedMemoryFails) { 346 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersBadSharedMemoryFails) {
347 GetAttachedShaders cmd; 347 GetAttachedShaders cmd;
348 typedef GetAttachedShaders::Result Result; 348 typedef GetAttachedShaders::Result Result;
349 cmd.Init(client_program_id_, 349 cmd.Init(client_program_id_,
350 kInvalidSharedMemoryId, 350 kInvalidSharedMemoryId,
351 shared_memory_offset_, 351 shared_memory_offset_,
352 Result::ComputeSize(1)); 352 Result::ComputeSize(1));
353 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0); 353 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)).Times(0);
354 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 354 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
355 cmd.Init(client_program_id_, 355 cmd.Init(client_program_id_,
356 shared_memory_id_, 356 shared_memory_id_,
357 kInvalidSharedMemoryOffset, 357 kInvalidSharedMemoryOffset,
358 Result::ComputeSize(1)); 358 Result::ComputeSize(1));
359 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 359 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
360 } 360 }
361 361
362 TEST_F(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatSucceeds) { 362 TEST_P(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatSucceeds) {
363 ScopedGLImplementationSetter gl_impl(::gfx::kGLImplementationEGLGLES2); 363 ScopedGLImplementationSetter gl_impl(::gfx::kGLImplementationEGLGLES2);
364 GetShaderPrecisionFormat cmd; 364 GetShaderPrecisionFormat cmd;
365 typedef GetShaderPrecisionFormat::Result Result; 365 typedef GetShaderPrecisionFormat::Result Result;
366 Result* result = static_cast<Result*>(shared_memory_address_); 366 Result* result = static_cast<Result*>(shared_memory_address_);
367 result->success = 0; 367 result->success = 0;
368 const GLint range[2] = {62, 62}; 368 const GLint range[2] = {62, 62};
369 const GLint precision = 16; 369 const GLint precision = 16;
370 EXPECT_CALL(*gl_, GetShaderPrecisionFormat(_, _, _, _)) 370 EXPECT_CALL(*gl_, GetShaderPrecisionFormat(_, _, _, _))
371 .WillOnce(DoAll(SetArrayArgument<2>(range, range + 2), 371 .WillOnce(DoAll(SetArrayArgument<2>(range, range + 2),
372 SetArgumentPointee<3>(precision))) 372 SetArgumentPointee<3>(precision)))
373 .RetiresOnSaturation(); 373 .RetiresOnSaturation();
374 cmd.Init(GL_VERTEX_SHADER, 374 cmd.Init(GL_VERTEX_SHADER,
375 GL_HIGH_FLOAT, 375 GL_HIGH_FLOAT,
376 shared_memory_id_, 376 shared_memory_id_,
377 shared_memory_offset_); 377 shared_memory_offset_);
378 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 378 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
379 EXPECT_NE(0, result->success); 379 EXPECT_NE(0, result->success);
380 EXPECT_EQ(range[0], result->min_range); 380 EXPECT_EQ(range[0], result->min_range);
381 EXPECT_EQ(range[1], result->max_range); 381 EXPECT_EQ(range[1], result->max_range);
382 EXPECT_EQ(precision, result->precision); 382 EXPECT_EQ(precision, result->precision);
383 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 383 EXPECT_EQ(GL_NO_ERROR, GetGLError());
384 } 384 }
385 385
386 TEST_F(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatResultNotInitFails) { 386 TEST_P(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatResultNotInitFails) {
387 GetShaderPrecisionFormat cmd; 387 GetShaderPrecisionFormat cmd;
388 typedef GetShaderPrecisionFormat::Result Result; 388 typedef GetShaderPrecisionFormat::Result Result;
389 Result* result = static_cast<Result*>(shared_memory_address_); 389 Result* result = static_cast<Result*>(shared_memory_address_);
390 result->success = 1; 390 result->success = 1;
391 // NOTE: GL might not be called. There is no Desktop OpenGL equivalent 391 // NOTE: GL might not be called. There is no Desktop OpenGL equivalent
392 cmd.Init(GL_VERTEX_SHADER, 392 cmd.Init(GL_VERTEX_SHADER,
393 GL_HIGH_FLOAT, 393 GL_HIGH_FLOAT,
394 shared_memory_id_, 394 shared_memory_id_,
395 shared_memory_offset_); 395 shared_memory_offset_);
396 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 396 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
397 } 397 }
398 398
399 TEST_F(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatBadArgsFails) { 399 TEST_P(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatBadArgsFails) {
400 typedef GetShaderPrecisionFormat::Result Result; 400 typedef GetShaderPrecisionFormat::Result Result;
401 Result* result = static_cast<Result*>(shared_memory_address_); 401 Result* result = static_cast<Result*>(shared_memory_address_);
402 result->success = 0; 402 result->success = 0;
403 GetShaderPrecisionFormat cmd; 403 GetShaderPrecisionFormat cmd;
404 cmd.Init( 404 cmd.Init(
405 GL_TEXTURE_2D, GL_HIGH_FLOAT, shared_memory_id_, shared_memory_offset_); 405 GL_TEXTURE_2D, GL_HIGH_FLOAT, shared_memory_id_, shared_memory_offset_);
406 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 406 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
407 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 407 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
408 result->success = 0; 408 result->success = 0;
409 cmd.Init(GL_VERTEX_SHADER, 409 cmd.Init(GL_VERTEX_SHADER,
410 GL_TEXTURE_2D, 410 GL_TEXTURE_2D,
411 shared_memory_id_, 411 shared_memory_id_,
412 shared_memory_offset_); 412 shared_memory_offset_);
413 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 413 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
414 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 414 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
415 } 415 }
416 416
417 TEST_F(GLES2DecoderWithShaderTest, 417 TEST_P(GLES2DecoderWithShaderTest,
418 GetShaderPrecisionFormatBadSharedMemoryFails) { 418 GetShaderPrecisionFormatBadSharedMemoryFails) {
419 GetShaderPrecisionFormat cmd; 419 GetShaderPrecisionFormat cmd;
420 cmd.Init(GL_VERTEX_SHADER, 420 cmd.Init(GL_VERTEX_SHADER,
421 GL_HIGH_FLOAT, 421 GL_HIGH_FLOAT,
422 kInvalidSharedMemoryId, 422 kInvalidSharedMemoryId,
423 shared_memory_offset_); 423 shared_memory_offset_);
424 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 424 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
425 cmd.Init(GL_VERTEX_SHADER, 425 cmd.Init(GL_VERTEX_SHADER,
426 GL_TEXTURE_2D, 426 GL_TEXTURE_2D,
427 shared_memory_id_, 427 shared_memory_id_,
428 kInvalidSharedMemoryOffset); 428 kInvalidSharedMemoryOffset);
429 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 429 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
430 } 430 }
431 431
432 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformSucceeds) { 432 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformSucceeds) {
433 const GLuint kUniformIndex = 1; 433 const GLuint kUniformIndex = 1;
434 const uint32 kBucketId = 123; 434 const uint32 kBucketId = 123;
435 GetActiveUniform cmd; 435 GetActiveUniform cmd;
436 typedef GetActiveUniform::Result Result; 436 typedef GetActiveUniform::Result Result;
437 Result* result = static_cast<Result*>(shared_memory_address_); 437 Result* result = static_cast<Result*>(shared_memory_address_);
438 result->success = 0; 438 result->success = 0;
439 cmd.Init(client_program_id_, 439 cmd.Init(client_program_id_,
440 kUniformIndex, 440 kUniformIndex,
441 kBucketId, 441 kBucketId,
442 shared_memory_id_, 442 shared_memory_id_,
443 shared_memory_offset_); 443 shared_memory_offset_);
444 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 444 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
445 EXPECT_NE(0, result->success); 445 EXPECT_NE(0, result->success);
446 EXPECT_EQ(kUniform2Size, result->size); 446 EXPECT_EQ(kUniform2Size, result->size);
447 EXPECT_EQ(kUniform2Type, result->type); 447 EXPECT_EQ(kUniform2Type, result->type);
448 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 448 EXPECT_EQ(GL_NO_ERROR, GetGLError());
449 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 449 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
450 ASSERT_TRUE(bucket != NULL); 450 ASSERT_TRUE(bucket != NULL);
451 EXPECT_EQ( 451 EXPECT_EQ(
452 0, 452 0,
453 memcmp( 453 memcmp(
454 bucket->GetData(0, bucket->size()), kUniform2Name, bucket->size())); 454 bucket->GetData(0, bucket->size()), kUniform2Name, bucket->size()));
455 } 455 }
456 456
457 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformResultNotInitFails) { 457 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformResultNotInitFails) {
458 const GLuint kUniformIndex = 1; 458 const GLuint kUniformIndex = 1;
459 const uint32 kBucketId = 123; 459 const uint32 kBucketId = 123;
460 GetActiveUniform cmd; 460 GetActiveUniform cmd;
461 typedef GetActiveUniform::Result Result; 461 typedef GetActiveUniform::Result Result;
462 Result* result = static_cast<Result*>(shared_memory_address_); 462 Result* result = static_cast<Result*>(shared_memory_address_);
463 result->success = 1; 463 result->success = 1;
464 cmd.Init(client_program_id_, 464 cmd.Init(client_program_id_,
465 kUniformIndex, 465 kUniformIndex,
466 kBucketId, 466 kBucketId,
467 shared_memory_id_, 467 shared_memory_id_,
468 shared_memory_offset_); 468 shared_memory_offset_);
469 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 469 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
470 } 470 }
471 471
472 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformBadProgramFails) { 472 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBadProgramFails) {
473 const GLuint kUniformIndex = 1; 473 const GLuint kUniformIndex = 1;
474 const uint32 kBucketId = 123; 474 const uint32 kBucketId = 123;
475 GetActiveUniform cmd; 475 GetActiveUniform cmd;
476 typedef GetActiveUniform::Result Result; 476 typedef GetActiveUniform::Result Result;
477 Result* result = static_cast<Result*>(shared_memory_address_); 477 Result* result = static_cast<Result*>(shared_memory_address_);
478 result->success = 0; 478 result->success = 0;
479 cmd.Init(kInvalidClientId, 479 cmd.Init(kInvalidClientId,
480 kUniformIndex, 480 kUniformIndex,
481 kBucketId, 481 kBucketId,
482 shared_memory_id_, 482 shared_memory_id_,
483 shared_memory_offset_); 483 shared_memory_offset_);
484 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 484 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
485 EXPECT_EQ(0, result->success); 485 EXPECT_EQ(0, result->success);
486 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 486 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
487 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS 487 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
488 result->success = 0; 488 result->success = 0;
489 cmd.Init(client_shader_id_, 489 cmd.Init(client_shader_id_,
490 kUniformIndex, 490 kUniformIndex,
491 kBucketId, 491 kBucketId,
492 shared_memory_id_, 492 shared_memory_id_,
493 shared_memory_offset_); 493 shared_memory_offset_);
494 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 494 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
495 EXPECT_EQ(0, result->success); 495 EXPECT_EQ(0, result->success);
496 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 496 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
497 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS 497 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS
498 } 498 }
499 499
500 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformBadIndexFails) { 500 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBadIndexFails) {
501 const uint32 kBucketId = 123; 501 const uint32 kBucketId = 123;
502 GetActiveUniform cmd; 502 GetActiveUniform cmd;
503 typedef GetActiveUniform::Result Result; 503 typedef GetActiveUniform::Result Result;
504 Result* result = static_cast<Result*>(shared_memory_address_); 504 Result* result = static_cast<Result*>(shared_memory_address_);
505 result->success = 0; 505 result->success = 0;
506 cmd.Init(client_program_id_, 506 cmd.Init(client_program_id_,
507 kBadUniformIndex, 507 kBadUniformIndex,
508 kBucketId, 508 kBucketId,
509 shared_memory_id_, 509 shared_memory_id_,
510 shared_memory_offset_); 510 shared_memory_offset_);
511 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 511 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
512 EXPECT_EQ(0, result->success); 512 EXPECT_EQ(0, result->success);
513 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 513 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
514 } 514 }
515 515
516 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformBadSharedMemoryFails) { 516 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBadSharedMemoryFails) {
517 const GLuint kUniformIndex = 1; 517 const GLuint kUniformIndex = 1;
518 const uint32 kBucketId = 123; 518 const uint32 kBucketId = 123;
519 GetActiveUniform cmd; 519 GetActiveUniform cmd;
520 cmd.Init(client_program_id_, 520 cmd.Init(client_program_id_,
521 kUniformIndex, 521 kUniformIndex,
522 kBucketId, 522 kBucketId,
523 kInvalidSharedMemoryId, 523 kInvalidSharedMemoryId,
524 shared_memory_offset_); 524 shared_memory_offset_);
525 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 525 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
526 cmd.Init(client_program_id_, 526 cmd.Init(client_program_id_,
527 kUniformIndex, 527 kUniformIndex,
528 kBucketId, 528 kBucketId,
529 shared_memory_id_, 529 shared_memory_id_,
530 kInvalidSharedMemoryOffset); 530 kInvalidSharedMemoryOffset);
531 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 531 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
532 } 532 }
533 533
534 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribSucceeds) { 534 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribSucceeds) {
535 const GLuint kAttribIndex = 1; 535 const GLuint kAttribIndex = 1;
536 const uint32 kBucketId = 123; 536 const uint32 kBucketId = 123;
537 GetActiveAttrib cmd; 537 GetActiveAttrib cmd;
538 typedef GetActiveAttrib::Result Result; 538 typedef GetActiveAttrib::Result Result;
539 Result* result = static_cast<Result*>(shared_memory_address_); 539 Result* result = static_cast<Result*>(shared_memory_address_);
540 result->success = 0; 540 result->success = 0;
541 cmd.Init(client_program_id_, 541 cmd.Init(client_program_id_,
542 kAttribIndex, 542 kAttribIndex,
543 kBucketId, 543 kBucketId,
544 shared_memory_id_, 544 shared_memory_id_,
545 shared_memory_offset_); 545 shared_memory_offset_);
546 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 546 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
547 EXPECT_NE(0, result->success); 547 EXPECT_NE(0, result->success);
548 EXPECT_EQ(kAttrib2Size, result->size); 548 EXPECT_EQ(kAttrib2Size, result->size);
549 EXPECT_EQ(kAttrib2Type, result->type); 549 EXPECT_EQ(kAttrib2Type, result->type);
550 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 550 EXPECT_EQ(GL_NO_ERROR, GetGLError());
551 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 551 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
552 ASSERT_TRUE(bucket != NULL); 552 ASSERT_TRUE(bucket != NULL);
553 EXPECT_EQ( 553 EXPECT_EQ(
554 0, 554 0,
555 memcmp(bucket->GetData(0, bucket->size()), kAttrib2Name, bucket->size())); 555 memcmp(bucket->GetData(0, bucket->size()), kAttrib2Name, bucket->size()));
556 } 556 }
557 557
558 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribResultNotInitFails) { 558 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribResultNotInitFails) {
559 const GLuint kAttribIndex = 1; 559 const GLuint kAttribIndex = 1;
560 const uint32 kBucketId = 123; 560 const uint32 kBucketId = 123;
561 GetActiveAttrib cmd; 561 GetActiveAttrib cmd;
562 typedef GetActiveAttrib::Result Result; 562 typedef GetActiveAttrib::Result Result;
563 Result* result = static_cast<Result*>(shared_memory_address_); 563 Result* result = static_cast<Result*>(shared_memory_address_);
564 result->success = 1; 564 result->success = 1;
565 cmd.Init(client_program_id_, 565 cmd.Init(client_program_id_,
566 kAttribIndex, 566 kAttribIndex,
567 kBucketId, 567 kBucketId,
568 shared_memory_id_, 568 shared_memory_id_,
569 shared_memory_offset_); 569 shared_memory_offset_);
570 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 570 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
571 } 571 }
572 572
573 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribBadProgramFails) { 573 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribBadProgramFails) {
574 const GLuint kAttribIndex = 1; 574 const GLuint kAttribIndex = 1;
575 const uint32 kBucketId = 123; 575 const uint32 kBucketId = 123;
576 GetActiveAttrib cmd; 576 GetActiveAttrib cmd;
577 typedef GetActiveAttrib::Result Result; 577 typedef GetActiveAttrib::Result Result;
578 Result* result = static_cast<Result*>(shared_memory_address_); 578 Result* result = static_cast<Result*>(shared_memory_address_);
579 result->success = 0; 579 result->success = 0;
580 cmd.Init(kInvalidClientId, 580 cmd.Init(kInvalidClientId,
581 kAttribIndex, 581 kAttribIndex,
582 kBucketId, 582 kBucketId,
583 shared_memory_id_, 583 shared_memory_id_,
584 shared_memory_offset_); 584 shared_memory_offset_);
585 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 585 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
586 EXPECT_EQ(0, result->success); 586 EXPECT_EQ(0, result->success);
587 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 587 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
588 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS 588 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
589 result->success = 0; 589 result->success = 0;
590 cmd.Init(client_shader_id_, 590 cmd.Init(client_shader_id_,
591 kAttribIndex, 591 kAttribIndex,
592 kBucketId, 592 kBucketId,
593 shared_memory_id_, 593 shared_memory_id_,
594 shared_memory_offset_); 594 shared_memory_offset_);
595 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 595 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
596 EXPECT_EQ(0, result->success); 596 EXPECT_EQ(0, result->success);
597 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 597 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
598 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS 598 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS
599 } 599 }
600 600
601 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribBadIndexFails) { 601 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribBadIndexFails) {
602 const uint32 kBucketId = 123; 602 const uint32 kBucketId = 123;
603 GetActiveAttrib cmd; 603 GetActiveAttrib cmd;
604 typedef GetActiveAttrib::Result Result; 604 typedef GetActiveAttrib::Result Result;
605 Result* result = static_cast<Result*>(shared_memory_address_); 605 Result* result = static_cast<Result*>(shared_memory_address_);
606 result->success = 0; 606 result->success = 0;
607 cmd.Init(client_program_id_, 607 cmd.Init(client_program_id_,
608 kBadAttribIndex, 608 kBadAttribIndex,
609 kBucketId, 609 kBucketId,
610 shared_memory_id_, 610 shared_memory_id_,
611 shared_memory_offset_); 611 shared_memory_offset_);
612 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 612 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
613 EXPECT_EQ(0, result->success); 613 EXPECT_EQ(0, result->success);
614 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 614 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
615 } 615 }
616 616
617 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribBadSharedMemoryFails) { 617 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribBadSharedMemoryFails) {
618 const GLuint kAttribIndex = 1; 618 const GLuint kAttribIndex = 1;
619 const uint32 kBucketId = 123; 619 const uint32 kBucketId = 123;
620 GetActiveAttrib cmd; 620 GetActiveAttrib cmd;
621 cmd.Init(client_program_id_, 621 cmd.Init(client_program_id_,
622 kAttribIndex, 622 kAttribIndex,
623 kBucketId, 623 kBucketId,
624 kInvalidSharedMemoryId, 624 kInvalidSharedMemoryId,
625 shared_memory_offset_); 625 shared_memory_offset_);
626 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 626 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
627 cmd.Init(client_program_id_, 627 cmd.Init(client_program_id_,
628 kAttribIndex, 628 kAttribIndex,
629 kBucketId, 629 kBucketId,
630 shared_memory_id_, 630 shared_memory_id_,
631 kInvalidSharedMemoryOffset); 631 kInvalidSharedMemoryOffset);
632 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 632 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
633 } 633 }
634 634
635 TEST_F(GLES2DecoderWithShaderTest, GetShaderInfoLogValidArgs) { 635 TEST_P(GLES2DecoderWithShaderTest, GetShaderInfoLogValidArgs) {
636 const char* kInfo = "hello"; 636 const char* kInfo = "hello";
637 const uint32 kBucketId = 123; 637 const uint32 kBucketId = 123;
638 CompileShader compile_cmd; 638 CompileShader compile_cmd;
639 GetShaderInfoLog cmd; 639 GetShaderInfoLog cmd;
640 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _)); 640 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _));
641 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId)); 641 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId));
642 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _)) 642 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _))
643 .WillOnce(SetArgumentPointee<2>(GL_FALSE)) 643 .WillOnce(SetArgumentPointee<2>(GL_FALSE))
644 .RetiresOnSaturation(); 644 .RetiresOnSaturation();
645 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_INFO_LOG_LENGTH, _)) 645 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_INFO_LOG_LENGTH, _))
646 .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1)) 646 .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1))
647 .RetiresOnSaturation(); 647 .RetiresOnSaturation();
648 EXPECT_CALL(*gl_, GetShaderInfoLog(kServiceShaderId, strlen(kInfo) + 1, _, _)) 648 EXPECT_CALL(*gl_, GetShaderInfoLog(kServiceShaderId, strlen(kInfo) + 1, _, _))
649 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)), 649 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)),
650 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1))); 650 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1)));
651 compile_cmd.Init(client_shader_id_); 651 compile_cmd.Init(client_shader_id_);
652 cmd.Init(client_shader_id_, kBucketId); 652 cmd.Init(client_shader_id_, kBucketId);
653 EXPECT_EQ(error::kNoError, ExecuteCmd(compile_cmd)); 653 EXPECT_EQ(error::kNoError, ExecuteCmd(compile_cmd));
654 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 654 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
655 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 655 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
656 ASSERT_TRUE(bucket != NULL); 656 ASSERT_TRUE(bucket != NULL);
657 EXPECT_EQ(strlen(kInfo) + 1, bucket->size()); 657 EXPECT_EQ(strlen(kInfo) + 1, bucket->size());
658 EXPECT_EQ(0, 658 EXPECT_EQ(0,
659 memcmp(bucket->GetData(0, bucket->size()), kInfo, bucket->size())); 659 memcmp(bucket->GetData(0, bucket->size()), kInfo, bucket->size()));
660 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 660 EXPECT_EQ(GL_NO_ERROR, GetGLError());
661 } 661 }
662 662
663 TEST_F(GLES2DecoderWithShaderTest, GetShaderInfoLogInvalidArgs) { 663 TEST_P(GLES2DecoderWithShaderTest, GetShaderInfoLogInvalidArgs) {
664 const uint32 kBucketId = 123; 664 const uint32 kBucketId = 123;
665 GetShaderInfoLog cmd; 665 GetShaderInfoLog cmd;
666 cmd.Init(kInvalidClientId, kBucketId); 666 cmd.Init(kInvalidClientId, kBucketId);
667 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 667 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
668 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 668 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
669 } 669 }
670 670
671 TEST_F(GLES2DecoderTest, CompileShaderValidArgs) { 671 TEST_P(GLES2DecoderTest, CompileShaderValidArgs) {
672 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _)); 672 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _));
673 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId)); 673 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId));
674 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _)) 674 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _))
675 .WillOnce(SetArgumentPointee<2>(GL_TRUE)) 675 .WillOnce(SetArgumentPointee<2>(GL_TRUE))
676 .RetiresOnSaturation(); 676 .RetiresOnSaturation();
677 CompileShader cmd; 677 CompileShader cmd;
678 cmd.Init(client_shader_id_); 678 cmd.Init(client_shader_id_);
679 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 679 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
680 } 680 }
681 681
682 TEST_F(GLES2DecoderTest, CompileShaderInvalidArgs) { 682 TEST_P(GLES2DecoderTest, CompileShaderInvalidArgs) {
683 CompileShader cmd; 683 CompileShader cmd;
684 cmd.Init(kInvalidClientId); 684 cmd.Init(kInvalidClientId);
685 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 685 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
686 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 686 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
687 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS 687 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
688 cmd.Init(client_program_id_); 688 cmd.Init(client_program_id_);
689 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 689 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
690 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 690 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
691 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS 691 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS
692 } 692 }
693 693
694 TEST_F(GLES2DecoderTest, ShaderSourceAndGetShaderSourceValidArgs) { 694 TEST_P(GLES2DecoderTest, ShaderSourceAndGetShaderSourceValidArgs) {
695 const uint32 kBucketId = 123; 695 const uint32 kBucketId = 123;
696 const char kSource[] = "hello"; 696 const char kSource[] = "hello";
697 const uint32 kSourceSize = sizeof(kSource) - 1; 697 const uint32 kSourceSize = sizeof(kSource) - 1;
698 memcpy(shared_memory_address_, kSource, kSourceSize); 698 memcpy(shared_memory_address_, kSource, kSourceSize);
699 ShaderSource cmd; 699 ShaderSource cmd;
700 cmd.Init( 700 cmd.Init(
701 client_shader_id_, kSharedMemoryId, kSharedMemoryOffset, kSourceSize); 701 client_shader_id_, kSharedMemoryId, kSharedMemoryOffset, kSourceSize);
702 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 702 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
703 memset(shared_memory_address_, 0, kSourceSize); 703 memset(shared_memory_address_, 0, kSourceSize);
704 GetShaderSource get_cmd; 704 GetShaderSource get_cmd;
705 get_cmd.Init(client_shader_id_, kBucketId); 705 get_cmd.Init(client_shader_id_, kBucketId);
706 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd)); 706 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd));
707 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); 707 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId);
708 ASSERT_TRUE(bucket != NULL); 708 ASSERT_TRUE(bucket != NULL);
709 EXPECT_EQ(kSourceSize + 1, bucket->size()); 709 EXPECT_EQ(kSourceSize + 1, bucket->size());
710 EXPECT_EQ( 710 EXPECT_EQ(
711 0, memcmp(bucket->GetData(0, bucket->size()), kSource, bucket->size())); 711 0, memcmp(bucket->GetData(0, bucket->size()), kSource, bucket->size()));
712 } 712 }
713 713
714 TEST_F(GLES2DecoderTest, ShaderSourceInvalidArgs) { 714 TEST_P(GLES2DecoderTest, ShaderSourceInvalidArgs) {
715 const char kSource[] = "hello"; 715 const char kSource[] = "hello";
716 const uint32 kSourceSize = sizeof(kSource) - 1; 716 const uint32 kSourceSize = sizeof(kSource) - 1;
717 memcpy(shared_memory_address_, kSource, kSourceSize); 717 memcpy(shared_memory_address_, kSource, kSourceSize);
718 ShaderSource cmd; 718 ShaderSource cmd;
719 cmd.Init(kInvalidClientId, kSharedMemoryId, kSharedMemoryOffset, kSourceSize); 719 cmd.Init(kInvalidClientId, kSharedMemoryId, kSharedMemoryOffset, kSourceSize);
720 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 720 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
721 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 721 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
722 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS 722 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
723 cmd.Init( 723 cmd.Init(
724 client_program_id_, kSharedMemoryId, kSharedMemoryOffset, kSourceSize); 724 client_program_id_, kSharedMemoryId, kSharedMemoryOffset, kSourceSize);
(...skipping 10 matching lines...) Expand all
735 kInvalidSharedMemoryOffset, 735 kInvalidSharedMemoryOffset,
736 kSourceSize); 736 kSourceSize);
737 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 737 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
738 cmd.Init(client_shader_id_, 738 cmd.Init(client_shader_id_,
739 kSharedMemoryId, 739 kSharedMemoryId,
740 kSharedMemoryOffset, 740 kSharedMemoryOffset,
741 kSharedBufferSize); 741 kSharedBufferSize);
742 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 742 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
743 } 743 }
744 744
745 TEST_F(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) { 745 TEST_P(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) {
746 const uint32 kInBucketId = 123; 746 const uint32 kInBucketId = 123;
747 const uint32 kOutBucketId = 125; 747 const uint32 kOutBucketId = 125;
748 const char kSource[] = "hello"; 748 const char kSource[] = "hello";
749 const uint32 kSourceSize = sizeof(kSource) - 1; 749 const uint32 kSourceSize = sizeof(kSource) - 1;
750 SetBucketAsCString(kInBucketId, kSource); 750 SetBucketAsCString(kInBucketId, kSource);
751 ShaderSourceBucket cmd; 751 ShaderSourceBucket cmd;
752 cmd.Init(client_shader_id_, kInBucketId); 752 cmd.Init(client_shader_id_, kInBucketId);
753 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 753 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
754 ClearSharedMemory(); 754 ClearSharedMemory();
755 GetShaderSource get_cmd; 755 GetShaderSource get_cmd;
756 get_cmd.Init(client_shader_id_, kOutBucketId); 756 get_cmd.Init(client_shader_id_, kOutBucketId);
757 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd)); 757 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd));
758 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kOutBucketId); 758 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kOutBucketId);
759 ASSERT_TRUE(bucket != NULL); 759 ASSERT_TRUE(bucket != NULL);
760 EXPECT_EQ(kSourceSize + 1, bucket->size()); 760 EXPECT_EQ(kSourceSize + 1, bucket->size());
761 EXPECT_EQ( 761 EXPECT_EQ(
762 0, memcmp(bucket->GetData(0, bucket->size()), kSource, bucket->size())); 762 0, memcmp(bucket->GetData(0, bucket->size()), kSource, bucket->size()));
763 } 763 }
764 764
765 TEST_F(GLES2DecoderTest, ShaderSourceBucketInvalidArgs) { 765 TEST_P(GLES2DecoderTest, ShaderSourceBucketInvalidArgs) {
766 const uint32 kBucketId = 123; 766 const uint32 kBucketId = 123;
767 const char kSource[] = "hello"; 767 const char kSource[] = "hello";
768 const uint32 kSourceSize = sizeof(kSource) - 1; 768 const uint32 kSourceSize = sizeof(kSource) - 1;
769 memcpy(shared_memory_address_, kSource, kSourceSize); 769 memcpy(shared_memory_address_, kSource, kSourceSize);
770 ShaderSourceBucket cmd; 770 ShaderSourceBucket cmd;
771 // Test no bucket. 771 // Test no bucket.
772 cmd.Init(client_texture_id_, kBucketId); 772 cmd.Init(client_texture_id_, kBucketId);
773 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 773 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
774 // Test invalid client. 774 // Test invalid client.
775 SetBucketAsCString(kBucketId, kSource); 775 SetBucketAsCString(kBucketId, kSource);
776 cmd.Init(kInvalidClientId, kBucketId); 776 cmd.Init(kInvalidClientId, kBucketId);
777 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 777 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
778 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 778 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
779 } 779 }
780 780
781 TEST_F(GLES2DecoderTest, ShaderSourceStripComments) { 781 TEST_P(GLES2DecoderTest, ShaderSourceStripComments) {
782 const uint32 kInBucketId = 123; 782 const uint32 kInBucketId = 123;
783 const char kSource[] = "hello/*te\ast*/world//a\ab"; 783 const char kSource[] = "hello/*te\ast*/world//a\ab";
784 SetBucketAsCString(kInBucketId, kSource); 784 SetBucketAsCString(kInBucketId, kSource);
785 ShaderSourceBucket cmd; 785 ShaderSourceBucket cmd;
786 cmd.Init(client_shader_id_, kInBucketId); 786 cmd.Init(client_shader_id_, kInBucketId);
787 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 787 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
788 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 788 EXPECT_EQ(GL_NO_ERROR, GetGLError());
789 } 789 }
790 790
791 TEST_F(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { 791 TEST_P(GLES2DecoderWithShaderTest, Uniform1iValidArgs) {
792 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); 792 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2));
793 Uniform1i cmd; 793 Uniform1i cmd;
794 cmd.Init(kUniform1FakeLocation, 2); 794 cmd.Init(kUniform1FakeLocation, 2);
795 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 795 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
796 } 796 }
797 797
798 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) { 798 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) {
799 EXPECT_CALL( 799 EXPECT_CALL(
800 *gl_, 800 *gl_,
801 Uniform1iv(kUniform1RealLocation, 801 Uniform1iv(kUniform1RealLocation,
802 1, 802 1,
803 reinterpret_cast<const GLint*>(shared_memory_address_))); 803 reinterpret_cast<const GLint*>(shared_memory_address_)));
804 Uniform1iv cmd; 804 Uniform1iv cmd;
805 cmd.Init(kUniform1FakeLocation, 1, shared_memory_id_, shared_memory_offset_); 805 cmd.Init(kUniform1FakeLocation, 1, shared_memory_id_, shared_memory_offset_);
806 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 806 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
807 } 807 }
808 808
809 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) { 809 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) {
810 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); 810 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0);
811 Uniform1iv cmd; 811 Uniform1iv cmd;
812 cmd.Init(kUniform1FakeLocation, 1, kInvalidSharedMemoryId, 0); 812 cmd.Init(kUniform1FakeLocation, 1, kInvalidSharedMemoryId, 0);
813 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 813 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
814 } 814 }
815 815
816 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_1) { 816 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_1) {
817 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); 817 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0);
818 Uniform1iv cmd; 818 Uniform1iv cmd;
819 cmd.Init( 819 cmd.Init(
820 kUniform1FakeLocation, 1, shared_memory_id_, kInvalidSharedMemoryOffset); 820 kUniform1FakeLocation, 1, shared_memory_id_, kInvalidSharedMemoryOffset);
821 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); 821 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
822 } 822 }
823 823
824 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { 824 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) {
825 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); 825 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>();
826 EXPECT_CALL(*gl_, 826 EXPECT_CALL(*gl_,
827 Uniform1iv(kUniform1RealLocation, 827 Uniform1iv(kUniform1RealLocation,
828 1, 828 1,
829 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); 829 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
830 GLint temp[1 * 2] = { 830 GLint temp[1 * 2] = {
831 0, 831 0,
832 }; 832 };
833 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); 833 cmd.Init(kUniform1FakeLocation, 1, &temp[0]);
834 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 834 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
835 } 835 }
836 836
837 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidValidArgs) { 837 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivInvalidValidArgs) {
838 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); 838 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0);
839 Uniform1iv cmd; 839 Uniform1iv cmd;
840 cmd.Init(kUniform1FakeLocation, 2, shared_memory_id_, shared_memory_offset_); 840 cmd.Init(kUniform1FakeLocation, 2, shared_memory_id_, shared_memory_offset_);
841 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 841 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
842 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 842 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
843 } 843 }
844 844
845 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivZeroCount) { 845 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivZeroCount) {
846 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); 846 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0);
847 Uniform1iv cmd; 847 Uniform1iv cmd;
848 cmd.Init(kUniform1FakeLocation, 0, shared_memory_id_, shared_memory_offset_); 848 cmd.Init(kUniform1FakeLocation, 0, shared_memory_id_, shared_memory_offset_);
849 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 849 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
850 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 850 EXPECT_EQ(GL_NO_ERROR, GetGLError());
851 } 851 }
852 852
853 TEST_F(GLES2DecoderWithShaderTest, Uniform1iSamplerIsLmited) { 853 TEST_P(GLES2DecoderWithShaderTest, Uniform1iSamplerIsLmited) {
854 EXPECT_CALL(*gl_, Uniform1i(_, _)).Times(0); 854 EXPECT_CALL(*gl_, Uniform1i(_, _)).Times(0);
855 Uniform1i cmd; 855 Uniform1i cmd;
856 cmd.Init(kUniform1FakeLocation, kNumTextureUnits); 856 cmd.Init(kUniform1FakeLocation, kNumTextureUnits);
857 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 857 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
858 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 858 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
859 } 859 }
860 860
861 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivSamplerIsLimited) { 861 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivSamplerIsLimited) {
862 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); 862 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0);
863 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); 863 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>();
864 GLint temp[] = {kNumTextureUnits}; 864 GLint temp[] = {kNumTextureUnits};
865 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); 865 cmd.Init(kUniform1FakeLocation, 1, &temp[0]);
866 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 866 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
867 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 867 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
868 } 868 }
869 869
870 TEST_F(GLES2DecoderTest, BindAttribLocation) { 870 TEST_P(GLES2DecoderTest, BindAttribLocation) {
871 const GLint kLocation = 2; 871 const GLint kLocation = 2;
872 const char* kName = "testing"; 872 const char* kName = "testing";
873 const uint32 kNameSize = strlen(kName); 873 const uint32 kNameSize = strlen(kName);
874 EXPECT_CALL(*gl_, 874 EXPECT_CALL(*gl_,
875 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) 875 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName)))
876 .Times(1); 876 .Times(1);
877 memcpy(shared_memory_address_, kName, kNameSize); 877 memcpy(shared_memory_address_, kName, kNameSize);
878 BindAttribLocation cmd; 878 BindAttribLocation cmd;
879 cmd.Init(client_program_id_, 879 cmd.Init(client_program_id_,
880 kLocation, 880 kLocation,
881 kSharedMemoryId, 881 kSharedMemoryId,
882 kSharedMemoryOffset, 882 kSharedMemoryOffset,
883 kNameSize); 883 kNameSize);
884 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 884 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
885 } 885 }
886 886
887 TEST_F(GLES2DecoderTest, BindAttribLocationInvalidArgs) { 887 TEST_P(GLES2DecoderTest, BindAttribLocationInvalidArgs) {
888 const GLint kLocation = 2; 888 const GLint kLocation = 2;
889 const char* kName = "testing"; 889 const char* kName = "testing";
890 const char* kBadName = "test\aing"; 890 const char* kBadName = "test\aing";
891 const uint32 kNameSize = strlen(kName); 891 const uint32 kNameSize = strlen(kName);
892 const uint32 kBadNameSize = strlen(kBadName); 892 const uint32 kBadNameSize = strlen(kBadName);
893 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0); 893 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0);
894 memcpy(shared_memory_address_, kName, kNameSize); 894 memcpy(shared_memory_address_, kName, kNameSize);
895 BindAttribLocation cmd; 895 BindAttribLocation cmd;
896 cmd.Init(kInvalidClientId, 896 cmd.Init(kInvalidClientId,
897 kLocation, 897 kLocation,
(...skipping 23 matching lines...) Expand all
921 memcpy(shared_memory_address_, kBadName, kBadNameSize); 921 memcpy(shared_memory_address_, kBadName, kBadNameSize);
922 cmd.Init(client_program_id_, 922 cmd.Init(client_program_id_,
923 kLocation, 923 kLocation,
924 kSharedMemoryId, 924 kSharedMemoryId,
925 kSharedMemoryOffset, 925 kSharedMemoryOffset,
926 kBadNameSize); 926 kBadNameSize);
927 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 927 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
928 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 928 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
929 } 929 }
930 930
931 TEST_F(GLES2DecoderTest, BindAttribLocationBucket) { 931 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) {
932 const uint32 kBucketId = 123; 932 const uint32 kBucketId = 123;
933 const GLint kLocation = 2; 933 const GLint kLocation = 2;
934 const char* kName = "testing"; 934 const char* kName = "testing";
935 EXPECT_CALL(*gl_, 935 EXPECT_CALL(*gl_,
936 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) 936 BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName)))
937 .Times(1); 937 .Times(1);
938 SetBucketAsCString(kBucketId, kName); 938 SetBucketAsCString(kBucketId, kName);
939 BindAttribLocationBucket cmd; 939 BindAttribLocationBucket cmd;
940 cmd.Init(client_program_id_, kLocation, kBucketId); 940 cmd.Init(client_program_id_, kLocation, kBucketId);
941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
942 } 942 }
943 943
944 TEST_F(GLES2DecoderTest, BindAttribLocationBucketInvalidArgs) { 944 TEST_P(GLES2DecoderTest, BindAttribLocationBucketInvalidArgs) {
945 const uint32 kBucketId = 123; 945 const uint32 kBucketId = 123;
946 const GLint kLocation = 2; 946 const GLint kLocation = 2;
947 const char* kName = "testing"; 947 const char* kName = "testing";
948 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0); 948 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0);
949 BindAttribLocationBucket cmd; 949 BindAttribLocationBucket cmd;
950 // check bucket does not exist. 950 // check bucket does not exist.
951 cmd.Init(client_program_id_, kLocation, kBucketId); 951 cmd.Init(client_program_id_, kLocation, kBucketId);
952 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 952 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
953 // check bucket is empty. 953 // check bucket is empty.
954 SetBucketAsCString(kBucketId, NULL); 954 SetBucketAsCString(kBucketId, NULL);
955 cmd.Init(client_program_id_, kLocation, kBucketId); 955 cmd.Init(client_program_id_, kLocation, kBucketId);
956 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 956 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
957 // Check bad program id 957 // Check bad program id
958 SetBucketAsCString(kBucketId, kName); 958 SetBucketAsCString(kBucketId, kName);
959 cmd.Init(kInvalidClientId, kLocation, kBucketId); 959 cmd.Init(kInvalidClientId, kLocation, kBucketId);
960 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 960 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
961 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 961 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
962 } 962 }
963 963
964 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocation) { 964 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocation) {
965 const uint32 kNameSize = strlen(kAttrib2Name); 965 const uint32 kNameSize = strlen(kAttrib2Name);
966 const char* kNonExistentName = "foobar"; 966 const char* kNonExistentName = "foobar";
967 const uint32 kNonExistentNameSize = strlen(kNonExistentName); 967 const uint32 kNonExistentNameSize = strlen(kNonExistentName);
968 typedef GetAttribLocation::Result Result; 968 typedef GetAttribLocation::Result Result;
969 Result* result = GetSharedMemoryAs<Result*>(); 969 Result* result = GetSharedMemoryAs<Result*>();
970 *result = -1; 970 *result = -1;
971 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); 971 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result));
972 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); 972 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result);
973 memcpy(name, kAttrib2Name, kNameSize); 973 memcpy(name, kAttrib2Name, kNameSize);
974 GetAttribLocation cmd; 974 GetAttribLocation cmd;
(...skipping 10 matching lines...) Expand all
985 cmd.Init(client_program_id_, 985 cmd.Init(client_program_id_,
986 kSharedMemoryId, 986 kSharedMemoryId,
987 kNameOffset, 987 kNameOffset,
988 kSharedMemoryId, 988 kSharedMemoryId,
989 kSharedMemoryOffset, 989 kSharedMemoryOffset,
990 kNonExistentNameSize); 990 kNonExistentNameSize);
991 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 991 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
992 EXPECT_EQ(-1, *result); 992 EXPECT_EQ(-1, *result);
993 } 993 }
994 994
995 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocationInvalidArgs) { 995 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationInvalidArgs) {
996 const uint32 kNameSize = strlen(kAttrib2Name); 996 const uint32 kNameSize = strlen(kAttrib2Name);
997 const char* kBadName = "foo\abar"; 997 const char* kBadName = "foo\abar";
998 const uint32 kBadNameSize = strlen(kBadName); 998 const uint32 kBadNameSize = strlen(kBadName);
999 typedef GetAttribLocation::Result Result; 999 typedef GetAttribLocation::Result Result;
1000 Result* result = GetSharedMemoryAs<Result*>(); 1000 Result* result = GetSharedMemoryAs<Result*>();
1001 *result = -1; 1001 *result = -1;
1002 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); 1002 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result));
1003 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); 1003 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result);
1004 memcpy(name, kAttrib2Name, kNameSize); 1004 memcpy(name, kAttrib2Name, kNameSize);
1005 GetAttribLocation cmd; 1005 GetAttribLocation cmd;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1057 cmd.Init(client_program_id_, 1057 cmd.Init(client_program_id_,
1058 kSharedMemoryId, 1058 kSharedMemoryId,
1059 kNameOffset, 1059 kNameOffset,
1060 kSharedMemoryId, 1060 kSharedMemoryId,
1061 kSharedMemoryOffset, 1061 kSharedMemoryOffset,
1062 kBadNameSize); 1062 kBadNameSize);
1063 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1063 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1064 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1064 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1065 } 1065 }
1066 1066
1067 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocationBucket) { 1067 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationBucket) {
1068 const uint32 kBucketId = 123; 1068 const uint32 kBucketId = 123;
1069 const char* kNonExistentName = "foobar"; 1069 const char* kNonExistentName = "foobar";
1070 typedef GetAttribLocationBucket::Result Result; 1070 typedef GetAttribLocationBucket::Result Result;
1071 Result* result = GetSharedMemoryAs<Result*>(); 1071 Result* result = GetSharedMemoryAs<Result*>();
1072 SetBucketAsCString(kBucketId, kAttrib2Name); 1072 SetBucketAsCString(kBucketId, kAttrib2Name);
1073 *result = -1; 1073 *result = -1;
1074 GetAttribLocationBucket cmd; 1074 GetAttribLocationBucket cmd;
1075 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 1075 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1076 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1076 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1077 EXPECT_EQ(kAttrib2Location, *result); 1077 EXPECT_EQ(kAttrib2Location, *result);
1078 SetBucketAsCString(kBucketId, kNonExistentName); 1078 SetBucketAsCString(kBucketId, kNonExistentName);
1079 *result = -1; 1079 *result = -1;
1080 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 1080 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1081 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1081 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1082 EXPECT_EQ(-1, *result); 1082 EXPECT_EQ(-1, *result);
1083 } 1083 }
1084 1084
1085 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocationBucketInvalidArgs) { 1085 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationBucketInvalidArgs) {
1086 const uint32 kBucketId = 123; 1086 const uint32 kBucketId = 123;
1087 typedef GetAttribLocationBucket::Result Result; 1087 typedef GetAttribLocationBucket::Result Result;
1088 Result* result = GetSharedMemoryAs<Result*>(); 1088 Result* result = GetSharedMemoryAs<Result*>();
1089 *result = -1; 1089 *result = -1;
1090 GetAttribLocationBucket cmd; 1090 GetAttribLocationBucket cmd;
1091 // Check no bucket 1091 // Check no bucket
1092 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 1092 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1093 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1093 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1094 EXPECT_EQ(-1, *result); 1094 EXPECT_EQ(-1, *result);
1095 // Check bad program id. 1095 // Check bad program id.
1096 SetBucketAsCString(kBucketId, kAttrib2Name); 1096 SetBucketAsCString(kBucketId, kAttrib2Name);
1097 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 1097 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1098 *result = -1; 1098 *result = -1;
1099 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1099 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1100 EXPECT_EQ(-1, *result); 1100 EXPECT_EQ(-1, *result);
1101 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1101 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1102 // Check bad memory 1102 // Check bad memory
1103 cmd.Init(client_program_id_, 1103 cmd.Init(client_program_id_,
1104 kBucketId, 1104 kBucketId,
1105 kInvalidSharedMemoryId, 1105 kInvalidSharedMemoryId,
1106 kSharedMemoryOffset); 1106 kSharedMemoryOffset);
1107 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1107 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1108 cmd.Init(client_program_id_, 1108 cmd.Init(client_program_id_,
1109 kBucketId, 1109 kBucketId,
1110 kSharedMemoryId, 1110 kSharedMemoryId,
1111 kInvalidSharedMemoryOffset); 1111 kInvalidSharedMemoryOffset);
1112 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1112 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1113 } 1113 }
1114 1114
1115 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocation) { 1115 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocation) {
1116 const uint32 kNameSize = strlen(kUniform2Name); 1116 const uint32 kNameSize = strlen(kUniform2Name);
1117 const char* kNonExistentName = "foobar"; 1117 const char* kNonExistentName = "foobar";
1118 const uint32 kNonExistentNameSize = strlen(kNonExistentName); 1118 const uint32 kNonExistentNameSize = strlen(kNonExistentName);
1119 typedef GetUniformLocation::Result Result; 1119 typedef GetUniformLocation::Result Result;
1120 Result* result = GetSharedMemoryAs<Result*>(); 1120 Result* result = GetSharedMemoryAs<Result*>();
1121 *result = -1; 1121 *result = -1;
1122 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); 1122 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result));
1123 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); 1123 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result);
1124 memcpy(name, kUniform2Name, kNameSize); 1124 memcpy(name, kUniform2Name, kNameSize);
1125 GetUniformLocation cmd; 1125 GetUniformLocation cmd;
(...skipping 10 matching lines...) Expand all
1136 cmd.Init(client_program_id_, 1136 cmd.Init(client_program_id_,
1137 kSharedMemoryId, 1137 kSharedMemoryId,
1138 kNameOffset, 1138 kNameOffset,
1139 kSharedMemoryId, 1139 kSharedMemoryId,
1140 kSharedMemoryOffset, 1140 kSharedMemoryOffset,
1141 kNonExistentNameSize); 1141 kNonExistentNameSize);
1142 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1142 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1143 EXPECT_EQ(-1, *result); 1143 EXPECT_EQ(-1, *result);
1144 } 1144 }
1145 1145
1146 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationInvalidArgs) { 1146 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationInvalidArgs) {
1147 const uint32 kNameSize = strlen(kUniform2Name); 1147 const uint32 kNameSize = strlen(kUniform2Name);
1148 const char* kBadName = "foo\abar"; 1148 const char* kBadName = "foo\abar";
1149 const uint32 kBadNameSize = strlen(kBadName); 1149 const uint32 kBadNameSize = strlen(kBadName);
1150 typedef GetUniformLocation::Result Result; 1150 typedef GetUniformLocation::Result Result;
1151 Result* result = GetSharedMemoryAs<Result*>(); 1151 Result* result = GetSharedMemoryAs<Result*>();
1152 *result = -1; 1152 *result = -1;
1153 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); 1153 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result));
1154 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); 1154 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result);
1155 memcpy(name, kUniform2Name, kNameSize); 1155 memcpy(name, kUniform2Name, kNameSize);
1156 GetUniformLocation cmd; 1156 GetUniformLocation cmd;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 cmd.Init(client_program_id_, 1208 cmd.Init(client_program_id_,
1209 kSharedMemoryId, 1209 kSharedMemoryId,
1210 kNameOffset, 1210 kNameOffset,
1211 kSharedMemoryId, 1211 kSharedMemoryId,
1212 kSharedMemoryOffset, 1212 kSharedMemoryOffset,
1213 kBadNameSize); 1213 kBadNameSize);
1214 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1214 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1215 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1215 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1216 } 1216 }
1217 1217
1218 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationBucket) { 1218 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationBucket) {
1219 const uint32 kBucketId = 123; 1219 const uint32 kBucketId = 123;
1220 const char* kNonExistentName = "foobar"; 1220 const char* kNonExistentName = "foobar";
1221 typedef GetUniformLocationBucket::Result Result; 1221 typedef GetUniformLocationBucket::Result Result;
1222 Result* result = GetSharedMemoryAs<Result*>(); 1222 Result* result = GetSharedMemoryAs<Result*>();
1223 SetBucketAsCString(kBucketId, kUniform2Name); 1223 SetBucketAsCString(kBucketId, kUniform2Name);
1224 *result = -1; 1224 *result = -1;
1225 GetUniformLocationBucket cmd; 1225 GetUniformLocationBucket cmd;
1226 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 1226 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1228 EXPECT_EQ(kUniform2FakeLocation, *result); 1228 EXPECT_EQ(kUniform2FakeLocation, *result);
1229 SetBucketAsCString(kBucketId, kNonExistentName); 1229 SetBucketAsCString(kBucketId, kNonExistentName);
1230 *result = -1; 1230 *result = -1;
1231 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 1231 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1232 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1232 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1233 EXPECT_EQ(-1, *result); 1233 EXPECT_EQ(-1, *result);
1234 } 1234 }
1235 1235
1236 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationBucketInvalidArgs) { 1236 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationBucketInvalidArgs) {
1237 const uint32 kBucketId = 123; 1237 const uint32 kBucketId = 123;
1238 typedef GetUniformLocationBucket::Result Result; 1238 typedef GetUniformLocationBucket::Result Result;
1239 Result* result = GetSharedMemoryAs<Result*>(); 1239 Result* result = GetSharedMemoryAs<Result*>();
1240 *result = -1; 1240 *result = -1;
1241 GetUniformLocationBucket cmd; 1241 GetUniformLocationBucket cmd;
1242 // Check no bucket 1242 // Check no bucket
1243 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 1243 cmd.Init(client_program_id_, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1244 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1244 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1245 EXPECT_EQ(-1, *result); 1245 EXPECT_EQ(-1, *result);
1246 // Check bad program id. 1246 // Check bad program id.
1247 SetBucketAsCString(kBucketId, kUniform2Name); 1247 SetBucketAsCString(kBucketId, kUniform2Name);
1248 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset); 1248 cmd.Init(kInvalidClientId, kBucketId, kSharedMemoryId, kSharedMemoryOffset);
1249 *result = -1; 1249 *result = -1;
1250 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1250 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1251 EXPECT_EQ(-1, *result); 1251 EXPECT_EQ(-1, *result);
1252 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1252 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1253 // Check bad memory 1253 // Check bad memory
1254 cmd.Init(client_program_id_, 1254 cmd.Init(client_program_id_,
1255 kBucketId, 1255 kBucketId,
1256 kInvalidSharedMemoryId, 1256 kInvalidSharedMemoryId,
1257 kSharedMemoryOffset); 1257 kSharedMemoryOffset);
1258 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1258 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1259 cmd.Init(client_program_id_, 1259 cmd.Init(client_program_id_,
1260 kBucketId, 1260 kBucketId,
1261 kSharedMemoryId, 1261 kSharedMemoryId,
1262 kInvalidSharedMemoryOffset); 1262 kInvalidSharedMemoryOffset);
1263 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 1263 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
1264 } 1264 }
1265 1265
1266 TEST_F(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUM) { 1266 TEST_P(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUM) {
1267 const GLint kLocation = 2; 1267 const GLint kLocation = 2;
1268 const char* kName = "testing"; 1268 const char* kName = "testing";
1269 const uint32 kNameSize = strlen(kName); 1269 const uint32 kNameSize = strlen(kName);
1270 const char* kBadName1 = "gl_testing"; 1270 const char* kBadName1 = "gl_testing";
1271 const uint32 kBadName1Size = strlen(kBadName1); 1271 const uint32 kBadName1Size = strlen(kBadName1);
1272 const char* kBadName2 = "testing[1]"; 1272 const char* kBadName2 = "testing[1]";
1273 const uint32 kBadName2Size = strlen(kBadName2); 1273 const uint32 kBadName2Size = strlen(kBadName2);
1274 memcpy(shared_memory_address_, kName, kNameSize); 1274 memcpy(shared_memory_address_, kName, kNameSize);
1275 BindUniformLocationCHROMIUM cmd; 1275 BindUniformLocationCHROMIUM cmd;
1276 cmd.Init(client_program_id_, 1276 cmd.Init(client_program_id_,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1319 memcpy(shared_memory_address_, kBadName2, kBadName2Size); 1319 memcpy(shared_memory_address_, kBadName2, kBadName2Size);
1320 cmd.Init(client_program_id_, 1320 cmd.Init(client_program_id_,
1321 kLocation, 1321 kLocation,
1322 kSharedMemoryId, 1322 kSharedMemoryId,
1323 kSharedMemoryOffset, 1323 kSharedMemoryOffset,
1324 kBadName2Size); 1324 kBadName2Size);
1325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1326 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1326 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1327 } 1327 }
1328 1328
1329 TEST_F(GLES2DecoderManualInitTest, ClearUniformsBeforeFirstProgramUse) { 1329 TEST_P(GLES2DecoderManualInitTest, ClearUniformsBeforeFirstProgramUse) {
1330 CommandLine command_line(0, NULL); 1330 CommandLine command_line(0, NULL);
1331 command_line.AppendSwitchASCII( 1331 command_line.AppendSwitchASCII(
1332 switches::kGpuDriverBugWorkarounds, 1332 switches::kGpuDriverBugWorkarounds,
1333 base::IntToString(gpu::CLEAR_UNIFORMS_BEFORE_FIRST_PROGRAM_USE)); 1333 base::IntToString(gpu::CLEAR_UNIFORMS_BEFORE_FIRST_PROGRAM_USE));
1334 InitState init; 1334 InitState init;
1335 init.gl_version = "3.0"; 1335 init.gl_version = "3.0";
1336 init.has_alpha = true; 1336 init.has_alpha = true;
1337 init.request_alpha = true; 1337 init.request_alpha = true;
1338 init.bind_generates_resource = true; 1338 init.bind_generates_resource = true;
1339 InitDecoderWithCommandLine(init, &command_line); 1339 InitDecoderWithCommandLine(init, &command_line);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 } 1382 }
1383 1383
1384 // TODO(gman): DeleteProgram 1384 // TODO(gman): DeleteProgram
1385 1385
1386 // TODO(gman): UseProgram 1386 // TODO(gman): UseProgram
1387 1387
1388 // TODO(gman): DeleteShader 1388 // TODO(gman): DeleteShader
1389 1389
1390 } // namespace gles2 1390 } // namespace gles2
1391 } // namespace gpu 1391 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698