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
3 // found in the LICENSE file.
5 // This file is auto-generated from
6 // gpu/command_buffer/build_gles2_cmd_buffer.py
7 // It's formatted by clang-format using chromium coding style:
8 // clang-format -i -style=chromium filename
11 // It is included by gles2_cmd_decoder_unittest_2.cc
12 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
13 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
15 TEST_P(GLES2DecoderTest2
, GetSamplerParameterivValidArgs
) {
16 EXPECT_CALL(*gl_
, GetError())
17 .WillOnce(Return(GL_NO_ERROR
))
18 .WillOnce(Return(GL_NO_ERROR
))
19 .RetiresOnSaturation();
20 SpecializedSetup
<cmds::GetSamplerParameteriv
, 0>(true);
21 typedef cmds::GetSamplerParameteriv::Result Result
;
22 Result
* result
= static_cast<Result
*>(shared_memory_address_
);
24 GetSamplerParameteriv(kServiceSamplerId
, GL_TEXTURE_MAG_FILTER
,
27 cmds::GetSamplerParameteriv cmd
;
28 cmd
.Init(client_sampler_id_
, GL_TEXTURE_MAG_FILTER
, shared_memory_id_
,
29 shared_memory_offset_
);
30 decoder_
->set_unsafe_es3_apis_enabled(true);
31 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
33 decoder_
->GetGLES2Util()->GLGetNumValuesReturned(GL_TEXTURE_MAG_FILTER
),
34 result
->GetNumResults());
35 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
36 decoder_
->set_unsafe_es3_apis_enabled(false);
37 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
40 TEST_P(GLES2DecoderTest2
, GetShaderivValidArgs
) {
41 EXPECT_CALL(*gl_
, GetError())
42 .WillOnce(Return(GL_NO_ERROR
))
43 .WillOnce(Return(GL_NO_ERROR
))
44 .RetiresOnSaturation();
45 SpecializedSetup
<cmds::GetShaderiv
, 0>(true);
46 typedef cmds::GetShaderiv::Result Result
;
47 Result
* result
= static_cast<Result
*>(shared_memory_address_
);
49 GetShaderiv(kServiceShaderId
, GL_SHADER_TYPE
, result
->GetData()));
51 cmds::GetShaderiv cmd
;
52 cmd
.Init(client_shader_id_
, GL_SHADER_TYPE
, shared_memory_id_
,
53 shared_memory_offset_
);
54 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
55 EXPECT_EQ(decoder_
->GetGLES2Util()->GLGetNumValuesReturned(GL_SHADER_TYPE
),
56 result
->GetNumResults());
57 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
60 TEST_P(GLES2DecoderTest2
, GetShaderivInvalidArgs2_0
) {
61 EXPECT_CALL(*gl_
, GetShaderiv(_
, _
, _
)).Times(0);
62 SpecializedSetup
<cmds::GetShaderiv
, 0>(false);
63 cmds::GetShaderiv::Result
* result
=
64 static_cast<cmds::GetShaderiv::Result
*>(shared_memory_address_
);
66 cmds::GetShaderiv cmd
;
67 cmd
.Init(client_shader_id_
, GL_SHADER_TYPE
, kInvalidSharedMemoryId
, 0);
68 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
69 EXPECT_EQ(0u, result
->size
);
72 TEST_P(GLES2DecoderTest2
, GetShaderivInvalidArgs2_1
) {
73 EXPECT_CALL(*gl_
, GetShaderiv(_
, _
, _
)).Times(0);
74 SpecializedSetup
<cmds::GetShaderiv
, 0>(false);
75 cmds::GetShaderiv::Result
* result
=
76 static_cast<cmds::GetShaderiv::Result
*>(shared_memory_address_
);
78 cmds::GetShaderiv cmd
;
79 cmd
.Init(client_shader_id_
, GL_SHADER_TYPE
, shared_memory_id_
,
80 kInvalidSharedMemoryOffset
);
81 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
82 EXPECT_EQ(0u, result
->size
);
84 // TODO(gman): GetShaderInfoLog
85 // TODO(gman): GetShaderPrecisionFormat
87 // TODO(gman): GetShaderSource
88 // TODO(gman): GetString
90 TEST_P(GLES2DecoderTest2
, GetSyncivValidArgs
) {
91 EXPECT_CALL(*gl_
, GetError())
92 .WillOnce(Return(GL_NO_ERROR
))
93 .WillOnce(Return(GL_NO_ERROR
))
94 .RetiresOnSaturation();
95 SpecializedSetup
<cmds::GetSynciv
, 0>(true);
96 typedef cmds::GetSynciv::Result Result
;
97 Result
* result
= static_cast<Result
*>(shared_memory_address_
);
99 *gl_
, GetSynciv(reinterpret_cast<GLsync
>(kServiceSyncId
), GL_SYNC_STATUS
,
100 decoder_
->GetGLES2Util()->GLGetNumValuesReturned(
102 nullptr, result
->GetData()));
105 cmd
.Init(client_sync_id_
, GL_SYNC_STATUS
, shared_memory_id_
,
106 shared_memory_offset_
);
107 decoder_
->set_unsafe_es3_apis_enabled(true);
108 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
109 EXPECT_EQ(decoder_
->GetGLES2Util()->GLGetNumValuesReturned(GL_SYNC_STATUS
),
110 result
->GetNumResults());
111 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
112 decoder_
->set_unsafe_es3_apis_enabled(false);
113 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
116 TEST_P(GLES2DecoderTest2
, GetTexParameterfvValidArgs
) {
117 EXPECT_CALL(*gl_
, GetError())
118 .WillOnce(Return(GL_NO_ERROR
))
119 .WillOnce(Return(GL_NO_ERROR
))
120 .RetiresOnSaturation();
121 SpecializedSetup
<cmds::GetTexParameterfv
, 0>(true);
122 typedef cmds::GetTexParameterfv::Result Result
;
123 Result
* result
= static_cast<Result
*>(shared_memory_address_
);
124 EXPECT_CALL(*gl_
, GetTexParameterfv(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
,
127 cmds::GetTexParameterfv cmd
;
128 cmd
.Init(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, shared_memory_id_
,
129 shared_memory_offset_
);
130 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
132 decoder_
->GetGLES2Util()->GLGetNumValuesReturned(GL_TEXTURE_MAG_FILTER
),
133 result
->GetNumResults());
134 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
137 TEST_P(GLES2DecoderTest2
, GetTexParameterfvInvalidArgs0_0
) {
138 EXPECT_CALL(*gl_
, GetTexParameterfv(_
, _
, _
)).Times(0);
139 SpecializedSetup
<cmds::GetTexParameterfv
, 0>(false);
140 cmds::GetTexParameterfv::Result
* result
=
141 static_cast<cmds::GetTexParameterfv::Result
*>(shared_memory_address_
);
143 cmds::GetTexParameterfv cmd
;
144 cmd
.Init(GL_PROXY_TEXTURE_CUBE_MAP
, GL_TEXTURE_MAG_FILTER
, shared_memory_id_
,
145 shared_memory_offset_
);
146 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
147 EXPECT_EQ(0u, result
->size
);
148 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
151 TEST_P(GLES2DecoderTest2
, GetTexParameterfvInvalidArgs1_0
) {
152 EXPECT_CALL(*gl_
, GetTexParameterfv(_
, _
, _
)).Times(0);
153 SpecializedSetup
<cmds::GetTexParameterfv
, 0>(false);
154 cmds::GetTexParameterfv::Result
* result
=
155 static_cast<cmds::GetTexParameterfv::Result
*>(shared_memory_address_
);
157 cmds::GetTexParameterfv cmd
;
158 cmd
.Init(GL_TEXTURE_2D
, GL_GENERATE_MIPMAP
, shared_memory_id_
,
159 shared_memory_offset_
);
160 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
161 EXPECT_EQ(0u, result
->size
);
162 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
165 TEST_P(GLES2DecoderTest2
, GetTexParameterfvInvalidArgs2_0
) {
166 EXPECT_CALL(*gl_
, GetTexParameterfv(_
, _
, _
)).Times(0);
167 SpecializedSetup
<cmds::GetTexParameterfv
, 0>(false);
168 cmds::GetTexParameterfv::Result
* result
=
169 static_cast<cmds::GetTexParameterfv::Result
*>(shared_memory_address_
);
171 cmds::GetTexParameterfv cmd
;
172 cmd
.Init(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, kInvalidSharedMemoryId
, 0);
173 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
174 EXPECT_EQ(0u, result
->size
);
177 TEST_P(GLES2DecoderTest2
, GetTexParameterfvInvalidArgs2_1
) {
178 EXPECT_CALL(*gl_
, GetTexParameterfv(_
, _
, _
)).Times(0);
179 SpecializedSetup
<cmds::GetTexParameterfv
, 0>(false);
180 cmds::GetTexParameterfv::Result
* result
=
181 static_cast<cmds::GetTexParameterfv::Result
*>(shared_memory_address_
);
183 cmds::GetTexParameterfv cmd
;
184 cmd
.Init(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, shared_memory_id_
,
185 kInvalidSharedMemoryOffset
);
186 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
187 EXPECT_EQ(0u, result
->size
);
190 TEST_P(GLES2DecoderTest2
, GetTexParameterivValidArgs
) {
191 EXPECT_CALL(*gl_
, GetError())
192 .WillOnce(Return(GL_NO_ERROR
))
193 .WillOnce(Return(GL_NO_ERROR
))
194 .RetiresOnSaturation();
195 SpecializedSetup
<cmds::GetTexParameteriv
, 0>(true);
196 typedef cmds::GetTexParameteriv::Result Result
;
197 Result
* result
= static_cast<Result
*>(shared_memory_address_
);
198 EXPECT_CALL(*gl_
, GetTexParameteriv(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
,
201 cmds::GetTexParameteriv cmd
;
202 cmd
.Init(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, shared_memory_id_
,
203 shared_memory_offset_
);
204 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
206 decoder_
->GetGLES2Util()->GLGetNumValuesReturned(GL_TEXTURE_MAG_FILTER
),
207 result
->GetNumResults());
208 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
211 TEST_P(GLES2DecoderTest2
, GetTexParameterivInvalidArgs0_0
) {
212 EXPECT_CALL(*gl_
, GetTexParameteriv(_
, _
, _
)).Times(0);
213 SpecializedSetup
<cmds::GetTexParameteriv
, 0>(false);
214 cmds::GetTexParameteriv::Result
* result
=
215 static_cast<cmds::GetTexParameteriv::Result
*>(shared_memory_address_
);
217 cmds::GetTexParameteriv cmd
;
218 cmd
.Init(GL_PROXY_TEXTURE_CUBE_MAP
, GL_TEXTURE_MAG_FILTER
, shared_memory_id_
,
219 shared_memory_offset_
);
220 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
221 EXPECT_EQ(0u, result
->size
);
222 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
225 TEST_P(GLES2DecoderTest2
, GetTexParameterivInvalidArgs1_0
) {
226 EXPECT_CALL(*gl_
, GetTexParameteriv(_
, _
, _
)).Times(0);
227 SpecializedSetup
<cmds::GetTexParameteriv
, 0>(false);
228 cmds::GetTexParameteriv::Result
* result
=
229 static_cast<cmds::GetTexParameteriv::Result
*>(shared_memory_address_
);
231 cmds::GetTexParameteriv cmd
;
232 cmd
.Init(GL_TEXTURE_2D
, GL_GENERATE_MIPMAP
, shared_memory_id_
,
233 shared_memory_offset_
);
234 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
235 EXPECT_EQ(0u, result
->size
);
236 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
239 TEST_P(GLES2DecoderTest2
, GetTexParameterivInvalidArgs2_0
) {
240 EXPECT_CALL(*gl_
, GetTexParameteriv(_
, _
, _
)).Times(0);
241 SpecializedSetup
<cmds::GetTexParameteriv
, 0>(false);
242 cmds::GetTexParameteriv::Result
* result
=
243 static_cast<cmds::GetTexParameteriv::Result
*>(shared_memory_address_
);
245 cmds::GetTexParameteriv cmd
;
246 cmd
.Init(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, kInvalidSharedMemoryId
, 0);
247 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
248 EXPECT_EQ(0u, result
->size
);
251 TEST_P(GLES2DecoderTest2
, GetTexParameterivInvalidArgs2_1
) {
252 EXPECT_CALL(*gl_
, GetTexParameteriv(_
, _
, _
)).Times(0);
253 SpecializedSetup
<cmds::GetTexParameteriv
, 0>(false);
254 cmds::GetTexParameteriv::Result
* result
=
255 static_cast<cmds::GetTexParameteriv::Result
*>(shared_memory_address_
);
257 cmds::GetTexParameteriv cmd
;
258 cmd
.Init(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, shared_memory_id_
,
259 kInvalidSharedMemoryOffset
);
260 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
261 EXPECT_EQ(0u, result
->size
);
263 // TODO(gman): GetTransformFeedbackVarying
265 // TODO(gman): GetUniformBlockIndex
267 // TODO(gman): GetUniformfv
269 // TODO(gman): GetUniformiv
271 // TODO(gman): GetUniformIndices
273 // TODO(gman): GetUniformLocation
275 TEST_P(GLES2DecoderTest2
, GetVertexAttribfvValidArgs
) {
276 SpecializedSetup
<cmds::GetVertexAttribfv
, 0>(true);
277 typedef cmds::GetVertexAttribfv::Result Result
;
278 Result
* result
= static_cast<Result
*>(shared_memory_address_
);
280 cmds::GetVertexAttribfv cmd
;
281 cmd
.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
, shared_memory_id_
,
282 shared_memory_offset_
);
283 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
284 EXPECT_EQ(decoder_
->GetGLES2Util()->GLGetNumValuesReturned(
285 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
),
286 result
->GetNumResults());
287 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
290 TEST_P(GLES2DecoderTest2
, GetVertexAttribfvInvalidArgs2_0
) {
291 EXPECT_CALL(*gl_
, GetVertexAttribfv(_
, _
, _
)).Times(0);
292 SpecializedSetup
<cmds::GetVertexAttribfv
, 0>(false);
293 cmds::GetVertexAttribfv::Result
* result
=
294 static_cast<cmds::GetVertexAttribfv::Result
*>(shared_memory_address_
);
296 cmds::GetVertexAttribfv cmd
;
297 cmd
.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
, kInvalidSharedMemoryId
, 0);
298 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
299 EXPECT_EQ(0u, result
->size
);
302 TEST_P(GLES2DecoderTest2
, GetVertexAttribfvInvalidArgs2_1
) {
303 EXPECT_CALL(*gl_
, GetVertexAttribfv(_
, _
, _
)).Times(0);
304 SpecializedSetup
<cmds::GetVertexAttribfv
, 0>(false);
305 cmds::GetVertexAttribfv::Result
* result
=
306 static_cast<cmds::GetVertexAttribfv::Result
*>(shared_memory_address_
);
308 cmds::GetVertexAttribfv cmd
;
309 cmd
.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
, shared_memory_id_
,
310 kInvalidSharedMemoryOffset
);
311 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
312 EXPECT_EQ(0u, result
->size
);
315 TEST_P(GLES2DecoderTest2
, GetVertexAttribivValidArgs
) {
316 SpecializedSetup
<cmds::GetVertexAttribiv
, 0>(true);
317 typedef cmds::GetVertexAttribiv::Result Result
;
318 Result
* result
= static_cast<Result
*>(shared_memory_address_
);
320 cmds::GetVertexAttribiv cmd
;
321 cmd
.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
, shared_memory_id_
,
322 shared_memory_offset_
);
323 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
324 EXPECT_EQ(decoder_
->GetGLES2Util()->GLGetNumValuesReturned(
325 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
),
326 result
->GetNumResults());
327 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
330 TEST_P(GLES2DecoderTest2
, GetVertexAttribivInvalidArgs2_0
) {
331 EXPECT_CALL(*gl_
, GetVertexAttribiv(_
, _
, _
)).Times(0);
332 SpecializedSetup
<cmds::GetVertexAttribiv
, 0>(false);
333 cmds::GetVertexAttribiv::Result
* result
=
334 static_cast<cmds::GetVertexAttribiv::Result
*>(shared_memory_address_
);
336 cmds::GetVertexAttribiv cmd
;
337 cmd
.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
, kInvalidSharedMemoryId
, 0);
338 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
339 EXPECT_EQ(0u, result
->size
);
342 TEST_P(GLES2DecoderTest2
, GetVertexAttribivInvalidArgs2_1
) {
343 EXPECT_CALL(*gl_
, GetVertexAttribiv(_
, _
, _
)).Times(0);
344 SpecializedSetup
<cmds::GetVertexAttribiv
, 0>(false);
345 cmds::GetVertexAttribiv::Result
* result
=
346 static_cast<cmds::GetVertexAttribiv::Result
*>(shared_memory_address_
);
348 cmds::GetVertexAttribiv cmd
;
349 cmd
.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
, shared_memory_id_
,
350 kInvalidSharedMemoryOffset
);
351 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
352 EXPECT_EQ(0u, result
->size
);
354 // TODO(gman): GetVertexAttribPointerv
356 TEST_P(GLES2DecoderTest2
, HintValidArgs
) {
357 EXPECT_CALL(*gl_
, Hint(GL_GENERATE_MIPMAP_HINT
, GL_FASTEST
));
358 SpecializedSetup
<cmds::Hint
, 0>(true);
360 cmd
.Init(GL_GENERATE_MIPMAP_HINT
, GL_FASTEST
);
361 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
362 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
365 TEST_P(GLES2DecoderTest2
, HintInvalidArgs0_0
) {
366 EXPECT_CALL(*gl_
, Hint(_
, _
)).Times(0);
367 SpecializedSetup
<cmds::Hint
, 0>(false);
369 cmd
.Init(GL_PERSPECTIVE_CORRECTION_HINT
, GL_FASTEST
);
370 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
371 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
373 // TODO(gman): InvalidateFramebufferImmediate
374 // TODO(gman): InvalidateSubFramebufferImmediate
376 TEST_P(GLES2DecoderTest2
, IsBufferValidArgs
) {
377 SpecializedSetup
<cmds::IsBuffer
, 0>(true);
379 cmd
.Init(client_buffer_id_
, shared_memory_id_
, shared_memory_offset_
);
380 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
381 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
384 TEST_P(GLES2DecoderTest2
, IsBufferInvalidArgsBadSharedMemoryId
) {
385 SpecializedSetup
<cmds::IsBuffer
, 0>(false);
387 cmd
.Init(client_buffer_id_
, kInvalidSharedMemoryId
, shared_memory_offset_
);
388 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
389 cmd
.Init(client_buffer_id_
, shared_memory_id_
, kInvalidSharedMemoryOffset
);
390 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
393 TEST_P(GLES2DecoderTest2
, IsEnabledValidArgs
) {
394 SpecializedSetup
<cmds::IsEnabled
, 0>(true);
396 cmd
.Init(GL_BLEND
, shared_memory_id_
, shared_memory_offset_
);
397 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
398 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
401 TEST_P(GLES2DecoderTest2
, IsEnabledInvalidArgs0_0
) {
402 EXPECT_CALL(*gl_
, IsEnabled(_
)).Times(0);
403 SpecializedSetup
<cmds::IsEnabled
, 0>(false);
405 cmd
.Init(GL_CLIP_PLANE0
, shared_memory_id_
, shared_memory_offset_
);
406 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
407 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
410 TEST_P(GLES2DecoderTest2
, IsEnabledInvalidArgs0_1
) {
411 EXPECT_CALL(*gl_
, IsEnabled(_
)).Times(0);
412 SpecializedSetup
<cmds::IsEnabled
, 0>(false);
414 cmd
.Init(GL_POINT_SPRITE
, shared_memory_id_
, shared_memory_offset_
);
415 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
416 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
419 TEST_P(GLES2DecoderTest2
, IsEnabledInvalidArgsBadSharedMemoryId
) {
420 SpecializedSetup
<cmds::IsEnabled
, 0>(false);
422 cmd
.Init(GL_BLEND
, kInvalidSharedMemoryId
, shared_memory_offset_
);
423 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
424 cmd
.Init(GL_BLEND
, shared_memory_id_
, kInvalidSharedMemoryOffset
);
425 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
428 TEST_P(GLES2DecoderTest2
, IsFramebufferValidArgs
) {
429 SpecializedSetup
<cmds::IsFramebuffer
, 0>(true);
430 cmds::IsFramebuffer cmd
;
431 cmd
.Init(client_framebuffer_id_
, shared_memory_id_
, shared_memory_offset_
);
432 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
433 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
436 TEST_P(GLES2DecoderTest2
, IsFramebufferInvalidArgsBadSharedMemoryId
) {
437 SpecializedSetup
<cmds::IsFramebuffer
, 0>(false);
438 cmds::IsFramebuffer cmd
;
439 cmd
.Init(client_framebuffer_id_
, kInvalidSharedMemoryId
,
440 shared_memory_offset_
);
441 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
442 cmd
.Init(client_framebuffer_id_
, shared_memory_id_
,
443 kInvalidSharedMemoryOffset
);
444 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
447 TEST_P(GLES2DecoderTest2
, IsProgramValidArgs
) {
448 SpecializedSetup
<cmds::IsProgram
, 0>(true);
450 cmd
.Init(client_program_id_
, shared_memory_id_
, shared_memory_offset_
);
451 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
452 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
455 TEST_P(GLES2DecoderTest2
, IsProgramInvalidArgsBadSharedMemoryId
) {
456 SpecializedSetup
<cmds::IsProgram
, 0>(false);
458 cmd
.Init(client_program_id_
, kInvalidSharedMemoryId
, shared_memory_offset_
);
459 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
460 cmd
.Init(client_program_id_
, shared_memory_id_
, kInvalidSharedMemoryOffset
);
461 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
464 TEST_P(GLES2DecoderTest2
, IsRenderbufferValidArgs
) {
465 SpecializedSetup
<cmds::IsRenderbuffer
, 0>(true);
466 cmds::IsRenderbuffer cmd
;
467 cmd
.Init(client_renderbuffer_id_
, shared_memory_id_
, shared_memory_offset_
);
468 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
469 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
472 TEST_P(GLES2DecoderTest2
, IsRenderbufferInvalidArgsBadSharedMemoryId
) {
473 SpecializedSetup
<cmds::IsRenderbuffer
, 0>(false);
474 cmds::IsRenderbuffer cmd
;
475 cmd
.Init(client_renderbuffer_id_
, kInvalidSharedMemoryId
,
476 shared_memory_offset_
);
477 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
478 cmd
.Init(client_renderbuffer_id_
, shared_memory_id_
,
479 kInvalidSharedMemoryOffset
);
480 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
483 TEST_P(GLES2DecoderTest2
, IsSamplerValidArgs
) {
484 SpecializedSetup
<cmds::IsSampler
, 0>(true);
486 cmd
.Init(client_sampler_id_
, shared_memory_id_
, shared_memory_offset_
);
487 decoder_
->set_unsafe_es3_apis_enabled(true);
488 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
489 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
490 decoder_
->set_unsafe_es3_apis_enabled(false);
491 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
494 TEST_P(GLES2DecoderTest2
, IsSamplerInvalidArgsBadSharedMemoryId
) {
495 SpecializedSetup
<cmds::IsSampler
, 0>(false);
496 decoder_
->set_unsafe_es3_apis_enabled(true);
498 cmd
.Init(client_sampler_id_
, kInvalidSharedMemoryId
, shared_memory_offset_
);
499 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
500 cmd
.Init(client_sampler_id_
, shared_memory_id_
, kInvalidSharedMemoryOffset
);
501 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
502 decoder_
->set_unsafe_es3_apis_enabled(true);
505 TEST_P(GLES2DecoderTest2
, IsShaderValidArgs
) {
506 SpecializedSetup
<cmds::IsShader
, 0>(true);
508 cmd
.Init(client_shader_id_
, shared_memory_id_
, shared_memory_offset_
);
509 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
510 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
513 TEST_P(GLES2DecoderTest2
, IsShaderInvalidArgsBadSharedMemoryId
) {
514 SpecializedSetup
<cmds::IsShader
, 0>(false);
516 cmd
.Init(client_shader_id_
, kInvalidSharedMemoryId
, shared_memory_offset_
);
517 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
518 cmd
.Init(client_shader_id_
, shared_memory_id_
, kInvalidSharedMemoryOffset
);
519 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
522 TEST_P(GLES2DecoderTest2
, IsSyncValidArgs
) {
523 SpecializedSetup
<cmds::IsSync
, 0>(true);
525 cmd
.Init(client_sync_id_
, shared_memory_id_
, shared_memory_offset_
);
526 decoder_
->set_unsafe_es3_apis_enabled(true);
527 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
528 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
529 decoder_
->set_unsafe_es3_apis_enabled(false);
530 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
533 TEST_P(GLES2DecoderTest2
, IsSyncInvalidArgsBadSharedMemoryId
) {
534 SpecializedSetup
<cmds::IsSync
, 0>(false);
535 decoder_
->set_unsafe_es3_apis_enabled(true);
537 cmd
.Init(client_sync_id_
, kInvalidSharedMemoryId
, shared_memory_offset_
);
538 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
539 cmd
.Init(client_sync_id_
, shared_memory_id_
, kInvalidSharedMemoryOffset
);
540 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
541 decoder_
->set_unsafe_es3_apis_enabled(true);
544 TEST_P(GLES2DecoderTest2
, IsTextureValidArgs
) {
545 SpecializedSetup
<cmds::IsTexture
, 0>(true);
547 cmd
.Init(client_texture_id_
, shared_memory_id_
, shared_memory_offset_
);
548 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
549 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
552 TEST_P(GLES2DecoderTest2
, IsTextureInvalidArgsBadSharedMemoryId
) {
553 SpecializedSetup
<cmds::IsTexture
, 0>(false);
555 cmd
.Init(client_texture_id_
, kInvalidSharedMemoryId
, shared_memory_offset_
);
556 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
557 cmd
.Init(client_texture_id_
, shared_memory_id_
, kInvalidSharedMemoryOffset
);
558 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
561 TEST_P(GLES2DecoderTest2
, IsTransformFeedbackValidArgs
) {
562 SpecializedSetup
<cmds::IsTransformFeedback
, 0>(true);
563 cmds::IsTransformFeedback cmd
;
564 cmd
.Init(client_transformfeedback_id_
, shared_memory_id_
,
565 shared_memory_offset_
);
566 decoder_
->set_unsafe_es3_apis_enabled(true);
567 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
568 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
569 decoder_
->set_unsafe_es3_apis_enabled(false);
570 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
573 TEST_P(GLES2DecoderTest2
, IsTransformFeedbackInvalidArgsBadSharedMemoryId
) {
574 SpecializedSetup
<cmds::IsTransformFeedback
, 0>(false);
575 decoder_
->set_unsafe_es3_apis_enabled(true);
576 cmds::IsTransformFeedback cmd
;
577 cmd
.Init(client_transformfeedback_id_
, kInvalidSharedMemoryId
,
578 shared_memory_offset_
);
579 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
580 cmd
.Init(client_transformfeedback_id_
, shared_memory_id_
,
581 kInvalidSharedMemoryOffset
);
582 EXPECT_EQ(error::kOutOfBounds
, ExecuteCmd(cmd
));
583 decoder_
->set_unsafe_es3_apis_enabled(true);
586 TEST_P(GLES2DecoderTest2
, LineWidthValidArgs
) {
587 EXPECT_CALL(*gl_
, LineWidth(0.5f
));
588 SpecializedSetup
<cmds::LineWidth
, 0>(true);
591 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
592 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
595 TEST_P(GLES2DecoderTest2
, LineWidthInvalidValue0_0
) {
596 SpecializedSetup
<cmds::LineWidth
, 0>(false);
599 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
600 EXPECT_EQ(GL_INVALID_VALUE
, GetGLError());
603 TEST_P(GLES2DecoderTest2
, LineWidthNaNValue0
) {
604 SpecializedSetup
<cmds::LineWidth
, 0>(false);
607 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
608 EXPECT_EQ(GL_INVALID_VALUE
, GetGLError());
611 TEST_P(GLES2DecoderTest2
, LinkProgramValidArgs
) {
612 EXPECT_CALL(*gl_
, LinkProgram(kServiceProgramId
));
613 SpecializedSetup
<cmds::LinkProgram
, 0>(true);
614 cmds::LinkProgram cmd
;
615 cmd
.Init(client_program_id_
);
616 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
617 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
620 TEST_P(GLES2DecoderTest2
, PauseTransformFeedbackValidArgs
) {
621 EXPECT_CALL(*gl_
, PauseTransformFeedback());
622 SpecializedSetup
<cmds::PauseTransformFeedback
, 0>(true);
623 cmds::PauseTransformFeedback cmd
;
625 decoder_
->set_unsafe_es3_apis_enabled(true);
626 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
627 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
628 decoder_
->set_unsafe_es3_apis_enabled(false);
629 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
631 // TODO(gman): PixelStorei
633 TEST_P(GLES2DecoderTest2
, PolygonOffsetValidArgs
) {
634 EXPECT_CALL(*gl_
, PolygonOffset(1, 2));
635 SpecializedSetup
<cmds::PolygonOffset
, 0>(true);
636 cmds::PolygonOffset cmd
;
638 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
639 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
642 TEST_P(GLES2DecoderTest2
, ReadBufferValidArgs
) {
643 EXPECT_CALL(*gl_
, ReadBuffer(1));
644 SpecializedSetup
<cmds::ReadBuffer
, 0>(true);
645 cmds::ReadBuffer cmd
;
647 decoder_
->set_unsafe_es3_apis_enabled(true);
648 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
649 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
650 decoder_
->set_unsafe_es3_apis_enabled(false);
651 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
653 // TODO(gman): ReadPixels
655 // TODO(gman): ReleaseShaderCompiler
657 TEST_P(GLES2DecoderTest2
, RenderbufferStorageValidArgs
) {
658 SpecializedSetup
<cmds::RenderbufferStorage
, 0>(true);
659 cmds::RenderbufferStorage cmd
;
660 cmd
.Init(GL_RENDERBUFFER
, GL_RGBA4
, 3, 4);
661 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
662 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
665 TEST_P(GLES2DecoderTest2
, RenderbufferStorageInvalidArgs0_0
) {
666 EXPECT_CALL(*gl_
, RenderbufferStorageEXT(_
, _
, _
, _
)).Times(0);
667 SpecializedSetup
<cmds::RenderbufferStorage
, 0>(false);
668 cmds::RenderbufferStorage cmd
;
669 cmd
.Init(GL_FRAMEBUFFER
, GL_RGBA4
, 3, 4);
670 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
671 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
674 TEST_P(GLES2DecoderTest2
, RenderbufferStorageInvalidArgs2_0
) {
675 EXPECT_CALL(*gl_
, RenderbufferStorageEXT(_
, _
, _
, _
)).Times(0);
676 SpecializedSetup
<cmds::RenderbufferStorage
, 0>(false);
677 cmds::RenderbufferStorage cmd
;
678 cmd
.Init(GL_RENDERBUFFER
, GL_RGBA4
, -1, 4);
679 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
680 EXPECT_EQ(GL_INVALID_VALUE
, GetGLError());
683 TEST_P(GLES2DecoderTest2
, RenderbufferStorageInvalidArgs3_0
) {
684 EXPECT_CALL(*gl_
, RenderbufferStorageEXT(_
, _
, _
, _
)).Times(0);
685 SpecializedSetup
<cmds::RenderbufferStorage
, 0>(false);
686 cmds::RenderbufferStorage cmd
;
687 cmd
.Init(GL_RENDERBUFFER
, GL_RGBA4
, 3, -1);
688 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
689 EXPECT_EQ(GL_INVALID_VALUE
, GetGLError());
692 TEST_P(GLES2DecoderTest2
, ResumeTransformFeedbackValidArgs
) {
693 EXPECT_CALL(*gl_
, ResumeTransformFeedback());
694 SpecializedSetup
<cmds::ResumeTransformFeedback
, 0>(true);
695 cmds::ResumeTransformFeedback cmd
;
697 decoder_
->set_unsafe_es3_apis_enabled(true);
698 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
699 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
700 decoder_
->set_unsafe_es3_apis_enabled(false);
701 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
704 TEST_P(GLES2DecoderTest2
, SampleCoverageValidArgs
) {
705 EXPECT_CALL(*gl_
, SampleCoverage(1, true));
706 SpecializedSetup
<cmds::SampleCoverage
, 0>(true);
707 cmds::SampleCoverage cmd
;
709 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
710 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
713 TEST_P(GLES2DecoderTest2
, SamplerParameterfValidArgs
) {
714 EXPECT_CALL(*gl_
, SamplerParameterf(kServiceSamplerId
, GL_TEXTURE_MAG_FILTER
,
716 SpecializedSetup
<cmds::SamplerParameterf
, 0>(true);
717 cmds::SamplerParameterf cmd
;
718 cmd
.Init(client_sampler_id_
, GL_TEXTURE_MAG_FILTER
, GL_NEAREST
);
719 decoder_
->set_unsafe_es3_apis_enabled(true);
720 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
721 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
722 decoder_
->set_unsafe_es3_apis_enabled(false);
723 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
726 TEST_P(GLES2DecoderTest2
, SamplerParameterfvImmediateValidArgs
) {
727 cmds::SamplerParameterfvImmediate
& cmd
=
728 *GetImmediateAs
<cmds::SamplerParameterfvImmediate
>();
729 SpecializedSetup
<cmds::SamplerParameterfvImmediate
, 0>(true);
733 cmd
.Init(kServiceSamplerId
, GL_TEXTURE_MAG_FILTER
, &temp
[0]);
734 EXPECT_CALL(*gl_
, SamplerParameterf(kServiceSamplerId
, GL_TEXTURE_MAG_FILTER
,
735 *reinterpret_cast<GLfloat
*>(
736 ImmediateDataAddress(&cmd
))));
737 decoder_
->set_unsafe_es3_apis_enabled(true);
738 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
739 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
740 decoder_
->set_unsafe_es3_apis_enabled(false);
741 EXPECT_EQ(error::kUnknownCommand
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
744 TEST_P(GLES2DecoderTest2
, SamplerParameteriValidArgs
) {
745 EXPECT_CALL(*gl_
, SamplerParameteri(kServiceSamplerId
, GL_TEXTURE_MAG_FILTER
,
747 SpecializedSetup
<cmds::SamplerParameteri
, 0>(true);
748 cmds::SamplerParameteri cmd
;
749 cmd
.Init(client_sampler_id_
, GL_TEXTURE_MAG_FILTER
, GL_NEAREST
);
750 decoder_
->set_unsafe_es3_apis_enabled(true);
751 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
752 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
753 decoder_
->set_unsafe_es3_apis_enabled(false);
754 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
757 TEST_P(GLES2DecoderTest2
, SamplerParameterivImmediateValidArgs
) {
758 cmds::SamplerParameterivImmediate
& cmd
=
759 *GetImmediateAs
<cmds::SamplerParameterivImmediate
>();
760 SpecializedSetup
<cmds::SamplerParameterivImmediate
, 0>(true);
764 cmd
.Init(kServiceSamplerId
, GL_TEXTURE_MAG_FILTER
, &temp
[0]);
765 EXPECT_CALL(*gl_
, SamplerParameteri(
766 kServiceSamplerId
, GL_TEXTURE_MAG_FILTER
,
767 *reinterpret_cast<GLint
*>(ImmediateDataAddress(&cmd
))));
768 decoder_
->set_unsafe_es3_apis_enabled(true);
769 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
770 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
771 decoder_
->set_unsafe_es3_apis_enabled(false);
772 EXPECT_EQ(error::kUnknownCommand
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
775 TEST_P(GLES2DecoderTest2
, ScissorValidArgs
) {
776 EXPECT_CALL(*gl_
, Scissor(1, 2, 3, 4));
777 SpecializedSetup
<cmds::Scissor
, 0>(true);
779 cmd
.Init(1, 2, 3, 4);
780 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
781 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
784 TEST_P(GLES2DecoderTest2
, ScissorInvalidArgs2_0
) {
785 EXPECT_CALL(*gl_
, Scissor(_
, _
, _
, _
)).Times(0);
786 SpecializedSetup
<cmds::Scissor
, 0>(false);
788 cmd
.Init(1, 2, -1, 4);
789 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
790 EXPECT_EQ(GL_INVALID_VALUE
, GetGLError());
793 TEST_P(GLES2DecoderTest2
, ScissorInvalidArgs3_0
) {
794 EXPECT_CALL(*gl_
, Scissor(_
, _
, _
, _
)).Times(0);
795 SpecializedSetup
<cmds::Scissor
, 0>(false);
797 cmd
.Init(1, 2, 3, -1);
798 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
799 EXPECT_EQ(GL_INVALID_VALUE
, GetGLError());
801 // TODO(gman): ShaderBinary
803 TEST_P(GLES2DecoderTest2
, ShaderSourceBucketValidArgs
) {
804 const uint32 kBucketId
= 123;
805 const char kSource0
[] = "hello";
806 const char* kSource
[] = {kSource0
};
807 const char kValidStrEnd
= 0;
808 SetBucketAsCStrings(kBucketId
, 1, kSource
, 1, kValidStrEnd
);
809 cmds::ShaderSourceBucket cmd
;
810 cmd
.Init(client_shader_id_
, kBucketId
);
811 decoder_
->set_unsafe_es3_apis_enabled(true);
812 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
815 TEST_P(GLES2DecoderTest2
, ShaderSourceBucketInvalidArgs
) {
816 const uint32 kBucketId
= 123;
817 const char kSource0
[] = "hello";
818 const char* kSource
[] = {kSource0
};
819 const char kValidStrEnd
= 0;
820 decoder_
->set_unsafe_es3_apis_enabled(true);
821 cmds::ShaderSourceBucket cmd
;
823 cmd
.Init(client_shader_id_
, kBucketId
);
824 EXPECT_NE(error::kNoError
, ExecuteCmd(cmd
));
825 // Test invalid client.
826 SetBucketAsCStrings(kBucketId
, 1, kSource
, 1, kValidStrEnd
);
827 cmd
.Init(kInvalidClientId
, kBucketId
);
828 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
829 EXPECT_EQ(GL_INVALID_VALUE
, GetGLError());
832 TEST_P(GLES2DecoderTest2
, ShaderSourceBucketInvalidHeader
) {
833 const uint32 kBucketId
= 123;
834 const char kSource0
[] = "hello";
835 const char* kSource
[] = {kSource0
};
836 const char kValidStrEnd
= 0;
837 const GLsizei kCount
= static_cast<GLsizei
>(arraysize(kSource
));
838 const GLsizei kTests
[] = {
839 kCount
+ 1, 0, std::numeric_limits
<GLsizei
>::max(), -1,
841 decoder_
->set_unsafe_es3_apis_enabled(true);
842 for (size_t ii
= 0; ii
< arraysize(kTests
); ++ii
) {
843 SetBucketAsCStrings(kBucketId
, 1, kSource
, kTests
[ii
], kValidStrEnd
);
844 cmds::ShaderSourceBucket cmd
;
845 cmd
.Init(client_shader_id_
, kBucketId
);
846 EXPECT_EQ(error::kInvalidArguments
, ExecuteCmd(cmd
));
850 TEST_P(GLES2DecoderTest2
, ShaderSourceBucketInvalidStringEnding
) {
851 const uint32 kBucketId
= 123;
852 const char kSource0
[] = "hello";
853 const char* kSource
[] = {kSource0
};
854 const char kInvalidStrEnd
= '*';
855 SetBucketAsCStrings(kBucketId
, 1, kSource
, 1, kInvalidStrEnd
);
856 cmds::ShaderSourceBucket cmd
;
857 cmd
.Init(client_shader_id_
, kBucketId
);
858 decoder_
->set_unsafe_es3_apis_enabled(true);
859 EXPECT_EQ(error::kInvalidArguments
, ExecuteCmd(cmd
));
862 TEST_P(GLES2DecoderTest2
, StencilFuncValidArgs
) {
863 EXPECT_CALL(*gl_
, StencilFunc(GL_NEVER
, 2, 3));
864 SpecializedSetup
<cmds::StencilFunc
, 0>(true);
865 cmds::StencilFunc cmd
;
866 cmd
.Init(GL_NEVER
, 2, 3);
867 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
868 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
871 TEST_P(GLES2DecoderTest2
, StencilFuncSeparateValidArgs
) {
872 EXPECT_CALL(*gl_
, StencilFuncSeparate(GL_FRONT
, GL_NEVER
, 3, 4));
873 SpecializedSetup
<cmds::StencilFuncSeparate
, 0>(true);
874 cmds::StencilFuncSeparate cmd
;
875 cmd
.Init(GL_FRONT
, GL_NEVER
, 3, 4);
876 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
877 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
880 TEST_P(GLES2DecoderTest2
, StencilMaskValidArgs
) {
881 SpecializedSetup
<cmds::StencilMask
, 0>(true);
882 cmds::StencilMask cmd
;
884 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
885 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
888 TEST_P(GLES2DecoderTest2
, StencilMaskSeparateValidArgs
) {
889 SpecializedSetup
<cmds::StencilMaskSeparate
, 0>(true);
890 cmds::StencilMaskSeparate cmd
;
891 cmd
.Init(GL_FRONT
, 2);
892 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
893 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
896 TEST_P(GLES2DecoderTest2
, StencilOpValidArgs
) {
897 EXPECT_CALL(*gl_
, StencilOp(GL_KEEP
, GL_INCR
, GL_KEEP
));
898 SpecializedSetup
<cmds::StencilOp
, 0>(true);
900 cmd
.Init(GL_KEEP
, GL_INCR
, GL_KEEP
);
901 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
902 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
905 TEST_P(GLES2DecoderTest2
, StencilOpSeparateValidArgs
) {
906 EXPECT_CALL(*gl_
, StencilOpSeparate(GL_FRONT
, GL_INCR
, GL_KEEP
, GL_KEEP
));
907 SpecializedSetup
<cmds::StencilOpSeparate
, 0>(true);
908 cmds::StencilOpSeparate cmd
;
909 cmd
.Init(GL_FRONT
, GL_INCR
, GL_KEEP
, GL_KEEP
);
910 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
911 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
913 // TODO(gman): TexImage2D
915 // TODO(gman): TexImage3D
917 TEST_P(GLES2DecoderTest2
, TexParameterfValidArgs
) {
919 TexParameterf(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, GL_NEAREST
));
920 SpecializedSetup
<cmds::TexParameterf
, 0>(true);
921 cmds::TexParameterf cmd
;
922 cmd
.Init(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, GL_NEAREST
);
923 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
924 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
927 TEST_P(GLES2DecoderTest2
, TexParameterfInvalidArgs0_0
) {
928 EXPECT_CALL(*gl_
, TexParameterf(_
, _
, _
)).Times(0);
929 SpecializedSetup
<cmds::TexParameterf
, 0>(false);
930 cmds::TexParameterf cmd
;
931 cmd
.Init(GL_TEXTURE_1D
, GL_TEXTURE_MAG_FILTER
, GL_NEAREST
);
932 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
933 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
936 TEST_P(GLES2DecoderTest2
, TexParameterfInvalidArgs0_1
) {
937 EXPECT_CALL(*gl_
, TexParameterf(_
, _
, _
)).Times(0);
938 SpecializedSetup
<cmds::TexParameterf
, 0>(false);
939 cmds::TexParameterf cmd
;
940 cmd
.Init(GL_TEXTURE_3D
, GL_TEXTURE_MAG_FILTER
, GL_NEAREST
);
941 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
942 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
945 TEST_P(GLES2DecoderTest2
, TexParameterfInvalidArgs1_0
) {
946 EXPECT_CALL(*gl_
, TexParameterf(_
, _
, _
)).Times(0);
947 SpecializedSetup
<cmds::TexParameterf
, 0>(false);
948 cmds::TexParameterf cmd
;
949 cmd
.Init(GL_TEXTURE_2D
, GL_GENERATE_MIPMAP
, GL_NEAREST
);
950 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
951 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
954 TEST_P(GLES2DecoderTest2
, TexParameterfvImmediateValidArgs
) {
955 cmds::TexParameterfvImmediate
& cmd
=
956 *GetImmediateAs
<cmds::TexParameterfvImmediate
>();
957 SpecializedSetup
<cmds::TexParameterfvImmediate
, 0>(true);
961 cmd
.Init(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, &temp
[0]);
964 TexParameterf(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
,
965 *reinterpret_cast<GLfloat
*>(ImmediateDataAddress(&cmd
))));
966 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
967 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
970 TEST_P(GLES2DecoderTest2
, TexParameterfvImmediateInvalidArgs0_0
) {
971 cmds::TexParameterfvImmediate
& cmd
=
972 *GetImmediateAs
<cmds::TexParameterfvImmediate
>();
973 EXPECT_CALL(*gl_
, TexParameterf(_
, _
, _
)).Times(0);
975 SpecializedSetup
<cmds::TexParameterfvImmediate
, 0>(false);
979 cmd
.Init(GL_TEXTURE_1D
, GL_TEXTURE_MAG_FILTER
, &temp
[0]);
980 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
982 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
985 TEST_P(GLES2DecoderTest2
, TexParameterfvImmediateInvalidArgs0_1
) {
986 cmds::TexParameterfvImmediate
& cmd
=
987 *GetImmediateAs
<cmds::TexParameterfvImmediate
>();
988 EXPECT_CALL(*gl_
, TexParameterf(_
, _
, _
)).Times(0);
990 SpecializedSetup
<cmds::TexParameterfvImmediate
, 0>(false);
994 cmd
.Init(GL_TEXTURE_3D
, GL_TEXTURE_MAG_FILTER
, &temp
[0]);
995 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
997 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
1000 TEST_P(GLES2DecoderTest2
, TexParameterfvImmediateInvalidArgs1_0
) {
1001 cmds::TexParameterfvImmediate
& cmd
=
1002 *GetImmediateAs
<cmds::TexParameterfvImmediate
>();
1003 EXPECT_CALL(*gl_
, TexParameterf(_
, _
, _
)).Times(0);
1005 SpecializedSetup
<cmds::TexParameterfvImmediate
, 0>(false);
1009 cmd
.Init(GL_TEXTURE_2D
, GL_GENERATE_MIPMAP
, &temp
[0]);
1010 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1012 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
1015 TEST_P(GLES2DecoderTest2
, TexParameteriValidArgs
) {
1017 TexParameteri(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, GL_NEAREST
));
1018 SpecializedSetup
<cmds::TexParameteri
, 0>(true);
1019 cmds::TexParameteri cmd
;
1020 cmd
.Init(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, GL_NEAREST
);
1021 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1022 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1025 TEST_P(GLES2DecoderTest2
, TexParameteriInvalidArgs0_0
) {
1026 EXPECT_CALL(*gl_
, TexParameteri(_
, _
, _
)).Times(0);
1027 SpecializedSetup
<cmds::TexParameteri
, 0>(false);
1028 cmds::TexParameteri cmd
;
1029 cmd
.Init(GL_TEXTURE_1D
, GL_TEXTURE_MAG_FILTER
, GL_NEAREST
);
1030 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1031 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
1034 TEST_P(GLES2DecoderTest2
, TexParameteriInvalidArgs0_1
) {
1035 EXPECT_CALL(*gl_
, TexParameteri(_
, _
, _
)).Times(0);
1036 SpecializedSetup
<cmds::TexParameteri
, 0>(false);
1037 cmds::TexParameteri cmd
;
1038 cmd
.Init(GL_TEXTURE_3D
, GL_TEXTURE_MAG_FILTER
, GL_NEAREST
);
1039 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1040 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
1043 TEST_P(GLES2DecoderTest2
, TexParameteriInvalidArgs1_0
) {
1044 EXPECT_CALL(*gl_
, TexParameteri(_
, _
, _
)).Times(0);
1045 SpecializedSetup
<cmds::TexParameteri
, 0>(false);
1046 cmds::TexParameteri cmd
;
1047 cmd
.Init(GL_TEXTURE_2D
, GL_GENERATE_MIPMAP
, GL_NEAREST
);
1048 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1049 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
1052 TEST_P(GLES2DecoderTest2
, TexParameterivImmediateValidArgs
) {
1053 cmds::TexParameterivImmediate
& cmd
=
1054 *GetImmediateAs
<cmds::TexParameterivImmediate
>();
1055 SpecializedSetup
<cmds::TexParameterivImmediate
, 0>(true);
1059 cmd
.Init(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, &temp
[0]);
1060 EXPECT_CALL(*gl_
, TexParameteri(
1061 GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
,
1062 *reinterpret_cast<GLint
*>(ImmediateDataAddress(&cmd
))));
1063 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1064 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1067 TEST_P(GLES2DecoderTest2
, TexParameterivImmediateInvalidArgs0_0
) {
1068 cmds::TexParameterivImmediate
& cmd
=
1069 *GetImmediateAs
<cmds::TexParameterivImmediate
>();
1070 EXPECT_CALL(*gl_
, TexParameteri(_
, _
, _
)).Times(0);
1072 SpecializedSetup
<cmds::TexParameterivImmediate
, 0>(false);
1076 cmd
.Init(GL_TEXTURE_1D
, GL_TEXTURE_MAG_FILTER
, &temp
[0]);
1077 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1079 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
1082 TEST_P(GLES2DecoderTest2
, TexParameterivImmediateInvalidArgs0_1
) {
1083 cmds::TexParameterivImmediate
& cmd
=
1084 *GetImmediateAs
<cmds::TexParameterivImmediate
>();
1085 EXPECT_CALL(*gl_
, TexParameteri(_
, _
, _
)).Times(0);
1087 SpecializedSetup
<cmds::TexParameterivImmediate
, 0>(false);
1091 cmd
.Init(GL_TEXTURE_3D
, GL_TEXTURE_MAG_FILTER
, &temp
[0]);
1092 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1094 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
1097 TEST_P(GLES2DecoderTest2
, TexParameterivImmediateInvalidArgs1_0
) {
1098 cmds::TexParameterivImmediate
& cmd
=
1099 *GetImmediateAs
<cmds::TexParameterivImmediate
>();
1100 EXPECT_CALL(*gl_
, TexParameteri(_
, _
, _
)).Times(0);
1102 SpecializedSetup
<cmds::TexParameterivImmediate
, 0>(false);
1106 cmd
.Init(GL_TEXTURE_2D
, GL_GENERATE_MIPMAP
, &temp
[0]);
1107 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1109 EXPECT_EQ(GL_INVALID_ENUM
, GetGLError());
1112 TEST_P(GLES2DecoderTest2
, TexStorage3DValidArgs
) {
1113 EXPECT_CALL(*gl_
, TexStorage3D(GL_TEXTURE_3D
, 2, GL_RGB565
, 4, 5, 6));
1114 SpecializedSetup
<cmds::TexStorage3D
, 0>(true);
1115 cmds::TexStorage3D cmd
;
1116 cmd
.Init(GL_TEXTURE_3D
, 2, GL_RGB565
, 4, 5, 6);
1117 decoder_
->set_unsafe_es3_apis_enabled(true);
1118 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1119 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1120 decoder_
->set_unsafe_es3_apis_enabled(false);
1121 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
1123 // TODO(gman): TexSubImage2D
1125 // TODO(gman): TexSubImage3D
1127 TEST_P(GLES2DecoderTest2
, TransformFeedbackVaryingsBucketValidArgs
) {
1128 EXPECT_CALL(*gl_
, TransformFeedbackVaryings(kServiceProgramId
, 1, _
,
1129 GL_INTERLEAVED_ATTRIBS
));
1130 const uint32 kBucketId
= 123;
1131 const char kSource0
[] = "hello";
1132 const char* kSource
[] = {kSource0
};
1133 const char kValidStrEnd
= 0;
1134 SetBucketAsCStrings(kBucketId
, 1, kSource
, 1, kValidStrEnd
);
1135 cmds::TransformFeedbackVaryingsBucket cmd
;
1136 cmd
.Init(client_program_id_
, kBucketId
, GL_INTERLEAVED_ATTRIBS
);
1137 decoder_
->set_unsafe_es3_apis_enabled(true);
1138 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1139 decoder_
->set_unsafe_es3_apis_enabled(false);
1140 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
1143 TEST_P(GLES2DecoderTest2
, TransformFeedbackVaryingsBucketInvalidArgs
) {
1144 const uint32 kBucketId
= 123;
1145 const char kSource0
[] = "hello";
1146 const char* kSource
[] = {kSource0
};
1147 const char kValidStrEnd
= 0;
1148 decoder_
->set_unsafe_es3_apis_enabled(true);
1149 cmds::TransformFeedbackVaryingsBucket cmd
;
1151 cmd
.Init(client_program_id_
, kBucketId
, GL_INTERLEAVED_ATTRIBS
);
1152 EXPECT_NE(error::kNoError
, ExecuteCmd(cmd
));
1153 // Test invalid client.
1154 SetBucketAsCStrings(kBucketId
, 1, kSource
, 1, kValidStrEnd
);
1155 cmd
.Init(kInvalidClientId
, kBucketId
, GL_INTERLEAVED_ATTRIBS
);
1156 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1157 EXPECT_EQ(GL_INVALID_VALUE
, GetGLError());
1160 TEST_P(GLES2DecoderTest2
, TransformFeedbackVaryingsBucketInvalidHeader
) {
1161 const uint32 kBucketId
= 123;
1162 const char kSource0
[] = "hello";
1163 const char* kSource
[] = {kSource0
};
1164 const char kValidStrEnd
= 0;
1165 const GLsizei kCount
= static_cast<GLsizei
>(arraysize(kSource
));
1166 const GLsizei kTests
[] = {
1167 kCount
+ 1, 0, std::numeric_limits
<GLsizei
>::max(), -1,
1169 decoder_
->set_unsafe_es3_apis_enabled(true);
1170 for (size_t ii
= 0; ii
< arraysize(kTests
); ++ii
) {
1171 SetBucketAsCStrings(kBucketId
, 1, kSource
, kTests
[ii
], kValidStrEnd
);
1172 cmds::TransformFeedbackVaryingsBucket cmd
;
1173 cmd
.Init(client_program_id_
, kBucketId
, GL_INTERLEAVED_ATTRIBS
);
1174 EXPECT_EQ(error::kInvalidArguments
, ExecuteCmd(cmd
));
1178 TEST_P(GLES2DecoderTest2
, TransformFeedbackVaryingsBucketInvalidStringEnding
) {
1179 const uint32 kBucketId
= 123;
1180 const char kSource0
[] = "hello";
1181 const char* kSource
[] = {kSource0
};
1182 const char kInvalidStrEnd
= '*';
1183 SetBucketAsCStrings(kBucketId
, 1, kSource
, 1, kInvalidStrEnd
);
1184 cmds::TransformFeedbackVaryingsBucket cmd
;
1185 cmd
.Init(client_program_id_
, kBucketId
, GL_INTERLEAVED_ATTRIBS
);
1186 decoder_
->set_unsafe_es3_apis_enabled(true);
1187 EXPECT_EQ(error::kInvalidArguments
, ExecuteCmd(cmd
));
1190 TEST_P(GLES2DecoderTest2
, Uniform1fValidArgs
) {
1191 EXPECT_CALL(*gl_
, Uniform1fv(1, 1, _
));
1192 SpecializedSetup
<cmds::Uniform1f
, 0>(true);
1193 cmds::Uniform1f cmd
;
1195 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1196 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1199 TEST_P(GLES2DecoderTest2
, Uniform1fvImmediateValidArgs
) {
1200 cmds::Uniform1fvImmediate
& cmd
= *GetImmediateAs
<cmds::Uniform1fvImmediate
>();
1203 Uniform1fv(1, 2, reinterpret_cast<GLfloat
*>(ImmediateDataAddress(&cmd
))));
1204 SpecializedSetup
<cmds::Uniform1fvImmediate
, 0>(true);
1205 GLfloat temp
[1 * 2] = {
1208 cmd
.Init(1, 2, &temp
[0]);
1209 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1210 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1212 // TODO(gman): Uniform1i
1213 // TODO(gman): Uniform1ivImmediate
1215 TEST_P(GLES2DecoderTest2
, Uniform1uiValidArgs
) {
1216 EXPECT_CALL(*gl_
, Uniform1uiv(1, 1, _
));
1217 SpecializedSetup
<cmds::Uniform1ui
, 0>(true);
1218 cmds::Uniform1ui cmd
;
1220 decoder_
->set_unsafe_es3_apis_enabled(true);
1221 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1222 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1223 decoder_
->set_unsafe_es3_apis_enabled(false);
1224 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
1227 TEST_P(GLES2DecoderTest2
, Uniform1uivImmediateValidArgs
) {
1228 cmds::Uniform1uivImmediate
& cmd
=
1229 *GetImmediateAs
<cmds::Uniform1uivImmediate
>();
1232 Uniform1uiv(1, 2, reinterpret_cast<GLuint
*>(ImmediateDataAddress(&cmd
))));
1233 SpecializedSetup
<cmds::Uniform1uivImmediate
, 0>(true);
1234 GLuint temp
[1 * 2] = {
1237 cmd
.Init(1, 2, &temp
[0]);
1238 decoder_
->set_unsafe_es3_apis_enabled(true);
1239 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1240 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1241 decoder_
->set_unsafe_es3_apis_enabled(false);
1242 EXPECT_EQ(error::kUnknownCommand
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1245 TEST_P(GLES2DecoderTest2
, Uniform2fValidArgs
) {
1246 EXPECT_CALL(*gl_
, Uniform2fv(1, 1, _
));
1247 SpecializedSetup
<cmds::Uniform2f
, 0>(true);
1248 cmds::Uniform2f cmd
;
1250 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1251 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1254 TEST_P(GLES2DecoderTest2
, Uniform2fvImmediateValidArgs
) {
1255 cmds::Uniform2fvImmediate
& cmd
= *GetImmediateAs
<cmds::Uniform2fvImmediate
>();
1258 Uniform2fv(1, 2, reinterpret_cast<GLfloat
*>(ImmediateDataAddress(&cmd
))));
1259 SpecializedSetup
<cmds::Uniform2fvImmediate
, 0>(true);
1260 GLfloat temp
[2 * 2] = {
1263 cmd
.Init(1, 2, &temp
[0]);
1264 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1265 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1268 TEST_P(GLES2DecoderTest2
, Uniform2iValidArgs
) {
1269 EXPECT_CALL(*gl_
, Uniform2iv(1, 1, _
));
1270 SpecializedSetup
<cmds::Uniform2i
, 0>(true);
1271 cmds::Uniform2i cmd
;
1273 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1274 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1277 TEST_P(GLES2DecoderTest2
, Uniform2ivImmediateValidArgs
) {
1278 cmds::Uniform2ivImmediate
& cmd
= *GetImmediateAs
<cmds::Uniform2ivImmediate
>();
1281 Uniform2iv(1, 2, reinterpret_cast<GLint
*>(ImmediateDataAddress(&cmd
))));
1282 SpecializedSetup
<cmds::Uniform2ivImmediate
, 0>(true);
1283 GLint temp
[2 * 2] = {
1286 cmd
.Init(1, 2, &temp
[0]);
1287 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1288 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1291 TEST_P(GLES2DecoderTest2
, Uniform2uiValidArgs
) {
1292 EXPECT_CALL(*gl_
, Uniform2uiv(1, 1, _
));
1293 SpecializedSetup
<cmds::Uniform2ui
, 0>(true);
1294 cmds::Uniform2ui cmd
;
1296 decoder_
->set_unsafe_es3_apis_enabled(true);
1297 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1298 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1299 decoder_
->set_unsafe_es3_apis_enabled(false);
1300 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
1303 TEST_P(GLES2DecoderTest2
, Uniform2uivImmediateValidArgs
) {
1304 cmds::Uniform2uivImmediate
& cmd
=
1305 *GetImmediateAs
<cmds::Uniform2uivImmediate
>();
1308 Uniform2uiv(1, 2, reinterpret_cast<GLuint
*>(ImmediateDataAddress(&cmd
))));
1309 SpecializedSetup
<cmds::Uniform2uivImmediate
, 0>(true);
1310 GLuint temp
[2 * 2] = {
1313 cmd
.Init(1, 2, &temp
[0]);
1314 decoder_
->set_unsafe_es3_apis_enabled(true);
1315 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1316 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1317 decoder_
->set_unsafe_es3_apis_enabled(false);
1318 EXPECT_EQ(error::kUnknownCommand
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1321 TEST_P(GLES2DecoderTest2
, Uniform3fValidArgs
) {
1322 EXPECT_CALL(*gl_
, Uniform3fv(1, 1, _
));
1323 SpecializedSetup
<cmds::Uniform3f
, 0>(true);
1324 cmds::Uniform3f cmd
;
1325 cmd
.Init(1, 2, 3, 4);
1326 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1327 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1330 TEST_P(GLES2DecoderTest2
, Uniform3fvImmediateValidArgs
) {
1331 cmds::Uniform3fvImmediate
& cmd
= *GetImmediateAs
<cmds::Uniform3fvImmediate
>();
1334 Uniform3fv(1, 2, reinterpret_cast<GLfloat
*>(ImmediateDataAddress(&cmd
))));
1335 SpecializedSetup
<cmds::Uniform3fvImmediate
, 0>(true);
1336 GLfloat temp
[3 * 2] = {
1339 cmd
.Init(1, 2, &temp
[0]);
1340 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1341 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1344 TEST_P(GLES2DecoderTest2
, Uniform3iValidArgs
) {
1345 EXPECT_CALL(*gl_
, Uniform3iv(1, 1, _
));
1346 SpecializedSetup
<cmds::Uniform3i
, 0>(true);
1347 cmds::Uniform3i cmd
;
1348 cmd
.Init(1, 2, 3, 4);
1349 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1350 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1353 TEST_P(GLES2DecoderTest2
, Uniform3ivImmediateValidArgs
) {
1354 cmds::Uniform3ivImmediate
& cmd
= *GetImmediateAs
<cmds::Uniform3ivImmediate
>();
1357 Uniform3iv(1, 2, reinterpret_cast<GLint
*>(ImmediateDataAddress(&cmd
))));
1358 SpecializedSetup
<cmds::Uniform3ivImmediate
, 0>(true);
1359 GLint temp
[3 * 2] = {
1362 cmd
.Init(1, 2, &temp
[0]);
1363 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1364 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1367 TEST_P(GLES2DecoderTest2
, Uniform3uiValidArgs
) {
1368 EXPECT_CALL(*gl_
, Uniform3uiv(1, 1, _
));
1369 SpecializedSetup
<cmds::Uniform3ui
, 0>(true);
1370 cmds::Uniform3ui cmd
;
1371 cmd
.Init(1, 2, 3, 4);
1372 decoder_
->set_unsafe_es3_apis_enabled(true);
1373 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1374 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1375 decoder_
->set_unsafe_es3_apis_enabled(false);
1376 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
1379 TEST_P(GLES2DecoderTest2
, Uniform3uivImmediateValidArgs
) {
1380 cmds::Uniform3uivImmediate
& cmd
=
1381 *GetImmediateAs
<cmds::Uniform3uivImmediate
>();
1384 Uniform3uiv(1, 2, reinterpret_cast<GLuint
*>(ImmediateDataAddress(&cmd
))));
1385 SpecializedSetup
<cmds::Uniform3uivImmediate
, 0>(true);
1386 GLuint temp
[3 * 2] = {
1389 cmd
.Init(1, 2, &temp
[0]);
1390 decoder_
->set_unsafe_es3_apis_enabled(true);
1391 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1392 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1393 decoder_
->set_unsafe_es3_apis_enabled(false);
1394 EXPECT_EQ(error::kUnknownCommand
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1397 TEST_P(GLES2DecoderTest2
, Uniform4fValidArgs
) {
1398 EXPECT_CALL(*gl_
, Uniform4fv(1, 1, _
));
1399 SpecializedSetup
<cmds::Uniform4f
, 0>(true);
1400 cmds::Uniform4f cmd
;
1401 cmd
.Init(1, 2, 3, 4, 5);
1402 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1403 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1406 TEST_P(GLES2DecoderTest2
, Uniform4fvImmediateValidArgs
) {
1407 cmds::Uniform4fvImmediate
& cmd
= *GetImmediateAs
<cmds::Uniform4fvImmediate
>();
1410 Uniform4fv(1, 2, reinterpret_cast<GLfloat
*>(ImmediateDataAddress(&cmd
))));
1411 SpecializedSetup
<cmds::Uniform4fvImmediate
, 0>(true);
1412 GLfloat temp
[4 * 2] = {
1415 cmd
.Init(1, 2, &temp
[0]);
1416 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1417 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1420 TEST_P(GLES2DecoderTest2
, Uniform4iValidArgs
) {
1421 EXPECT_CALL(*gl_
, Uniform4iv(1, 1, _
));
1422 SpecializedSetup
<cmds::Uniform4i
, 0>(true);
1423 cmds::Uniform4i cmd
;
1424 cmd
.Init(1, 2, 3, 4, 5);
1425 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1426 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1429 TEST_P(GLES2DecoderTest2
, Uniform4ivImmediateValidArgs
) {
1430 cmds::Uniform4ivImmediate
& cmd
= *GetImmediateAs
<cmds::Uniform4ivImmediate
>();
1433 Uniform4iv(1, 2, reinterpret_cast<GLint
*>(ImmediateDataAddress(&cmd
))));
1434 SpecializedSetup
<cmds::Uniform4ivImmediate
, 0>(true);
1435 GLint temp
[4 * 2] = {
1438 cmd
.Init(1, 2, &temp
[0]);
1439 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1440 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1443 TEST_P(GLES2DecoderTest2
, Uniform4uiValidArgs
) {
1444 EXPECT_CALL(*gl_
, Uniform4uiv(1, 1, _
));
1445 SpecializedSetup
<cmds::Uniform4ui
, 0>(true);
1446 cmds::Uniform4ui cmd
;
1447 cmd
.Init(1, 2, 3, 4, 5);
1448 decoder_
->set_unsafe_es3_apis_enabled(true);
1449 EXPECT_EQ(error::kNoError
, ExecuteCmd(cmd
));
1450 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1451 decoder_
->set_unsafe_es3_apis_enabled(false);
1452 EXPECT_EQ(error::kUnknownCommand
, ExecuteCmd(cmd
));
1455 TEST_P(GLES2DecoderTest2
, Uniform4uivImmediateValidArgs
) {
1456 cmds::Uniform4uivImmediate
& cmd
=
1457 *GetImmediateAs
<cmds::Uniform4uivImmediate
>();
1460 Uniform4uiv(1, 2, reinterpret_cast<GLuint
*>(ImmediateDataAddress(&cmd
))));
1461 SpecializedSetup
<cmds::Uniform4uivImmediate
, 0>(true);
1462 GLuint temp
[4 * 2] = {
1465 cmd
.Init(1, 2, &temp
[0]);
1466 decoder_
->set_unsafe_es3_apis_enabled(true);
1467 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1468 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1469 decoder_
->set_unsafe_es3_apis_enabled(false);
1470 EXPECT_EQ(error::kUnknownCommand
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1472 // TODO(gman): UniformBlockBinding
1474 TEST_P(GLES2DecoderTest2
, UniformMatrix2fvImmediateValidArgs
) {
1475 cmds::UniformMatrix2fvImmediate
& cmd
=
1476 *GetImmediateAs
<cmds::UniformMatrix2fvImmediate
>();
1478 UniformMatrix2fv(1, 2, false, reinterpret_cast<GLfloat
*>(
1479 ImmediateDataAddress(&cmd
))));
1480 SpecializedSetup
<cmds::UniformMatrix2fvImmediate
, 0>(true);
1481 GLfloat temp
[4 * 2] = {
1484 cmd
.Init(1, 2, &temp
[0]);
1485 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1486 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1489 TEST_P(GLES2DecoderTest2
, UniformMatrix2x3fvImmediateValidArgs
) {
1490 cmds::UniformMatrix2x3fvImmediate
& cmd
=
1491 *GetImmediateAs
<cmds::UniformMatrix2x3fvImmediate
>();
1493 UniformMatrix2x3fv(1, 2, false, reinterpret_cast<GLfloat
*>(
1494 ImmediateDataAddress(&cmd
))));
1495 SpecializedSetup
<cmds::UniformMatrix2x3fvImmediate
, 0>(true);
1496 GLfloat temp
[6 * 2] = {
1499 cmd
.Init(1, 2, &temp
[0]);
1500 decoder_
->set_unsafe_es3_apis_enabled(true);
1501 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1502 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1503 decoder_
->set_unsafe_es3_apis_enabled(false);
1504 EXPECT_EQ(error::kUnknownCommand
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1507 TEST_P(GLES2DecoderTest2
, UniformMatrix2x4fvImmediateValidArgs
) {
1508 cmds::UniformMatrix2x4fvImmediate
& cmd
=
1509 *GetImmediateAs
<cmds::UniformMatrix2x4fvImmediate
>();
1511 UniformMatrix2x4fv(1, 2, false, reinterpret_cast<GLfloat
*>(
1512 ImmediateDataAddress(&cmd
))));
1513 SpecializedSetup
<cmds::UniformMatrix2x4fvImmediate
, 0>(true);
1514 GLfloat temp
[8 * 2] = {
1517 cmd
.Init(1, 2, &temp
[0]);
1518 decoder_
->set_unsafe_es3_apis_enabled(true);
1519 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1520 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1521 decoder_
->set_unsafe_es3_apis_enabled(false);
1522 EXPECT_EQ(error::kUnknownCommand
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1525 TEST_P(GLES2DecoderTest2
, UniformMatrix3fvImmediateValidArgs
) {
1526 cmds::UniformMatrix3fvImmediate
& cmd
=
1527 *GetImmediateAs
<cmds::UniformMatrix3fvImmediate
>();
1529 UniformMatrix3fv(1, 2, false, reinterpret_cast<GLfloat
*>(
1530 ImmediateDataAddress(&cmd
))));
1531 SpecializedSetup
<cmds::UniformMatrix3fvImmediate
, 0>(true);
1532 GLfloat temp
[9 * 2] = {
1535 cmd
.Init(1, 2, &temp
[0]);
1536 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1537 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1540 TEST_P(GLES2DecoderTest2
, UniformMatrix3x2fvImmediateValidArgs
) {
1541 cmds::UniformMatrix3x2fvImmediate
& cmd
=
1542 *GetImmediateAs
<cmds::UniformMatrix3x2fvImmediate
>();
1544 UniformMatrix3x2fv(1, 2, false, reinterpret_cast<GLfloat
*>(
1545 ImmediateDataAddress(&cmd
))));
1546 SpecializedSetup
<cmds::UniformMatrix3x2fvImmediate
, 0>(true);
1547 GLfloat temp
[6 * 2] = {
1550 cmd
.Init(1, 2, &temp
[0]);
1551 decoder_
->set_unsafe_es3_apis_enabled(true);
1552 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1553 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1554 decoder_
->set_unsafe_es3_apis_enabled(false);
1555 EXPECT_EQ(error::kUnknownCommand
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1558 TEST_P(GLES2DecoderTest2
, UniformMatrix3x4fvImmediateValidArgs
) {
1559 cmds::UniformMatrix3x4fvImmediate
& cmd
=
1560 *GetImmediateAs
<cmds::UniformMatrix3x4fvImmediate
>();
1562 UniformMatrix3x4fv(1, 2, false, reinterpret_cast<GLfloat
*>(
1563 ImmediateDataAddress(&cmd
))));
1564 SpecializedSetup
<cmds::UniformMatrix3x4fvImmediate
, 0>(true);
1565 GLfloat temp
[12 * 2] = {
1568 cmd
.Init(1, 2, &temp
[0]);
1569 decoder_
->set_unsafe_es3_apis_enabled(true);
1570 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1571 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1572 decoder_
->set_unsafe_es3_apis_enabled(false);
1573 EXPECT_EQ(error::kUnknownCommand
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1576 TEST_P(GLES2DecoderTest2
, UniformMatrix4fvImmediateValidArgs
) {
1577 cmds::UniformMatrix4fvImmediate
& cmd
=
1578 *GetImmediateAs
<cmds::UniformMatrix4fvImmediate
>();
1580 UniformMatrix4fv(1, 2, false, reinterpret_cast<GLfloat
*>(
1581 ImmediateDataAddress(&cmd
))));
1582 SpecializedSetup
<cmds::UniformMatrix4fvImmediate
, 0>(true);
1583 GLfloat temp
[16 * 2] = {
1586 cmd
.Init(1, 2, &temp
[0]);
1587 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1588 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1591 TEST_P(GLES2DecoderTest2
, UniformMatrix4x2fvImmediateValidArgs
) {
1592 cmds::UniformMatrix4x2fvImmediate
& cmd
=
1593 *GetImmediateAs
<cmds::UniformMatrix4x2fvImmediate
>();
1595 UniformMatrix4x2fv(1, 2, false, reinterpret_cast<GLfloat
*>(
1596 ImmediateDataAddress(&cmd
))));
1597 SpecializedSetup
<cmds::UniformMatrix4x2fvImmediate
, 0>(true);
1598 GLfloat temp
[8 * 2] = {
1601 cmd
.Init(1, 2, &temp
[0]);
1602 decoder_
->set_unsafe_es3_apis_enabled(true);
1603 EXPECT_EQ(error::kNoError
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1604 EXPECT_EQ(GL_NO_ERROR
, GetGLError());
1605 decoder_
->set_unsafe_es3_apis_enabled(false);
1606 EXPECT_EQ(error::kUnknownCommand
, ExecuteImmediateCmd(cmd
, sizeof(temp
)));
1608 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_