1{ 2 "General":{ 3 "comment":[ 4 " Copyright 2018 The ANGLE Project Authors. All rights reserved.", 5 " Use of this source code is governed by a BSD-style license that can be", 6 " found in the LICENSE file.", 7 "", 8 " The schema of this JSON file is as follows:", 9 "", 10 " The top-level object contains variable groups. Each group can have the following", 11 " properties:", 12 " variables: Object mapping variable names to variable properties.", 13 " subgroups: Object with more groups that fall under the top-level group.", 14 " shader_type: The type of shader this variable is supported in", 15 " Each variable can have the following properties:", 16 " essl_level: ESSL symbol table level where the variable is contained.", 17 " type: Object with properties of the type. Can be substituted with initDynamicType.", 18 " initDynamicType: Template string with C++ code for initializing a TType * with the", 19 " name {type_name}. The name will be replaced when generating code.", 20 " May refer to names of previously listed structs or interface", 21 " blocks.", 22 " essl_extension: Optional. Name of the ESSL extension where this variable is from.", 23 " essl_extension_becomes_core_in: Optional. ESSL level where symbols from this", 24 " extension have become core.", 25 " value: Optional. String that has one valid value: 'resources'. Denotes that the", 26 " value of the variable should be based on the field of ShBuiltInResources", 27 " with the same name as the variable.", 28 " class: Optional. To be used for interface block or struct definitions. Valid", 29 " values are 'TStructure' or 'TInterfaceBlock'.", 30 " fields: Optional. Object to be used for storing fields of interface block and", 31 " struct definitions. Maps field names to field types.", 32 " suffix: Optional. Suffix to give C++ variables storing the properties of this", 33 " variable a unique name that doesn't conflict with C++ keywords.", 34 " Each type can have the following properties:", 35 " basic: Basic type as in the TBasicType enum without the Ebt prefix.", 36 " precision: Precision as in TPrecision enum without the Ebp prefix.", 37 " qualifier: Optional. Qualifier as in the TQualifier enum without the Evq prefix.", 38 " primarySize: Optional. Vector size or matrix column count.", 39 " secondarySize: Optional. Matrix row count.", 40 " Any group, variable or type can have the property 'comment'." 41 ], 42 "variables":{ 43 "gl_DepthRangeParameters":{ 44 "class":"TStructure", 45 "essl_level":"COMMON_BUILTINS", 46 "fields":{ 47 "near":{ 48 "basic":"Float", 49 "precision":"High" 50 }, 51 "far":{ 52 "basic":"Float", 53 "precision":"High" 54 }, 55 "diff":{ 56 "basic":"Float", 57 "precision":"High" 58 } 59 } 60 }, 61 "gl_DepthRange":{ 62 "essl_level":"COMMON_BUILTINS", 63 "initDynamicType":"TType *{type_name} = new TType(gl_DepthRangeParameters, false); {type_name}->setQualifier(EvqUniform);" 64 } 65 }, 66 "subgroups":{ 67 "OESSampleVariables":{ 68 "variables":{ 69 "gl_NumSamples":{ 70 "essl_level":"ESSL3_BUILTINS", 71 "essl_extension":"OES_sample_variables", 72 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 73 "type":{ 74 "basic":"Int", 75 "precision":"Low", 76 "qualifier":"Uniform" 77 } 78 } 79 } 80 } 81 } 82 }, 83 "Constants":{ 84 "variables":{ 85 "gl_MaxVertexAttribs":{ 86 "essl_level":"COMMON_BUILTINS", 87 "type":{ 88 "basic":"Int", 89 "precision":"Medium", 90 "qualifier":"Const" 91 }, 92 "value":"resources" 93 }, 94 "gl_MaxVertexUniformVectors":{ 95 "essl_level":"COMMON_BUILTINS", 96 "type":{ 97 "basic":"Int", 98 "precision":"Medium", 99 "qualifier":"Const" 100 }, 101 "value":"resources" 102 }, 103 "gl_MaxVertexTextureImageUnits":{ 104 "essl_level":"COMMON_BUILTINS", 105 "type":{ 106 "basic":"Int", 107 "precision":"Medium", 108 "qualifier":"Const" 109 }, 110 "value":"resources" 111 }, 112 "gl_MaxCombinedTextureImageUnits":{ 113 "essl_level":"COMMON_BUILTINS", 114 "type":{ 115 "basic":"Int", 116 "precision":"Medium", 117 "qualifier":"Const" 118 }, 119 "value":"resources" 120 }, 121 "gl_MaxTextureImageUnits":{ 122 "essl_level":"COMMON_BUILTINS", 123 "type":{ 124 "basic":"Int", 125 "precision":"Medium", 126 "qualifier":"Const" 127 }, 128 "value":"resources" 129 }, 130 "gl_MaxFragmentUniformVectors":{ 131 "essl_level":"COMMON_BUILTINS", 132 "type":{ 133 "basic":"Int", 134 "precision":"Medium", 135 "qualifier":"Const" 136 }, 137 "value":"resources" 138 }, 139 "gl_MaxVaryingVectors":{ 140 "essl_level":"ESSL1_BUILTINS", 141 "type":{ 142 "basic":"Int", 143 "precision":"Medium", 144 "qualifier":"Const" 145 }, 146 "value":"resources" 147 }, 148 "gl_MaxDrawBuffers":{ 149 "essl_level":"COMMON_BUILTINS", 150 "type":{ 151 "basic":"Int", 152 "precision":"Medium", 153 "qualifier":"Const" 154 }, 155 "value":"resources" 156 }, 157 "gl_MaxDualSourceDrawBuffersEXT":{ 158 "essl_level":"COMMON_BUILTINS", 159 "type":{ 160 "basic":"Int", 161 "precision":"Medium", 162 "qualifier":"Const" 163 }, 164 "essl_extension":"EXT_blend_func_extended", 165 "value":"resources", 166 "valueKey":"MaxDualSourceDrawBuffers" 167 }, 168 "gl_MaxVertexOutputVectors":{ 169 "essl_level":"ESSL3_BUILTINS", 170 "type":{ 171 "basic":"Int", 172 "precision":"Medium", 173 "qualifier":"Const" 174 }, 175 "value":"resources" 176 }, 177 "gl_MaxFragmentInputVectors":{ 178 "essl_level":"ESSL3_BUILTINS", 179 "type":{ 180 "basic":"Int", 181 "precision":"Medium", 182 "qualifier":"Const" 183 }, 184 "value":"resources" 185 }, 186 "gl_MinProgramTexelOffset":{ 187 "essl_level":"ESSL3_BUILTINS", 188 "type":{ 189 "basic":"Int", 190 "precision":"Medium", 191 "qualifier":"Const" 192 }, 193 "value":"resources" 194 }, 195 "gl_MaxProgramTexelOffset":{ 196 "essl_level":"ESSL3_BUILTINS", 197 "type":{ 198 "basic":"Int", 199 "precision":"Medium", 200 "qualifier":"Const" 201 }, 202 "value":"resources" 203 }, 204 "gl_MaxImageUnits":{ 205 "essl_level":"ESSL3_1_BUILTINS", 206 "type":{ 207 "basic":"Int", 208 "precision":"Medium", 209 "qualifier":"Const" 210 }, 211 "value":"resources" 212 }, 213 "gl_MaxVertexImageUniforms":{ 214 "essl_level":"ESSL3_1_BUILTINS", 215 "type":{ 216 "basic":"Int", 217 "precision":"Medium", 218 "qualifier":"Const" 219 }, 220 "value":"resources" 221 }, 222 "gl_MaxFragmentImageUniforms":{ 223 "essl_level":"ESSL3_1_BUILTINS", 224 "type":{ 225 "basic":"Int", 226 "precision":"Medium", 227 "qualifier":"Const" 228 }, 229 "value":"resources" 230 }, 231 "gl_MaxComputeImageUniforms":{ 232 "essl_level":"ESSL3_1_BUILTINS", 233 "type":{ 234 "basic":"Int", 235 "precision":"Medium", 236 "qualifier":"Const" 237 }, 238 "value":"resources" 239 }, 240 "gl_MaxCombinedImageUniforms":{ 241 "essl_level":"ESSL3_1_BUILTINS", 242 "type":{ 243 "basic":"Int", 244 "precision":"Medium", 245 "qualifier":"Const" 246 }, 247 "value":"resources" 248 }, 249 "gl_MaxCombinedShaderOutputResources":{ 250 "essl_level":"ESSL3_1_BUILTINS", 251 "type":{ 252 "basic":"Int", 253 "precision":"Medium", 254 "qualifier":"Const" 255 }, 256 "value":"resources" 257 }, 258 "gl_MaxComputeWorkGroupCount":{ 259 "essl_level":"ESSL3_1_BUILTINS", 260 "type":{ 261 "basic":"Int", 262 "precision":"High", 263 "qualifier":"Const", 264 "primarySize":3 265 }, 266 "value":"resources" 267 }, 268 "gl_MaxComputeWorkGroupSize":{ 269 "essl_level":"ESSL3_1_BUILTINS", 270 "type":{ 271 "basic":"Int", 272 "precision":"High", 273 "qualifier":"Const", 274 "primarySize":3 275 }, 276 "value":"resources" 277 }, 278 "gl_MaxComputeUniformComponents":{ 279 "essl_level":"ESSL3_1_BUILTINS", 280 "type":{ 281 "basic":"Int", 282 "precision":"Medium", 283 "qualifier":"Const" 284 }, 285 "value":"resources" 286 }, 287 "gl_MaxComputeTextureImageUnits":{ 288 "essl_level":"ESSL3_1_BUILTINS", 289 "type":{ 290 "basic":"Int", 291 "precision":"Medium", 292 "qualifier":"Const" 293 }, 294 "value":"resources" 295 }, 296 "gl_MaxComputeAtomicCounters":{ 297 "essl_level":"ESSL3_1_BUILTINS", 298 "type":{ 299 "basic":"Int", 300 "precision":"Medium", 301 "qualifier":"Const" 302 }, 303 "value":"resources" 304 }, 305 "gl_MaxComputeAtomicCounterBuffers":{ 306 "essl_level":"ESSL3_1_BUILTINS", 307 "type":{ 308 "basic":"Int", 309 "precision":"Medium", 310 "qualifier":"Const" 311 }, 312 "value":"resources" 313 }, 314 "gl_MaxVertexAtomicCounters":{ 315 "essl_level":"ESSL3_1_BUILTINS", 316 "type":{ 317 "basic":"Int", 318 "precision":"Medium", 319 "qualifier":"Const" 320 }, 321 "value":"resources" 322 }, 323 "gl_MaxFragmentAtomicCounters":{ 324 "essl_level":"ESSL3_1_BUILTINS", 325 "type":{ 326 "basic":"Int", 327 "precision":"Medium", 328 "qualifier":"Const" 329 }, 330 "value":"resources" 331 }, 332 "gl_MaxCombinedAtomicCounters":{ 333 "essl_level":"ESSL3_1_BUILTINS", 334 "type":{ 335 "basic":"Int", 336 "precision":"Medium", 337 "qualifier":"Const" 338 }, 339 "value":"resources" 340 }, 341 "gl_MaxAtomicCounterBindings":{ 342 "essl_level":"ESSL3_1_BUILTINS", 343 "type":{ 344 "basic":"Int", 345 "precision":"Medium", 346 "qualifier":"Const" 347 }, 348 "value":"resources" 349 }, 350 "gl_MaxVertexAtomicCounterBuffers":{ 351 "essl_level":"ESSL3_1_BUILTINS", 352 "type":{ 353 "basic":"Int", 354 "precision":"Medium", 355 "qualifier":"Const" 356 }, 357 "value":"resources" 358 }, 359 "gl_MaxFragmentAtomicCounterBuffers":{ 360 "essl_level":"ESSL3_1_BUILTINS", 361 "type":{ 362 "basic":"Int", 363 "precision":"Medium", 364 "qualifier":"Const" 365 }, 366 "value":"resources" 367 }, 368 "gl_MaxCombinedAtomicCounterBuffers":{ 369 "essl_level":"ESSL3_1_BUILTINS", 370 "type":{ 371 "basic":"Int", 372 "precision":"Medium", 373 "qualifier":"Const" 374 }, 375 "value":"resources" 376 }, 377 "gl_MaxAtomicCounterBufferSize":{ 378 "essl_level":"ESSL3_1_BUILTINS", 379 "type":{ 380 "basic":"Int", 381 "precision":"Medium", 382 "qualifier":"Const" 383 }, 384 "value":"resources" 385 } 386 }, 387 "subgroups":{ 388 "EXTGeometryShader":{ 389 "variables":{ 390 "gl_MaxGeometryInputComponents":{ 391 "essl_level":"ESSL3_1_BUILTINS", 392 "type":{ 393 "basic":"Int", 394 "precision":"Medium", 395 "qualifier":"Const" 396 }, 397 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 398 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 399 "value":"resources" 400 }, 401 "gl_MaxGeometryOutputComponents":{ 402 "essl_level":"ESSL3_1_BUILTINS", 403 "type":{ 404 "basic":"Int", 405 "precision":"Medium", 406 "qualifier":"Const" 407 }, 408 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 409 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 410 "value":"resources" 411 }, 412 "gl_MaxGeometryImageUniforms":{ 413 "essl_level":"ESSL3_1_BUILTINS", 414 "type":{ 415 "basic":"Int", 416 "precision":"Medium", 417 "qualifier":"Const" 418 }, 419 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 420 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 421 "value":"resources" 422 }, 423 "gl_MaxGeometryTextureImageUnits":{ 424 "essl_level":"ESSL3_1_BUILTINS", 425 "type":{ 426 "basic":"Int", 427 "precision":"Medium", 428 "qualifier":"Const" 429 }, 430 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 431 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 432 "value":"resources" 433 }, 434 "gl_MaxGeometryOutputVertices":{ 435 "essl_level":"ESSL3_1_BUILTINS", 436 "type":{ 437 "basic":"Int", 438 "precision":"Medium", 439 "qualifier":"Const" 440 }, 441 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 442 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 443 "value":"resources" 444 }, 445 "gl_MaxGeometryTotalOutputComponents":{ 446 "essl_level":"ESSL3_1_BUILTINS", 447 "type":{ 448 "basic":"Int", 449 "precision":"Medium", 450 "qualifier":"Const" 451 }, 452 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 453 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 454 "value":"resources" 455 }, 456 "gl_MaxGeometryUniformComponents":{ 457 "essl_level":"ESSL3_1_BUILTINS", 458 "type":{ 459 "basic":"Int", 460 "precision":"Medium", 461 "qualifier":"Const" 462 }, 463 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 464 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 465 "value":"resources" 466 }, 467 "gl_MaxGeometryAtomicCounters":{ 468 "essl_level":"ESSL3_1_BUILTINS", 469 "type":{ 470 "basic":"Int", 471 "precision":"Medium", 472 "qualifier":"Const" 473 }, 474 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 475 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 476 "value":"resources" 477 }, 478 "gl_MaxGeometryAtomicCounterBuffers":{ 479 "essl_level":"ESSL3_1_BUILTINS", 480 "type":{ 481 "basic":"Int", 482 "precision":"Medium", 483 "qualifier":"Const" 484 }, 485 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 486 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 487 "value":"resources" 488 } 489 } 490 }, 491 "EXTTessellationShader":{ 492 "variables":{ 493 "gl_MaxTessControlInputComponents":{ 494 "essl_level":"ESSL3_1_BUILTINS", 495 "type":{ 496 "basic":"Int", 497 "precision":"Medium", 498 "qualifier":"Const" 499 }, 500 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 501 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 502 "value":"resources" 503 }, 504 "gl_MaxTessControlOutputComponents":{ 505 "essl_level":"ESSL3_1_BUILTINS", 506 "type":{ 507 "basic":"Int", 508 "precision":"Medium", 509 "qualifier":"Const" 510 }, 511 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 512 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 513 "value":"resources" 514 }, 515 "gl_MaxTessControlTextureImageUnits":{ 516 "essl_level":"ESSL3_1_BUILTINS", 517 "type":{ 518 "basic":"Int", 519 "precision":"Medium", 520 "qualifier":"Const" 521 }, 522 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 523 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 524 "value":"resources" 525 }, 526 "gl_MaxTessControlUniformComponents":{ 527 "essl_level":"ESSL3_1_BUILTINS", 528 "type":{ 529 "basic":"Int", 530 "precision":"Medium", 531 "qualifier":"Const" 532 }, 533 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 534 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 535 "value":"resources" 536 }, 537 "gl_MaxTessControlTotalOutputComponents":{ 538 "essl_level":"ESSL3_1_BUILTINS", 539 "type":{ 540 "basic":"Int", 541 "precision":"Medium", 542 "qualifier":"Const" 543 }, 544 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 545 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 546 "value":"resources" 547 }, 548 "gl_MaxTessControlImageUniforms":{ 549 "essl_level":"ESSL3_1_BUILTINS", 550 "type":{ 551 "basic":"Int", 552 "precision":"Medium", 553 "qualifier":"Const" 554 }, 555 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 556 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 557 "value":"resources" 558 }, 559 "gl_MaxTessControlAtomicCounters":{ 560 "essl_level":"ESSL3_1_BUILTINS", 561 "type":{ 562 "basic":"Int", 563 "precision":"Medium", 564 "qualifier":"Const" 565 }, 566 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 567 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 568 "value":"resources" 569 }, 570 "gl_MaxTessControlAtomicCounterBuffers":{ 571 "essl_level":"ESSL3_1_BUILTINS", 572 "type":{ 573 "basic":"Int", 574 "precision":"Medium", 575 "qualifier":"Const" 576 }, 577 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 578 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 579 "value":"resources" 580 }, 581 "gl_MaxTessPatchComponents":{ 582 "essl_level":"ESSL3_1_BUILTINS", 583 "type":{ 584 "basic":"Int", 585 "precision":"Medium", 586 "qualifier":"Const" 587 }, 588 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 589 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 590 "value":"resources" 591 }, 592 "gl_MaxPatchVertices":{ 593 "essl_level":"ESSL3_1_BUILTINS", 594 "type":{ 595 "basic":"Int", 596 "precision":"Medium", 597 "qualifier":"Const" 598 }, 599 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 600 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 601 "value":"resources" 602 }, 603 "gl_MaxTessGenLevel":{ 604 "essl_level":"ESSL3_1_BUILTINS", 605 "type":{ 606 "basic":"Int", 607 "precision":"Medium", 608 "qualifier":"Const" 609 }, 610 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 611 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 612 "value":"resources" 613 }, 614 "gl_MaxTessEvaluationInputComponents":{ 615 "essl_level":"ESSL3_1_BUILTINS", 616 "type":{ 617 "basic":"Int", 618 "precision":"Medium", 619 "qualifier":"Const" 620 }, 621 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 622 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 623 "value":"resources" 624 }, 625 "gl_MaxTessEvaluationOutputComponents":{ 626 "essl_level":"ESSL3_1_BUILTINS", 627 "type":{ 628 "basic":"Int", 629 "precision":"Medium", 630 "qualifier":"Const" 631 }, 632 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 633 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 634 "value":"resources" 635 }, 636 "gl_MaxTessEvaluationTextureImageUnits":{ 637 "essl_level":"ESSL3_1_BUILTINS", 638 "type":{ 639 "basic":"Int", 640 "precision":"Medium", 641 "qualifier":"Const" 642 }, 643 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 644 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 645 "value":"resources" 646 }, 647 "gl_MaxTessEvaluationUniformComponents":{ 648 "essl_level":"ESSL3_1_BUILTINS", 649 "type":{ 650 "basic":"Int", 651 "precision":"Medium", 652 "qualifier":"Const" 653 }, 654 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 655 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 656 "value":"resources" 657 }, 658 "gl_MaxTessEvaluationImageUniforms":{ 659 "essl_level":"ESSL3_1_BUILTINS", 660 "type":{ 661 "basic":"Int", 662 "precision":"Medium", 663 "qualifier":"Const" 664 }, 665 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 666 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 667 "value":"resources" 668 }, 669 "gl_MaxTessEvaluationAtomicCounters":{ 670 "essl_level":"ESSL3_1_BUILTINS", 671 "type":{ 672 "basic":"Int", 673 "precision":"Medium", 674 "qualifier":"Const" 675 }, 676 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 677 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 678 "value":"resources" 679 }, 680 "gl_MaxTessEvaluationAtomicCounterBuffers":{ 681 "essl_level":"ESSL3_1_BUILTINS", 682 "type":{ 683 "basic":"Int", 684 "precision":"Medium", 685 "qualifier":"Const" 686 }, 687 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 688 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 689 "value":"resources" 690 } 691 } 692 }, 693 "OESSampleVariables":{ 694 "variables":{ 695 "gl_MaxSamples":{ 696 "essl_level":"ESSL3_BUILTINS", 697 "type":{ 698 "basic":"Int", 699 "precision":"Medium", 700 "qualifier":"Const" 701 }, 702 "essl_extension":"OES_sample_variables", 703 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 704 "value":"resources" 705 } 706 } 707 }, 708 "APPLEClipDistance":{ 709 "variables":{ 710 "gl_MaxClipDistances":{ 711 "essl_level":"COMMON_BUILTINS", 712 "type":{ 713 "basic":"Int", 714 "precision":"Medium", 715 "qualifier":"Const" 716 }, 717 "essl_extension":"APPLE_clip_distance", 718 "value":"resources", 719 "suffix": "APPLE" 720 } 721 } 722 }, 723 "EXTClipCullDistance":{ 724 "variables":{ 725 "gl_MaxClipDistances":{ 726 "essl_level":"ESSL3_BUILTINS", 727 "type":{ 728 "basic":"Int", 729 "precision":"Medium", 730 "qualifier":"Const" 731 }, 732 "essl_extension":"EXT_clip_cull_distance, ANGLE_clip_cull_distance", 733 "value":"resources" 734 }, 735 "gl_MaxCullDistances":{ 736 "essl_level":"ESSL3_BUILTINS", 737 "type":{ 738 "basic":"Int", 739 "precision":"Medium", 740 "qualifier":"Const" 741 }, 742 "essl_extension":"EXT_clip_cull_distance, ANGLE_clip_cull_distance", 743 "value":"resources" 744 }, 745 "gl_MaxCombinedClipAndCullDistances":{ 746 "essl_level":"ESSL3_BUILTINS", 747 "type":{ 748 "basic":"Int", 749 "precision":"Medium", 750 "qualifier":"Const" 751 }, 752 "essl_extension":"EXT_clip_cull_distance, ANGLE_clip_cull_distance", 753 "value":"resources" 754 } 755 } 756 } 757 } 758 }, 759 "FragShader":{ 760 "shader_type": "FRAGMENT", 761 "variables":{ 762 "gl_FragCoord":{ 763 "essl_level":"ESSL1_BUILTINS", 764 "type":{ 765 "basic":"Float", 766 "precision":"Medium", 767 "qualifier":"FragCoord", 768 "primarySize":4 769 } 770 }, 771 "gl_FrontFacing":{ 772 "essl_level":"COMMON_BUILTINS", 773 "type":{ 774 "basic":"Bool", 775 "qualifier":"FrontFacing" 776 } 777 }, 778 "gl_PointCoord":{ 779 "essl_level":"COMMON_BUILTINS", 780 "type":{ 781 "basic":"Float", 782 "precision":"Medium", 783 "qualifier":"PointCoord", 784 "primarySize":2 785 } 786 }, 787 "gl_FragColor":{ 788 "essl_level":"ESSL1_BUILTINS", 789 "type":{ 790 "basic":"Float", 791 "precision":"Medium", 792 "qualifier":"FragColor", 793 "primarySize":4 794 } 795 }, 796 "gl_FragData":{ 797 "essl_level":"ESSL1_BUILTINS", 798 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpMedium, EvqFragData, 4); if (spec != SH_WEBGL2_SPEC && spec != SH_WEBGL3_SPEC) {{ {type_name}->makeArray(resources.MaxDrawBuffers); }} else {{ {type_name}->makeArray(1u); }}" 799 }, 800 "gl_FragDepth":{ 801 "essl_level":"ESSL3_BUILTINS", 802 "type":{ 803 "basic":"Float", 804 "precision":"High", 805 "qualifier":"FragDepth" 806 } 807 }, 808 "gl_HelperInvocation":{ 809 "essl_level":"ESSL3_1_BUILTINS", 810 "type":{ 811 "basic":"Bool", 812 "qualifier":"HelperInvocation" 813 } 814 } 815 }, 816 "subgroups":{ 817 "ES300":{ 818 "variables":{ 819 "gl_FragCoord":{ 820 "essl_level":"ESSL3_BUILTINS", 821 "suffix":"300", 822 "type":{ 823 "basic":"Float", 824 "precision":"High", 825 "qualifier":"FragCoord", 826 "primarySize":4 827 } 828 } 829 } 830 }, 831 "EXTBlendFuncExtended":{ 832 "variables":{ 833 "gl_SecondaryFragColorEXT":{ 834 "essl_level":"ESSL1_BUILTINS", 835 "essl_extension":"EXT_blend_func_extended", 836 "type":{ 837 "basic":"Float", 838 "precision":"Medium", 839 "qualifier":"SecondaryFragColorEXT", 840 "primarySize":4 841 } 842 }, 843 "gl_SecondaryFragDataEXT":{ 844 "essl_level":"ESSL1_BUILTINS", 845 "essl_extension":"EXT_blend_func_extended", 846 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpMedium, EvqSecondaryFragDataEXT, 4, 1); {type_name}->makeArray(resources.MaxDualSourceDrawBuffers);" 847 } 848 } 849 }, 850 "EXTFragDepth":{ 851 "variables":{ 852 "gl_FragDepthEXT":{ 853 "essl_level":"ESSL1_BUILTINS", 854 "essl_extension":"EXT_frag_depth", 855 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, resources.FragmentPrecisionHigh ? EbpHigh : EbpMedium, EvqFragDepth, 1);" 856 } 857 } 858 }, 859 "EXTShaderFramebufferFetch":{ 860 "variables":{ 861 "gl_LastFragData":{ 862 "essl_level":"ESSL1_BUILTINS", 863 "essl_extension":"EXT_shader_framebuffer_fetch, EXT_shader_framebuffer_fetch_non_coherent", 864 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpMedium, EvqLastFragData, 4, 1); {type_name}->makeArray(resources.MaxDrawBuffers);" 865 } 866 } 867 }, 868 "NVShaderFramebufferFetch":{ 869 "variables":{ 870 "gl_LastFragColor":{ 871 "essl_level":"ESSL1_BUILTINS", 872 "essl_extension":"NV_shader_framebuffer_fetch", 873 "type":{ 874 "basic":"Float", 875 "precision":"Medium", 876 "qualifier":"LastFragColor", 877 "primarySize":4 878 } 879 }, 880 "gl_LastFragData":{ 881 "essl_level":"ESSL1_BUILTINS", 882 "suffix":"NV", 883 "essl_extension":"NV_shader_framebuffer_fetch", 884 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpMedium, EvqLastFragData, 4, 1); {type_name}->makeArray(resources.MaxDrawBuffers);" 885 } 886 } 887 }, 888 "ARMShaderFramebufferFetch":{ 889 "variables":{ 890 "gl_LastFragColorARM":{ 891 "essl_level":"COMMON_BUILTINS", 892 "essl_extension":"ARM_shader_framebuffer_fetch", 893 "type":{ 894 "basic":"Float", 895 "precision":"Medium", 896 "qualifier":"LastFragColor", 897 "primarySize":4 898 } 899 } 900 } 901 }, 902 "ARMShaderFramebufferFetchDepthStencil":{ 903 "variables":{ 904 "gl_LastFragDepthARM":{ 905 "essl_level":"COMMON_BUILTINS", 906 "essl_extension":"ARM_shader_framebuffer_fetch_depth_stencil", 907 "type":{ 908 "comment": "Precision can be Medium on ESSL1 without GL_FRAGMENT_PRECISION_HIGH, but ANGLE always supports that where this extension is exposed", 909 "basic":"Float", 910 "precision":"High", 911 "qualifier":"LastFragDepth" 912 } 913 }, 914 "gl_LastFragStencilARM":{ 915 "essl_level":"COMMON_BUILTINS", 916 "essl_extension":"ARM_shader_framebuffer_fetch_depth_stencil", 917 "type":{ 918 "basic":"Int", 919 "precision":"Low", 920 "qualifier":"LastFragStencil" 921 } 922 } 923 } 924 }, 925 "GeometryShaderSupported":{ 926 "variables":{ 927 "gl_PrimitiveID":{ 928 "essl_level":"ESSL3_1_BUILTINS", 929 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 930 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 931 "type":{ 932 "basic":"Int", 933 "precision":"High", 934 "qualifier":"PrimitiveID" 935 } 936 }, 937 "gl_Layer":{ 938 "essl_level":"ESSL3_1_BUILTINS", 939 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 940 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 941 "type":{ 942 "basic":"Int", 943 "precision":"High", 944 "qualifier":"LayerIn" 945 } 946 } 947 } 948 }, 949 "OESSampleVariables":{ 950 "variables":{ 951 "gl_SampleID":{ 952 "essl_level":"ESSL3_BUILTINS", 953 "essl_extension":"OES_sample_variables", 954 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 955 "type":{ 956 "basic":"Int", 957 "precision":"Low", 958 "qualifier":"SampleID" 959 } 960 }, 961 "gl_SamplePosition":{ 962 "essl_level":"ESSL3_BUILTINS", 963 "essl_extension":"OES_sample_variables", 964 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 965 "type":{ 966 "basic":"Float", 967 "precision":"Medium", 968 "primarySize":2, 969 "qualifier":"SamplePosition" 970 } 971 }, 972 "gl_SampleMaskIn":{ 973 "essl_level":"ESSL3_BUILTINS", 974 "essl_extension":"OES_sample_variables", 975 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 976 "initDynamicType":"TType *{type_name} = new TType(EbtInt, EbpHigh, EvqSampleMaskIn, 1); {type_name}->makeArray((resources.MaxSamples+31)/32);" 977 }, 978 "gl_SampleMask":{ 979 "essl_level":"ESSL3_BUILTINS", 980 "essl_extension":"OES_sample_variables", 981 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 982 "initDynamicType":"TType *{type_name} = new TType(EbtInt, EbpHigh, EvqSampleMask, 1); {type_name}->makeArray((resources.MaxSamples+31)/32);" 983 } 984 } 985 } 986 } 987 }, 988 "VertexShader":{ 989 "shader_type": "VERTEX", 990 "variables":{ 991 "gl_Position":{ 992 "essl_level":"COMMON_BUILTINS", 993 "type":{ 994 "basic":"Float", 995 "precision":"High", 996 "qualifier":"Position", 997 "primarySize":4 998 } 999 }, 1000 "gl_PointSize":{ 1001 "essl_level":"ESSL1_BUILTINS", 1002 "type":{ 1003 "basic":"Float", 1004 "precision":"Medium", 1005 "qualifier":"PointSize" 1006 } 1007 }, 1008 "gl_InstanceID":{ 1009 "essl_level":"ESSL3_BUILTINS", 1010 "type":{ 1011 "basic":"Int", 1012 "precision":"High", 1013 "qualifier":"InstanceID" 1014 } 1015 }, 1016 "gl_InstanceIndex":{ 1017 "essl_level":"ESSL_INTERNAL_BACKEND_BUILTINS", 1018 "type":{ 1019 "basic":"Int", 1020 "precision":"High", 1021 "qualifier":"InstanceID", 1022 "comment": "Used internally for SPIR-V generation, not exposed to application" 1023 } 1024 }, 1025 "gl_VertexID":{ 1026 "essl_level":"ESSL3_BUILTINS", 1027 "type":{ 1028 "basic":"Int", 1029 "precision":"High", 1030 "qualifier":"VertexID" 1031 } 1032 }, 1033 "gl_VertexIndex":{ 1034 "essl_level":"ESSL_INTERNAL_BACKEND_BUILTINS", 1035 "type":{ 1036 "basic":"Int", 1037 "precision":"High", 1038 "qualifier":"VertexID", 1039 "comment": "Used internally for SPIR-V generation, not exposed to application" 1040 } 1041 }, 1042 "gl_Layer":{ 1043 "suffix":"VS", 1044 "comment":"gl_Layer exists in other shader stages in ESSL, but not in vertex shader so far. Used internally for mulitview emulation", 1045 "essl_level":"ESSL_INTERNAL_BACKEND_BUILTINS", 1046 "type":{ 1047 "basic":"Int", 1048 "precision":"High", 1049 "qualifier":"LayerOut" 1050 } 1051 } 1052 }, 1053 "subgroups":{ 1054 "ES300":{ 1055 "variables":{ 1056 "gl_PointSize":{ 1057 "essl_level":"ESSL3_BUILTINS", 1058 "suffix":"300", 1059 "type":{ 1060 "basic":"Float", 1061 "precision":"High", 1062 "qualifier":"PointSize" 1063 } 1064 } 1065 } 1066 }, 1067 "ANGLEMultiDraw":{ 1068 "subgroups":{ 1069 "ESSL3":{ 1070 "variables":{ 1071 "gl_DrawID":{ 1072 "essl_level":"COMMON_BUILTINS", 1073 "essl_extension":"ANGLE_multi_draw", 1074 "type":{ 1075 "basic":"Int", 1076 "precision":"High", 1077 "qualifier":"DrawID" 1078 } 1079 } 1080 } 1081 } 1082 } 1083 }, 1084 "ANGLEBaseVertexBaseInstance":{ 1085 "subgroups":{ 1086 "ESSL3":{ 1087 "variables":{ 1088 "gl_BaseVertex":{ 1089 "essl_level":"ESSL3_BUILTINS", 1090 "essl_extension":"ANGLE_base_vertex_base_instance_shader_builtin", 1091 "type":{ 1092 "basic":"Int", 1093 "precision":"High", 1094 "qualifier":"Uniform" 1095 } 1096 }, 1097 "gl_BaseInstance":{ 1098 "essl_level":"ESSL3_BUILTINS", 1099 "essl_extension":"ANGLE_base_vertex_base_instance_shader_builtin", 1100 "type":{ 1101 "basic":"Int", 1102 "precision":"High", 1103 "qualifier":"Uniform" 1104 } 1105 }, 1106 "angle_BaseVertex":{ 1107 "essl_level":"COMMON_BUILTINS", 1108 "essl_extension":"ANGLE_base_vertex_base_instance_shader_builtin", 1109 "type":{ 1110 "basic":"Int", 1111 "precision":"High", 1112 "qualifier":"Uniform" 1113 } 1114 }, 1115 "angle_BaseInstance":{ 1116 "essl_level":"COMMON_BUILTINS", 1117 "essl_extension":"ANGLE_base_vertex_base_instance_shader_builtin", 1118 "type":{ 1119 "basic":"Int", 1120 "precision":"High", 1121 "qualifier":"Uniform" 1122 } 1123 } 1124 } 1125 } 1126 } 1127 }, 1128 "APPLEClipDistance":{ 1129 "variables":{ 1130 "gl_ClipDistance":{ 1131 "essl_level":"COMMON_BUILTINS", 1132 "essl_extension":"APPLE_clip_distance", 1133 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqClipDistance, 1); {type_name}->makeArray(resources.MaxClipDistances);", 1134 "suffix": "APPLE" 1135 } 1136 } 1137 } 1138 } 1139 }, 1140 "ComputeShader":{ 1141 "shader_type": "COMPUTE", 1142 "variables":{ 1143 "gl_NumWorkGroups":{ 1144 "essl_level":"ESSL3_1_BUILTINS", 1145 "type":{ 1146 "basic":"UInt", 1147 "precision":"High", 1148 "qualifier":"NumWorkGroups", 1149 "primarySize":3 1150 } 1151 }, 1152 "gl_WorkGroupSize":{ 1153 "essl_level":"ESSL3_1_BUILTINS", 1154 "type":{ 1155 "basic":"UInt", 1156 "precision":"High", 1157 "qualifier":"WorkGroupSize", 1158 "primarySize":3 1159 } 1160 }, 1161 "gl_WorkGroupID":{ 1162 "essl_level":"ESSL3_1_BUILTINS", 1163 "type":{ 1164 "basic":"UInt", 1165 "precision":"High", 1166 "qualifier":"WorkGroupID", 1167 "primarySize":3 1168 } 1169 }, 1170 "gl_LocalInvocationID":{ 1171 "essl_level":"ESSL3_1_BUILTINS", 1172 "type":{ 1173 "basic":"UInt", 1174 "precision":"High", 1175 "qualifier":"LocalInvocationID", 1176 "primarySize":3 1177 } 1178 }, 1179 "gl_GlobalInvocationID":{ 1180 "essl_level":"ESSL3_1_BUILTINS", 1181 "type":{ 1182 "basic":"UInt", 1183 "precision":"High", 1184 "qualifier":"GlobalInvocationID", 1185 "primarySize":3 1186 } 1187 }, 1188 "gl_LocalInvocationIndex":{ 1189 "essl_level":"ESSL3_1_BUILTINS", 1190 "type":{ 1191 "basic":"UInt", 1192 "precision":"High", 1193 "qualifier":"LocalInvocationIndex" 1194 } 1195 } 1196 } 1197 }, 1198 "GeometryShader":{ 1199 "shader_type": "GEOMETRY_EXT", 1200 "variables":{ 1201 "gl_PrimitiveIDIn":{ 1202 "essl_level":"ESSL3_1_BUILTINS", 1203 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1204 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1205 "type":{ 1206 "basic":"Int", 1207 "precision":"High", 1208 "qualifier":"PrimitiveIDIn" 1209 } 1210 }, 1211 "gl_InvocationID":{ 1212 "essl_level":"ESSL3_1_BUILTINS", 1213 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1214 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1215 "type":{ 1216 "basic":"Int", 1217 "precision":"High", 1218 "qualifier":"InvocationID" 1219 } 1220 }, 1221 "gl_PrimitiveID":{ 1222 "suffix":"GS", 1223 "essl_level":"ESSL3_1_BUILTINS", 1224 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1225 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1226 "type":{ 1227 "basic":"Int", 1228 "precision":"High", 1229 "qualifier":"PrimitiveID" 1230 } 1231 }, 1232 "gl_Layer":{ 1233 "suffix":"GS", 1234 "essl_level":"ESSL3_1_BUILTINS", 1235 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1236 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1237 "type":{ 1238 "basic":"Int", 1239 "precision":"High", 1240 "qualifier":"LayerOut" 1241 } 1242 }, 1243 "gl_PerVertex":{ 1244 "essl_level":"ESSL3_1_BUILTINS", 1245 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1246 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1247 "class":"TInterfaceBlock", 1248 "fields":{ 1249 "gl_Position":{ 1250 "basic":"Float", 1251 "precision":"High", 1252 "qualifier":"Position", 1253 "primarySize":4 1254 } 1255 } 1256 }, 1257 "gl_in":{ 1258 "essl_level":"ESSL3_1_BUILTINS", 1259 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1260 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1261 "initDynamicType":"TType *{type_name} = new TType(gl_PerVertex, EvqPerVertexIn, TLayoutQualifier::Create()); {type_name}->makeArray(0u);", 1262 "comment":"The array size of gl_in is undefined until we get a valid input primitive declaration." 1263 } 1264 }, 1265 "subgroups":{ 1266 "Out":{ 1267 "variables":{ 1268 "gl_PerVertex":{ 1269 "suffix":"OutBlock", 1270 "essl_level":"ESSL3_1_BUILTINS", 1271 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1272 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1273 "private":true, 1274 "class":"TInterfaceBlock", 1275 "fields":{ 1276 "gl_Position":{ 1277 "basic":"Float", 1278 "precision":"High", 1279 "qualifier":"Position", 1280 "primarySize":4 1281 } 1282 } 1283 }, 1284 "gl_Position":{ 1285 "suffix":"GS", 1286 "essl_level":"ESSL3_1_BUILTINS", 1287 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1288 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1289 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqPosition, 4); {type_name}->setInterfaceBlock(gl_PerVertexOutBlock{ext_or_core_suffix});" 1290 } 1291 } 1292 } 1293 } 1294 }, 1295 "TessellationControlShader":{ 1296 "shader_type": "TESS_CONTROL_EXT", 1297 "variables":{ 1298 "gl_PatchVerticesIn":{ 1299 "suffix":"TCS", 1300 "essl_level":"ESSL3_1_BUILTINS", 1301 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1302 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1303 "type":{ 1304 "basic":"Int", 1305 "precision":"High", 1306 "qualifier":"PatchVerticesIn" 1307 } 1308 }, 1309 "gl_InvocationID":{ 1310 "suffix":"TCS", 1311 "essl_level":"ESSL3_1_BUILTINS", 1312 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1313 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1314 "type":{ 1315 "basic":"Int", 1316 "precision":"High", 1317 "qualifier":"InvocationID" 1318 } 1319 }, 1320 "gl_PrimitiveID":{ 1321 "suffix":"TCS", 1322 "essl_level":"ESSL3_1_BUILTINS", 1323 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1324 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1325 "type":{ 1326 "basic":"Int", 1327 "precision":"High", 1328 "qualifier":"PrimitiveID" 1329 } 1330 }, 1331 "gl_TessLevelOuter":{ 1332 "suffix":"TCS", 1333 "essl_level":"ESSL3_1_BUILTINS", 1334 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1335 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1336 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqTessLevelOuter, 1); {type_name}->makeArray(4u);" 1337 }, 1338 "gl_TessLevelInner":{ 1339 "suffix":"TCS", 1340 "essl_level":"ESSL3_1_BUILTINS", 1341 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1342 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1343 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqTessLevelInner, 1); {type_name}->makeArray(2u);" 1344 }, 1345 "gl_PerVertex":{ 1346 "suffix":"TCS", 1347 "essl_level":"ESSL3_1_BUILTINS", 1348 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1349 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1350 "class":"TInterfaceBlock", 1351 "fields":{ 1352 "gl_Position":{ 1353 "basic":"Float", 1354 "precision":"High", 1355 "qualifier":"Position", 1356 "primarySize":4 1357 } 1358 } 1359 }, 1360 "gl_in":{ 1361 "suffix":"TCS", 1362 "essl_level":"ESSL3_1_BUILTINS", 1363 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1364 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1365 "initDynamicType":"TType *{type_name} = new TType(gl_PerVertex, EvqPerVertexIn, TLayoutQualifier::Create()); {type_name}->makeArray(resources.MaxPatchVertices);" 1366 }, 1367 "gl_out":{ 1368 "suffix":"TCS", 1369 "essl_level":"ESSL3_1_BUILTINS", 1370 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1371 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1372 "initDynamicType":"TType *{type_name} = new TType(gl_PerVertex, EvqPerVertexOut, TLayoutQualifier::Create()); {type_name}->makeArray(resources.MaxPatchVertices);" 1373 }, 1374 "gl_BoundingBox":{ 1375 "suffix":"TCS", 1376 "essl_level":"ESSL3_2_BUILTINS", 1377 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1378 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1379 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqBoundingBox, 4); {type_name}->makeArray(2u);" 1380 } 1381 }, 1382 "subgroups":{ 1383 "Out":{ 1384 "variables":{ 1385 "gl_PerVertex":{ 1386 "suffix":"OutTcsBlock", 1387 "essl_level":"ESSL3_1_BUILTINS", 1388 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1389 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1390 "private":true, 1391 "class":"TInterfaceBlock", 1392 "fields":{ 1393 "gl_Position":{ 1394 "basic":"Float", 1395 "precision":"High", 1396 "qualifier":"Position", 1397 "primarySize":4 1398 } 1399 } 1400 }, 1401 "gl_Position":{ 1402 "suffix":"TCS", 1403 "essl_level":"ESSL3_1_BUILTINS", 1404 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1405 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1406 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqPosition, 4); {type_name}->setInterfaceBlock(gl_PerVertexOutTcsBlock{ext_or_core_suffix});" 1407 } 1408 } 1409 }, 1410 "EXTPrimitiveBoundingBox":{ 1411 "variables":{ 1412 "gl_BoundingBoxEXT":{ 1413 "suffix":"TCS", 1414 "essl_level":"ESSL3_1_BUILTINS", 1415 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1416 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1417 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqBoundingBox, 4); {type_name}->makeArray(2u);" 1418 } 1419 } 1420 }, 1421 "OESPrimitiveBoundingBox":{ 1422 "variables":{ 1423 "gl_BoundingBoxOES":{ 1424 "suffix":"TCS", 1425 "essl_level":"ESSL3_1_BUILTINS", 1426 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1427 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1428 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqBoundingBox, 4); {type_name}->makeArray(2u);" 1429 } 1430 } 1431 } 1432 } 1433 }, 1434 "TessellationEvaluationShader":{ 1435 "shader_type": "TESS_EVALUATION_EXT", 1436 "variables":{ 1437 "gl_PatchVerticesIn":{ 1438 "suffix":"TES", 1439 "essl_level":"ESSL3_1_BUILTINS", 1440 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1441 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1442 "type":{ 1443 "basic":"Int", 1444 "precision":"High", 1445 "qualifier":"PatchVerticesIn" 1446 } 1447 }, 1448 "gl_PrimitiveID":{ 1449 "suffix":"TES", 1450 "essl_level":"ESSL3_1_BUILTINS", 1451 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1452 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1453 "type":{ 1454 "basic":"Int", 1455 "precision":"High", 1456 "qualifier":"PrimitiveID" 1457 } 1458 }, 1459 "gl_TessCoord":{ 1460 "essl_level":"ESSL3_1_BUILTINS", 1461 "type":{ 1462 "basic":"Float", 1463 "precision":"High", 1464 "primarySize":3, 1465 "qualifier":"TessCoord" 1466 } 1467 }, 1468 "gl_TessLevelOuter":{ 1469 "suffix":"TES", 1470 "essl_level":"ESSL3_1_BUILTINS", 1471 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1472 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1473 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqTessLevelOuter, 1); {type_name}->makeArray(4u);" 1474 }, 1475 "gl_TessLevelInner":{ 1476 "suffix":"TES", 1477 "essl_level":"ESSL3_1_BUILTINS", 1478 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1479 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1480 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqTessLevelInner, 1); {type_name}->makeArray(2u);" 1481 }, 1482 "gl_PerVertex":{ 1483 "suffix":"TES", 1484 "essl_level":"ESSL3_1_BUILTINS", 1485 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1486 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1487 "class":"TInterfaceBlock", 1488 "fields":{ 1489 "gl_Position":{ 1490 "basic":"Float", 1491 "precision":"High", 1492 "qualifier":"Position", 1493 "primarySize":4 1494 } 1495 } 1496 }, 1497 "gl_in":{ 1498 "suffix":"TES", 1499 "essl_level":"ESSL3_1_BUILTINS", 1500 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1501 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1502 "initDynamicType":"TType *{type_name} = new TType(gl_PerVertex, EvqPerVertexIn, TLayoutQualifier::Create()); {type_name}->makeArray(resources.MaxPatchVertices);" 1503 }, 1504 "gl_out":{ 1505 "suffix":"TES", 1506 "essl_level":"ESSL3_1_BUILTINS", 1507 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1508 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1509 "initDynamicType":"TType *{type_name} = new TType(gl_PerVertex, EvqPerVertexOut, TLayoutQualifier::Create()); {type_name}->makeArray(resources.MaxPatchVertices);" 1510 } 1511 }, 1512 "subgroups":{ 1513 "Out":{ 1514 "variables":{ 1515 "gl_PerVertex":{ 1516 "suffix":"OutTesBlock", 1517 "essl_level":"ESSL3_1_BUILTINS", 1518 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1519 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1520 "private":true, 1521 "class":"TInterfaceBlock", 1522 "fields":{ 1523 "gl_Position":{ 1524 "basic":"Float", 1525 "precision":"High", 1526 "qualifier":"Position", 1527 "primarySize":4 1528 } 1529 } 1530 }, 1531 "gl_Position":{ 1532 "suffix":"TES", 1533 "essl_level":"ESSL3_1_BUILTINS", 1534 "essl_extension":"EXT_tessellation_shader, OES_tessellation_shader", 1535 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1536 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqPosition, 4); {type_name}->setInterfaceBlock(gl_PerVertexOutTesBlock{ext_or_core_suffix});" 1537 } 1538 } 1539 } 1540 } 1541 }, 1542 "Multiview":{ 1543 "shader_type": "NOT_COMPUTE", 1544 "subgroups":{ 1545 "ESSL3":{ 1546 "variables":{ 1547 "gl_ViewID_OVR":{ 1548 "essl_level":"ESSL3_BUILTINS", 1549 "essl_extension":"OVR_multiview", 1550 "type":{ 1551 "basic":"UInt", 1552 "precision":"High", 1553 "qualifier":"ViewIDOVR" 1554 } 1555 } 1556 } 1557 } 1558 } 1559 }, 1560 "ClipCullDistance":{ 1561 "shader_type": "NOT_COMPUTE", 1562 "subgroups":{ 1563 "ESSL3":{ 1564 "variables":{ 1565 "gl_ClipDistance":{ 1566 "essl_level":"ESSL3_BUILTINS", 1567 "essl_extension":"EXT_clip_cull_distance, ANGLE_clip_cull_distance", 1568 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqClipDistance, 1); {type_name}->makeArray(resources.MaxClipDistances);" 1569 }, 1570 "gl_CullDistance":{ 1571 "essl_level":"ESSL3_BUILTINS", 1572 "essl_extension":"EXT_clip_cull_distance, ANGLE_clip_cull_distance", 1573 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqCullDistance, 1); {type_name}->makeArray(resources.MaxCullDistances);" 1574 } 1575 } 1576 } 1577 } 1578 } 1579} 1580