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