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. 4 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 9 // DO NOT EDIT! 10 11 // This file is included by gles2_implementation.h to declare the 12 // GL api functions. 13 #ifndef GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_UNITTEST_AUTOGEN_H_ 14 #define GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_UNITTEST_AUTOGEN_H_ 15 16 TEST_F(GLES2ImplementationTest, AttachShader) { 17 struct Cmds { 18 cmds::AttachShader cmd; 19 }; 20 Cmds expected; 21 expected.cmd.Init(1, 2); 22 23 gl_->AttachShader(1, 2); 24 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 25 } 26 // TODO: Implement unit test for BindAttribLocation 27 28 TEST_F(GLES2ImplementationTest, BindBuffer) { 29 struct Cmds { 30 cmds::BindBuffer cmd; 31 }; 32 Cmds expected; 33 expected.cmd.Init(GL_ARRAY_BUFFER, 2); 34 35 gl_->BindBuffer(GL_ARRAY_BUFFER, 2); 36 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 37 ClearCommands(); 38 gl_->BindBuffer(GL_ARRAY_BUFFER, 2); 39 EXPECT_TRUE(NoCommandsWritten()); 40 } 41 42 TEST_F(GLES2ImplementationTest, BindFramebuffer) { 43 struct Cmds { 44 cmds::BindFramebuffer cmd; 45 }; 46 Cmds expected; 47 expected.cmd.Init(GL_FRAMEBUFFER, 2); 48 49 gl_->BindFramebuffer(GL_FRAMEBUFFER, 2); 50 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 51 ClearCommands(); 52 gl_->BindFramebuffer(GL_FRAMEBUFFER, 2); 53 EXPECT_TRUE(NoCommandsWritten()); 54 } 55 56 TEST_F(GLES2ImplementationTest, BindRenderbuffer) { 57 struct Cmds { 58 cmds::BindRenderbuffer cmd; 59 }; 60 Cmds expected; 61 expected.cmd.Init(GL_RENDERBUFFER, 2); 62 63 gl_->BindRenderbuffer(GL_RENDERBUFFER, 2); 64 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 65 ClearCommands(); 66 gl_->BindRenderbuffer(GL_RENDERBUFFER, 2); 67 EXPECT_TRUE(NoCommandsWritten()); 68 } 69 70 TEST_F(GLES2ImplementationTest, BlendColor) { 71 struct Cmds { 72 cmds::BlendColor cmd; 73 }; 74 Cmds expected; 75 expected.cmd.Init(1, 2, 3, 4); 76 77 gl_->BlendColor(1, 2, 3, 4); 78 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 79 } 80 81 TEST_F(GLES2ImplementationTest, BlendEquation) { 82 struct Cmds { 83 cmds::BlendEquation cmd; 84 }; 85 Cmds expected; 86 expected.cmd.Init(GL_FUNC_SUBTRACT); 87 88 gl_->BlendEquation(GL_FUNC_SUBTRACT); 89 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 90 } 91 92 TEST_F(GLES2ImplementationTest, BlendEquationSeparate) { 93 struct Cmds { 94 cmds::BlendEquationSeparate cmd; 95 }; 96 Cmds expected; 97 expected.cmd.Init(GL_FUNC_SUBTRACT, GL_FUNC_ADD); 98 99 gl_->BlendEquationSeparate(GL_FUNC_SUBTRACT, GL_FUNC_ADD); 100 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 101 } 102 103 TEST_F(GLES2ImplementationTest, BlendFunc) { 104 struct Cmds { 105 cmds::BlendFunc cmd; 106 }; 107 Cmds expected; 108 expected.cmd.Init(GL_ZERO, GL_ZERO); 109 110 gl_->BlendFunc(GL_ZERO, GL_ZERO); 111 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 112 } 113 114 TEST_F(GLES2ImplementationTest, BlendFuncSeparate) { 115 struct Cmds { 116 cmds::BlendFuncSeparate cmd; 117 }; 118 Cmds expected; 119 expected.cmd.Init(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO); 120 121 gl_->BlendFuncSeparate(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO); 122 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 123 } 124 125 TEST_F(GLES2ImplementationTest, CheckFramebufferStatus) { 126 struct Cmds { 127 cmds::CheckFramebufferStatus cmd; 128 }; 129 130 Cmds expected; 131 ExpectedMemoryInfo result1 = 132 GetExpectedResultMemory(sizeof(cmds::CheckFramebufferStatus::Result)); 133 expected.cmd.Init(1, result1.id, result1.offset); 134 135 EXPECT_CALL(*command_buffer(), OnFlush()) 136 .WillOnce(SetMemory(result1.ptr, uint32_t(1))) 137 .RetiresOnSaturation(); 138 139 GLboolean result = gl_->CheckFramebufferStatus(1); 140 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 141 EXPECT_TRUE(result); 142 } 143 144 TEST_F(GLES2ImplementationTest, Clear) { 145 struct Cmds { 146 cmds::Clear cmd; 147 }; 148 Cmds expected; 149 expected.cmd.Init(1); 150 151 gl_->Clear(1); 152 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 153 } 154 155 TEST_F(GLES2ImplementationTest, ClearColor) { 156 struct Cmds { 157 cmds::ClearColor cmd; 158 }; 159 Cmds expected; 160 expected.cmd.Init(1, 2, 3, 4); 161 162 gl_->ClearColor(1, 2, 3, 4); 163 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 164 } 165 166 TEST_F(GLES2ImplementationTest, ClearDepthf) { 167 struct Cmds { 168 cmds::ClearDepthf cmd; 169 }; 170 Cmds expected; 171 expected.cmd.Init(0.5f); 172 173 gl_->ClearDepthf(0.5f); 174 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 175 } 176 177 TEST_F(GLES2ImplementationTest, ClearStencil) { 178 struct Cmds { 179 cmds::ClearStencil cmd; 180 }; 181 Cmds expected; 182 expected.cmd.Init(1); 183 184 gl_->ClearStencil(1); 185 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 186 } 187 188 TEST_F(GLES2ImplementationTest, ColorMask) { 189 struct Cmds { 190 cmds::ColorMask cmd; 191 }; 192 Cmds expected; 193 expected.cmd.Init(true, true, true, true); 194 195 gl_->ColorMask(true, true, true, true); 196 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 197 } 198 199 TEST_F(GLES2ImplementationTest, CompileShader) { 200 struct Cmds { 201 cmds::CompileShader cmd; 202 }; 203 Cmds expected; 204 expected.cmd.Init(1); 205 206 gl_->CompileShader(1); 207 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 208 } 209 // TODO: Implement unit test for CompressedTexImage2D 210 // TODO: Implement unit test for CompressedTexSubImage2D 211 212 TEST_F(GLES2ImplementationTest, CopyTexImage2D) { 213 struct Cmds { 214 cmds::CopyTexImage2D cmd; 215 }; 216 Cmds expected; 217 expected.cmd.Init(GL_TEXTURE_2D, 2, GL_ALPHA, 4, 5, 6, 7); 218 219 gl_->CopyTexImage2D(GL_TEXTURE_2D, 2, GL_ALPHA, 4, 5, 6, 7, 0); 220 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 221 } 222 223 TEST_F(GLES2ImplementationTest, CopyTexImage2DInvalidConstantArg7) { 224 gl_->CopyTexImage2D(GL_TEXTURE_2D, 2, GL_ALPHA, 4, 5, 6, 7, 1); 225 EXPECT_TRUE(NoCommandsWritten()); 226 EXPECT_EQ(GL_INVALID_VALUE, CheckError()); 227 } 228 229 TEST_F(GLES2ImplementationTest, CopyTexSubImage2D) { 230 struct Cmds { 231 cmds::CopyTexSubImage2D cmd; 232 }; 233 Cmds expected; 234 expected.cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8); 235 236 gl_->CopyTexSubImage2D(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8); 237 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 238 } 239 240 TEST_F(GLES2ImplementationTest, CullFace) { 241 struct Cmds { 242 cmds::CullFace cmd; 243 }; 244 Cmds expected; 245 expected.cmd.Init(GL_FRONT); 246 247 gl_->CullFace(GL_FRONT); 248 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 249 } 250 251 TEST_F(GLES2ImplementationTest, DeleteBuffers) { 252 GLuint ids[2] = {kBuffersStartId, kBuffersStartId + 1}; 253 struct Cmds { 254 cmds::DeleteBuffersImmediate del; 255 GLuint data[2]; 256 }; 257 Cmds expected; 258 expected.del.Init(arraysize(ids), &ids[0]); 259 expected.data[0] = kBuffersStartId; 260 expected.data[1] = kBuffersStartId + 1; 261 gl_->DeleteBuffers(arraysize(ids), &ids[0]); 262 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 263 } 264 265 TEST_F(GLES2ImplementationTest, DeleteFramebuffers) { 266 GLuint ids[2] = {kFramebuffersStartId, kFramebuffersStartId + 1}; 267 struct Cmds { 268 cmds::DeleteFramebuffersImmediate del; 269 GLuint data[2]; 270 }; 271 Cmds expected; 272 expected.del.Init(arraysize(ids), &ids[0]); 273 expected.data[0] = kFramebuffersStartId; 274 expected.data[1] = kFramebuffersStartId + 1; 275 gl_->DeleteFramebuffers(arraysize(ids), &ids[0]); 276 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 277 } 278 279 TEST_F(GLES2ImplementationTest, DeleteProgram) { 280 struct Cmds { 281 cmds::DeleteProgram cmd; 282 }; 283 Cmds expected; 284 expected.cmd.Init(1); 285 286 gl_->DeleteProgram(1); 287 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 288 } 289 290 TEST_F(GLES2ImplementationTest, DeleteRenderbuffers) { 291 GLuint ids[2] = {kRenderbuffersStartId, kRenderbuffersStartId + 1}; 292 struct Cmds { 293 cmds::DeleteRenderbuffersImmediate del; 294 GLuint data[2]; 295 }; 296 Cmds expected; 297 expected.del.Init(arraysize(ids), &ids[0]); 298 expected.data[0] = kRenderbuffersStartId; 299 expected.data[1] = kRenderbuffersStartId + 1; 300 gl_->DeleteRenderbuffers(arraysize(ids), &ids[0]); 301 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 302 } 303 304 TEST_F(GLES2ImplementationTest, DeleteShader) { 305 struct Cmds { 306 cmds::DeleteShader cmd; 307 }; 308 Cmds expected; 309 expected.cmd.Init(1); 310 311 gl_->DeleteShader(1); 312 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 313 } 314 315 TEST_F(GLES2ImplementationTest, DeleteTextures) { 316 GLuint ids[2] = {kTexturesStartId, kTexturesStartId + 1}; 317 struct Cmds { 318 cmds::DeleteTexturesImmediate del; 319 GLuint data[2]; 320 }; 321 Cmds expected; 322 expected.del.Init(arraysize(ids), &ids[0]); 323 expected.data[0] = kTexturesStartId; 324 expected.data[1] = kTexturesStartId + 1; 325 gl_->DeleteTextures(arraysize(ids), &ids[0]); 326 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 327 } 328 329 TEST_F(GLES2ImplementationTest, DepthFunc) { 330 struct Cmds { 331 cmds::DepthFunc cmd; 332 }; 333 Cmds expected; 334 expected.cmd.Init(GL_NEVER); 335 336 gl_->DepthFunc(GL_NEVER); 337 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 338 } 339 340 TEST_F(GLES2ImplementationTest, DepthMask) { 341 struct Cmds { 342 cmds::DepthMask cmd; 343 }; 344 Cmds expected; 345 expected.cmd.Init(true); 346 347 gl_->DepthMask(true); 348 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 349 } 350 351 TEST_F(GLES2ImplementationTest, DepthRangef) { 352 struct Cmds { 353 cmds::DepthRangef cmd; 354 }; 355 Cmds expected; 356 expected.cmd.Init(1, 2); 357 358 gl_->DepthRangef(1, 2); 359 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 360 } 361 362 TEST_F(GLES2ImplementationTest, DetachShader) { 363 struct Cmds { 364 cmds::DetachShader cmd; 365 }; 366 Cmds expected; 367 expected.cmd.Init(1, 2); 368 369 gl_->DetachShader(1, 2); 370 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 371 } 372 373 TEST_F(GLES2ImplementationTest, DisableVertexAttribArray) { 374 struct Cmds { 375 cmds::DisableVertexAttribArray cmd; 376 }; 377 Cmds expected; 378 expected.cmd.Init(1); 379 380 gl_->DisableVertexAttribArray(1); 381 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 382 } 383 384 TEST_F(GLES2ImplementationTest, DrawArrays) { 385 struct Cmds { 386 cmds::DrawArrays cmd; 387 }; 388 Cmds expected; 389 expected.cmd.Init(GL_POINTS, 2, 3); 390 391 gl_->DrawArrays(GL_POINTS, 2, 3); 392 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 393 } 394 395 TEST_F(GLES2ImplementationTest, EnableVertexAttribArray) { 396 struct Cmds { 397 cmds::EnableVertexAttribArray cmd; 398 }; 399 Cmds expected; 400 expected.cmd.Init(1); 401 402 gl_->EnableVertexAttribArray(1); 403 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 404 } 405 406 TEST_F(GLES2ImplementationTest, Flush) { 407 struct Cmds { 408 cmds::Flush cmd; 409 }; 410 Cmds expected; 411 expected.cmd.Init(); 412 413 gl_->Flush(); 414 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 415 } 416 417 TEST_F(GLES2ImplementationTest, FramebufferRenderbuffer) { 418 struct Cmds { 419 cmds::FramebufferRenderbuffer cmd; 420 }; 421 Cmds expected; 422 expected.cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 4); 423 424 gl_->FramebufferRenderbuffer( 425 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 4); 426 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 427 } 428 429 TEST_F(GLES2ImplementationTest, FramebufferTexture2D) { 430 struct Cmds { 431 cmds::FramebufferTexture2D cmd; 432 }; 433 Cmds expected; 434 expected.cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4); 435 436 gl_->FramebufferTexture2D( 437 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 0); 438 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 439 } 440 441 TEST_F(GLES2ImplementationTest, FramebufferTexture2DInvalidConstantArg4) { 442 gl_->FramebufferTexture2D( 443 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 1); 444 EXPECT_TRUE(NoCommandsWritten()); 445 EXPECT_EQ(GL_INVALID_VALUE, CheckError()); 446 } 447 448 TEST_F(GLES2ImplementationTest, FrontFace) { 449 struct Cmds { 450 cmds::FrontFace cmd; 451 }; 452 Cmds expected; 453 expected.cmd.Init(GL_CW); 454 455 gl_->FrontFace(GL_CW); 456 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 457 } 458 459 TEST_F(GLES2ImplementationTest, GenBuffers) { 460 GLuint ids[2] = { 461 0, 462 }; 463 struct Cmds { 464 cmds::GenBuffersImmediate gen; 465 GLuint data[2]; 466 }; 467 Cmds expected; 468 expected.gen.Init(arraysize(ids), &ids[0]); 469 expected.data[0] = kBuffersStartId; 470 expected.data[1] = kBuffersStartId + 1; 471 gl_->GenBuffers(arraysize(ids), &ids[0]); 472 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 473 EXPECT_EQ(kBuffersStartId, ids[0]); 474 EXPECT_EQ(kBuffersStartId + 1, ids[1]); 475 } 476 477 TEST_F(GLES2ImplementationTest, GenerateMipmap) { 478 struct Cmds { 479 cmds::GenerateMipmap cmd; 480 }; 481 Cmds expected; 482 expected.cmd.Init(GL_TEXTURE_2D); 483 484 gl_->GenerateMipmap(GL_TEXTURE_2D); 485 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 486 } 487 488 TEST_F(GLES2ImplementationTest, GenFramebuffers) { 489 GLuint ids[2] = { 490 0, 491 }; 492 struct Cmds { 493 cmds::GenFramebuffersImmediate gen; 494 GLuint data[2]; 495 }; 496 Cmds expected; 497 expected.gen.Init(arraysize(ids), &ids[0]); 498 expected.data[0] = kFramebuffersStartId; 499 expected.data[1] = kFramebuffersStartId + 1; 500 gl_->GenFramebuffers(arraysize(ids), &ids[0]); 501 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 502 EXPECT_EQ(kFramebuffersStartId, ids[0]); 503 EXPECT_EQ(kFramebuffersStartId + 1, ids[1]); 504 } 505 506 TEST_F(GLES2ImplementationTest, GenRenderbuffers) { 507 GLuint ids[2] = { 508 0, 509 }; 510 struct Cmds { 511 cmds::GenRenderbuffersImmediate gen; 512 GLuint data[2]; 513 }; 514 Cmds expected; 515 expected.gen.Init(arraysize(ids), &ids[0]); 516 expected.data[0] = kRenderbuffersStartId; 517 expected.data[1] = kRenderbuffersStartId + 1; 518 gl_->GenRenderbuffers(arraysize(ids), &ids[0]); 519 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 520 EXPECT_EQ(kRenderbuffersStartId, ids[0]); 521 EXPECT_EQ(kRenderbuffersStartId + 1, ids[1]); 522 } 523 524 TEST_F(GLES2ImplementationTest, GenTextures) { 525 GLuint ids[2] = { 526 0, 527 }; 528 struct Cmds { 529 cmds::GenTexturesImmediate gen; 530 GLuint data[2]; 531 }; 532 Cmds expected; 533 expected.gen.Init(arraysize(ids), &ids[0]); 534 expected.data[0] = kTexturesStartId; 535 expected.data[1] = kTexturesStartId + 1; 536 gl_->GenTextures(arraysize(ids), &ids[0]); 537 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 538 EXPECT_EQ(kTexturesStartId, ids[0]); 539 EXPECT_EQ(kTexturesStartId + 1, ids[1]); 540 } 541 // TODO: Implement unit test for GetActiveAttrib 542 // TODO: Implement unit test for GetActiveUniform 543 // TODO: Implement unit test for GetAttachedShaders 544 // TODO: Implement unit test for GetAttribLocation 545 546 TEST_F(GLES2ImplementationTest, GetBooleanv) { 547 struct Cmds { 548 cmds::GetBooleanv cmd; 549 }; 550 typedef cmds::GetBooleanv::Result Result; 551 Result::Type result = 0; 552 Cmds expected; 553 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 554 expected.cmd.Init(123, result1.id, result1.offset); 555 EXPECT_CALL(*command_buffer(), OnFlush()) 556 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 557 .RetiresOnSaturation(); 558 gl_->GetBooleanv(123, &result); 559 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 560 EXPECT_EQ(static_cast<Result::Type>(1), result); 561 } 562 563 TEST_F(GLES2ImplementationTest, GetBufferParameteriv) { 564 struct Cmds { 565 cmds::GetBufferParameteriv cmd; 566 }; 567 typedef cmds::GetBufferParameteriv::Result Result; 568 Result::Type result = 0; 569 Cmds expected; 570 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 571 expected.cmd.Init(123, GL_BUFFER_SIZE, result1.id, result1.offset); 572 EXPECT_CALL(*command_buffer(), OnFlush()) 573 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 574 .RetiresOnSaturation(); 575 gl_->GetBufferParameteriv(123, GL_BUFFER_SIZE, &result); 576 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 577 EXPECT_EQ(static_cast<Result::Type>(1), result); 578 } 579 580 TEST_F(GLES2ImplementationTest, GetFloatv) { 581 struct Cmds { 582 cmds::GetFloatv cmd; 583 }; 584 typedef cmds::GetFloatv::Result Result; 585 Result::Type result = 0; 586 Cmds expected; 587 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 588 expected.cmd.Init(123, result1.id, result1.offset); 589 EXPECT_CALL(*command_buffer(), OnFlush()) 590 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 591 .RetiresOnSaturation(); 592 gl_->GetFloatv(123, &result); 593 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 594 EXPECT_EQ(static_cast<Result::Type>(1), result); 595 } 596 597 TEST_F(GLES2ImplementationTest, GetFramebufferAttachmentParameteriv) { 598 struct Cmds { 599 cmds::GetFramebufferAttachmentParameteriv cmd; 600 }; 601 typedef cmds::GetFramebufferAttachmentParameteriv::Result Result; 602 Result::Type result = 0; 603 Cmds expected; 604 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 605 expected.cmd.Init(123, 606 GL_COLOR_ATTACHMENT0, 607 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, 608 result1.id, 609 result1.offset); 610 EXPECT_CALL(*command_buffer(), OnFlush()) 611 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 612 .RetiresOnSaturation(); 613 gl_->GetFramebufferAttachmentParameteriv( 614 123, 615 GL_COLOR_ATTACHMENT0, 616 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, 617 &result); 618 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 619 EXPECT_EQ(static_cast<Result::Type>(1), result); 620 } 621 622 TEST_F(GLES2ImplementationTest, GetIntegerv) { 623 struct Cmds { 624 cmds::GetIntegerv cmd; 625 }; 626 typedef cmds::GetIntegerv::Result Result; 627 Result::Type result = 0; 628 Cmds expected; 629 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 630 expected.cmd.Init(123, result1.id, result1.offset); 631 EXPECT_CALL(*command_buffer(), OnFlush()) 632 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 633 .RetiresOnSaturation(); 634 gl_->GetIntegerv(123, &result); 635 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 636 EXPECT_EQ(static_cast<Result::Type>(1), result); 637 } 638 639 TEST_F(GLES2ImplementationTest, GetProgramiv) { 640 struct Cmds { 641 cmds::GetProgramiv cmd; 642 }; 643 typedef cmds::GetProgramiv::Result Result; 644 Result::Type result = 0; 645 Cmds expected; 646 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 647 expected.cmd.Init(123, GL_DELETE_STATUS, result1.id, result1.offset); 648 EXPECT_CALL(*command_buffer(), OnFlush()) 649 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 650 .RetiresOnSaturation(); 651 gl_->GetProgramiv(123, GL_DELETE_STATUS, &result); 652 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 653 EXPECT_EQ(static_cast<Result::Type>(1), result); 654 } 655 // TODO: Implement unit test for GetProgramInfoLog 656 657 TEST_F(GLES2ImplementationTest, GetRenderbufferParameteriv) { 658 struct Cmds { 659 cmds::GetRenderbufferParameteriv cmd; 660 }; 661 typedef cmds::GetRenderbufferParameteriv::Result Result; 662 Result::Type result = 0; 663 Cmds expected; 664 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 665 expected.cmd.Init(123, GL_RENDERBUFFER_RED_SIZE, result1.id, result1.offset); 666 EXPECT_CALL(*command_buffer(), OnFlush()) 667 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 668 .RetiresOnSaturation(); 669 gl_->GetRenderbufferParameteriv(123, GL_RENDERBUFFER_RED_SIZE, &result); 670 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 671 EXPECT_EQ(static_cast<Result::Type>(1), result); 672 } 673 674 TEST_F(GLES2ImplementationTest, GetShaderiv) { 675 struct Cmds { 676 cmds::GetShaderiv cmd; 677 }; 678 typedef cmds::GetShaderiv::Result Result; 679 Result::Type result = 0; 680 Cmds expected; 681 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 682 expected.cmd.Init(123, GL_SHADER_TYPE, result1.id, result1.offset); 683 EXPECT_CALL(*command_buffer(), OnFlush()) 684 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 685 .RetiresOnSaturation(); 686 gl_->GetShaderiv(123, GL_SHADER_TYPE, &result); 687 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 688 EXPECT_EQ(static_cast<Result::Type>(1), result); 689 } 690 // TODO: Implement unit test for GetShaderInfoLog 691 // TODO: Implement unit test for GetShaderPrecisionFormat 692 693 TEST_F(GLES2ImplementationTest, GetTexParameterfv) { 694 struct Cmds { 695 cmds::GetTexParameterfv cmd; 696 }; 697 typedef cmds::GetTexParameterfv::Result Result; 698 Result::Type result = 0; 699 Cmds expected; 700 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 701 expected.cmd.Init(123, GL_TEXTURE_MAG_FILTER, result1.id, result1.offset); 702 EXPECT_CALL(*command_buffer(), OnFlush()) 703 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 704 .RetiresOnSaturation(); 705 gl_->GetTexParameterfv(123, GL_TEXTURE_MAG_FILTER, &result); 706 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 707 EXPECT_EQ(static_cast<Result::Type>(1), result); 708 } 709 710 TEST_F(GLES2ImplementationTest, GetTexParameteriv) { 711 struct Cmds { 712 cmds::GetTexParameteriv cmd; 713 }; 714 typedef cmds::GetTexParameteriv::Result Result; 715 Result::Type result = 0; 716 Cmds expected; 717 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 718 expected.cmd.Init(123, GL_TEXTURE_MAG_FILTER, result1.id, result1.offset); 719 EXPECT_CALL(*command_buffer(), OnFlush()) 720 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 721 .RetiresOnSaturation(); 722 gl_->GetTexParameteriv(123, GL_TEXTURE_MAG_FILTER, &result); 723 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 724 EXPECT_EQ(static_cast<Result::Type>(1), result); 725 } 726 // TODO: Implement unit test for GetUniformfv 727 // TODO: Implement unit test for GetUniformiv 728 // TODO: Implement unit test for GetUniformLocation 729 730 TEST_F(GLES2ImplementationTest, GetVertexAttribfv) { 731 struct Cmds { 732 cmds::GetVertexAttribfv cmd; 733 }; 734 typedef cmds::GetVertexAttribfv::Result Result; 735 Result::Type result = 0; 736 Cmds expected; 737 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 738 expected.cmd.Init( 739 123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, result1.id, result1.offset); 740 EXPECT_CALL(*command_buffer(), OnFlush()) 741 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 742 .RetiresOnSaturation(); 743 gl_->GetVertexAttribfv(123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, &result); 744 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 745 EXPECT_EQ(static_cast<Result::Type>(1), result); 746 } 747 748 TEST_F(GLES2ImplementationTest, GetVertexAttribiv) { 749 struct Cmds { 750 cmds::GetVertexAttribiv cmd; 751 }; 752 typedef cmds::GetVertexAttribiv::Result Result; 753 Result::Type result = 0; 754 Cmds expected; 755 ExpectedMemoryInfo result1 = GetExpectedResultMemory(4); 756 expected.cmd.Init( 757 123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, result1.id, result1.offset); 758 EXPECT_CALL(*command_buffer(), OnFlush()) 759 .WillOnce(SetMemory(result1.ptr, SizedResultHelper<Result::Type>(1))) 760 .RetiresOnSaturation(); 761 gl_->GetVertexAttribiv(123, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, &result); 762 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 763 EXPECT_EQ(static_cast<Result::Type>(1), result); 764 } 765 766 TEST_F(GLES2ImplementationTest, Hint) { 767 struct Cmds { 768 cmds::Hint cmd; 769 }; 770 Cmds expected; 771 expected.cmd.Init(GL_GENERATE_MIPMAP_HINT, GL_FASTEST); 772 773 gl_->Hint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST); 774 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 775 } 776 777 TEST_F(GLES2ImplementationTest, IsBuffer) { 778 struct Cmds { 779 cmds::IsBuffer cmd; 780 }; 781 782 Cmds expected; 783 ExpectedMemoryInfo result1 = 784 GetExpectedResultMemory(sizeof(cmds::IsBuffer::Result)); 785 expected.cmd.Init(1, result1.id, result1.offset); 786 787 EXPECT_CALL(*command_buffer(), OnFlush()) 788 .WillOnce(SetMemory(result1.ptr, uint32_t(1))) 789 .RetiresOnSaturation(); 790 791 GLboolean result = gl_->IsBuffer(1); 792 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 793 EXPECT_TRUE(result); 794 } 795 796 TEST_F(GLES2ImplementationTest, IsEnabled) { 797 struct Cmds { 798 cmds::IsEnabled cmd; 799 }; 800 801 Cmds expected; 802 ExpectedMemoryInfo result1 = 803 GetExpectedResultMemory(sizeof(cmds::IsEnabled::Result)); 804 expected.cmd.Init(1, result1.id, result1.offset); 805 806 EXPECT_CALL(*command_buffer(), OnFlush()) 807 .WillOnce(SetMemory(result1.ptr, uint32_t(1))) 808 .RetiresOnSaturation(); 809 810 GLboolean result = gl_->IsEnabled(1); 811 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 812 EXPECT_TRUE(result); 813 } 814 815 TEST_F(GLES2ImplementationTest, IsFramebuffer) { 816 struct Cmds { 817 cmds::IsFramebuffer cmd; 818 }; 819 820 Cmds expected; 821 ExpectedMemoryInfo result1 = 822 GetExpectedResultMemory(sizeof(cmds::IsFramebuffer::Result)); 823 expected.cmd.Init(1, result1.id, result1.offset); 824 825 EXPECT_CALL(*command_buffer(), OnFlush()) 826 .WillOnce(SetMemory(result1.ptr, uint32_t(1))) 827 .RetiresOnSaturation(); 828 829 GLboolean result = gl_->IsFramebuffer(1); 830 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 831 EXPECT_TRUE(result); 832 } 833 834 TEST_F(GLES2ImplementationTest, IsProgram) { 835 struct Cmds { 836 cmds::IsProgram cmd; 837 }; 838 839 Cmds expected; 840 ExpectedMemoryInfo result1 = 841 GetExpectedResultMemory(sizeof(cmds::IsProgram::Result)); 842 expected.cmd.Init(1, result1.id, result1.offset); 843 844 EXPECT_CALL(*command_buffer(), OnFlush()) 845 .WillOnce(SetMemory(result1.ptr, uint32_t(1))) 846 .RetiresOnSaturation(); 847 848 GLboolean result = gl_->IsProgram(1); 849 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 850 EXPECT_TRUE(result); 851 } 852 853 TEST_F(GLES2ImplementationTest, IsRenderbuffer) { 854 struct Cmds { 855 cmds::IsRenderbuffer cmd; 856 }; 857 858 Cmds expected; 859 ExpectedMemoryInfo result1 = 860 GetExpectedResultMemory(sizeof(cmds::IsRenderbuffer::Result)); 861 expected.cmd.Init(1, result1.id, result1.offset); 862 863 EXPECT_CALL(*command_buffer(), OnFlush()) 864 .WillOnce(SetMemory(result1.ptr, uint32_t(1))) 865 .RetiresOnSaturation(); 866 867 GLboolean result = gl_->IsRenderbuffer(1); 868 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 869 EXPECT_TRUE(result); 870 } 871 872 TEST_F(GLES2ImplementationTest, IsShader) { 873 struct Cmds { 874 cmds::IsShader cmd; 875 }; 876 877 Cmds expected; 878 ExpectedMemoryInfo result1 = 879 GetExpectedResultMemory(sizeof(cmds::IsShader::Result)); 880 expected.cmd.Init(1, result1.id, result1.offset); 881 882 EXPECT_CALL(*command_buffer(), OnFlush()) 883 .WillOnce(SetMemory(result1.ptr, uint32_t(1))) 884 .RetiresOnSaturation(); 885 886 GLboolean result = gl_->IsShader(1); 887 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 888 EXPECT_TRUE(result); 889 } 890 891 TEST_F(GLES2ImplementationTest, IsTexture) { 892 struct Cmds { 893 cmds::IsTexture cmd; 894 }; 895 896 Cmds expected; 897 ExpectedMemoryInfo result1 = 898 GetExpectedResultMemory(sizeof(cmds::IsTexture::Result)); 899 expected.cmd.Init(1, result1.id, result1.offset); 900 901 EXPECT_CALL(*command_buffer(), OnFlush()) 902 .WillOnce(SetMemory(result1.ptr, uint32_t(1))) 903 .RetiresOnSaturation(); 904 905 GLboolean result = gl_->IsTexture(1); 906 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 907 EXPECT_TRUE(result); 908 } 909 910 TEST_F(GLES2ImplementationTest, LineWidth) { 911 struct Cmds { 912 cmds::LineWidth cmd; 913 }; 914 Cmds expected; 915 expected.cmd.Init(0.5f); 916 917 gl_->LineWidth(0.5f); 918 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 919 } 920 921 TEST_F(GLES2ImplementationTest, LinkProgram) { 922 struct Cmds { 923 cmds::LinkProgram cmd; 924 }; 925 Cmds expected; 926 expected.cmd.Init(1); 927 928 gl_->LinkProgram(1); 929 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 930 } 931 932 TEST_F(GLES2ImplementationTest, PixelStorei) { 933 struct Cmds { 934 cmds::PixelStorei cmd; 935 }; 936 Cmds expected; 937 expected.cmd.Init(GL_PACK_ALIGNMENT, 1); 938 939 gl_->PixelStorei(GL_PACK_ALIGNMENT, 1); 940 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 941 } 942 943 TEST_F(GLES2ImplementationTest, PolygonOffset) { 944 struct Cmds { 945 cmds::PolygonOffset cmd; 946 }; 947 Cmds expected; 948 expected.cmd.Init(1, 2); 949 950 gl_->PolygonOffset(1, 2); 951 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 952 } 953 954 TEST_F(GLES2ImplementationTest, ReleaseShaderCompiler) { 955 struct Cmds { 956 cmds::ReleaseShaderCompiler cmd; 957 }; 958 Cmds expected; 959 expected.cmd.Init(); 960 961 gl_->ReleaseShaderCompiler(); 962 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 963 } 964 965 TEST_F(GLES2ImplementationTest, RenderbufferStorage) { 966 struct Cmds { 967 cmds::RenderbufferStorage cmd; 968 }; 969 Cmds expected; 970 expected.cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4); 971 972 gl_->RenderbufferStorage(GL_RENDERBUFFER, GL_RGBA4, 3, 4); 973 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 974 } 975 976 TEST_F(GLES2ImplementationTest, SampleCoverage) { 977 struct Cmds { 978 cmds::SampleCoverage cmd; 979 }; 980 Cmds expected; 981 expected.cmd.Init(1, true); 982 983 gl_->SampleCoverage(1, true); 984 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 985 } 986 987 TEST_F(GLES2ImplementationTest, Scissor) { 988 struct Cmds { 989 cmds::Scissor cmd; 990 }; 991 Cmds expected; 992 expected.cmd.Init(1, 2, 3, 4); 993 994 gl_->Scissor(1, 2, 3, 4); 995 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 996 } 997 998 TEST_F(GLES2ImplementationTest, StencilFunc) { 999 struct Cmds { 1000 cmds::StencilFunc cmd; 1001 }; 1002 Cmds expected; 1003 expected.cmd.Init(GL_NEVER, 2, 3); 1004 1005 gl_->StencilFunc(GL_NEVER, 2, 3); 1006 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1007 } 1008 1009 TEST_F(GLES2ImplementationTest, StencilFuncSeparate) { 1010 struct Cmds { 1011 cmds::StencilFuncSeparate cmd; 1012 }; 1013 Cmds expected; 1014 expected.cmd.Init(GL_FRONT, GL_NEVER, 3, 4); 1015 1016 gl_->StencilFuncSeparate(GL_FRONT, GL_NEVER, 3, 4); 1017 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1018 } 1019 1020 TEST_F(GLES2ImplementationTest, StencilMask) { 1021 struct Cmds { 1022 cmds::StencilMask cmd; 1023 }; 1024 Cmds expected; 1025 expected.cmd.Init(1); 1026 1027 gl_->StencilMask(1); 1028 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1029 } 1030 1031 TEST_F(GLES2ImplementationTest, StencilMaskSeparate) { 1032 struct Cmds { 1033 cmds::StencilMaskSeparate cmd; 1034 }; 1035 Cmds expected; 1036 expected.cmd.Init(GL_FRONT, 2); 1037 1038 gl_->StencilMaskSeparate(GL_FRONT, 2); 1039 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1040 } 1041 1042 TEST_F(GLES2ImplementationTest, StencilOp) { 1043 struct Cmds { 1044 cmds::StencilOp cmd; 1045 }; 1046 Cmds expected; 1047 expected.cmd.Init(GL_KEEP, GL_INCR, GL_KEEP); 1048 1049 gl_->StencilOp(GL_KEEP, GL_INCR, GL_KEEP); 1050 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1051 } 1052 1053 TEST_F(GLES2ImplementationTest, StencilOpSeparate) { 1054 struct Cmds { 1055 cmds::StencilOpSeparate cmd; 1056 }; 1057 Cmds expected; 1058 expected.cmd.Init(GL_FRONT, GL_INCR, GL_KEEP, GL_KEEP); 1059 1060 gl_->StencilOpSeparate(GL_FRONT, GL_INCR, GL_KEEP, GL_KEEP); 1061 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1062 } 1063 1064 TEST_F(GLES2ImplementationTest, TexParameterf) { 1065 struct Cmds { 1066 cmds::TexParameterf cmd; 1067 }; 1068 Cmds expected; 1069 expected.cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 1070 1071 gl_->TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 1072 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1073 } 1074 1075 TEST_F(GLES2ImplementationTest, TexParameterfv) { 1076 GLfloat data[1] = {0}; 1077 struct Cmds { 1078 cmds::TexParameterfvImmediate cmd; 1079 GLfloat data[1]; 1080 }; 1081 1082 for (int jj = 0; jj < 1; ++jj) { 1083 data[jj] = static_cast<GLfloat>(jj); 1084 } 1085 Cmds expected; 1086 expected.cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &data[0]); 1087 gl_->TexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &data[0]); 1088 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1089 } 1090 1091 TEST_F(GLES2ImplementationTest, TexParameteri) { 1092 struct Cmds { 1093 cmds::TexParameteri cmd; 1094 }; 1095 Cmds expected; 1096 expected.cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 1097 1098 gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 1099 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1100 } 1101 1102 TEST_F(GLES2ImplementationTest, TexParameteriv) { 1103 GLint data[1] = {0}; 1104 struct Cmds { 1105 cmds::TexParameterivImmediate cmd; 1106 GLint data[1]; 1107 }; 1108 1109 for (int jj = 0; jj < 1; ++jj) { 1110 data[jj] = static_cast<GLint>(jj); 1111 } 1112 Cmds expected; 1113 expected.cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &data[0]); 1114 gl_->TexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &data[0]); 1115 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1116 } 1117 1118 TEST_F(GLES2ImplementationTest, Uniform1f) { 1119 struct Cmds { 1120 cmds::Uniform1f cmd; 1121 }; 1122 Cmds expected; 1123 expected.cmd.Init(1, 2); 1124 1125 gl_->Uniform1f(1, 2); 1126 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1127 } 1128 1129 TEST_F(GLES2ImplementationTest, Uniform1fv) { 1130 GLfloat data[2][1] = {{0}}; 1131 struct Cmds { 1132 cmds::Uniform1fvImmediate cmd; 1133 GLfloat data[2][1]; 1134 }; 1135 1136 Cmds expected; 1137 for (int ii = 0; ii < 2; ++ii) { 1138 for (int jj = 0; jj < 1; ++jj) { 1139 data[ii][jj] = static_cast<GLfloat>(ii * 1 + jj); 1140 } 1141 } 1142 expected.cmd.Init(1, 2, &data[0][0]); 1143 gl_->Uniform1fv(1, 2, &data[0][0]); 1144 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1145 } 1146 1147 TEST_F(GLES2ImplementationTest, Uniform1i) { 1148 struct Cmds { 1149 cmds::Uniform1i cmd; 1150 }; 1151 Cmds expected; 1152 expected.cmd.Init(1, 2); 1153 1154 gl_->Uniform1i(1, 2); 1155 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1156 } 1157 1158 TEST_F(GLES2ImplementationTest, Uniform1iv) { 1159 GLint data[2][1] = {{0}}; 1160 struct Cmds { 1161 cmds::Uniform1ivImmediate cmd; 1162 GLint data[2][1]; 1163 }; 1164 1165 Cmds expected; 1166 for (int ii = 0; ii < 2; ++ii) { 1167 for (int jj = 0; jj < 1; ++jj) { 1168 data[ii][jj] = static_cast<GLint>(ii * 1 + jj); 1169 } 1170 } 1171 expected.cmd.Init(1, 2, &data[0][0]); 1172 gl_->Uniform1iv(1, 2, &data[0][0]); 1173 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1174 } 1175 1176 TEST_F(GLES2ImplementationTest, Uniform2f) { 1177 struct Cmds { 1178 cmds::Uniform2f cmd; 1179 }; 1180 Cmds expected; 1181 expected.cmd.Init(1, 2, 3); 1182 1183 gl_->Uniform2f(1, 2, 3); 1184 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1185 } 1186 1187 TEST_F(GLES2ImplementationTest, Uniform2fv) { 1188 GLfloat data[2][2] = {{0}}; 1189 struct Cmds { 1190 cmds::Uniform2fvImmediate cmd; 1191 GLfloat data[2][2]; 1192 }; 1193 1194 Cmds expected; 1195 for (int ii = 0; ii < 2; ++ii) { 1196 for (int jj = 0; jj < 2; ++jj) { 1197 data[ii][jj] = static_cast<GLfloat>(ii * 2 + jj); 1198 } 1199 } 1200 expected.cmd.Init(1, 2, &data[0][0]); 1201 gl_->Uniform2fv(1, 2, &data[0][0]); 1202 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1203 } 1204 1205 TEST_F(GLES2ImplementationTest, Uniform2i) { 1206 struct Cmds { 1207 cmds::Uniform2i cmd; 1208 }; 1209 Cmds expected; 1210 expected.cmd.Init(1, 2, 3); 1211 1212 gl_->Uniform2i(1, 2, 3); 1213 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1214 } 1215 1216 TEST_F(GLES2ImplementationTest, Uniform2iv) { 1217 GLint data[2][2] = {{0}}; 1218 struct Cmds { 1219 cmds::Uniform2ivImmediate cmd; 1220 GLint data[2][2]; 1221 }; 1222 1223 Cmds expected; 1224 for (int ii = 0; ii < 2; ++ii) { 1225 for (int jj = 0; jj < 2; ++jj) { 1226 data[ii][jj] = static_cast<GLint>(ii * 2 + jj); 1227 } 1228 } 1229 expected.cmd.Init(1, 2, &data[0][0]); 1230 gl_->Uniform2iv(1, 2, &data[0][0]); 1231 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1232 } 1233 1234 TEST_F(GLES2ImplementationTest, Uniform3f) { 1235 struct Cmds { 1236 cmds::Uniform3f cmd; 1237 }; 1238 Cmds expected; 1239 expected.cmd.Init(1, 2, 3, 4); 1240 1241 gl_->Uniform3f(1, 2, 3, 4); 1242 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1243 } 1244 1245 TEST_F(GLES2ImplementationTest, Uniform3fv) { 1246 GLfloat data[2][3] = {{0}}; 1247 struct Cmds { 1248 cmds::Uniform3fvImmediate cmd; 1249 GLfloat data[2][3]; 1250 }; 1251 1252 Cmds expected; 1253 for (int ii = 0; ii < 2; ++ii) { 1254 for (int jj = 0; jj < 3; ++jj) { 1255 data[ii][jj] = static_cast<GLfloat>(ii * 3 + jj); 1256 } 1257 } 1258 expected.cmd.Init(1, 2, &data[0][0]); 1259 gl_->Uniform3fv(1, 2, &data[0][0]); 1260 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1261 } 1262 1263 TEST_F(GLES2ImplementationTest, Uniform3i) { 1264 struct Cmds { 1265 cmds::Uniform3i cmd; 1266 }; 1267 Cmds expected; 1268 expected.cmd.Init(1, 2, 3, 4); 1269 1270 gl_->Uniform3i(1, 2, 3, 4); 1271 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1272 } 1273 1274 TEST_F(GLES2ImplementationTest, Uniform3iv) { 1275 GLint data[2][3] = {{0}}; 1276 struct Cmds { 1277 cmds::Uniform3ivImmediate cmd; 1278 GLint data[2][3]; 1279 }; 1280 1281 Cmds expected; 1282 for (int ii = 0; ii < 2; ++ii) { 1283 for (int jj = 0; jj < 3; ++jj) { 1284 data[ii][jj] = static_cast<GLint>(ii * 3 + jj); 1285 } 1286 } 1287 expected.cmd.Init(1, 2, &data[0][0]); 1288 gl_->Uniform3iv(1, 2, &data[0][0]); 1289 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1290 } 1291 1292 TEST_F(GLES2ImplementationTest, Uniform4f) { 1293 struct Cmds { 1294 cmds::Uniform4f cmd; 1295 }; 1296 Cmds expected; 1297 expected.cmd.Init(1, 2, 3, 4, 5); 1298 1299 gl_->Uniform4f(1, 2, 3, 4, 5); 1300 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1301 } 1302 1303 TEST_F(GLES2ImplementationTest, Uniform4fv) { 1304 GLfloat data[2][4] = {{0}}; 1305 struct Cmds { 1306 cmds::Uniform4fvImmediate cmd; 1307 GLfloat data[2][4]; 1308 }; 1309 1310 Cmds expected; 1311 for (int ii = 0; ii < 2; ++ii) { 1312 for (int jj = 0; jj < 4; ++jj) { 1313 data[ii][jj] = static_cast<GLfloat>(ii * 4 + jj); 1314 } 1315 } 1316 expected.cmd.Init(1, 2, &data[0][0]); 1317 gl_->Uniform4fv(1, 2, &data[0][0]); 1318 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1319 } 1320 1321 TEST_F(GLES2ImplementationTest, Uniform4i) { 1322 struct Cmds { 1323 cmds::Uniform4i cmd; 1324 }; 1325 Cmds expected; 1326 expected.cmd.Init(1, 2, 3, 4, 5); 1327 1328 gl_->Uniform4i(1, 2, 3, 4, 5); 1329 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1330 } 1331 1332 TEST_F(GLES2ImplementationTest, Uniform4iv) { 1333 GLint data[2][4] = {{0}}; 1334 struct Cmds { 1335 cmds::Uniform4ivImmediate cmd; 1336 GLint data[2][4]; 1337 }; 1338 1339 Cmds expected; 1340 for (int ii = 0; ii < 2; ++ii) { 1341 for (int jj = 0; jj < 4; ++jj) { 1342 data[ii][jj] = static_cast<GLint>(ii * 4 + jj); 1343 } 1344 } 1345 expected.cmd.Init(1, 2, &data[0][0]); 1346 gl_->Uniform4iv(1, 2, &data[0][0]); 1347 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1348 } 1349 1350 TEST_F(GLES2ImplementationTest, UniformMatrix2fv) { 1351 GLfloat data[2][4] = {{0}}; 1352 struct Cmds { 1353 cmds::UniformMatrix2fvImmediate cmd; 1354 GLfloat data[2][4]; 1355 }; 1356 1357 Cmds expected; 1358 for (int ii = 0; ii < 2; ++ii) { 1359 for (int jj = 0; jj < 4; ++jj) { 1360 data[ii][jj] = static_cast<GLfloat>(ii * 4 + jj); 1361 } 1362 } 1363 expected.cmd.Init(1, 2, &data[0][0]); 1364 gl_->UniformMatrix2fv(1, 2, false, &data[0][0]); 1365 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1366 } 1367 1368 TEST_F(GLES2ImplementationTest, UniformMatrix2fvInvalidConstantArg2) { 1369 GLfloat data[2][4] = {{0}}; 1370 for (int ii = 0; ii < 2; ++ii) { 1371 for (int jj = 0; jj < 4; ++jj) { 1372 data[ii][jj] = static_cast<GLfloat>(ii * 4 + jj); 1373 } 1374 } 1375 gl_->UniformMatrix2fv(1, 2, true, &data[0][0]); 1376 EXPECT_TRUE(NoCommandsWritten()); 1377 EXPECT_EQ(GL_INVALID_VALUE, CheckError()); 1378 } 1379 1380 TEST_F(GLES2ImplementationTest, UniformMatrix3fv) { 1381 GLfloat data[2][9] = {{0}}; 1382 struct Cmds { 1383 cmds::UniformMatrix3fvImmediate cmd; 1384 GLfloat data[2][9]; 1385 }; 1386 1387 Cmds expected; 1388 for (int ii = 0; ii < 2; ++ii) { 1389 for (int jj = 0; jj < 9; ++jj) { 1390 data[ii][jj] = static_cast<GLfloat>(ii * 9 + jj); 1391 } 1392 } 1393 expected.cmd.Init(1, 2, &data[0][0]); 1394 gl_->UniformMatrix3fv(1, 2, false, &data[0][0]); 1395 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1396 } 1397 1398 TEST_F(GLES2ImplementationTest, UniformMatrix3fvInvalidConstantArg2) { 1399 GLfloat data[2][9] = {{0}}; 1400 for (int ii = 0; ii < 2; ++ii) { 1401 for (int jj = 0; jj < 9; ++jj) { 1402 data[ii][jj] = static_cast<GLfloat>(ii * 9 + jj); 1403 } 1404 } 1405 gl_->UniformMatrix3fv(1, 2, true, &data[0][0]); 1406 EXPECT_TRUE(NoCommandsWritten()); 1407 EXPECT_EQ(GL_INVALID_VALUE, CheckError()); 1408 } 1409 1410 TEST_F(GLES2ImplementationTest, UniformMatrix4fv) { 1411 GLfloat data[2][16] = {{0}}; 1412 struct Cmds { 1413 cmds::UniformMatrix4fvImmediate cmd; 1414 GLfloat data[2][16]; 1415 }; 1416 1417 Cmds expected; 1418 for (int ii = 0; ii < 2; ++ii) { 1419 for (int jj = 0; jj < 16; ++jj) { 1420 data[ii][jj] = static_cast<GLfloat>(ii * 16 + jj); 1421 } 1422 } 1423 expected.cmd.Init(1, 2, &data[0][0]); 1424 gl_->UniformMatrix4fv(1, 2, false, &data[0][0]); 1425 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1426 } 1427 1428 TEST_F(GLES2ImplementationTest, UniformMatrix4fvInvalidConstantArg2) { 1429 GLfloat data[2][16] = {{0}}; 1430 for (int ii = 0; ii < 2; ++ii) { 1431 for (int jj = 0; jj < 16; ++jj) { 1432 data[ii][jj] = static_cast<GLfloat>(ii * 16 + jj); 1433 } 1434 } 1435 gl_->UniformMatrix4fv(1, 2, true, &data[0][0]); 1436 EXPECT_TRUE(NoCommandsWritten()); 1437 EXPECT_EQ(GL_INVALID_VALUE, CheckError()); 1438 } 1439 1440 TEST_F(GLES2ImplementationTest, UseProgram) { 1441 struct Cmds { 1442 cmds::UseProgram cmd; 1443 }; 1444 Cmds expected; 1445 expected.cmd.Init(1); 1446 1447 gl_->UseProgram(1); 1448 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1449 ClearCommands(); 1450 gl_->UseProgram(1); 1451 EXPECT_TRUE(NoCommandsWritten()); 1452 } 1453 1454 TEST_F(GLES2ImplementationTest, ValidateProgram) { 1455 struct Cmds { 1456 cmds::ValidateProgram cmd; 1457 }; 1458 Cmds expected; 1459 expected.cmd.Init(1); 1460 1461 gl_->ValidateProgram(1); 1462 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1463 } 1464 1465 TEST_F(GLES2ImplementationTest, VertexAttrib1f) { 1466 struct Cmds { 1467 cmds::VertexAttrib1f cmd; 1468 }; 1469 Cmds expected; 1470 expected.cmd.Init(1, 2); 1471 1472 gl_->VertexAttrib1f(1, 2); 1473 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1474 } 1475 1476 TEST_F(GLES2ImplementationTest, VertexAttrib1fv) { 1477 GLfloat data[1] = {0}; 1478 struct Cmds { 1479 cmds::VertexAttrib1fvImmediate cmd; 1480 GLfloat data[1]; 1481 }; 1482 1483 for (int jj = 0; jj < 1; ++jj) { 1484 data[jj] = static_cast<GLfloat>(jj); 1485 } 1486 Cmds expected; 1487 expected.cmd.Init(1, &data[0]); 1488 gl_->VertexAttrib1fv(1, &data[0]); 1489 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1490 } 1491 1492 TEST_F(GLES2ImplementationTest, VertexAttrib2f) { 1493 struct Cmds { 1494 cmds::VertexAttrib2f cmd; 1495 }; 1496 Cmds expected; 1497 expected.cmd.Init(1, 2, 3); 1498 1499 gl_->VertexAttrib2f(1, 2, 3); 1500 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1501 } 1502 1503 TEST_F(GLES2ImplementationTest, VertexAttrib2fv) { 1504 GLfloat data[2] = {0}; 1505 struct Cmds { 1506 cmds::VertexAttrib2fvImmediate cmd; 1507 GLfloat data[2]; 1508 }; 1509 1510 for (int jj = 0; jj < 2; ++jj) { 1511 data[jj] = static_cast<GLfloat>(jj); 1512 } 1513 Cmds expected; 1514 expected.cmd.Init(1, &data[0]); 1515 gl_->VertexAttrib2fv(1, &data[0]); 1516 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1517 } 1518 1519 TEST_F(GLES2ImplementationTest, VertexAttrib3f) { 1520 struct Cmds { 1521 cmds::VertexAttrib3f cmd; 1522 }; 1523 Cmds expected; 1524 expected.cmd.Init(1, 2, 3, 4); 1525 1526 gl_->VertexAttrib3f(1, 2, 3, 4); 1527 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1528 } 1529 1530 TEST_F(GLES2ImplementationTest, VertexAttrib3fv) { 1531 GLfloat data[3] = {0}; 1532 struct Cmds { 1533 cmds::VertexAttrib3fvImmediate cmd; 1534 GLfloat data[3]; 1535 }; 1536 1537 for (int jj = 0; jj < 3; ++jj) { 1538 data[jj] = static_cast<GLfloat>(jj); 1539 } 1540 Cmds expected; 1541 expected.cmd.Init(1, &data[0]); 1542 gl_->VertexAttrib3fv(1, &data[0]); 1543 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1544 } 1545 1546 TEST_F(GLES2ImplementationTest, VertexAttrib4f) { 1547 struct Cmds { 1548 cmds::VertexAttrib4f cmd; 1549 }; 1550 Cmds expected; 1551 expected.cmd.Init(1, 2, 3, 4, 5); 1552 1553 gl_->VertexAttrib4f(1, 2, 3, 4, 5); 1554 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1555 } 1556 1557 TEST_F(GLES2ImplementationTest, VertexAttrib4fv) { 1558 GLfloat data[4] = {0}; 1559 struct Cmds { 1560 cmds::VertexAttrib4fvImmediate cmd; 1561 GLfloat data[4]; 1562 }; 1563 1564 for (int jj = 0; jj < 4; ++jj) { 1565 data[jj] = static_cast<GLfloat>(jj); 1566 } 1567 Cmds expected; 1568 expected.cmd.Init(1, &data[0]); 1569 gl_->VertexAttrib4fv(1, &data[0]); 1570 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1571 } 1572 1573 TEST_F(GLES2ImplementationTest, Viewport) { 1574 struct Cmds { 1575 cmds::Viewport cmd; 1576 }; 1577 Cmds expected; 1578 expected.cmd.Init(1, 2, 3, 4); 1579 1580 gl_->Viewport(1, 2, 3, 4); 1581 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1582 } 1583 1584 TEST_F(GLES2ImplementationTest, BlitFramebufferCHROMIUM) { 1585 struct Cmds { 1586 cmds::BlitFramebufferCHROMIUM cmd; 1587 }; 1588 Cmds expected; 1589 expected.cmd.Init(1, 2, 3, 4, 5, 6, 7, 8, 9, GL_NEAREST); 1590 1591 gl_->BlitFramebufferCHROMIUM(1, 2, 3, 4, 5, 6, 7, 8, 9, GL_NEAREST); 1592 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1593 } 1594 1595 TEST_F(GLES2ImplementationTest, RenderbufferStorageMultisampleCHROMIUM) { 1596 struct Cmds { 1597 cmds::RenderbufferStorageMultisampleCHROMIUM cmd; 1598 }; 1599 Cmds expected; 1600 expected.cmd.Init(GL_RENDERBUFFER, 2, GL_RGBA4, 4, 5); 1601 1602 gl_->RenderbufferStorageMultisampleCHROMIUM( 1603 GL_RENDERBUFFER, 2, GL_RGBA4, 4, 5); 1604 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1605 } 1606 1607 TEST_F(GLES2ImplementationTest, RenderbufferStorageMultisampleEXT) { 1608 struct Cmds { 1609 cmds::RenderbufferStorageMultisampleEXT cmd; 1610 }; 1611 Cmds expected; 1612 expected.cmd.Init(GL_RENDERBUFFER, 2, GL_RGBA4, 4, 5); 1613 1614 gl_->RenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 2, GL_RGBA4, 4, 5); 1615 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1616 } 1617 1618 TEST_F(GLES2ImplementationTest, FramebufferTexture2DMultisampleEXT) { 1619 struct Cmds { 1620 cmds::FramebufferTexture2DMultisampleEXT cmd; 1621 }; 1622 Cmds expected; 1623 expected.cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 6); 1624 1625 gl_->FramebufferTexture2DMultisampleEXT( 1626 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 0, 6); 1627 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1628 } 1629 1630 TEST_F(GLES2ImplementationTest, 1631 FramebufferTexture2DMultisampleEXTInvalidConstantArg4) { 1632 gl_->FramebufferTexture2DMultisampleEXT( 1633 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 4, 1, 6); 1634 EXPECT_TRUE(NoCommandsWritten()); 1635 EXPECT_EQ(GL_INVALID_VALUE, CheckError()); 1636 } 1637 1638 TEST_F(GLES2ImplementationTest, TexStorage2DEXT) { 1639 struct Cmds { 1640 cmds::TexStorage2DEXT cmd; 1641 }; 1642 Cmds expected; 1643 expected.cmd.Init(GL_TEXTURE_2D, 2, GL_RGB565, 4, 5); 1644 1645 gl_->TexStorage2DEXT(GL_TEXTURE_2D, 2, GL_RGB565, 4, 5); 1646 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1647 } 1648 1649 TEST_F(GLES2ImplementationTest, GenQueriesEXT) { 1650 GLuint ids[2] = { 1651 0, 1652 }; 1653 struct Cmds { 1654 cmds::GenQueriesEXTImmediate gen; 1655 GLuint data[2]; 1656 }; 1657 Cmds expected; 1658 expected.gen.Init(arraysize(ids), &ids[0]); 1659 expected.data[0] = kQueriesStartId; 1660 expected.data[1] = kQueriesStartId + 1; 1661 gl_->GenQueriesEXT(arraysize(ids), &ids[0]); 1662 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1663 EXPECT_EQ(kQueriesStartId, ids[0]); 1664 EXPECT_EQ(kQueriesStartId + 1, ids[1]); 1665 } 1666 1667 TEST_F(GLES2ImplementationTest, DeleteQueriesEXT) { 1668 GLuint ids[2] = {kQueriesStartId, kQueriesStartId + 1}; 1669 struct Cmds { 1670 cmds::DeleteQueriesEXTImmediate del; 1671 GLuint data[2]; 1672 }; 1673 Cmds expected; 1674 expected.del.Init(arraysize(ids), &ids[0]); 1675 expected.data[0] = kQueriesStartId; 1676 expected.data[1] = kQueriesStartId + 1; 1677 gl_->DeleteQueriesEXT(arraysize(ids), &ids[0]); 1678 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1679 } 1680 // TODO: Implement unit test for BeginQueryEXT 1681 // TODO: Implement unit test for InsertEventMarkerEXT 1682 // TODO: Implement unit test for PushGroupMarkerEXT 1683 1684 TEST_F(GLES2ImplementationTest, PopGroupMarkerEXT) { 1685 struct Cmds { 1686 cmds::PopGroupMarkerEXT cmd; 1687 }; 1688 Cmds expected; 1689 expected.cmd.Init(); 1690 1691 gl_->PopGroupMarkerEXT(); 1692 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1693 } 1694 1695 TEST_F(GLES2ImplementationTest, GenVertexArraysOES) { 1696 GLuint ids[2] = { 1697 0, 1698 }; 1699 struct Cmds { 1700 cmds::GenVertexArraysOESImmediate gen; 1701 GLuint data[2]; 1702 }; 1703 Cmds expected; 1704 expected.gen.Init(arraysize(ids), &ids[0]); 1705 expected.data[0] = kVertexArraysStartId; 1706 expected.data[1] = kVertexArraysStartId + 1; 1707 gl_->GenVertexArraysOES(arraysize(ids), &ids[0]); 1708 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1709 EXPECT_EQ(kVertexArraysStartId, ids[0]); 1710 EXPECT_EQ(kVertexArraysStartId + 1, ids[1]); 1711 } 1712 1713 TEST_F(GLES2ImplementationTest, DeleteVertexArraysOES) { 1714 GLuint ids[2] = {kVertexArraysStartId, kVertexArraysStartId + 1}; 1715 struct Cmds { 1716 cmds::DeleteVertexArraysOESImmediate del; 1717 GLuint data[2]; 1718 }; 1719 Cmds expected; 1720 expected.del.Init(arraysize(ids), &ids[0]); 1721 expected.data[0] = kVertexArraysStartId; 1722 expected.data[1] = kVertexArraysStartId + 1; 1723 gl_->DeleteVertexArraysOES(arraysize(ids), &ids[0]); 1724 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1725 } 1726 1727 TEST_F(GLES2ImplementationTest, IsVertexArrayOES) { 1728 struct Cmds { 1729 cmds::IsVertexArrayOES cmd; 1730 }; 1731 1732 Cmds expected; 1733 ExpectedMemoryInfo result1 = 1734 GetExpectedResultMemory(sizeof(cmds::IsVertexArrayOES::Result)); 1735 expected.cmd.Init(1, result1.id, result1.offset); 1736 1737 EXPECT_CALL(*command_buffer(), OnFlush()) 1738 .WillOnce(SetMemory(result1.ptr, uint32_t(1))) 1739 .RetiresOnSaturation(); 1740 1741 GLboolean result = gl_->IsVertexArrayOES(1); 1742 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1743 EXPECT_TRUE(result); 1744 } 1745 // TODO: Implement unit test for GenSharedIdsCHROMIUM 1746 // TODO: Implement unit test for DeleteSharedIdsCHROMIUM 1747 // TODO: Implement unit test for RegisterSharedIdsCHROMIUM 1748 // TODO: Implement unit test for EnableFeatureCHROMIUM 1749 1750 TEST_F(GLES2ImplementationTest, ResizeCHROMIUM) { 1751 struct Cmds { 1752 cmds::ResizeCHROMIUM cmd; 1753 }; 1754 Cmds expected; 1755 expected.cmd.Init(1, 2, 3); 1756 1757 gl_->ResizeCHROMIUM(1, 2, 3); 1758 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1759 } 1760 // TODO: Implement unit test for GetRequestableExtensionsCHROMIUM 1761 // TODO: Implement unit test for CreateStreamTextureCHROMIUM 1762 // TODO: Implement unit test for GetTranslatedShaderSourceANGLE 1763 1764 TEST_F(GLES2ImplementationTest, TexImageIOSurface2DCHROMIUM) { 1765 struct Cmds { 1766 cmds::TexImageIOSurface2DCHROMIUM cmd; 1767 }; 1768 Cmds expected; 1769 expected.cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5); 1770 1771 gl_->TexImageIOSurface2DCHROMIUM(GL_TEXTURE_2D, 2, 3, 4, 5); 1772 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1773 } 1774 1775 TEST_F(GLES2ImplementationTest, CopyTextureCHROMIUM) { 1776 struct Cmds { 1777 cmds::CopyTextureCHROMIUM cmd; 1778 }; 1779 Cmds expected; 1780 expected.cmd.Init(1, 2, 3, 4, GL_ALPHA, GL_UNSIGNED_BYTE); 1781 1782 gl_->CopyTextureCHROMIUM(1, 2, 3, 4, GL_ALPHA, GL_UNSIGNED_BYTE); 1783 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1784 } 1785 1786 TEST_F(GLES2ImplementationTest, DrawArraysInstancedANGLE) { 1787 struct Cmds { 1788 cmds::DrawArraysInstancedANGLE cmd; 1789 }; 1790 Cmds expected; 1791 expected.cmd.Init(GL_POINTS, 2, 3, 4); 1792 1793 gl_->DrawArraysInstancedANGLE(GL_POINTS, 2, 3, 4); 1794 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1795 } 1796 1797 TEST_F(GLES2ImplementationTest, VertexAttribDivisorANGLE) { 1798 struct Cmds { 1799 cmds::VertexAttribDivisorANGLE cmd; 1800 }; 1801 Cmds expected; 1802 expected.cmd.Init(1, 2); 1803 1804 gl_->VertexAttribDivisorANGLE(1, 2); 1805 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1806 } 1807 // TODO: Implement unit test for GenMailboxCHROMIUM 1808 // TODO: Implement unit test for BindUniformLocationCHROMIUM 1809 1810 TEST_F(GLES2ImplementationTest, BindTexImage2DCHROMIUM) { 1811 struct Cmds { 1812 cmds::BindTexImage2DCHROMIUM cmd; 1813 }; 1814 Cmds expected; 1815 expected.cmd.Init(GL_TEXTURE_2D, 2); 1816 1817 gl_->BindTexImage2DCHROMIUM(GL_TEXTURE_2D, 2); 1818 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1819 } 1820 1821 TEST_F(GLES2ImplementationTest, ReleaseTexImage2DCHROMIUM) { 1822 struct Cmds { 1823 cmds::ReleaseTexImage2DCHROMIUM cmd; 1824 }; 1825 Cmds expected; 1826 expected.cmd.Init(GL_TEXTURE_2D, 2); 1827 1828 gl_->ReleaseTexImage2DCHROMIUM(GL_TEXTURE_2D, 2); 1829 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1830 } 1831 1832 TEST_F(GLES2ImplementationTest, DiscardFramebufferEXT) { 1833 GLenum data[2][1] = {{0}}; 1834 struct Cmds { 1835 cmds::DiscardFramebufferEXTImmediate cmd; 1836 GLenum data[2][1]; 1837 }; 1838 1839 Cmds expected; 1840 for (int ii = 0; ii < 2; ++ii) { 1841 for (int jj = 0; jj < 1; ++jj) { 1842 data[ii][jj] = static_cast<GLenum>(ii * 1 + jj); 1843 } 1844 } 1845 expected.cmd.Init(1, 2, &data[0][0]); 1846 gl_->DiscardFramebufferEXT(1, 2, &data[0][0]); 1847 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1848 } 1849 1850 TEST_F(GLES2ImplementationTest, LoseContextCHROMIUM) { 1851 struct Cmds { 1852 cmds::LoseContextCHROMIUM cmd; 1853 }; 1854 Cmds expected; 1855 expected.cmd.Init(GL_GUILTY_CONTEXT_RESET_ARB, GL_GUILTY_CONTEXT_RESET_ARB); 1856 1857 gl_->LoseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, 1858 GL_GUILTY_CONTEXT_RESET_ARB); 1859 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1860 } 1861 // TODO: Implement unit test for InsertSyncPointCHROMIUM 1862 1863 TEST_F(GLES2ImplementationTest, WaitSyncPointCHROMIUM) { 1864 struct Cmds { 1865 cmds::WaitSyncPointCHROMIUM cmd; 1866 }; 1867 Cmds expected; 1868 expected.cmd.Init(1); 1869 1870 gl_->WaitSyncPointCHROMIUM(1); 1871 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1872 } 1873 1874 TEST_F(GLES2ImplementationTest, DrawBuffersEXT) { 1875 GLenum data[1][1] = {{0}}; 1876 struct Cmds { 1877 cmds::DrawBuffersEXTImmediate cmd; 1878 GLenum data[1][1]; 1879 }; 1880 1881 Cmds expected; 1882 for (int ii = 0; ii < 1; ++ii) { 1883 for (int jj = 0; jj < 1; ++jj) { 1884 data[ii][jj] = static_cast<GLenum>(ii * 1 + jj); 1885 } 1886 } 1887 expected.cmd.Init(1, &data[0][0]); 1888 gl_->DrawBuffersEXT(1, &data[0][0]); 1889 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1890 } 1891 1892 TEST_F(GLES2ImplementationTest, DiscardBackbufferCHROMIUM) { 1893 struct Cmds { 1894 cmds::DiscardBackbufferCHROMIUM cmd; 1895 }; 1896 Cmds expected; 1897 expected.cmd.Init(); 1898 1899 gl_->DiscardBackbufferCHROMIUM(); 1900 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); 1901 } 1902 #endif // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_UNITTEST_AUTOGEN_H_ 1903