1/*------------------------------------------------------------------------- 2 * drawElements Quality Program OpenGL ES 2.0 Module 3 * ------------------------------------------------- 4 * 5 * Copyright 2014 The Android Open Source Project 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 *//*! 20 * \file 21 * \brief State change call performance tests. 22 *//*--------------------------------------------------------------------*/ 23 24#include "es2pStateChangeCallTests.hpp" 25#include "glsStateChangePerfTestCases.hpp" 26#include "glwFunctions.hpp" 27#include "glwEnums.hpp" 28 29namespace deqp 30{ 31namespace gles2 32{ 33namespace Performance 34{ 35 36using namespace glw; 37 38StateChangeCallTests::StateChangeCallTests (Context& context) 39 : TestCaseGroup(context, "state_change_only", "Test cost of state change calls without rendering anything") 40{ 41} 42 43StateChangeCallTests::~StateChangeCallTests (void) 44{ 45} 46 47#define ARG_LIST(...) __VA_ARGS__ 48 49#define ADD_ARG_CASE1(NAME, DESCRIPTION, FUNCNAME, TYPE0, ARGS0)\ 50do {\ 51 class StateChangeCallTest_ ## NAME : public gls::StateChangeCallPerformanceCase\ 52 {\ 53 public:\ 54 StateChangeCallTest_ ## NAME (Context& context, const char* name, const char* description)\ 55 : gls::StateChangeCallPerformanceCase(context.getTestContext(), context.getRenderContext(), name, description)\ 56 {\ 57 }\ 58 virtual void execCalls (const glw::Functions& gl, int iterNdx, int callCount)\ 59 {\ 60 const TYPE0 args0[] = ARGS0;\ 61 for (int callNdx = 0; callNdx < callCount; callNdx++)\ 62 {\ 63 const int baseNdx = iterNdx*callCount + callNdx;\ 64 const TYPE0 arg0 = args0[baseNdx%DE_LENGTH_OF_ARRAY(args0)];\ 65 gl.FUNCNAME(arg0);\ 66 }\ 67 }\ 68 };\ 69 addChild(new StateChangeCallTest_ ## NAME (m_context, #NAME, DESCRIPTION));\ 70}while (0); 71 72#define ADD_ARG_CASE2(NAME, DESCRIPTION, FUNCNAME, TYPE0, ARGS0, TYPE1, ARGS1)\ 73do {\ 74 class StateChangeCallTest_ ## NAME : public gls::StateChangeCallPerformanceCase\ 75 {\ 76 public:\ 77 StateChangeCallTest_ ## NAME (Context& context, const char* name, const char* description)\ 78 : gls::StateChangeCallPerformanceCase(context.getTestContext(), context.getRenderContext(), name, description)\ 79 {\ 80 }\ 81 virtual void execCalls (const glw::Functions& gl, int iterNdx, int callCount)\ 82 {\ 83 const TYPE0 args0[] = ARGS0;\ 84 const TYPE1 args1[] = ARGS1;\ 85 for (int callNdx = 0; callNdx < callCount; callNdx++)\ 86 {\ 87 const int baseNdx = iterNdx*callCount + callNdx;\ 88 const TYPE0 arg0 = args0[baseNdx%DE_LENGTH_OF_ARRAY(args0)];\ 89 const TYPE1 arg1 = args1[baseNdx%DE_LENGTH_OF_ARRAY(args1)];\ 90 gl.FUNCNAME(arg0, arg1);\ 91 }\ 92 }\ 93 };\ 94 addChild(new StateChangeCallTest_ ## NAME (m_context, #NAME, DESCRIPTION));\ 95}while (0); 96 97#define ADD_ARG_CASE3(NAME, DESCRIPTION, FUNCNAME, TYPE0, ARGS0, TYPE1, ARGS1, TYPE2, ARGS2)\ 98do {\ 99 class StateChangeCallTest_ ## NAME : public gls::StateChangeCallPerformanceCase\ 100 {\ 101 public:\ 102 StateChangeCallTest_ ## NAME (Context& context, const char* name, const char* description)\ 103 : gls::StateChangeCallPerformanceCase(context.getTestContext(), context.getRenderContext(), name, description)\ 104 {\ 105 }\ 106 virtual void execCalls (const glw::Functions& gl, int iterNdx, int callCount)\ 107 {\ 108 const TYPE0 args0[] = ARGS0;\ 109 const TYPE1 args1[] = ARGS1;\ 110 const TYPE2 args2[] = ARGS2;\ 111 for (int callNdx = 0; callNdx < callCount; callNdx++)\ 112 {\ 113 const int baseNdx = iterNdx*callCount + callNdx;\ 114 const TYPE0 arg0 = args0[baseNdx%DE_LENGTH_OF_ARRAY(args0)];\ 115 const TYPE1 arg1 = args1[baseNdx%DE_LENGTH_OF_ARRAY(args1)];\ 116 const TYPE2 arg2 = args2[baseNdx%DE_LENGTH_OF_ARRAY(args2)];\ 117 gl.FUNCNAME(arg0, arg1, arg2);\ 118 }\ 119 }\ 120 };\ 121 addChild(new StateChangeCallTest_ ## NAME (m_context, #NAME, DESCRIPTION));\ 122}while (0); 123 124#define ADD_ARG_CASE4(NAME, DESCRIPTION, FUNCNAME, TYPE0, ARGS0, TYPE1, ARGS1, TYPE2, ARGS2, TYPE3, ARGS3)\ 125do {\ 126 class StateChangeCallTest_ ## NAME : public gls::StateChangeCallPerformanceCase\ 127 {\ 128 public:\ 129 StateChangeCallTest_ ## NAME (Context& context, const char* name, const char* description)\ 130 : gls::StateChangeCallPerformanceCase(context.getTestContext(), context.getRenderContext(), name, description)\ 131 {\ 132 }\ 133 virtual void execCalls (const glw::Functions& gl, int iterNdx, int callCount)\ 134 {\ 135 const TYPE0 args0[] = ARGS0;\ 136 const TYPE1 args1[] = ARGS1;\ 137 const TYPE2 args2[] = ARGS2;\ 138 const TYPE3 args3[] = ARGS3;\ 139 for (int callNdx = 0; callNdx < callCount; callNdx++)\ 140 {\ 141 const int baseNdx = iterNdx*callCount + callNdx;\ 142 const TYPE0 arg0 = args0[baseNdx%DE_LENGTH_OF_ARRAY(args0)];\ 143 const TYPE1 arg1 = args1[baseNdx%DE_LENGTH_OF_ARRAY(args1)];\ 144 const TYPE2 arg2 = args2[baseNdx%DE_LENGTH_OF_ARRAY(args2)];\ 145 const TYPE3 arg3 = args3[baseNdx%DE_LENGTH_OF_ARRAY(args3)];\ 146 gl.FUNCNAME(arg0, arg1, arg2, arg3);\ 147 }\ 148 }\ 149 };\ 150 addChild(new StateChangeCallTest_ ## NAME (m_context, #NAME, DESCRIPTION));\ 151}while (0); 152 153#define ADD_ARG_CASE6(NAME, DESCRIPTION, FUNCNAME, TYPE0, ARGS0, TYPE1, ARGS1, TYPE2, ARGS2, TYPE3, ARGS3, TYPE4, ARGS4, TYPE5, ARGS5)\ 154do {\ 155 class StateChangeCallTest_ ## NAME : public gls::StateChangeCallPerformanceCase\ 156 {\ 157 public:\ 158 StateChangeCallTest_ ## NAME (Context& context, const char* name, const char* description)\ 159 : gls::StateChangeCallPerformanceCase(context.getTestContext(), context.getRenderContext(), name, description)\ 160 {\ 161 }\ 162 virtual void execCalls (const glw::Functions& gl, int iterNdx, int callCount)\ 163 {\ 164 const TYPE0 args0[] = ARGS0;\ 165 const TYPE1 args1[] = ARGS1;\ 166 const TYPE2 args2[] = ARGS2;\ 167 const TYPE3 args3[] = ARGS3;\ 168 const TYPE4 args4[] = ARGS4;\ 169 const TYPE5 args5[] = ARGS5;\ 170 for (int callNdx = 0; callNdx < callCount; callNdx++)\ 171 {\ 172 const int baseNdx = iterNdx*callCount + callNdx;\ 173 const TYPE0 arg0 = args0[baseNdx%DE_LENGTH_OF_ARRAY(args0)];\ 174 const TYPE1 arg1 = args1[baseNdx%DE_LENGTH_OF_ARRAY(args1)];\ 175 const TYPE2 arg2 = args2[baseNdx%DE_LENGTH_OF_ARRAY(args2)];\ 176 const TYPE3 arg3 = args3[baseNdx%DE_LENGTH_OF_ARRAY(args3)];\ 177 const TYPE4 arg4 = args4[baseNdx%DE_LENGTH_OF_ARRAY(args4)];\ 178 const TYPE5 arg5 = args5[baseNdx%DE_LENGTH_OF_ARRAY(args5)];\ 179 gl.FUNCNAME(arg0, arg1, arg2, arg3, arg4, arg5);\ 180 }\ 181 }\ 182 };\ 183 addChild(new StateChangeCallTest_ ## NAME (m_context, #NAME, DESCRIPTION));\ 184}while (0); 185 186void StateChangeCallTests::init (void) 187{ 188 ADD_ARG_CASE1(enable, "Test cost of glEnable() calls", 189 enable, 190 GLenum, 191 ARG_LIST({ 192 GL_CULL_FACE, 193 GL_POLYGON_OFFSET_FILL, 194 GL_SAMPLE_ALPHA_TO_COVERAGE, 195 GL_SAMPLE_COVERAGE, 196 GL_SCISSOR_TEST, 197 GL_STENCIL_TEST, 198 GL_DEPTH_TEST, 199 GL_BLEND, 200 GL_DITHER 201 }) 202 ); 203 204 ADD_ARG_CASE1(disable, "Test cost of glDisable() calls", 205 disable, 206 GLenum, 207 ARG_LIST({ 208 GL_CULL_FACE, 209 GL_POLYGON_OFFSET_FILL, 210 GL_SAMPLE_ALPHA_TO_COVERAGE, 211 GL_SAMPLE_COVERAGE, 212 GL_SCISSOR_TEST, 213 GL_STENCIL_TEST, 214 GL_DEPTH_TEST, 215 GL_BLEND, 216 GL_DITHER 217 }) 218 ); 219 220 ADD_ARG_CASE1(depth_func, "Test cost of glDepthFunc() calls", 221 depthFunc, 222 GLenum, 223 ARG_LIST({ 224 GL_NEVER, 225 GL_ALWAYS, 226 GL_LESS, 227 GL_LEQUAL, 228 GL_EQUAL, 229 GL_GREATER, 230 GL_GEQUAL, 231 GL_NOTEQUAL 232 }) 233 ); 234 235 ADD_ARG_CASE1(depth_mask, "Test cost of glDepthMask() calls", 236 depthMask, 237 GLboolean, 238 ARG_LIST({ 239 GL_TRUE, 240 GL_FALSE 241 }) 242 ); 243 244 ADD_ARG_CASE1(stencil_mask, "Test cost of glStencilMask() calls", 245 stencilMask, 246 GLboolean, 247 ARG_LIST({ 248 GL_TRUE, 249 GL_FALSE 250 }) 251 ); 252 253 ADD_ARG_CASE1(clear_depth, "Test cost of glClearDepth() calls", 254 clearDepthf, 255 GLclampf, 256 ARG_LIST({ 257 0.0f, 258 0.5f, 259 1.0f 260 }) 261 ); 262 263 ADD_ARG_CASE1(clear_stencil, "Test cost of glClearStencil() calls", 264 clearStencil, 265 GLint, 266 ARG_LIST({ 267 0, 268 128, 269 28 270 }) 271 ); 272 273 ADD_ARG_CASE1(line_width, "Test cost of glLineWidth() calls", 274 lineWidth, 275 GLfloat, 276 ARG_LIST({ 277 1.0f, 278 0.5f, 279 10.0f 280 }) 281 ); 282 283 ADD_ARG_CASE1(cull_face, "Test cost of glCullFace() calls", 284 cullFace, 285 GLenum, 286 ARG_LIST({ 287 GL_FRONT, 288 GL_BACK, 289 GL_FRONT_AND_BACK 290 }) 291 ); 292 293 ADD_ARG_CASE1(front_face, "Test cost of glFrontFace() calls", 294 frontFace, 295 GLenum, 296 ARG_LIST({ 297 GL_CCW, 298 GL_CW 299 }) 300 ); 301 302 ADD_ARG_CASE1(blend_equation, "Test cost of glBlendEquation() calls", 303 blendEquation, 304 GLenum, 305 ARG_LIST({ 306 GL_FUNC_ADD, 307 GL_FUNC_SUBTRACT, 308 GL_FUNC_REVERSE_SUBTRACT 309 }) 310 ); 311 312 ADD_ARG_CASE1(enable_vertex_attrib_array, "Test cost of glEnableVertexAttribArray() calls", 313 enableVertexAttribArray, 314 GLuint, 315 ARG_LIST({ 316 0, 317 1, 318 2, 319 3, 320 4, 321 5, 322 6, 323 7, 324 }) 325 ); 326 327 ADD_ARG_CASE1(disable_vertex_attrib_array, "Test cost of glDisableVertexAttribArray() calls", 328 disableVertexAttribArray, 329 GLuint, 330 ARG_LIST({ 331 0, 332 1, 333 2, 334 3, 335 4, 336 5, 337 6, 338 7, 339 }) 340 ); 341 342 ADD_ARG_CASE1(use_program, "Test cost of glUseProgram() calls. Note: Uses only program 0.", 343 useProgram, 344 GLuint, 345 ARG_LIST({ 346 0, 347 }) 348 ); 349 350 ADD_ARG_CASE1(active_texture, "Test cost of glActiveTexture() calls", 351 activeTexture, 352 GLenum, 353 ARG_LIST({ 354 GL_TEXTURE0, 355 GL_TEXTURE1, 356 GL_TEXTURE2, 357 GL_TEXTURE3, 358 GL_TEXTURE4, 359 GL_TEXTURE5, 360 GL_TEXTURE6, 361 GL_TEXTURE7 362 }) 363 ); 364 365 ADD_ARG_CASE2(depth_range, "Test cost of glDepthRangef() calls", 366 depthRangef, 367 GLclampf, 368 ARG_LIST({ 369 0.0f, 370 1.0f, 371 0.5f 372 }), 373 GLclampf, 374 ARG_LIST({ 375 0.0f, 376 1.0f, 377 0.5f 378 }) 379 ); 380 381 ADD_ARG_CASE2(polygon_offset, "Test cost of glPolygonOffset() calls", 382 polygonOffset, 383 GLfloat, 384 ARG_LIST({ 385 0.0f, 386 1.0f, 387 0.5f, 388 10.0f 389 }), 390 GLfloat, 391 ARG_LIST({ 392 0.0f, 393 1.0f, 394 0.5f, 395 1000.0f 396 }) 397 ); 398 399 ADD_ARG_CASE2(sample_coverage, "Test cost of glSampleCoverage() calls", 400 sampleCoverage, 401 GLclampf, 402 ARG_LIST({ 403 0.0f, 404 1.0f, 405 0.5f, 406 0.67f 407 }), 408 GLboolean, 409 ARG_LIST({ 410 GL_TRUE, 411 GL_FALSE 412 }) 413 ); 414 415 ADD_ARG_CASE2(blend_func, "Test cost of glBlendFunc() calls", 416 blendFunc, 417 GLenum, 418 ARG_LIST({ 419 GL_ZERO, 420 GL_ONE, 421 GL_SRC_COLOR, 422 GL_ONE_MINUS_SRC_COLOR, 423 GL_DST_COLOR, 424 GL_ONE_MINUS_DST_COLOR, 425 GL_SRC_ALPHA, 426 GL_ONE_MINUS_SRC_ALPHA, 427 GL_DST_ALPHA, 428 GL_ONE_MINUS_DST_ALPHA, 429 GL_CONSTANT_COLOR, 430 GL_ONE_MINUS_CONSTANT_COLOR, 431 GL_CONSTANT_ALPHA, 432 GL_ONE_MINUS_CONSTANT_ALPHA 433 }), 434 GLenum, 435 ARG_LIST({ 436 GL_ZERO, 437 GL_ONE, 438 GL_SRC_COLOR, 439 GL_ONE_MINUS_SRC_COLOR, 440 GL_DST_COLOR, 441 GL_ONE_MINUS_DST_COLOR, 442 GL_SRC_ALPHA, 443 GL_ONE_MINUS_SRC_ALPHA, 444 GL_DST_ALPHA, 445 GL_ONE_MINUS_DST_ALPHA, 446 GL_CONSTANT_COLOR, 447 GL_ONE_MINUS_CONSTANT_COLOR, 448 GL_CONSTANT_ALPHA, 449 GL_ONE_MINUS_CONSTANT_ALPHA 450 }) 451 ); 452 453 ADD_ARG_CASE2(blend_equation_separate, "Test cost of glBlendEquationSeparate() calls", 454 blendEquationSeparate, 455 GLenum, 456 ARG_LIST({ 457 GL_FUNC_ADD, 458 GL_FUNC_SUBTRACT, 459 GL_FUNC_REVERSE_SUBTRACT 460 }), 461 GLenum, 462 ARG_LIST({ 463 GL_FUNC_ADD, 464 GL_FUNC_SUBTRACT, 465 GL_FUNC_REVERSE_SUBTRACT 466 }) 467 ); 468 469 ADD_ARG_CASE2(stencil_mask_separate, "Test cost of glStencilMaskSeparate() calls", 470 stencilMaskSeparate, 471 GLenum, 472 ARG_LIST({ 473 GL_FRONT, 474 GL_BACK, 475 GL_FRONT_AND_BACK 476 }), 477 GLboolean, 478 ARG_LIST({ 479 GL_TRUE, 480 GL_FALSE 481 }) 482 ); 483 484 ADD_ARG_CASE2(bind_buffer, "Test cost of glBindBuffer() calls. Note: Uses only buffer 0", 485 bindBuffer, 486 GLenum, 487 ARG_LIST({ 488 GL_ELEMENT_ARRAY_BUFFER, 489 GL_ARRAY_BUFFER 490 }), 491 GLuint, 492 ARG_LIST({ 493 0 494 }) 495 ); 496 497 ADD_ARG_CASE2(bind_texture, "Test cost of glBindTexture() calls. Note: Uses only texture 0", 498 bindTexture, 499 GLenum, 500 ARG_LIST({ 501 GL_TEXTURE_2D, 502 GL_TEXTURE_CUBE_MAP 503 }), 504 GLuint, 505 ARG_LIST({ 506 0 507 }) 508 ); 509 510 ADD_ARG_CASE2(hint, "Test cost of glHint() calls", 511 hint, 512 GLenum, 513 ARG_LIST({ 514 GL_GENERATE_MIPMAP_HINT 515 }), 516 GLenum, 517 ARG_LIST({ 518 GL_FASTEST, 519 GL_NICEST, 520 GL_DONT_CARE 521 }) 522 ); 523 524 ADD_ARG_CASE3(stencil_func, "Test cost of glStencilFunc() calls", 525 stencilFunc, 526 GLenum, 527 ARG_LIST({ 528 GL_NEVER, 529 GL_ALWAYS, 530 GL_LESS, 531 GL_LEQUAL, 532 GL_EQUAL, 533 GL_GEQUAL, 534 GL_GREATER, 535 GL_NOTEQUAL 536 }), 537 GLint, 538 ARG_LIST({ 539 0, 540 1, 541 255, 542 128, 543 7 544 }), 545 GLuint, 546 ARG_LIST({ 547 0, 548 1, 549 255, 550 128, 551 7, 552 0xFFFFFFFF 553 }) 554 ); 555 556 ADD_ARG_CASE3(stencil_op, "Test cost of glStencilOp() calls", 557 stencilOp, 558 GLenum, 559 ARG_LIST({ 560 GL_KEEP, 561 GL_ZERO, 562 GL_REPLACE, 563 GL_INCR, 564 GL_DECR, 565 GL_INVERT, 566 GL_INCR_WRAP, 567 GL_DECR_WRAP 568 }), 569 GLenum, 570 ARG_LIST({ 571 GL_KEEP, 572 GL_ZERO, 573 GL_REPLACE, 574 GL_INCR, 575 GL_DECR, 576 GL_INVERT, 577 GL_INCR_WRAP, 578 GL_DECR_WRAP 579 }), 580 GLenum, 581 ARG_LIST({ 582 GL_KEEP, 583 GL_ZERO, 584 GL_REPLACE, 585 GL_INCR, 586 GL_DECR, 587 GL_INVERT, 588 GL_INCR_WRAP, 589 GL_DECR_WRAP 590 }) 591 ); 592 593 ADD_ARG_CASE4(viewport, "Test cost of glViewport() calls", 594 viewport, 595 GLint, 596 ARG_LIST({ 597 0, 598 1, 599 100, 600 1145235 601 }), 602 GLint, 603 ARG_LIST({ 604 0, 605 1, 606 100, 607 1145235 608 }), 609 GLint, 610 ARG_LIST({ 611 0, 612 1, 613 100, 614 1145235 615 }), 616 GLint, 617 ARG_LIST({ 618 0, 619 1, 620 100, 621 1145235 622 }) 623 ); 624 625 ADD_ARG_CASE4(scissor, "Test cost of glScissor() calls", 626 scissor, 627 GLint, 628 ARG_LIST({ 629 0, 630 1, 631 100, 632 1145235 633 }), 634 GLint, 635 ARG_LIST({ 636 0, 637 1, 638 100, 639 1145235 640 }), 641 GLint, 642 ARG_LIST({ 643 0, 644 1, 645 100, 646 1145235 647 }), 648 GLint, 649 ARG_LIST({ 650 0, 651 1, 652 100, 653 1145235 654 }) 655 ); 656 657 ADD_ARG_CASE4(stencil_func_separate, "Test cost of glStencilFuncSeparate() calls", 658 stencilFuncSeparate, 659 GLenum, 660 ARG_LIST({ 661 GL_FRONT, 662 GL_BACK, 663 GL_FRONT_AND_BACK 664 }), 665 GLenum, 666 ARG_LIST({ 667 GL_NEVER, 668 GL_ALWAYS, 669 GL_LESS, 670 GL_LEQUAL, 671 GL_EQUAL, 672 GL_GEQUAL, 673 GL_GREATER, 674 GL_NOTEQUAL 675 }), 676 GLint, 677 ARG_LIST({ 678 0, 679 1, 680 255, 681 128, 682 7 683 }), 684 GLuint, 685 ARG_LIST({ 686 0, 687 1, 688 255, 689 128, 690 7, 691 0xFFFFFFFF 692 }) 693 ); 694 695 ADD_ARG_CASE4(stencil_op_separatae, "Test cost of glStencilOpSeparate() calls", 696 stencilOpSeparate, 697 GLenum, 698 ARG_LIST({ 699 GL_FRONT, 700 GL_BACK, 701 GL_FRONT_AND_BACK 702 }), 703 GLenum, 704 ARG_LIST({ 705 GL_KEEP, 706 GL_ZERO, 707 GL_REPLACE, 708 GL_INCR, 709 GL_DECR, 710 GL_INVERT, 711 GL_INCR_WRAP, 712 GL_DECR_WRAP 713 }), 714 GLenum, 715 ARG_LIST({ 716 GL_KEEP, 717 GL_ZERO, 718 GL_REPLACE, 719 GL_INCR, 720 GL_DECR, 721 GL_INVERT, 722 GL_INCR_WRAP, 723 GL_DECR_WRAP 724 }), 725 GLenum, 726 ARG_LIST({ 727 GL_KEEP, 728 GL_ZERO, 729 GL_REPLACE, 730 GL_INCR, 731 GL_DECR, 732 GL_INVERT, 733 GL_INCR_WRAP, 734 GL_DECR_WRAP 735 }) 736 ); 737 738 ADD_ARG_CASE4(blend_func_separate, "Test cost of glBlendFuncSeparate() calls", 739 blendFuncSeparate, 740 GLenum, 741 ARG_LIST({ 742 GL_ZERO, 743 GL_ONE, 744 GL_SRC_COLOR, 745 GL_ONE_MINUS_SRC_COLOR, 746 GL_DST_COLOR, 747 GL_ONE_MINUS_DST_COLOR, 748 GL_SRC_ALPHA, 749 GL_ONE_MINUS_SRC_ALPHA, 750 GL_DST_ALPHA, 751 GL_ONE_MINUS_DST_ALPHA, 752 GL_CONSTANT_COLOR, 753 GL_ONE_MINUS_CONSTANT_COLOR, 754 GL_CONSTANT_ALPHA, 755 GL_ONE_MINUS_CONSTANT_ALPHA 756 }), 757 GLenum, 758 ARG_LIST({ 759 GL_ZERO, 760 GL_ONE, 761 GL_SRC_COLOR, 762 GL_ONE_MINUS_SRC_COLOR, 763 GL_DST_COLOR, 764 GL_ONE_MINUS_DST_COLOR, 765 GL_SRC_ALPHA, 766 GL_ONE_MINUS_SRC_ALPHA, 767 GL_DST_ALPHA, 768 GL_ONE_MINUS_DST_ALPHA, 769 GL_CONSTANT_COLOR, 770 GL_ONE_MINUS_CONSTANT_COLOR, 771 GL_CONSTANT_ALPHA, 772 GL_ONE_MINUS_CONSTANT_ALPHA 773 }), 774 GLenum, 775 ARG_LIST({ 776 GL_ZERO, 777 GL_ONE, 778 GL_SRC_COLOR, 779 GL_ONE_MINUS_SRC_COLOR, 780 GL_DST_COLOR, 781 GL_ONE_MINUS_DST_COLOR, 782 GL_SRC_ALPHA, 783 GL_ONE_MINUS_SRC_ALPHA, 784 GL_DST_ALPHA, 785 GL_ONE_MINUS_DST_ALPHA, 786 GL_CONSTANT_COLOR, 787 GL_ONE_MINUS_CONSTANT_COLOR, 788 GL_CONSTANT_ALPHA, 789 GL_ONE_MINUS_CONSTANT_ALPHA 790 }), 791 GLenum, 792 ARG_LIST({ 793 GL_ZERO, 794 GL_ONE, 795 GL_SRC_COLOR, 796 GL_ONE_MINUS_SRC_COLOR, 797 GL_DST_COLOR, 798 GL_ONE_MINUS_DST_COLOR, 799 GL_SRC_ALPHA, 800 GL_ONE_MINUS_SRC_ALPHA, 801 GL_DST_ALPHA, 802 GL_ONE_MINUS_DST_ALPHA, 803 GL_CONSTANT_COLOR, 804 GL_ONE_MINUS_CONSTANT_COLOR, 805 GL_CONSTANT_ALPHA, 806 GL_ONE_MINUS_CONSTANT_ALPHA 807 }) 808 ); 809 810 ADD_ARG_CASE4(color_mask, "Test cost of glColorMask() calls", 811 colorMask, 812 GLboolean, 813 ARG_LIST({ 814 GL_TRUE, 815 GL_FALSE 816 }), 817 GLboolean, 818 ARG_LIST({ 819 GL_TRUE, 820 GL_FALSE 821 }), 822 GLboolean, 823 ARG_LIST({ 824 GL_TRUE, 825 GL_FALSE 826 }), 827 GLboolean, 828 ARG_LIST({ 829 GL_TRUE, 830 GL_FALSE 831 }) 832 ); 833 834 ADD_ARG_CASE4(clear_color, "Test cost of glClearColor() calls", 835 clearColor, 836 GLclampf, 837 ARG_LIST({ 838 0.0f, 839 1.0f, 840 0.5f, 841 0.33f 842 }), 843 GLclampf, 844 ARG_LIST({ 845 0.0f, 846 1.0f, 847 0.5f, 848 0.33f 849 }), 850 GLclampf, 851 ARG_LIST({ 852 0.0f, 853 1.0f, 854 0.5f, 855 0.33f 856 }), 857 GLclampf, 858 ARG_LIST({ 859 0.0f, 860 1.0f, 861 0.5f, 862 0.33f 863 }) 864 ); 865 866 ADD_ARG_CASE6(vertex_attrib_pointer, "Test cost of glVertexAttribPointer() calls", 867 vertexAttribPointer, 868 GLuint, 869 ARG_LIST({ 870 0, 871 1, 872 2, 873 3, 874 4, 875 5, 876 6, 877 7 878 }), 879 GLint, 880 ARG_LIST({ 881 1, 882 2, 883 3, 884 4 885 }), 886 GLenum, 887 ARG_LIST({ 888 GL_UNSIGNED_BYTE, 889 GL_BYTE, 890 GL_UNSIGNED_SHORT, 891 GL_SHORT, 892 GL_FLOAT 893 }), 894 GLboolean, 895 ARG_LIST({ 896 GL_FALSE, 897 GL_TRUE 898 }), 899 GLsizei, 900 ARG_LIST({ 901 0, 902 2, 903 4 904 }), 905 void*, 906 ARG_LIST({ 907 (void*)(deUintptr)(0x0FF), 908 (void*)(deUintptr)(0x0EF) 909 }) 910 ); 911} 912 913} // Performance 914} // gles2 915} // deqp 916