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_MaxCullDistances":{ 728 "essl_level":"ESSL3_BUILTINS", 729 "type":{ 730 "basic":"Int", 731 "precision":"Medium", 732 "qualifier":"Const" 733 }, 734 "essl_extension":"EXT_clip_cull_distance", 735 "value":"resources", 736 "suffix": "EXT" 737 }, 738 "gl_MaxCombinedClipAndCullDistances":{ 739 "essl_level":"ESSL3_BUILTINS", 740 "type":{ 741 "basic":"Int", 742 "precision":"Medium", 743 "qualifier":"Const" 744 }, 745 "essl_extension":"EXT_clip_cull_distance", 746 "value":"resources", 747 "suffix": "EXT" 748 } 749 } 750 } 751 } 752 }, 753 "FragShader":{ 754 "shader_type": "FRAGMENT", 755 "variables":{ 756 "gl_FragCoord":{ 757 "essl_level":"COMMON_BUILTINS", 758 "type":{ 759 "basic":"Float", 760 "precision":"Medium", 761 "qualifier":"FragCoord", 762 "primarySize":4 763 } 764 }, 765 "gl_FrontFacing":{ 766 "essl_level":"COMMON_BUILTINS", 767 "type":{ 768 "basic":"Bool", 769 "qualifier":"FrontFacing" 770 } 771 }, 772 "gl_PointCoord":{ 773 "essl_level":"COMMON_BUILTINS", 774 "type":{ 775 "basic":"Float", 776 "precision":"Medium", 777 "qualifier":"PointCoord", 778 "primarySize":2 779 } 780 }, 781 "gl_FragColor":{ 782 "essl_level":"ESSL1_BUILTINS", 783 "type":{ 784 "basic":"Float", 785 "precision":"Medium", 786 "qualifier":"FragColor", 787 "primarySize":4 788 } 789 }, 790 "gl_FragData":{ 791 "essl_level":"ESSL1_BUILTINS", 792 "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); }}" 793 }, 794 "gl_FragDepth":{ 795 "essl_level":"ESSL3_BUILTINS", 796 "type":{ 797 "basic":"Float", 798 "precision":"High", 799 "qualifier":"FragDepth" 800 } 801 }, 802 "gl_HelperInvocation":{ 803 "essl_level":"ESSL3_1_BUILTINS", 804 "type":{ 805 "basic":"Bool", 806 "qualifier":"HelperInvocation" 807 } 808 } 809 }, 810 "subgroups":{ 811 "EXTBlendFuncExtended":{ 812 "variables":{ 813 "gl_SecondaryFragColorEXT":{ 814 "essl_level":"ESSL1_BUILTINS", 815 "essl_extension":"EXT_blend_func_extended", 816 "type":{ 817 "basic":"Float", 818 "precision":"Medium", 819 "qualifier":"SecondaryFragColorEXT", 820 "primarySize":4 821 } 822 }, 823 "gl_SecondaryFragDataEXT":{ 824 "essl_level":"ESSL1_BUILTINS", 825 "essl_extension":"EXT_blend_func_extended", 826 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpMedium, EvqSecondaryFragDataEXT, 4, 1); {type_name}->makeArray(resources.MaxDualSourceDrawBuffers);" 827 } 828 } 829 }, 830 "EXTFragDepth":{ 831 "variables":{ 832 "gl_FragDepthEXT":{ 833 "essl_level":"ESSL1_BUILTINS", 834 "essl_extension":"EXT_frag_depth", 835 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, resources.FragmentPrecisionHigh ? EbpHigh : EbpMedium, EvqFragDepthEXT, 1);" 836 } 837 } 838 }, 839 "EXTShaderFramebufferFetch":{ 840 "variables":{ 841 "gl_LastFragData":{ 842 "essl_level":"ESSL1_BUILTINS", 843 "essl_extension":"EXT_shader_framebuffer_fetch", 844 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpMedium, EvqLastFragData, 4, 1); {type_name}->makeArray(resources.MaxDrawBuffers);" 845 } 846 } 847 }, 848 "EXTShaderFramebufferFetchNonCoherent":{ 849 "variables":{ 850 "gl_LastFragData":{ 851 "essl_level":"ESSL1_BUILTINS", 852 "suffix":"NonCoherent", 853 "essl_extension":"EXT_shader_framebuffer_fetch_non_coherent", 854 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpMedium, EvqLastFragData, 4, 1); {type_name}->makeArray(resources.MaxDrawBuffers);" 855 } 856 } 857 }, 858 "NVShaderFramebufferFetch":{ 859 "variables":{ 860 "gl_LastFragColor":{ 861 "essl_level":"ESSL1_BUILTINS", 862 "essl_extension":"NV_shader_framebuffer_fetch", 863 "type":{ 864 "basic":"Float", 865 "precision":"Medium", 866 "qualifier":"LastFragColor", 867 "primarySize":4 868 } 869 }, 870 "gl_LastFragData":{ 871 "essl_level":"ESSL1_BUILTINS", 872 "suffix":"NV", 873 "essl_extension":"NV_shader_framebuffer_fetch", 874 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpMedium, EvqLastFragData, 4, 1); {type_name}->makeArray(resources.MaxDrawBuffers);" 875 } 876 } 877 }, 878 "ARMShaderFramebufferFetch":{ 879 "variables":{ 880 "gl_LastFragColorARM":{ 881 "essl_level":"ESSL1_BUILTINS", 882 "essl_extension":"ARM_shader_framebuffer_fetch", 883 "type":{ 884 "basic":"Float", 885 "precision":"Medium", 886 "qualifier":"LastFragColor", 887 "primarySize":4 888 } 889 } 890 } 891 }, 892 "GeometryShaderSupported":{ 893 "variables":{ 894 "gl_PrimitiveID":{ 895 "essl_level":"ESSL3_1_BUILTINS", 896 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 897 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 898 "type":{ 899 "basic":"Int", 900 "precision":"High", 901 "qualifier":"PrimitiveID" 902 } 903 }, 904 "gl_Layer":{ 905 "essl_level":"ESSL3_1_BUILTINS", 906 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 907 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 908 "type":{ 909 "basic":"Int", 910 "precision":"High", 911 "qualifier":"Layer" 912 } 913 } 914 } 915 }, 916 "OESSampleVariables":{ 917 "variables":{ 918 "gl_SampleID":{ 919 "essl_level":"ESSL3_BUILTINS", 920 "essl_extension":"OES_sample_variables", 921 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 922 "type":{ 923 "basic":"Int", 924 "precision":"Low", 925 "qualifier":"SampleID" 926 } 927 }, 928 "gl_SamplePosition":{ 929 "essl_level":"ESSL3_BUILTINS", 930 "essl_extension":"OES_sample_variables", 931 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 932 "type":{ 933 "basic":"Float", 934 "precision":"Medium", 935 "primarySize":2, 936 "qualifier":"SamplePosition" 937 } 938 }, 939 "gl_SampleMaskIn":{ 940 "essl_level":"ESSL3_BUILTINS", 941 "essl_extension":"OES_sample_variables", 942 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 943 "initDynamicType":"TType *{type_name} = new TType(EbtInt, EbpHigh, EvqSampleMaskIn, 1); {type_name}->makeArray((resources.MaxSamples+31)/32);" 944 }, 945 "gl_SampleMask":{ 946 "essl_level":"ESSL3_BUILTINS", 947 "essl_extension":"OES_sample_variables", 948 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 949 "initDynamicType":"TType *{type_name} = new TType(EbtInt, EbpHigh, EvqSampleMask, 1); {type_name}->makeArray((resources.MaxSamples+31)/32);" 950 } 951 } 952 }, 953 "EXTClipCullDistance":{ 954 "variables":{ 955 "gl_CullDistance":{ 956 "essl_level":"ESSL3_BUILTINS", 957 "essl_extension":"EXT_clip_cull_distance", 958 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqCullDistance, 1); {type_name}->makeArray(resources.MaxCullDistances);" 959 }, 960 "gl_ClipDistance":{ 961 "essl_level":"ESSL3_BUILTINS", 962 "essl_extension":"EXT_clip_cull_distance", 963 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqClipDistance, 1); {type_name}->makeArray(resources.MaxClipDistances);" 964 } 965 } 966 } 967 } 968 }, 969 "VertexShader":{ 970 "shader_type": "VERTEX", 971 "variables":{ 972 "gl_Position":{ 973 "essl_level":"COMMON_BUILTINS", 974 "type":{ 975 "basic":"Float", 976 "precision":"High", 977 "qualifier":"Position", 978 "primarySize":4 979 } 980 }, 981 "gl_PointSize":{ 982 "essl_level":"COMMON_BUILTINS", 983 "type":{ 984 "basic":"Float", 985 "precision":"Medium", 986 "qualifier":"PointSize" 987 } 988 }, 989 "gl_InstanceID":{ 990 "essl_level":"ESSL3_BUILTINS", 991 "type":{ 992 "basic":"Int", 993 "precision":"High", 994 "qualifier":"InstanceID" 995 } 996 }, 997 "gl_InstanceIndex":{ 998 "essl_level":"GLSL_BUILTINS", 999 "type":{ 1000 "basic":"Int", 1001 "precision":"High", 1002 "qualifier":"InstanceID", 1003 "comment": "In GLSL 450 used by Vulkan" 1004 } 1005 }, 1006 "gl_VertexID":{ 1007 "essl_level":"ESSL3_BUILTINS", 1008 "type":{ 1009 "basic":"Int", 1010 "precision":"High", 1011 "qualifier":"VertexID" 1012 } 1013 }, 1014 "gl_VertexIndex":{ 1015 "essl_level":"GLSL_BUILTINS", 1016 "type":{ 1017 "basic":"Int", 1018 "precision":"High", 1019 "qualifier":"VertexID", 1020 "comment": "In GLSL 450 used by Vulkan" 1021 } 1022 }, 1023 "gl_ViewportIndex":{ 1024 "comment":"For internal use by ANGLE - not exposed to the parser.", 1025 "essl_level":"GLSL_BUILTINS", 1026 "type":{ 1027 "basic":"Int", 1028 "precision":"High", 1029 "qualifier":"ViewportIndex" 1030 } 1031 }, 1032 "gl_Layer":{ 1033 "suffix":"VS", 1034 "comment":"gl_Layer exists in other shader stages in ESSL, but not in vertex shader so far.", 1035 "essl_level":"GLSL_BUILTINS", 1036 "type":{ 1037 "basic":"Int", 1038 "precision":"High", 1039 "qualifier":"Layer" 1040 } 1041 } 1042 }, 1043 "subgroups":{ 1044 "ANGLEMultiDraw":{ 1045 "subgroups":{ 1046 "ESSL3":{ 1047 "variables":{ 1048 "gl_DrawID":{ 1049 "essl_level":"COMMON_BUILTINS", 1050 "essl_extension":"ANGLE_multi_draw", 1051 "type":{ 1052 "basic":"Int", 1053 "precision":"High", 1054 "qualifier":"DrawID" 1055 } 1056 } 1057 } 1058 } 1059 } 1060 }, 1061 "ANGLEBaseVertexBaseInstance":{ 1062 "subgroups":{ 1063 "ESSL3":{ 1064 "variables":{ 1065 "gl_BaseVertex":{ 1066 "essl_level":"ESSL3_BUILTINS", 1067 "essl_extension":"ANGLE_base_vertex_base_instance", 1068 "type":{ 1069 "basic":"Int", 1070 "precision":"High", 1071 "qualifier":"Uniform" 1072 } 1073 }, 1074 "gl_BaseInstance":{ 1075 "essl_level":"ESSL3_BUILTINS", 1076 "essl_extension":"ANGLE_base_vertex_base_instance", 1077 "type":{ 1078 "basic":"Int", 1079 "precision":"High", 1080 "qualifier":"Uniform" 1081 } 1082 }, 1083 "angle_BaseVertex":{ 1084 "essl_level":"COMMON_BUILTINS", 1085 "essl_extension":"ANGLE_base_vertex_base_instance", 1086 "type":{ 1087 "basic":"Int", 1088 "precision":"High", 1089 "qualifier":"Uniform" 1090 } 1091 }, 1092 "angle_BaseInstance":{ 1093 "essl_level":"COMMON_BUILTINS", 1094 "essl_extension":"ANGLE_base_vertex_base_instance", 1095 "type":{ 1096 "basic":"Int", 1097 "precision":"High", 1098 "qualifier":"Uniform" 1099 } 1100 } 1101 } 1102 } 1103 } 1104 }, 1105 "APPLEClipDistance":{ 1106 "variables":{ 1107 "gl_ClipDistance":{ 1108 "essl_level":"COMMON_BUILTINS", 1109 "essl_extension":"APPLE_clip_distance", 1110 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqClipDistance, 1); {type_name}->makeArray(resources.MaxClipDistances);", 1111 "suffix": "APPLE" 1112 } 1113 } 1114 }, 1115 "EXTClipCullDistance":{ 1116 "variables":{ 1117 "gl_CullDistance":{ 1118 "essl_level":"ESSL3_BUILTINS", 1119 "essl_extension":"EXT_clip_cull_distance", 1120 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqCullDistance, 1); {type_name}->makeArray(resources.MaxCullDistances);", 1121 "suffix": "EXT" 1122 } 1123 } 1124 } 1125 } 1126 }, 1127 "ComputeShader":{ 1128 "shader_type": "COMPUTE", 1129 "variables":{ 1130 "gl_NumWorkGroups":{ 1131 "essl_level":"ESSL3_1_BUILTINS", 1132 "type":{ 1133 "basic":"UInt", 1134 "precision":"Undefined", 1135 "qualifier":"NumWorkGroups", 1136 "primarySize":3 1137 } 1138 }, 1139 "gl_WorkGroupSize":{ 1140 "essl_level":"ESSL3_1_BUILTINS", 1141 "type":{ 1142 "basic":"UInt", 1143 "precision":"Undefined", 1144 "qualifier":"WorkGroupSize", 1145 "primarySize":3 1146 } 1147 }, 1148 "gl_WorkGroupID":{ 1149 "essl_level":"ESSL3_1_BUILTINS", 1150 "type":{ 1151 "basic":"UInt", 1152 "precision":"Undefined", 1153 "qualifier":"WorkGroupID", 1154 "primarySize":3 1155 } 1156 }, 1157 "gl_LocalInvocationID":{ 1158 "essl_level":"ESSL3_1_BUILTINS", 1159 "type":{ 1160 "basic":"UInt", 1161 "precision":"Undefined", 1162 "qualifier":"LocalInvocationID", 1163 "primarySize":3 1164 } 1165 }, 1166 "gl_GlobalInvocationID":{ 1167 "essl_level":"ESSL3_1_BUILTINS", 1168 "type":{ 1169 "basic":"UInt", 1170 "precision":"Undefined", 1171 "qualifier":"GlobalInvocationID", 1172 "primarySize":3 1173 } 1174 }, 1175 "gl_LocalInvocationIndex":{ 1176 "essl_level":"ESSL3_1_BUILTINS", 1177 "type":{ 1178 "basic":"UInt", 1179 "precision":"Undefined", 1180 "qualifier":"LocalInvocationIndex" 1181 } 1182 } 1183 } 1184 }, 1185 "GeometryShader":{ 1186 "shader_type": "GEOMETRY_EXT", 1187 "variables":{ 1188 "gl_PrimitiveIDIn":{ 1189 "essl_level":"ESSL3_1_BUILTINS", 1190 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1191 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1192 "type":{ 1193 "basic":"Int", 1194 "precision":"High", 1195 "qualifier":"PrimitiveIDIn" 1196 } 1197 }, 1198 "gl_InvocationID":{ 1199 "essl_level":"ESSL3_1_BUILTINS", 1200 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1201 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1202 "type":{ 1203 "basic":"Int", 1204 "precision":"High", 1205 "qualifier":"InvocationID" 1206 } 1207 }, 1208 "gl_PrimitiveID":{ 1209 "suffix":"GS", 1210 "essl_level":"ESSL3_1_BUILTINS", 1211 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1212 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1213 "type":{ 1214 "basic":"Int", 1215 "precision":"High", 1216 "qualifier":"PrimitiveID" 1217 } 1218 }, 1219 "gl_Layer":{ 1220 "suffix":"GS", 1221 "essl_level":"ESSL3_1_BUILTINS", 1222 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1223 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1224 "type":{ 1225 "basic":"Int", 1226 "precision":"High", 1227 "qualifier":"Layer" 1228 } 1229 }, 1230 "gl_PerVertex":{ 1231 "essl_level":"ESSL3_1_BUILTINS", 1232 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1233 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1234 "class":"TInterfaceBlock", 1235 "fields":{ 1236 "gl_Position":{ 1237 "basic":"Float", 1238 "precision":"High", 1239 "qualifier":"Position", 1240 "primarySize":4 1241 } 1242 } 1243 }, 1244 "gl_in":{ 1245 "essl_level":"ESSL3_1_BUILTINS", 1246 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1247 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1248 "initDynamicType":"TType *{type_name} = new TType(gl_PerVertex, EvqPerVertexIn, TLayoutQualifier::Create()); {type_name}->makeArray(0u);", 1249 "comment":"The array size of gl_in is undefined until we get a valid input primitive declaration." 1250 } 1251 }, 1252 "subgroups":{ 1253 "Out":{ 1254 "variables":{ 1255 "gl_PerVertex":{ 1256 "suffix":"OutBlock", 1257 "essl_level":"ESSL3_1_BUILTINS", 1258 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1259 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1260 "private":true, 1261 "class":"TInterfaceBlock", 1262 "fields":{ 1263 "gl_Position":{ 1264 "basic":"Float", 1265 "precision":"High", 1266 "qualifier":"Position", 1267 "primarySize":4 1268 } 1269 } 1270 }, 1271 "gl_Position":{ 1272 "suffix":"GS", 1273 "essl_level":"ESSL3_1_BUILTINS", 1274 "essl_extension":"EXT_geometry_shader, OES_geometry_shader", 1275 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1276 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqPosition, 4); {type_name}->setInterfaceBlock(gl_PerVertexOutBlock{ext_or_core_suffix});" 1277 } 1278 } 1279 } 1280 } 1281 }, 1282 "TessellationControlShader":{ 1283 "shader_type": "TESS_CONTROL_EXT", 1284 "variables":{ 1285 "gl_PatchVerticesIn":{ 1286 "suffix":"TCS", 1287 "essl_level":"ESSL3_1_BUILTINS", 1288 "essl_extension":"EXT_tessellation_shader", 1289 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1290 "type":{ 1291 "basic":"Int", 1292 "precision":"High", 1293 "qualifier":"PatchVerticesIn" 1294 } 1295 }, 1296 "gl_InvocationID":{ 1297 "suffix":"TCS", 1298 "essl_level":"ESSL3_1_BUILTINS", 1299 "essl_extension":"EXT_tessellation_shader", 1300 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1301 "type":{ 1302 "basic":"Int", 1303 "precision":"High", 1304 "qualifier":"InvocationID" 1305 } 1306 }, 1307 "gl_PrimitiveID":{ 1308 "suffix":"TCS", 1309 "essl_level":"ESSL3_1_BUILTINS", 1310 "essl_extension":"EXT_tessellation_shader", 1311 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1312 "type":{ 1313 "basic":"Int", 1314 "precision":"High", 1315 "qualifier":"PrimitiveID" 1316 } 1317 }, 1318 "gl_TessLevelOuter":{ 1319 "suffix":"TCS", 1320 "essl_level":"ESSL3_1_BUILTINS", 1321 "essl_extension":"EXT_tessellation_shader", 1322 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1323 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqTessLevelOuter, 1); {type_name}->makeArray(4u);" 1324 }, 1325 "gl_TessLevelInner":{ 1326 "suffix":"TCS", 1327 "essl_level":"ESSL3_1_BUILTINS", 1328 "essl_extension":"EXT_tessellation_shader", 1329 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1330 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqTessLevelInner, 1); {type_name}->makeArray(2u);" 1331 }, 1332 "gl_PerVertex":{ 1333 "suffix":"TCS", 1334 "essl_level":"ESSL3_1_BUILTINS", 1335 "essl_extension":"EXT_tessellation_shader", 1336 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1337 "class":"TInterfaceBlock", 1338 "fields":{ 1339 "gl_Position":{ 1340 "basic":"Float", 1341 "precision":"High", 1342 "qualifier":"Position", 1343 "primarySize":4 1344 } 1345 } 1346 }, 1347 "gl_in":{ 1348 "suffix":"TCS", 1349 "essl_level":"ESSL3_1_BUILTINS", 1350 "essl_extension":"EXT_tessellation_shader", 1351 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1352 "initDynamicType":"TType *{type_name} = new TType(gl_PerVertex, EvqPerVertexIn, TLayoutQualifier::Create()); {type_name}->makeArray(resources.MaxPatchVertices);" 1353 }, 1354 "gl_out":{ 1355 "suffix":"TCS", 1356 "essl_level":"ESSL3_1_BUILTINS", 1357 "essl_extension":"EXT_tessellation_shader", 1358 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1359 "initDynamicType":"TType *{type_name} = new TType(gl_PerVertex, EvqPerVertexOut, TLayoutQualifier::Create()); {type_name}->makeArray(resources.MaxPatchVertices);" 1360 } 1361 }, 1362 "subgroups":{ 1363 "Out":{ 1364 "variables":{ 1365 "gl_PerVertex":{ 1366 "suffix":"OutTcsBlock", 1367 "essl_level":"ESSL3_1_BUILTINS", 1368 "essl_extension":"EXT_tessellation_shader", 1369 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1370 "private":true, 1371 "class":"TInterfaceBlock", 1372 "fields":{ 1373 "gl_Position":{ 1374 "basic":"Float", 1375 "precision":"High", 1376 "qualifier":"Position", 1377 "primarySize":4 1378 } 1379 } 1380 }, 1381 "gl_Position":{ 1382 "suffix":"TCS", 1383 "essl_level":"ESSL3_1_BUILTINS", 1384 "essl_extension":"EXT_tessellation_shader", 1385 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1386 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqPosition, 4); {type_name}->setInterfaceBlock(gl_PerVertexOutTcsBlock{ext_or_core_suffix});" 1387 } 1388 } 1389 } 1390 } 1391 }, 1392 "TessellationEvaluationShader":{ 1393 "shader_type": "TESS_EVALUATION_EXT", 1394 "variables":{ 1395 "gl_PatchVerticesIn":{ 1396 "suffix":"TES", 1397 "essl_level":"ESSL3_1_BUILTINS", 1398 "essl_extension":"EXT_tessellation_shader", 1399 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1400 "type":{ 1401 "basic":"Int", 1402 "precision":"High", 1403 "qualifier":"PatchVerticesIn" 1404 } 1405 }, 1406 "gl_PrimitiveID":{ 1407 "suffix":"TES", 1408 "essl_level":"ESSL3_1_BUILTINS", 1409 "essl_extension":"EXT_tessellation_shader", 1410 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1411 "type":{ 1412 "basic":"Int", 1413 "precision":"High", 1414 "qualifier":"PrimitiveID" 1415 } 1416 }, 1417 "gl_TessCoord":{ 1418 "essl_level":"ESSL3_1_BUILTINS", 1419 "type":{ 1420 "basic":"Float", 1421 "precision":"High", 1422 "primarySize":3 1423 } 1424 }, 1425 "gl_TessLevelOuter":{ 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 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqTessLevelOuter, 1); {type_name}->makeArray(4u);" 1431 }, 1432 "gl_TessLevelInner":{ 1433 "suffix":"TES", 1434 "essl_level":"ESSL3_1_BUILTINS", 1435 "essl_extension":"EXT_tessellation_shader", 1436 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1437 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqTessLevelInner, 1); {type_name}->makeArray(2u);" 1438 }, 1439 "gl_PerVertex":{ 1440 "suffix":"TES", 1441 "essl_level":"ESSL3_1_BUILTINS", 1442 "essl_extension":"EXT_tessellation_shader", 1443 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1444 "class":"TInterfaceBlock", 1445 "fields":{ 1446 "gl_Position":{ 1447 "basic":"Float", 1448 "precision":"High", 1449 "qualifier":"Position", 1450 "primarySize":4 1451 } 1452 } 1453 }, 1454 "gl_in":{ 1455 "suffix":"TES", 1456 "essl_level":"ESSL3_1_BUILTINS", 1457 "essl_extension":"EXT_tessellation_shader", 1458 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1459 "initDynamicType":"TType *{type_name} = new TType(gl_PerVertex, EvqPerVertexIn, TLayoutQualifier::Create()); {type_name}->makeArray(resources.MaxPatchVertices);" 1460 }, 1461 "gl_out":{ 1462 "suffix":"TES", 1463 "essl_level":"ESSL3_1_BUILTINS", 1464 "essl_extension":"EXT_tessellation_shader", 1465 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1466 "initDynamicType":"TType *{type_name} = new TType(gl_PerVertex, EvqPerVertexOut, TLayoutQualifier::Create()); {type_name}->makeArray(resources.MaxPatchVertices);" 1467 } 1468 }, 1469 "subgroups":{ 1470 "Out":{ 1471 "variables":{ 1472 "gl_PerVertex":{ 1473 "suffix":"OutTesBlock", 1474 "essl_level":"ESSL3_1_BUILTINS", 1475 "essl_extension":"EXT_tessellation_shader", 1476 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1477 "private":true, 1478 "class":"TInterfaceBlock", 1479 "fields":{ 1480 "gl_Position":{ 1481 "basic":"Float", 1482 "precision":"High", 1483 "qualifier":"Position", 1484 "primarySize":4 1485 } 1486 } 1487 }, 1488 "gl_Position":{ 1489 "suffix":"TES", 1490 "essl_level":"ESSL3_1_BUILTINS", 1491 "essl_extension":"EXT_tessellation_shader", 1492 "essl_extension_becomes_core_in":"ESSL3_2_BUILTINS", 1493 "initDynamicType":"TType *{type_name} = new TType(EbtFloat, EbpHigh, EvqPosition, 4); {type_name}->setInterfaceBlock(gl_PerVertexOutTesBlock{ext_or_core_suffix});" 1494 } 1495 } 1496 } 1497 } 1498 }, 1499 "Multiview":{ 1500 "shader_type": "NOT_COMPUTE", 1501 "subgroups":{ 1502 "ESSL3":{ 1503 "variables":{ 1504 "gl_ViewID_OVR":{ 1505 "essl_level":"ESSL3_BUILTINS", 1506 "essl_extension":"OVR_multiview", 1507 "type":{ 1508 "basic":"UInt", 1509 "precision":"High", 1510 "qualifier":"ViewIDOVR" 1511 } 1512 } 1513 } 1514 } 1515 } 1516 } 1517} 1518