OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |