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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h

Issue 289993002: Remove shm versions of immediate commands from command buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@functions-with-extension-flag
Patch Set: try to avoid compiler warning on buffer overflow and template specialization linker problem with tw… Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file is auto-generated from 5 // This file is auto-generated from
6 // gpu/command_buffer/build_gles2_cmd_buffer.py 6 // gpu/command_buffer/build_gles2_cmd_buffer.py
7 // It's formatted by clang-format using chromium coding style: 7 // It's formatted by clang-format using chromium coding style:
8 // clang-format -i -style=chromium filename 8 // clang-format -i -style=chromium filename
9 // DO NOT EDIT! 9 // DO NOT EDIT!
10 10
11 // It is included by gles2_cmd_decoder_unittest_2.cc 11 // It is included by gles2_cmd_decoder_unittest_2.cc
12 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_ 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_ 13 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
14 14
15 TEST_P(GLES2DecoderTest2, IsRenderbufferValidArgs) {
16 SpecializedSetup<cmds::IsRenderbuffer, 0>(true);
17 cmds::IsRenderbuffer cmd;
18 cmd.Init(client_renderbuffer_id_, shared_memory_id_, shared_memory_offset_);
19 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
20 EXPECT_EQ(GL_NO_ERROR, GetGLError());
21 }
22
23 TEST_P(GLES2DecoderTest2, IsRenderbufferInvalidArgsBadSharedMemoryId) {
24 SpecializedSetup<cmds::IsRenderbuffer, 0>(false);
25 cmds::IsRenderbuffer cmd;
26 cmd.Init(
27 client_renderbuffer_id_, kInvalidSharedMemoryId, shared_memory_offset_);
28 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
29 cmd.Init(
30 client_renderbuffer_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
31 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
32 }
33
34 TEST_P(GLES2DecoderTest2, IsShaderValidArgs) {
35 SpecializedSetup<cmds::IsShader, 0>(true);
36 cmds::IsShader cmd;
37 cmd.Init(client_shader_id_, shared_memory_id_, shared_memory_offset_);
38 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
39 EXPECT_EQ(GL_NO_ERROR, GetGLError());
40 }
41
42 TEST_P(GLES2DecoderTest2, IsShaderInvalidArgsBadSharedMemoryId) {
43 SpecializedSetup<cmds::IsShader, 0>(false);
44 cmds::IsShader cmd;
45 cmd.Init(client_shader_id_, kInvalidSharedMemoryId, shared_memory_offset_);
46 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
47 cmd.Init(client_shader_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
48 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
49 }
50
51 TEST_P(GLES2DecoderTest2, IsTextureValidArgs) {
52 SpecializedSetup<cmds::IsTexture, 0>(true);
53 cmds::IsTexture cmd;
54 cmd.Init(client_texture_id_, shared_memory_id_, shared_memory_offset_);
55 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
56 EXPECT_EQ(GL_NO_ERROR, GetGLError());
57 }
58
59 TEST_P(GLES2DecoderTest2, IsTextureInvalidArgsBadSharedMemoryId) {
60 SpecializedSetup<cmds::IsTexture, 0>(false);
61 cmds::IsTexture cmd;
62 cmd.Init(client_texture_id_, kInvalidSharedMemoryId, shared_memory_offset_);
63 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
64 cmd.Init(client_texture_id_, shared_memory_id_, kInvalidSharedMemoryOffset);
65 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
66 }
67
68 TEST_P(GLES2DecoderTest2, LineWidthValidArgs) {
69 EXPECT_CALL(*gl_, LineWidth(0.5f));
70 SpecializedSetup<cmds::LineWidth, 0>(true);
71 cmds::LineWidth cmd;
72 cmd.Init(0.5f);
73 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
74 EXPECT_EQ(GL_NO_ERROR, GetGLError());
75 }
76
77 TEST_P(GLES2DecoderTest2, LineWidthInvalidValue0_0) {
78 SpecializedSetup<cmds::LineWidth, 0>(false);
79 cmds::LineWidth cmd;
80 cmd.Init(0.0f);
81 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
82 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
83 }
84
85 TEST_P(GLES2DecoderTest2, LinkProgramValidArgs) {
86 EXPECT_CALL(*gl_, LinkProgram(kServiceProgramId));
87 SpecializedSetup<cmds::LinkProgram, 0>(true);
88 cmds::LinkProgram cmd;
89 cmd.Init(client_program_id_);
90 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
91 EXPECT_EQ(GL_NO_ERROR, GetGLError());
92 }
93 // TODO(gman): PixelStorei
94
95 TEST_P(GLES2DecoderTest2, PolygonOffsetValidArgs) {
96 EXPECT_CALL(*gl_, PolygonOffset(1, 2));
97 SpecializedSetup<cmds::PolygonOffset, 0>(true);
98 cmds::PolygonOffset cmd;
99 cmd.Init(1, 2);
100 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
101 EXPECT_EQ(GL_NO_ERROR, GetGLError());
102 }
103 // TODO(gman): ReadPixels
104
105 // TODO(gman): ReleaseShaderCompiler 15 // TODO(gman): ReleaseShaderCompiler
106 16
107 TEST_P(GLES2DecoderTest2, RenderbufferStorageValidArgs) { 17 TEST_P(GLES2DecoderTest2, RenderbufferStorageValidArgs) {
108 SpecializedSetup<cmds::RenderbufferStorage, 0>(true); 18 SpecializedSetup<cmds::RenderbufferStorage, 0>(true);
109 cmds::RenderbufferStorage cmd; 19 cmds::RenderbufferStorage cmd;
110 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4); 20 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4);
111 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 21 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
112 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 22 EXPECT_EQ(GL_NO_ERROR, GetGLError());
113 } 23 }
114 24
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 173
264 TEST_P(GLES2DecoderTest2, TexParameterfInvalidArgs1_0) { 174 TEST_P(GLES2DecoderTest2, TexParameterfInvalidArgs1_0) {
265 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0); 175 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
266 SpecializedSetup<cmds::TexParameterf, 0>(false); 176 SpecializedSetup<cmds::TexParameterf, 0>(false);
267 cmds::TexParameterf cmd; 177 cmds::TexParameterf cmd;
268 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST); 178 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST);
269 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 179 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
270 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 180 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
271 } 181 }
272 182
273 TEST_P(GLES2DecoderTest2, TexParameterfvValidArgs) {
274 SpecializedSetup<cmds::TexParameterfv, 0>(true);
275 cmds::TexParameterfv cmd;
276 cmd.Init(GL_TEXTURE_2D,
277 GL_TEXTURE_MAG_FILTER,
278 shared_memory_id_,
279 shared_memory_offset_);
280 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST;
281 EXPECT_CALL(
282 *gl_,
283 TexParameterf(GL_TEXTURE_2D,
284 GL_TEXTURE_MAG_FILTER,
285 *reinterpret_cast<const GLfloat*>(shared_memory_address_)));
286 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
287 EXPECT_EQ(GL_NO_ERROR, GetGLError());
288 }
289
290 TEST_P(GLES2DecoderTest2, TexParameterfvInvalidArgs0_0) {
291 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
292 SpecializedSetup<cmds::TexParameterfv, 0>(false);
293 cmds::TexParameterfv cmd;
294 cmd.Init(GL_TEXTURE_1D,
295 GL_TEXTURE_MAG_FILTER,
296 shared_memory_id_,
297 shared_memory_offset_);
298 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST;
299 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
300 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
301 }
302
303 TEST_P(GLES2DecoderTest2, TexParameterfvInvalidArgs0_1) {
304 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
305 SpecializedSetup<cmds::TexParameterfv, 0>(false);
306 cmds::TexParameterfv cmd;
307 cmd.Init(GL_TEXTURE_3D,
308 GL_TEXTURE_MAG_FILTER,
309 shared_memory_id_,
310 shared_memory_offset_);
311 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST;
312 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
313 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
314 }
315
316 TEST_P(GLES2DecoderTest2, TexParameterfvInvalidArgs1_0) {
317 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
318 SpecializedSetup<cmds::TexParameterfv, 0>(false);
319 cmds::TexParameterfv cmd;
320 cmd.Init(GL_TEXTURE_2D,
321 GL_GENERATE_MIPMAP,
322 shared_memory_id_,
323 shared_memory_offset_);
324 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST;
325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
326 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
327 }
328
329 TEST_P(GLES2DecoderTest2, TexParameterfvInvalidArgs2_0) {
330 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
331 SpecializedSetup<cmds::TexParameterfv, 0>(false);
332 cmds::TexParameterfv cmd;
333 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0);
334 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST;
335 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
336 }
337
338 TEST_P(GLES2DecoderTest2, TexParameterfvInvalidArgs2_1) {
339 EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
340 SpecializedSetup<cmds::TexParameterfv, 0>(false);
341 cmds::TexParameterfv cmd;
342 cmd.Init(GL_TEXTURE_2D,
343 GL_TEXTURE_MAG_FILTER,
344 shared_memory_id_,
345 kInvalidSharedMemoryOffset);
346 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST;
347 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
348 }
349
350 TEST_P(GLES2DecoderTest2, TexParameterfvImmediateValidArgs) { 183 TEST_P(GLES2DecoderTest2, TexParameterfvImmediateValidArgs) {
351 cmds::TexParameterfvImmediate& cmd = 184 cmds::TexParameterfvImmediate& cmd =
352 *GetImmediateAs<cmds::TexParameterfvImmediate>(); 185 *GetImmediateAs<cmds::TexParameterfvImmediate>();
353 SpecializedSetup<cmds::TexParameterfvImmediate, 0>(true); 186 SpecializedSetup<cmds::TexParameterfvImmediate, 0>(true);
354 GLfloat temp[1] = { 187 GLfloat temp[1] = {
355 GL_NEAREST, 188 GL_NEAREST,
356 }; 189 };
357 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]); 190 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
358 EXPECT_CALL( 191 EXPECT_CALL(
359 *gl_, 192 *gl_,
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 266
434 TEST_P(GLES2DecoderTest2, TexParameteriInvalidArgs1_0) { 267 TEST_P(GLES2DecoderTest2, TexParameteriInvalidArgs1_0) {
435 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0); 268 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
436 SpecializedSetup<cmds::TexParameteri, 0>(false); 269 SpecializedSetup<cmds::TexParameteri, 0>(false);
437 cmds::TexParameteri cmd; 270 cmds::TexParameteri cmd;
438 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST); 271 cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_NEAREST);
439 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 272 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
440 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); 273 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
441 } 274 }
442 275
443 TEST_P(GLES2DecoderTest2, TexParameterivValidArgs) {
444 SpecializedSetup<cmds::TexParameteriv, 0>(true);
445 cmds::TexParameteriv cmd;
446 cmd.Init(GL_TEXTURE_2D,
447 GL_TEXTURE_MAG_FILTER,
448 shared_memory_id_,
449 shared_memory_offset_);
450 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST;
451 EXPECT_CALL(
452 *gl_,
453 TexParameteri(GL_TEXTURE_2D,
454 GL_TEXTURE_MAG_FILTER,
455 *reinterpret_cast<const GLint*>(shared_memory_address_)));
456 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
457 EXPECT_EQ(GL_NO_ERROR, GetGLError());
458 }
459
460 TEST_P(GLES2DecoderTest2, TexParameterivInvalidArgs0_0) {
461 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
462 SpecializedSetup<cmds::TexParameteriv, 0>(false);
463 cmds::TexParameteriv cmd;
464 cmd.Init(GL_TEXTURE_1D,
465 GL_TEXTURE_MAG_FILTER,
466 shared_memory_id_,
467 shared_memory_offset_);
468 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST;
469 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
470 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
471 }
472
473 TEST_P(GLES2DecoderTest2, TexParameterivInvalidArgs0_1) {
474 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
475 SpecializedSetup<cmds::TexParameteriv, 0>(false);
476 cmds::TexParameteriv cmd;
477 cmd.Init(GL_TEXTURE_3D,
478 GL_TEXTURE_MAG_FILTER,
479 shared_memory_id_,
480 shared_memory_offset_);
481 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST;
482 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
483 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
484 }
485
486 TEST_P(GLES2DecoderTest2, TexParameterivInvalidArgs1_0) {
487 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
488 SpecializedSetup<cmds::TexParameteriv, 0>(false);
489 cmds::TexParameteriv cmd;
490 cmd.Init(GL_TEXTURE_2D,
491 GL_GENERATE_MIPMAP,
492 shared_memory_id_,
493 shared_memory_offset_);
494 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST;
495 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
496 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
497 }
498
499 TEST_P(GLES2DecoderTest2, TexParameterivInvalidArgs2_0) {
500 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
501 SpecializedSetup<cmds::TexParameteriv, 0>(false);
502 cmds::TexParameteriv cmd;
503 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0);
504 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST;
505 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
506 }
507
508 TEST_P(GLES2DecoderTest2, TexParameterivInvalidArgs2_1) {
509 EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
510 SpecializedSetup<cmds::TexParameteriv, 0>(false);
511 cmds::TexParameteriv cmd;
512 cmd.Init(GL_TEXTURE_2D,
513 GL_TEXTURE_MAG_FILTER,
514 shared_memory_id_,
515 kInvalidSharedMemoryOffset);
516 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST;
517 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
518 }
519
520 TEST_P(GLES2DecoderTest2, TexParameterivImmediateValidArgs) { 276 TEST_P(GLES2DecoderTest2, TexParameterivImmediateValidArgs) {
521 cmds::TexParameterivImmediate& cmd = 277 cmds::TexParameterivImmediate& cmd =
522 *GetImmediateAs<cmds::TexParameterivImmediate>(); 278 *GetImmediateAs<cmds::TexParameterivImmediate>();
523 SpecializedSetup<cmds::TexParameterivImmediate, 0>(true); 279 SpecializedSetup<cmds::TexParameterivImmediate, 0>(true);
524 GLint temp[1] = { 280 GLint temp[1] = {
525 GL_NEAREST, 281 GL_NEAREST,
526 }; 282 };
527 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]); 283 cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
528 EXPECT_CALL( 284 EXPECT_CALL(
529 *gl_, 285 *gl_,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 332
577 TEST_P(GLES2DecoderTest2, Uniform1fValidArgs) { 333 TEST_P(GLES2DecoderTest2, Uniform1fValidArgs) {
578 EXPECT_CALL(*gl_, Uniform1fv(1, 1, _)); 334 EXPECT_CALL(*gl_, Uniform1fv(1, 1, _));
579 SpecializedSetup<cmds::Uniform1f, 0>(true); 335 SpecializedSetup<cmds::Uniform1f, 0>(true);
580 cmds::Uniform1f cmd; 336 cmds::Uniform1f cmd;
581 cmd.Init(1, 2); 337 cmd.Init(1, 2);
582 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 338 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
583 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 339 EXPECT_EQ(GL_NO_ERROR, GetGLError());
584 } 340 }
585 341
586 TEST_P(GLES2DecoderTest2, Uniform1fvValidArgs) {
587 EXPECT_CALL(
588 *gl_,
589 Uniform1fv(
590 1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
591 SpecializedSetup<cmds::Uniform1fv, 0>(true);
592 cmds::Uniform1fv cmd;
593 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
594 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
595 EXPECT_EQ(GL_NO_ERROR, GetGLError());
596 }
597
598 TEST_P(GLES2DecoderTest2, Uniform1fvInvalidArgs1_0) {
599 EXPECT_CALL(*gl_, Uniform1fv(_, _, _)).Times(0);
600 SpecializedSetup<cmds::Uniform1fv, 0>(false);
601 cmds::Uniform1fv cmd;
602 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
603 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
604 EXPECT_EQ(GL_NO_ERROR, GetGLError());
605 }
606
607 TEST_P(GLES2DecoderTest2, Uniform1fvInvalidArgs2_0) {
608 EXPECT_CALL(*gl_, Uniform1fv(_, _, _)).Times(0);
609 SpecializedSetup<cmds::Uniform1fv, 0>(false);
610 cmds::Uniform1fv cmd;
611 cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
612 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
613 }
614
615 TEST_P(GLES2DecoderTest2, Uniform1fvInvalidArgs2_1) {
616 EXPECT_CALL(*gl_, Uniform1fv(_, _, _)).Times(0);
617 SpecializedSetup<cmds::Uniform1fv, 0>(false);
618 cmds::Uniform1fv cmd;
619 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
620 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
621 }
622
623 TEST_P(GLES2DecoderTest2, Uniform1fvValidArgsCountTooLarge) {
624 EXPECT_CALL(
625 *gl_,
626 Uniform1fv(
627 3, 3, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
628 SpecializedSetup<cmds::Uniform1fv, 0>(true);
629 cmds::Uniform1fv cmd;
630 cmd.Init(ProgramManager::MakeFakeLocation(1, 1),
631 5,
632 shared_memory_id_,
633 shared_memory_offset_);
634 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
635 EXPECT_EQ(GL_NO_ERROR, GetGLError());
636 }
637
638 TEST_P(GLES2DecoderTest2, Uniform1fvImmediateValidArgs) { 342 TEST_P(GLES2DecoderTest2, Uniform1fvImmediateValidArgs) {
639 cmds::Uniform1fvImmediate& cmd = *GetImmediateAs<cmds::Uniform1fvImmediate>(); 343 cmds::Uniform1fvImmediate& cmd = *GetImmediateAs<cmds::Uniform1fvImmediate>();
640 EXPECT_CALL( 344 EXPECT_CALL(
641 *gl_, 345 *gl_,
642 Uniform1fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 346 Uniform1fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
643 SpecializedSetup<cmds::Uniform1fvImmediate, 0>(true); 347 SpecializedSetup<cmds::Uniform1fvImmediate, 0>(true);
644 GLfloat temp[1 * 2] = { 348 GLfloat temp[1 * 2] = {
645 0, 349 0,
646 }; 350 };
647 cmd.Init(1, 2, &temp[0]); 351 cmd.Init(1, 2, &temp[0]);
648 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 352 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
649 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 353 EXPECT_EQ(GL_NO_ERROR, GetGLError());
650 } 354 }
651 // TODO(gman): Uniform1i 355 // TODO(gman): Uniform1i
652 // TODO(gman): Uniform1iv
653 // TODO(gman): Uniform1ivImmediate 356 // TODO(gman): Uniform1ivImmediate
654 357
655 TEST_P(GLES2DecoderTest2, Uniform2fValidArgs) { 358 TEST_P(GLES2DecoderTest2, Uniform2fValidArgs) {
656 EXPECT_CALL(*gl_, Uniform2fv(1, 1, _)); 359 EXPECT_CALL(*gl_, Uniform2fv(1, 1, _));
657 SpecializedSetup<cmds::Uniform2f, 0>(true); 360 SpecializedSetup<cmds::Uniform2f, 0>(true);
658 cmds::Uniform2f cmd; 361 cmds::Uniform2f cmd;
659 cmd.Init(1, 2, 3); 362 cmd.Init(1, 2, 3);
660 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 363 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
661 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 364 EXPECT_EQ(GL_NO_ERROR, GetGLError());
662 } 365 }
663 366
664 TEST_P(GLES2DecoderTest2, Uniform2fvValidArgs) {
665 EXPECT_CALL(
666 *gl_,
667 Uniform2fv(
668 1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
669 SpecializedSetup<cmds::Uniform2fv, 0>(true);
670 cmds::Uniform2fv cmd;
671 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
672 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
673 EXPECT_EQ(GL_NO_ERROR, GetGLError());
674 }
675
676 TEST_P(GLES2DecoderTest2, Uniform2fvInvalidArgs1_0) {
677 EXPECT_CALL(*gl_, Uniform2fv(_, _, _)).Times(0);
678 SpecializedSetup<cmds::Uniform2fv, 0>(false);
679 cmds::Uniform2fv cmd;
680 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
681 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
682 EXPECT_EQ(GL_NO_ERROR, GetGLError());
683 }
684
685 TEST_P(GLES2DecoderTest2, Uniform2fvInvalidArgs2_0) {
686 EXPECT_CALL(*gl_, Uniform2fv(_, _, _)).Times(0);
687 SpecializedSetup<cmds::Uniform2fv, 0>(false);
688 cmds::Uniform2fv cmd;
689 cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
690 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
691 }
692
693 TEST_P(GLES2DecoderTest2, Uniform2fvInvalidArgs2_1) {
694 EXPECT_CALL(*gl_, Uniform2fv(_, _, _)).Times(0);
695 SpecializedSetup<cmds::Uniform2fv, 0>(false);
696 cmds::Uniform2fv cmd;
697 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
698 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
699 }
700
701 TEST_P(GLES2DecoderTest2, Uniform2fvValidArgsCountTooLarge) {
702 EXPECT_CALL(
703 *gl_,
704 Uniform2fv(
705 3, 3, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
706 SpecializedSetup<cmds::Uniform2fv, 0>(true);
707 cmds::Uniform2fv cmd;
708 cmd.Init(ProgramManager::MakeFakeLocation(1, 1),
709 5,
710 shared_memory_id_,
711 shared_memory_offset_);
712 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
713 EXPECT_EQ(GL_NO_ERROR, GetGLError());
714 }
715
716 TEST_P(GLES2DecoderTest2, Uniform2fvImmediateValidArgs) { 367 TEST_P(GLES2DecoderTest2, Uniform2fvImmediateValidArgs) {
717 cmds::Uniform2fvImmediate& cmd = *GetImmediateAs<cmds::Uniform2fvImmediate>(); 368 cmds::Uniform2fvImmediate& cmd = *GetImmediateAs<cmds::Uniform2fvImmediate>();
718 EXPECT_CALL( 369 EXPECT_CALL(
719 *gl_, 370 *gl_,
720 Uniform2fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 371 Uniform2fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
721 SpecializedSetup<cmds::Uniform2fvImmediate, 0>(true); 372 SpecializedSetup<cmds::Uniform2fvImmediate, 0>(true);
722 GLfloat temp[2 * 2] = { 373 GLfloat temp[2 * 2] = {
723 0, 374 0,
724 }; 375 };
725 cmd.Init(1, 2, &temp[0]); 376 cmd.Init(1, 2, &temp[0]);
726 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 377 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
727 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 378 EXPECT_EQ(GL_NO_ERROR, GetGLError());
728 } 379 }
729 380
730 TEST_P(GLES2DecoderTest2, Uniform2iValidArgs) { 381 TEST_P(GLES2DecoderTest2, Uniform2iValidArgs) {
731 EXPECT_CALL(*gl_, Uniform2iv(1, 1, _)); 382 EXPECT_CALL(*gl_, Uniform2iv(1, 1, _));
732 SpecializedSetup<cmds::Uniform2i, 0>(true); 383 SpecializedSetup<cmds::Uniform2i, 0>(true);
733 cmds::Uniform2i cmd; 384 cmds::Uniform2i cmd;
734 cmd.Init(1, 2, 3); 385 cmd.Init(1, 2, 3);
735 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 386 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
736 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 387 EXPECT_EQ(GL_NO_ERROR, GetGLError());
737 } 388 }
738 389
739 TEST_P(GLES2DecoderTest2, Uniform2ivValidArgs) {
740 EXPECT_CALL(
741 *gl_,
742 Uniform2iv(1, 2, reinterpret_cast<const GLint*>(shared_memory_address_)));
743 SpecializedSetup<cmds::Uniform2iv, 0>(true);
744 cmds::Uniform2iv cmd;
745 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
746 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
747 EXPECT_EQ(GL_NO_ERROR, GetGLError());
748 }
749
750 TEST_P(GLES2DecoderTest2, Uniform2ivInvalidArgs1_0) {
751 EXPECT_CALL(*gl_, Uniform2iv(_, _, _)).Times(0);
752 SpecializedSetup<cmds::Uniform2iv, 0>(false);
753 cmds::Uniform2iv cmd;
754 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
755 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
756 EXPECT_EQ(GL_NO_ERROR, GetGLError());
757 }
758
759 TEST_P(GLES2DecoderTest2, Uniform2ivInvalidArgs2_0) {
760 EXPECT_CALL(*gl_, Uniform2iv(_, _, _)).Times(0);
761 SpecializedSetup<cmds::Uniform2iv, 0>(false);
762 cmds::Uniform2iv cmd;
763 cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
764 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
765 }
766
767 TEST_P(GLES2DecoderTest2, Uniform2ivInvalidArgs2_1) {
768 EXPECT_CALL(*gl_, Uniform2iv(_, _, _)).Times(0);
769 SpecializedSetup<cmds::Uniform2iv, 0>(false);
770 cmds::Uniform2iv cmd;
771 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
772 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
773 }
774
775 TEST_P(GLES2DecoderTest2, Uniform2ivValidArgsCountTooLarge) {
776 EXPECT_CALL(
777 *gl_,
778 Uniform2iv(3, 3, reinterpret_cast<const GLint*>(shared_memory_address_)));
779 SpecializedSetup<cmds::Uniform2iv, 0>(true);
780 cmds::Uniform2iv cmd;
781 cmd.Init(ProgramManager::MakeFakeLocation(1, 1),
782 5,
783 shared_memory_id_,
784 shared_memory_offset_);
785 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
786 EXPECT_EQ(GL_NO_ERROR, GetGLError());
787 }
788
789 TEST_P(GLES2DecoderTest2, Uniform2ivImmediateValidArgs) { 390 TEST_P(GLES2DecoderTest2, Uniform2ivImmediateValidArgs) {
790 cmds::Uniform2ivImmediate& cmd = *GetImmediateAs<cmds::Uniform2ivImmediate>(); 391 cmds::Uniform2ivImmediate& cmd = *GetImmediateAs<cmds::Uniform2ivImmediate>();
791 EXPECT_CALL( 392 EXPECT_CALL(
792 *gl_, 393 *gl_,
793 Uniform2iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); 394 Uniform2iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
794 SpecializedSetup<cmds::Uniform2ivImmediate, 0>(true); 395 SpecializedSetup<cmds::Uniform2ivImmediate, 0>(true);
795 GLint temp[2 * 2] = { 396 GLint temp[2 * 2] = {
796 0, 397 0,
797 }; 398 };
798 cmd.Init(1, 2, &temp[0]); 399 cmd.Init(1, 2, &temp[0]);
799 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 400 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
800 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 401 EXPECT_EQ(GL_NO_ERROR, GetGLError());
801 } 402 }
802 403
803 TEST_P(GLES2DecoderTest2, Uniform3fValidArgs) { 404 TEST_P(GLES2DecoderTest2, Uniform3fValidArgs) {
804 EXPECT_CALL(*gl_, Uniform3fv(1, 1, _)); 405 EXPECT_CALL(*gl_, Uniform3fv(1, 1, _));
805 SpecializedSetup<cmds::Uniform3f, 0>(true); 406 SpecializedSetup<cmds::Uniform3f, 0>(true);
806 cmds::Uniform3f cmd; 407 cmds::Uniform3f cmd;
807 cmd.Init(1, 2, 3, 4); 408 cmd.Init(1, 2, 3, 4);
808 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 409 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
809 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 410 EXPECT_EQ(GL_NO_ERROR, GetGLError());
810 } 411 }
811 412
812 TEST_P(GLES2DecoderTest2, Uniform3fvValidArgs) {
813 EXPECT_CALL(
814 *gl_,
815 Uniform3fv(
816 1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
817 SpecializedSetup<cmds::Uniform3fv, 0>(true);
818 cmds::Uniform3fv cmd;
819 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
820 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
821 EXPECT_EQ(GL_NO_ERROR, GetGLError());
822 }
823
824 TEST_P(GLES2DecoderTest2, Uniform3fvInvalidArgs1_0) {
825 EXPECT_CALL(*gl_, Uniform3fv(_, _, _)).Times(0);
826 SpecializedSetup<cmds::Uniform3fv, 0>(false);
827 cmds::Uniform3fv cmd;
828 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
829 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
830 EXPECT_EQ(GL_NO_ERROR, GetGLError());
831 }
832
833 TEST_P(GLES2DecoderTest2, Uniform3fvInvalidArgs2_0) {
834 EXPECT_CALL(*gl_, Uniform3fv(_, _, _)).Times(0);
835 SpecializedSetup<cmds::Uniform3fv, 0>(false);
836 cmds::Uniform3fv cmd;
837 cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
838 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
839 }
840
841 TEST_P(GLES2DecoderTest2, Uniform3fvInvalidArgs2_1) {
842 EXPECT_CALL(*gl_, Uniform3fv(_, _, _)).Times(0);
843 SpecializedSetup<cmds::Uniform3fv, 0>(false);
844 cmds::Uniform3fv cmd;
845 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
846 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
847 }
848
849 TEST_P(GLES2DecoderTest2, Uniform3fvValidArgsCountTooLarge) {
850 EXPECT_CALL(
851 *gl_,
852 Uniform3fv(
853 3, 3, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
854 SpecializedSetup<cmds::Uniform3fv, 0>(true);
855 cmds::Uniform3fv cmd;
856 cmd.Init(ProgramManager::MakeFakeLocation(1, 1),
857 5,
858 shared_memory_id_,
859 shared_memory_offset_);
860 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
861 EXPECT_EQ(GL_NO_ERROR, GetGLError());
862 }
863
864 TEST_P(GLES2DecoderTest2, Uniform3fvImmediateValidArgs) { 413 TEST_P(GLES2DecoderTest2, Uniform3fvImmediateValidArgs) {
865 cmds::Uniform3fvImmediate& cmd = *GetImmediateAs<cmds::Uniform3fvImmediate>(); 414 cmds::Uniform3fvImmediate& cmd = *GetImmediateAs<cmds::Uniform3fvImmediate>();
866 EXPECT_CALL( 415 EXPECT_CALL(
867 *gl_, 416 *gl_,
868 Uniform3fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 417 Uniform3fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
869 SpecializedSetup<cmds::Uniform3fvImmediate, 0>(true); 418 SpecializedSetup<cmds::Uniform3fvImmediate, 0>(true);
870 GLfloat temp[3 * 2] = { 419 GLfloat temp[3 * 2] = {
871 0, 420 0,
872 }; 421 };
873 cmd.Init(1, 2, &temp[0]); 422 cmd.Init(1, 2, &temp[0]);
874 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 423 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
875 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 424 EXPECT_EQ(GL_NO_ERROR, GetGLError());
876 } 425 }
877 426
878 TEST_P(GLES2DecoderTest2, Uniform3iValidArgs) { 427 TEST_P(GLES2DecoderTest2, Uniform3iValidArgs) {
879 EXPECT_CALL(*gl_, Uniform3iv(1, 1, _)); 428 EXPECT_CALL(*gl_, Uniform3iv(1, 1, _));
880 SpecializedSetup<cmds::Uniform3i, 0>(true); 429 SpecializedSetup<cmds::Uniform3i, 0>(true);
881 cmds::Uniform3i cmd; 430 cmds::Uniform3i cmd;
882 cmd.Init(1, 2, 3, 4); 431 cmd.Init(1, 2, 3, 4);
883 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 432 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
884 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 433 EXPECT_EQ(GL_NO_ERROR, GetGLError());
885 } 434 }
886 435
887 TEST_P(GLES2DecoderTest2, Uniform3ivValidArgs) {
888 EXPECT_CALL(
889 *gl_,
890 Uniform3iv(1, 2, reinterpret_cast<const GLint*>(shared_memory_address_)));
891 SpecializedSetup<cmds::Uniform3iv, 0>(true);
892 cmds::Uniform3iv cmd;
893 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
894 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
895 EXPECT_EQ(GL_NO_ERROR, GetGLError());
896 }
897
898 TEST_P(GLES2DecoderTest2, Uniform3ivInvalidArgs1_0) {
899 EXPECT_CALL(*gl_, Uniform3iv(_, _, _)).Times(0);
900 SpecializedSetup<cmds::Uniform3iv, 0>(false);
901 cmds::Uniform3iv cmd;
902 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
903 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
904 EXPECT_EQ(GL_NO_ERROR, GetGLError());
905 }
906
907 TEST_P(GLES2DecoderTest2, Uniform3ivInvalidArgs2_0) {
908 EXPECT_CALL(*gl_, Uniform3iv(_, _, _)).Times(0);
909 SpecializedSetup<cmds::Uniform3iv, 0>(false);
910 cmds::Uniform3iv cmd;
911 cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
912 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
913 }
914
915 TEST_P(GLES2DecoderTest2, Uniform3ivInvalidArgs2_1) {
916 EXPECT_CALL(*gl_, Uniform3iv(_, _, _)).Times(0);
917 SpecializedSetup<cmds::Uniform3iv, 0>(false);
918 cmds::Uniform3iv cmd;
919 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
920 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
921 }
922
923 TEST_P(GLES2DecoderTest2, Uniform3ivValidArgsCountTooLarge) {
924 EXPECT_CALL(
925 *gl_,
926 Uniform3iv(3, 3, reinterpret_cast<const GLint*>(shared_memory_address_)));
927 SpecializedSetup<cmds::Uniform3iv, 0>(true);
928 cmds::Uniform3iv cmd;
929 cmd.Init(ProgramManager::MakeFakeLocation(1, 1),
930 5,
931 shared_memory_id_,
932 shared_memory_offset_);
933 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
934 EXPECT_EQ(GL_NO_ERROR, GetGLError());
935 }
936
937 TEST_P(GLES2DecoderTest2, Uniform3ivImmediateValidArgs) { 436 TEST_P(GLES2DecoderTest2, Uniform3ivImmediateValidArgs) {
938 cmds::Uniform3ivImmediate& cmd = *GetImmediateAs<cmds::Uniform3ivImmediate>(); 437 cmds::Uniform3ivImmediate& cmd = *GetImmediateAs<cmds::Uniform3ivImmediate>();
939 EXPECT_CALL( 438 EXPECT_CALL(
940 *gl_, 439 *gl_,
941 Uniform3iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); 440 Uniform3iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
942 SpecializedSetup<cmds::Uniform3ivImmediate, 0>(true); 441 SpecializedSetup<cmds::Uniform3ivImmediate, 0>(true);
943 GLint temp[3 * 2] = { 442 GLint temp[3 * 2] = {
944 0, 443 0,
945 }; 444 };
946 cmd.Init(1, 2, &temp[0]); 445 cmd.Init(1, 2, &temp[0]);
947 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 446 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
948 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 447 EXPECT_EQ(GL_NO_ERROR, GetGLError());
949 } 448 }
950 449
951 TEST_P(GLES2DecoderTest2, Uniform4fValidArgs) { 450 TEST_P(GLES2DecoderTest2, Uniform4fValidArgs) {
952 EXPECT_CALL(*gl_, Uniform4fv(1, 1, _)); 451 EXPECT_CALL(*gl_, Uniform4fv(1, 1, _));
953 SpecializedSetup<cmds::Uniform4f, 0>(true); 452 SpecializedSetup<cmds::Uniform4f, 0>(true);
954 cmds::Uniform4f cmd; 453 cmds::Uniform4f cmd;
955 cmd.Init(1, 2, 3, 4, 5); 454 cmd.Init(1, 2, 3, 4, 5);
956 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 455 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
957 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 456 EXPECT_EQ(GL_NO_ERROR, GetGLError());
958 } 457 }
959 458
960 TEST_P(GLES2DecoderTest2, Uniform4fvValidArgs) {
961 EXPECT_CALL(
962 *gl_,
963 Uniform4fv(
964 1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
965 SpecializedSetup<cmds::Uniform4fv, 0>(true);
966 cmds::Uniform4fv cmd;
967 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
968 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
969 EXPECT_EQ(GL_NO_ERROR, GetGLError());
970 }
971
972 TEST_P(GLES2DecoderTest2, Uniform4fvInvalidArgs1_0) {
973 EXPECT_CALL(*gl_, Uniform4fv(_, _, _)).Times(0);
974 SpecializedSetup<cmds::Uniform4fv, 0>(false);
975 cmds::Uniform4fv cmd;
976 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
977 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
978 EXPECT_EQ(GL_NO_ERROR, GetGLError());
979 }
980
981 TEST_P(GLES2DecoderTest2, Uniform4fvInvalidArgs2_0) {
982 EXPECT_CALL(*gl_, Uniform4fv(_, _, _)).Times(0);
983 SpecializedSetup<cmds::Uniform4fv, 0>(false);
984 cmds::Uniform4fv cmd;
985 cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
986 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
987 }
988
989 TEST_P(GLES2DecoderTest2, Uniform4fvInvalidArgs2_1) {
990 EXPECT_CALL(*gl_, Uniform4fv(_, _, _)).Times(0);
991 SpecializedSetup<cmds::Uniform4fv, 0>(false);
992 cmds::Uniform4fv cmd;
993 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
994 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
995 }
996
997 TEST_P(GLES2DecoderTest2, Uniform4fvValidArgsCountTooLarge) {
998 EXPECT_CALL(
999 *gl_,
1000 Uniform4fv(
1001 3, 3, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
1002 SpecializedSetup<cmds::Uniform4fv, 0>(true);
1003 cmds::Uniform4fv cmd;
1004 cmd.Init(ProgramManager::MakeFakeLocation(1, 1),
1005 5,
1006 shared_memory_id_,
1007 shared_memory_offset_);
1008 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1009 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1010 }
1011
1012 TEST_P(GLES2DecoderTest2, Uniform4fvImmediateValidArgs) { 459 TEST_P(GLES2DecoderTest2, Uniform4fvImmediateValidArgs) {
1013 cmds::Uniform4fvImmediate& cmd = *GetImmediateAs<cmds::Uniform4fvImmediate>(); 460 cmds::Uniform4fvImmediate& cmd = *GetImmediateAs<cmds::Uniform4fvImmediate>();
1014 EXPECT_CALL( 461 EXPECT_CALL(
1015 *gl_, 462 *gl_,
1016 Uniform4fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 463 Uniform4fv(1, 2, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
1017 SpecializedSetup<cmds::Uniform4fvImmediate, 0>(true); 464 SpecializedSetup<cmds::Uniform4fvImmediate, 0>(true);
1018 GLfloat temp[4 * 2] = { 465 GLfloat temp[4 * 2] = {
1019 0, 466 0,
1020 }; 467 };
1021 cmd.Init(1, 2, &temp[0]); 468 cmd.Init(1, 2, &temp[0]);
1022 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 469 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1023 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 470 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1024 } 471 }
1025 472
1026 TEST_P(GLES2DecoderTest2, Uniform4iValidArgs) { 473 TEST_P(GLES2DecoderTest2, Uniform4iValidArgs) {
1027 EXPECT_CALL(*gl_, Uniform4iv(1, 1, _)); 474 EXPECT_CALL(*gl_, Uniform4iv(1, 1, _));
1028 SpecializedSetup<cmds::Uniform4i, 0>(true); 475 SpecializedSetup<cmds::Uniform4i, 0>(true);
1029 cmds::Uniform4i cmd; 476 cmds::Uniform4i cmd;
1030 cmd.Init(1, 2, 3, 4, 5); 477 cmd.Init(1, 2, 3, 4, 5);
1031 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 478 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1032 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 479 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1033 } 480 }
1034 481
1035 TEST_P(GLES2DecoderTest2, Uniform4ivValidArgs) {
1036 EXPECT_CALL(
1037 *gl_,
1038 Uniform4iv(1, 2, reinterpret_cast<const GLint*>(shared_memory_address_)));
1039 SpecializedSetup<cmds::Uniform4iv, 0>(true);
1040 cmds::Uniform4iv cmd;
1041 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
1042 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1043 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1044 }
1045
1046 TEST_P(GLES2DecoderTest2, Uniform4ivInvalidArgs1_0) {
1047 EXPECT_CALL(*gl_, Uniform4iv(_, _, _)).Times(0);
1048 SpecializedSetup<cmds::Uniform4iv, 0>(false);
1049 cmds::Uniform4iv cmd;
1050 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
1051 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1052 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1053 }
1054
1055 TEST_P(GLES2DecoderTest2, Uniform4ivInvalidArgs2_0) {
1056 EXPECT_CALL(*gl_, Uniform4iv(_, _, _)).Times(0);
1057 SpecializedSetup<cmds::Uniform4iv, 0>(false);
1058 cmds::Uniform4iv cmd;
1059 cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
1060 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1061 }
1062
1063 TEST_P(GLES2DecoderTest2, Uniform4ivInvalidArgs2_1) {
1064 EXPECT_CALL(*gl_, Uniform4iv(_, _, _)).Times(0);
1065 SpecializedSetup<cmds::Uniform4iv, 0>(false);
1066 cmds::Uniform4iv cmd;
1067 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
1068 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1069 }
1070
1071 TEST_P(GLES2DecoderTest2, Uniform4ivValidArgsCountTooLarge) {
1072 EXPECT_CALL(
1073 *gl_,
1074 Uniform4iv(3, 3, reinterpret_cast<const GLint*>(shared_memory_address_)));
1075 SpecializedSetup<cmds::Uniform4iv, 0>(true);
1076 cmds::Uniform4iv cmd;
1077 cmd.Init(ProgramManager::MakeFakeLocation(1, 1),
1078 5,
1079 shared_memory_id_,
1080 shared_memory_offset_);
1081 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1082 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1083 }
1084
1085 TEST_P(GLES2DecoderTest2, Uniform4ivImmediateValidArgs) { 482 TEST_P(GLES2DecoderTest2, Uniform4ivImmediateValidArgs) {
1086 cmds::Uniform4ivImmediate& cmd = *GetImmediateAs<cmds::Uniform4ivImmediate>(); 483 cmds::Uniform4ivImmediate& cmd = *GetImmediateAs<cmds::Uniform4ivImmediate>();
1087 EXPECT_CALL( 484 EXPECT_CALL(
1088 *gl_, 485 *gl_,
1089 Uniform4iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); 486 Uniform4iv(1, 2, reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
1090 SpecializedSetup<cmds::Uniform4ivImmediate, 0>(true); 487 SpecializedSetup<cmds::Uniform4ivImmediate, 0>(true);
1091 GLint temp[4 * 2] = { 488 GLint temp[4 * 2] = {
1092 0, 489 0,
1093 }; 490 };
1094 cmd.Init(1, 2, &temp[0]); 491 cmd.Init(1, 2, &temp[0]);
1095 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 492 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1096 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 493 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1097 } 494 }
1098 495
1099 TEST_P(GLES2DecoderTest2, UniformMatrix2fvValidArgs) {
1100 EXPECT_CALL(*gl_,
1101 UniformMatrix2fv(
1102 1,
1103 2,
1104 false,
1105 reinterpret_cast<const GLfloat*>(shared_memory_address_)));
1106 SpecializedSetup<cmds::UniformMatrix2fv, 0>(true);
1107 cmds::UniformMatrix2fv cmd;
1108 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
1109 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1110 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1111 }
1112
1113 TEST_P(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs1_0) {
1114 EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0);
1115 SpecializedSetup<cmds::UniformMatrix2fv, 0>(false);
1116 cmds::UniformMatrix2fv cmd;
1117 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
1118 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1119 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1120 }
1121
1122 TEST_P(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs3_0) {
1123 EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0);
1124 SpecializedSetup<cmds::UniformMatrix2fv, 0>(false);
1125 cmds::UniformMatrix2fv cmd;
1126 cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
1127 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1128 }
1129
1130 TEST_P(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs3_1) {
1131 EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0);
1132 SpecializedSetup<cmds::UniformMatrix2fv, 0>(false);
1133 cmds::UniformMatrix2fv cmd;
1134 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
1135 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1136 }
1137
1138 TEST_P(GLES2DecoderTest2, UniformMatrix2fvValidArgsCountTooLarge) {
1139 EXPECT_CALL(*gl_,
1140 UniformMatrix2fv(
1141 3,
1142 3,
1143 false,
1144 reinterpret_cast<const GLfloat*>(shared_memory_address_)));
1145 SpecializedSetup<cmds::UniformMatrix2fv, 0>(true);
1146 cmds::UniformMatrix2fv cmd;
1147 cmd.Init(ProgramManager::MakeFakeLocation(1, 1),
1148 5,
1149 shared_memory_id_,
1150 shared_memory_offset_);
1151 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1152 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1153 }
1154
1155 TEST_P(GLES2DecoderTest2, UniformMatrix2fvImmediateValidArgs) { 496 TEST_P(GLES2DecoderTest2, UniformMatrix2fvImmediateValidArgs) {
1156 cmds::UniformMatrix2fvImmediate& cmd = 497 cmds::UniformMatrix2fvImmediate& cmd =
1157 *GetImmediateAs<cmds::UniformMatrix2fvImmediate>(); 498 *GetImmediateAs<cmds::UniformMatrix2fvImmediate>();
1158 EXPECT_CALL( 499 EXPECT_CALL(
1159 *gl_, 500 *gl_,
1160 UniformMatrix2fv( 501 UniformMatrix2fv(
1161 1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 502 1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
1162 SpecializedSetup<cmds::UniformMatrix2fvImmediate, 0>(true); 503 SpecializedSetup<cmds::UniformMatrix2fvImmediate, 0>(true);
1163 GLfloat temp[4 * 2] = { 504 GLfloat temp[4 * 2] = {
1164 0, 505 0,
1165 }; 506 };
1166 cmd.Init(1, 2, &temp[0]); 507 cmd.Init(1, 2, &temp[0]);
1167 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 508 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1168 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 509 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1169 } 510 }
1170 511
1171 TEST_P(GLES2DecoderTest2, UniformMatrix3fvValidArgs) {
1172 EXPECT_CALL(*gl_,
1173 UniformMatrix3fv(
1174 1,
1175 2,
1176 false,
1177 reinterpret_cast<const GLfloat*>(shared_memory_address_)));
1178 SpecializedSetup<cmds::UniformMatrix3fv, 0>(true);
1179 cmds::UniformMatrix3fv cmd;
1180 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
1181 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1182 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1183 }
1184
1185 TEST_P(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs1_0) {
1186 EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0);
1187 SpecializedSetup<cmds::UniformMatrix3fv, 0>(false);
1188 cmds::UniformMatrix3fv cmd;
1189 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
1190 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1191 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1192 }
1193
1194 TEST_P(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs3_0) {
1195 EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0);
1196 SpecializedSetup<cmds::UniformMatrix3fv, 0>(false);
1197 cmds::UniformMatrix3fv cmd;
1198 cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
1199 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1200 }
1201
1202 TEST_P(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs3_1) {
1203 EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0);
1204 SpecializedSetup<cmds::UniformMatrix3fv, 0>(false);
1205 cmds::UniformMatrix3fv cmd;
1206 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
1207 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1208 }
1209
1210 TEST_P(GLES2DecoderTest2, UniformMatrix3fvValidArgsCountTooLarge) {
1211 EXPECT_CALL(*gl_,
1212 UniformMatrix3fv(
1213 3,
1214 3,
1215 false,
1216 reinterpret_cast<const GLfloat*>(shared_memory_address_)));
1217 SpecializedSetup<cmds::UniformMatrix3fv, 0>(true);
1218 cmds::UniformMatrix3fv cmd;
1219 cmd.Init(ProgramManager::MakeFakeLocation(1, 1),
1220 5,
1221 shared_memory_id_,
1222 shared_memory_offset_);
1223 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1224 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1225 }
1226
1227 TEST_P(GLES2DecoderTest2, UniformMatrix3fvImmediateValidArgs) { 512 TEST_P(GLES2DecoderTest2, UniformMatrix3fvImmediateValidArgs) {
1228 cmds::UniformMatrix3fvImmediate& cmd = 513 cmds::UniformMatrix3fvImmediate& cmd =
1229 *GetImmediateAs<cmds::UniformMatrix3fvImmediate>(); 514 *GetImmediateAs<cmds::UniformMatrix3fvImmediate>();
1230 EXPECT_CALL( 515 EXPECT_CALL(
1231 *gl_, 516 *gl_,
1232 UniformMatrix3fv( 517 UniformMatrix3fv(
1233 1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 518 1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
1234 SpecializedSetup<cmds::UniformMatrix3fvImmediate, 0>(true); 519 SpecializedSetup<cmds::UniformMatrix3fvImmediate, 0>(true);
1235 GLfloat temp[9 * 2] = { 520 GLfloat temp[9 * 2] = {
1236 0, 521 0,
1237 }; 522 };
1238 cmd.Init(1, 2, &temp[0]); 523 cmd.Init(1, 2, &temp[0]);
1239 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 524 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1240 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 525 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1241 } 526 }
1242 527
1243 TEST_P(GLES2DecoderTest2, UniformMatrix4fvValidArgs) {
1244 EXPECT_CALL(*gl_,
1245 UniformMatrix4fv(
1246 1,
1247 2,
1248 false,
1249 reinterpret_cast<const GLfloat*>(shared_memory_address_)));
1250 SpecializedSetup<cmds::UniformMatrix4fv, 0>(true);
1251 cmds::UniformMatrix4fv cmd;
1252 cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
1253 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1254 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1255 }
1256
1257 TEST_P(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs1_0) {
1258 EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0);
1259 SpecializedSetup<cmds::UniformMatrix4fv, 0>(false);
1260 cmds::UniformMatrix4fv cmd;
1261 cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
1262 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1263 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1264 }
1265
1266 TEST_P(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs3_0) {
1267 EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0);
1268 SpecializedSetup<cmds::UniformMatrix4fv, 0>(false);
1269 cmds::UniformMatrix4fv cmd;
1270 cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
1271 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1272 }
1273
1274 TEST_P(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs3_1) {
1275 EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0);
1276 SpecializedSetup<cmds::UniformMatrix4fv, 0>(false);
1277 cmds::UniformMatrix4fv cmd;
1278 cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
1279 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1280 }
1281
1282 TEST_P(GLES2DecoderTest2, UniformMatrix4fvValidArgsCountTooLarge) {
1283 EXPECT_CALL(*gl_,
1284 UniformMatrix4fv(
1285 3,
1286 3,
1287 false,
1288 reinterpret_cast<const GLfloat*>(shared_memory_address_)));
1289 SpecializedSetup<cmds::UniformMatrix4fv, 0>(true);
1290 cmds::UniformMatrix4fv cmd;
1291 cmd.Init(ProgramManager::MakeFakeLocation(1, 1),
1292 5,
1293 shared_memory_id_,
1294 shared_memory_offset_);
1295 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1296 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1297 }
1298
1299 TEST_P(GLES2DecoderTest2, UniformMatrix4fvImmediateValidArgs) { 528 TEST_P(GLES2DecoderTest2, UniformMatrix4fvImmediateValidArgs) {
1300 cmds::UniformMatrix4fvImmediate& cmd = 529 cmds::UniformMatrix4fvImmediate& cmd =
1301 *GetImmediateAs<cmds::UniformMatrix4fvImmediate>(); 530 *GetImmediateAs<cmds::UniformMatrix4fvImmediate>();
1302 EXPECT_CALL( 531 EXPECT_CALL(
1303 *gl_, 532 *gl_,
1304 UniformMatrix4fv( 533 UniformMatrix4fv(
1305 1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 534 1, 2, false, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
1306 SpecializedSetup<cmds::UniformMatrix4fvImmediate, 0>(true); 535 SpecializedSetup<cmds::UniformMatrix4fvImmediate, 0>(true);
1307 GLfloat temp[16 * 2] = { 536 GLfloat temp[16 * 2] = {
1308 0, 537 0,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 570
1342 TEST_P(GLES2DecoderTest2, VertexAttrib1fValidArgs) { 571 TEST_P(GLES2DecoderTest2, VertexAttrib1fValidArgs) {
1343 EXPECT_CALL(*gl_, VertexAttrib1f(1, 2)); 572 EXPECT_CALL(*gl_, VertexAttrib1f(1, 2));
1344 SpecializedSetup<cmds::VertexAttrib1f, 0>(true); 573 SpecializedSetup<cmds::VertexAttrib1f, 0>(true);
1345 cmds::VertexAttrib1f cmd; 574 cmds::VertexAttrib1f cmd;
1346 cmd.Init(1, 2); 575 cmd.Init(1, 2);
1347 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 576 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1348 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 577 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1349 } 578 }
1350 579
1351 TEST_P(GLES2DecoderTest2, VertexAttrib1fvValidArgs) {
1352 SpecializedSetup<cmds::VertexAttrib1fv, 0>(true);
1353 cmds::VertexAttrib1fv cmd;
1354 cmd.Init(1, shared_memory_id_, shared_memory_offset_);
1355 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1356 EXPECT_CALL(*gl_,
1357 VertexAttrib1fv(
1358 1, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
1359 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1360 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1361 }
1362
1363 TEST_P(GLES2DecoderTest2, VertexAttrib1fvInvalidArgs1_0) {
1364 EXPECT_CALL(*gl_, VertexAttrib1fv(_, _)).Times(0);
1365 SpecializedSetup<cmds::VertexAttrib1fv, 0>(false);
1366 cmds::VertexAttrib1fv cmd;
1367 cmd.Init(1, kInvalidSharedMemoryId, 0);
1368 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1369 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1370 }
1371
1372 TEST_P(GLES2DecoderTest2, VertexAttrib1fvInvalidArgs1_1) {
1373 EXPECT_CALL(*gl_, VertexAttrib1fv(_, _)).Times(0);
1374 SpecializedSetup<cmds::VertexAttrib1fv, 0>(false);
1375 cmds::VertexAttrib1fv cmd;
1376 cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset);
1377 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1378 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1379 }
1380
1381 TEST_P(GLES2DecoderTest2, VertexAttrib1fvImmediateValidArgs) { 580 TEST_P(GLES2DecoderTest2, VertexAttrib1fvImmediateValidArgs) {
1382 cmds::VertexAttrib1fvImmediate& cmd = 581 cmds::VertexAttrib1fvImmediate& cmd =
1383 *GetImmediateAs<cmds::VertexAttrib1fvImmediate>(); 582 *GetImmediateAs<cmds::VertexAttrib1fvImmediate>();
1384 SpecializedSetup<cmds::VertexAttrib1fvImmediate, 0>(true); 583 SpecializedSetup<cmds::VertexAttrib1fvImmediate, 0>(true);
1385 GLfloat temp[1] = { 584 GLfloat temp[1] = {
1386 0, 585 0,
1387 }; 586 };
1388 cmd.Init(1, &temp[0]); 587 cmd.Init(1, &temp[0]);
1389 EXPECT_CALL(*gl_, 588 EXPECT_CALL(*gl_,
1390 VertexAttrib1fv( 589 VertexAttrib1fv(
1391 1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 590 1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
1392 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 591 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1393 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 592 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1394 } 593 }
1395 594
1396 TEST_P(GLES2DecoderTest2, VertexAttrib2fValidArgs) { 595 TEST_P(GLES2DecoderTest2, VertexAttrib2fValidArgs) {
1397 EXPECT_CALL(*gl_, VertexAttrib2f(1, 2, 3)); 596 EXPECT_CALL(*gl_, VertexAttrib2f(1, 2, 3));
1398 SpecializedSetup<cmds::VertexAttrib2f, 0>(true); 597 SpecializedSetup<cmds::VertexAttrib2f, 0>(true);
1399 cmds::VertexAttrib2f cmd; 598 cmds::VertexAttrib2f cmd;
1400 cmd.Init(1, 2, 3); 599 cmd.Init(1, 2, 3);
1401 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 600 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1402 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 601 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1403 } 602 }
1404 603
1405 TEST_P(GLES2DecoderTest2, VertexAttrib2fvValidArgs) {
1406 SpecializedSetup<cmds::VertexAttrib2fv, 0>(true);
1407 cmds::VertexAttrib2fv cmd;
1408 cmd.Init(1, shared_memory_id_, shared_memory_offset_);
1409 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1410 EXPECT_CALL(*gl_,
1411 VertexAttrib2fv(
1412 1, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
1413 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1414 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1415 }
1416
1417 TEST_P(GLES2DecoderTest2, VertexAttrib2fvInvalidArgs1_0) {
1418 EXPECT_CALL(*gl_, VertexAttrib2fv(_, _)).Times(0);
1419 SpecializedSetup<cmds::VertexAttrib2fv, 0>(false);
1420 cmds::VertexAttrib2fv cmd;
1421 cmd.Init(1, kInvalidSharedMemoryId, 0);
1422 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1423 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1424 }
1425
1426 TEST_P(GLES2DecoderTest2, VertexAttrib2fvInvalidArgs1_1) {
1427 EXPECT_CALL(*gl_, VertexAttrib2fv(_, _)).Times(0);
1428 SpecializedSetup<cmds::VertexAttrib2fv, 0>(false);
1429 cmds::VertexAttrib2fv cmd;
1430 cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset);
1431 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1432 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1433 }
1434
1435 TEST_P(GLES2DecoderTest2, VertexAttrib2fvImmediateValidArgs) { 604 TEST_P(GLES2DecoderTest2, VertexAttrib2fvImmediateValidArgs) {
1436 cmds::VertexAttrib2fvImmediate& cmd = 605 cmds::VertexAttrib2fvImmediate& cmd =
1437 *GetImmediateAs<cmds::VertexAttrib2fvImmediate>(); 606 *GetImmediateAs<cmds::VertexAttrib2fvImmediate>();
1438 SpecializedSetup<cmds::VertexAttrib2fvImmediate, 0>(true); 607 SpecializedSetup<cmds::VertexAttrib2fvImmediate, 0>(true);
1439 GLfloat temp[2] = { 608 GLfloat temp[2] = {
1440 0, 609 0,
1441 }; 610 };
1442 cmd.Init(1, &temp[0]); 611 cmd.Init(1, &temp[0]);
1443 EXPECT_CALL(*gl_, 612 EXPECT_CALL(*gl_,
1444 VertexAttrib2fv( 613 VertexAttrib2fv(
1445 1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 614 1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
1446 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 615 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1447 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 616 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1448 } 617 }
1449 618
1450 TEST_P(GLES2DecoderTest2, VertexAttrib3fValidArgs) { 619 TEST_P(GLES2DecoderTest2, VertexAttrib3fValidArgs) {
1451 EXPECT_CALL(*gl_, VertexAttrib3f(1, 2, 3, 4)); 620 EXPECT_CALL(*gl_, VertexAttrib3f(1, 2, 3, 4));
1452 SpecializedSetup<cmds::VertexAttrib3f, 0>(true); 621 SpecializedSetup<cmds::VertexAttrib3f, 0>(true);
1453 cmds::VertexAttrib3f cmd; 622 cmds::VertexAttrib3f cmd;
1454 cmd.Init(1, 2, 3, 4); 623 cmd.Init(1, 2, 3, 4);
1455 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 624 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1456 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 625 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1457 } 626 }
1458 627
1459 TEST_P(GLES2DecoderTest2, VertexAttrib3fvValidArgs) {
1460 SpecializedSetup<cmds::VertexAttrib3fv, 0>(true);
1461 cmds::VertexAttrib3fv cmd;
1462 cmd.Init(1, shared_memory_id_, shared_memory_offset_);
1463 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1464 EXPECT_CALL(*gl_,
1465 VertexAttrib3fv(
1466 1, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
1467 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1468 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1469 }
1470
1471 TEST_P(GLES2DecoderTest2, VertexAttrib3fvInvalidArgs1_0) {
1472 EXPECT_CALL(*gl_, VertexAttrib3fv(_, _)).Times(0);
1473 SpecializedSetup<cmds::VertexAttrib3fv, 0>(false);
1474 cmds::VertexAttrib3fv cmd;
1475 cmd.Init(1, kInvalidSharedMemoryId, 0);
1476 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1477 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1478 }
1479
1480 TEST_P(GLES2DecoderTest2, VertexAttrib3fvInvalidArgs1_1) {
1481 EXPECT_CALL(*gl_, VertexAttrib3fv(_, _)).Times(0);
1482 SpecializedSetup<cmds::VertexAttrib3fv, 0>(false);
1483 cmds::VertexAttrib3fv cmd;
1484 cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset);
1485 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1486 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1487 }
1488
1489 TEST_P(GLES2DecoderTest2, VertexAttrib3fvImmediateValidArgs) { 628 TEST_P(GLES2DecoderTest2, VertexAttrib3fvImmediateValidArgs) {
1490 cmds::VertexAttrib3fvImmediate& cmd = 629 cmds::VertexAttrib3fvImmediate& cmd =
1491 *GetImmediateAs<cmds::VertexAttrib3fvImmediate>(); 630 *GetImmediateAs<cmds::VertexAttrib3fvImmediate>();
1492 SpecializedSetup<cmds::VertexAttrib3fvImmediate, 0>(true); 631 SpecializedSetup<cmds::VertexAttrib3fvImmediate, 0>(true);
1493 GLfloat temp[3] = { 632 GLfloat temp[3] = {
1494 0, 633 0,
1495 }; 634 };
1496 cmd.Init(1, &temp[0]); 635 cmd.Init(1, &temp[0]);
1497 EXPECT_CALL(*gl_, 636 EXPECT_CALL(*gl_,
1498 VertexAttrib3fv( 637 VertexAttrib3fv(
1499 1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd)))); 638 1, reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
1500 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 639 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1501 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 640 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1502 } 641 }
1503 642
1504 TEST_P(GLES2DecoderTest2, VertexAttrib4fValidArgs) { 643 TEST_P(GLES2DecoderTest2, VertexAttrib4fValidArgs) {
1505 EXPECT_CALL(*gl_, VertexAttrib4f(1, 2, 3, 4, 5)); 644 EXPECT_CALL(*gl_, VertexAttrib4f(1, 2, 3, 4, 5));
1506 SpecializedSetup<cmds::VertexAttrib4f, 0>(true); 645 SpecializedSetup<cmds::VertexAttrib4f, 0>(true);
1507 cmds::VertexAttrib4f cmd; 646 cmds::VertexAttrib4f cmd;
1508 cmd.Init(1, 2, 3, 4, 5); 647 cmd.Init(1, 2, 3, 4, 5);
1509 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 648 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1510 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 649 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1511 } 650 }
1512 651
1513 TEST_P(GLES2DecoderTest2, VertexAttrib4fvValidArgs) {
1514 SpecializedSetup<cmds::VertexAttrib4fv, 0>(true);
1515 cmds::VertexAttrib4fv cmd;
1516 cmd.Init(1, shared_memory_id_, shared_memory_offset_);
1517 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1518 EXPECT_CALL(*gl_,
1519 VertexAttrib4fv(
1520 1, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
1521 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1522 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1523 }
1524
1525 TEST_P(GLES2DecoderTest2, VertexAttrib4fvInvalidArgs1_0) {
1526 EXPECT_CALL(*gl_, VertexAttrib4fv(_, _)).Times(0);
1527 SpecializedSetup<cmds::VertexAttrib4fv, 0>(false);
1528 cmds::VertexAttrib4fv cmd;
1529 cmd.Init(1, kInvalidSharedMemoryId, 0);
1530 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1531 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1532 }
1533
1534 TEST_P(GLES2DecoderTest2, VertexAttrib4fvInvalidArgs1_1) {
1535 EXPECT_CALL(*gl_, VertexAttrib4fv(_, _)).Times(0);
1536 SpecializedSetup<cmds::VertexAttrib4fv, 0>(false);
1537 cmds::VertexAttrib4fv cmd;
1538 cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset);
1539 GetSharedMemoryAs<GLfloat*>()[0] = 0;
1540 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
1541 }
1542
1543 TEST_P(GLES2DecoderTest2, VertexAttrib4fvImmediateValidArgs) { 652 TEST_P(GLES2DecoderTest2, VertexAttrib4fvImmediateValidArgs) {
1544 cmds::VertexAttrib4fvImmediate& cmd = 653 cmds::VertexAttrib4fvImmediate& cmd =
1545 *GetImmediateAs<cmds::VertexAttrib4fvImmediate>(); 654 *GetImmediateAs<cmds::VertexAttrib4fvImmediate>();
1546 SpecializedSetup<cmds::VertexAttrib4fvImmediate, 0>(true); 655 SpecializedSetup<cmds::VertexAttrib4fvImmediate, 0>(true);
1547 GLfloat temp[4] = { 656 GLfloat temp[4] = {
1548 0, 657 0,
1549 }; 658 };
1550 cmd.Init(1, &temp[0]); 659 cmd.Init(1, &temp[0]);
1551 EXPECT_CALL(*gl_, 660 EXPECT_CALL(*gl_,
1552 VertexAttrib4fv( 661 VertexAttrib4fv(
(...skipping 27 matching lines...) Expand all
1580 cmds::Viewport cmd; 689 cmds::Viewport cmd;
1581 cmd.Init(1, 2, 3, -1); 690 cmd.Init(1, 2, 3, -1);
1582 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 691 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1583 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 692 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1584 } 693 }
1585 // TODO(gman): BlitFramebufferCHROMIUM 694 // TODO(gman): BlitFramebufferCHROMIUM
1586 // TODO(gman): RenderbufferStorageMultisampleCHROMIUM 695 // TODO(gman): RenderbufferStorageMultisampleCHROMIUM
1587 // TODO(gman): RenderbufferStorageMultisampleEXT 696 // TODO(gman): RenderbufferStorageMultisampleEXT
1588 // TODO(gman): FramebufferTexture2DMultisampleEXT 697 // TODO(gman): FramebufferTexture2DMultisampleEXT
1589 // TODO(gman): TexStorage2DEXT 698 // TODO(gman): TexStorage2DEXT
1590 // TODO(gman): GenQueriesEXT
1591 // TODO(gman): GenQueriesEXTImmediate 699 // TODO(gman): GenQueriesEXTImmediate
1592 // TODO(gman): DeleteQueriesEXT
1593 // TODO(gman): DeleteQueriesEXTImmediate 700 // TODO(gman): DeleteQueriesEXTImmediate
1594 // TODO(gman): BeginQueryEXT 701 // TODO(gman): BeginQueryEXT
1595 702
1596 // TODO(gman): EndQueryEXT 703 // TODO(gman): EndQueryEXT
1597 704
1598 // TODO(gman): InsertEventMarkerEXT 705 // TODO(gman): InsertEventMarkerEXT
1599 706
1600 // TODO(gman): PushGroupMarkerEXT 707 // TODO(gman): PushGroupMarkerEXT
1601 708
1602 TEST_P(GLES2DecoderTest2, PopGroupMarkerEXTValidArgs) { 709 TEST_P(GLES2DecoderTest2, PopGroupMarkerEXTValidArgs) {
1603 SpecializedSetup<cmds::PopGroupMarkerEXT, 0>(true); 710 SpecializedSetup<cmds::PopGroupMarkerEXT, 0>(true);
1604 cmds::PopGroupMarkerEXT cmd; 711 cmds::PopGroupMarkerEXT cmd;
1605 cmd.Init(); 712 cmd.Init();
1606 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 713 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1607 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 714 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1608 } 715 }
1609 // TODO(gman): GenVertexArraysOES
1610 // TODO(gman): GenVertexArraysOESImmediate 716 // TODO(gman): GenVertexArraysOESImmediate
1611 // TODO(gman): DeleteVertexArraysOES
1612 // TODO(gman): DeleteVertexArraysOESImmediate 717 // TODO(gman): DeleteVertexArraysOESImmediate
1613 // TODO(gman): IsVertexArrayOES 718 // TODO(gman): IsVertexArrayOES
1614 // TODO(gman): BindVertexArrayOES 719 // TODO(gman): BindVertexArrayOES
1615 // TODO(gman): SwapBuffers 720 // TODO(gman): SwapBuffers
1616 // TODO(gman): GetMaxValueInBufferCHROMIUM 721 // TODO(gman): GetMaxValueInBufferCHROMIUM
1617 // TODO(gman): GenSharedIdsCHROMIUM 722 // TODO(gman): GenSharedIdsCHROMIUM
1618 723
724 // TODO(gman): DeleteSharedIdsCHROMIUM
725
726 // TODO(gman): RegisterSharedIdsCHROMIUM
727
728 // TODO(gman): EnableFeatureCHROMIUM
729
730 // TODO(gman): ResizeCHROMIUM
731 // TODO(gman): GetRequestableExtensionsCHROMIUM
732
733 // TODO(gman): RequestExtensionCHROMIUM
734
735 // TODO(gman): GetMultipleIntegervCHROMIUM
736
737 // TODO(gman): GetProgramInfoCHROMIUM
738
739 // TODO(gman): GetTranslatedShaderSourceANGLE
740 // TODO(gman): PostSubBufferCHROMIUM
741 // TODO(gman): TexImageIOSurface2DCHROMIUM
742 // TODO(gman): CopyTextureCHROMIUM
743 // TODO(gman): DrawArraysInstancedANGLE
744 // TODO(gman): DrawElementsInstancedANGLE
745 // TODO(gman): VertexAttribDivisorANGLE
746 // TODO(gman): GenMailboxCHROMIUM
747
748 // TODO(gman): ProduceTextureCHROMIUMImmediate
749 // TODO(gman): ConsumeTextureCHROMIUMImmediate
750 // TODO(gman): BindUniformLocationCHROMIUM
751
752 // TODO(gman): BindUniformLocationCHROMIUMBucket
753 // TODO(gman): BindTexImage2DCHROMIUM
754 // TODO(gman): ReleaseTexImage2DCHROMIUM
755 // TODO(gman): TraceBeginCHROMIUM
756
757 // TODO(gman): TraceEndCHROMIUM
758 // TODO(gman): AsyncTexSubImage2DCHROMIUM
759
760 // TODO(gman): AsyncTexImage2DCHROMIUM
761
762 // TODO(gman): WaitAsyncTexImage2DCHROMIUM
763
764 // TODO(gman): WaitAllAsyncTexImage2DCHROMIUM
765
766 // TODO(gman): DiscardFramebufferEXTImmediate
1619 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_ 767 #endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698