Merge "Improve logging of texture border color."
[platform/upstream/VK-GL-CTS.git] / data / gles3 / shaders / uniform_block.test
1 # WARNING: This file is auto-generated. Do NOT modify it manually, but rather
2 # modify the generating script file. Otherwise changes will be lost!
3
4 group valid "Valid uniform interface block syntax tests."
5
6         case repeat_interface_qualifier_vertex
7                 version 300 es
8                 expect build_successful
9
10                 vertex ""
11                         #version 300 es
12                         precision highp float;
13
14
15
16                         uniform UniformBlock
17                         {
18                                 uniform vec4 uniformMember;
19                         } uniformBlock;
20
21                         void main()
22                         {
23                                 gl_Position = uniformBlock.uniformMember;
24                         }
25                 ""
26
27                 fragment ""
28                         #version 300 es
29                         precision highp float;
30
31                         layout(location=0) out vec4 o_color;
32
33                         void main()
34                         {
35                                 o_color = vec4(1.0);
36                         }
37                 ""
38         end
39         case repeat_interface_qualifier_fragment
40                 version 300 es
41                 expect build_successful
42
43                 vertex ""
44                         #version 300 es
45                         precision highp float;
46
47                         in vec4 a_pos;
48
49                         void main()
50                         {
51                                 gl_Position = a_pos;
52                         }
53                 ""
54
55                 fragment ""
56                         #version 300 es
57                         precision highp float;
58
59                         layout(location=0) out vec4 o_color;
60
61                         uniform UniformBlock
62                         {
63                                 uniform vec4 uniformMember;
64                         } uniformBlock;
65
66                         void main()
67                         {
68                                 o_color = uniformBlock.uniformMember;
69                         }
70                 ""
71         end
72         case layout_shared_vertex
73                 version 300 es
74                 expect build_successful
75
76                 vertex ""
77                         #version 300 es
78                         precision highp float;
79
80
81
82                         layout(shared) uniform UniformBlock
83                         {
84                                 vec4 uniformMember;
85                         } uniformBlock;
86
87                         void main()
88                         {
89                                 gl_Position = uniformBlock.uniformMember;
90                         }
91                 ""
92
93                 fragment ""
94                         #version 300 es
95                         precision highp float;
96
97                         layout(location=0) out vec4 o_color;
98
99                         void main()
100                         {
101                                 o_color = vec4(1.0);
102                         }
103                 ""
104         end
105         case layout_shared_fragment
106                 version 300 es
107                 expect build_successful
108
109                 vertex ""
110                         #version 300 es
111                         precision highp float;
112
113                         in vec4 a_pos;
114
115                         void main()
116                         {
117                                 gl_Position = a_pos;
118                         }
119                 ""
120
121                 fragment ""
122                         #version 300 es
123                         precision highp float;
124
125                         layout(location=0) out vec4 o_color;
126
127                         layout(shared) uniform UniformBlock
128                         {
129                                 vec4 uniformMember;
130                         } uniformBlock;
131
132                         void main()
133                         {
134                                 o_color = uniformBlock.uniformMember;
135                         }
136                 ""
137         end
138         case layout_packed_vertex
139                 version 300 es
140                 expect build_successful
141
142                 vertex ""
143                         #version 300 es
144                         precision highp float;
145
146
147
148                         layout(packed) uniform UniformBlock
149                         {
150                                 vec4 uniformMember;
151                         } uniformBlock;
152
153                         void main()
154                         {
155                                 gl_Position = uniformBlock.uniformMember;
156                         }
157                 ""
158
159                 fragment ""
160                         #version 300 es
161                         precision highp float;
162
163                         layout(location=0) out vec4 o_color;
164
165                         void main()
166                         {
167                                 o_color = vec4(1.0);
168                         }
169                 ""
170         end
171         case layout_packed_fragment
172                 version 300 es
173                 expect build_successful
174
175                 vertex ""
176                         #version 300 es
177                         precision highp float;
178
179                         in vec4 a_pos;
180
181                         void main()
182                         {
183                                 gl_Position = a_pos;
184                         }
185                 ""
186
187                 fragment ""
188                         #version 300 es
189                         precision highp float;
190
191                         layout(location=0) out vec4 o_color;
192
193                         layout(packed) uniform UniformBlock
194                         {
195                                 vec4 uniformMember;
196                         } uniformBlock;
197
198                         void main()
199                         {
200                                 o_color = uniformBlock.uniformMember;
201                         }
202                 ""
203         end
204         case layout_std140_vertex
205                 version 300 es
206                 expect build_successful
207
208                 vertex ""
209                         #version 300 es
210                         precision highp float;
211
212
213
214                         layout(std140) uniform UniformBlock
215                         {
216                                 vec4 uniformMember;
217                         } uniformBlock;
218
219                         void main()
220                         {
221                                 gl_Position = uniformBlock.uniformMember;
222                         }
223                 ""
224
225                 fragment ""
226                         #version 300 es
227                         precision highp float;
228
229                         layout(location=0) out vec4 o_color;
230
231                         void main()
232                         {
233                                 o_color = vec4(1.0);
234                         }
235                 ""
236         end
237         case layout_std140_fragment
238                 version 300 es
239                 expect build_successful
240
241                 vertex ""
242                         #version 300 es
243                         precision highp float;
244
245                         in vec4 a_pos;
246
247                         void main()
248                         {
249                                 gl_Position = a_pos;
250                         }
251                 ""
252
253                 fragment ""
254                         #version 300 es
255                         precision highp float;
256
257                         layout(location=0) out vec4 o_color;
258
259                         layout(std140) uniform UniformBlock
260                         {
261                                 vec4 uniformMember;
262                         } uniformBlock;
263
264                         void main()
265                         {
266                                 o_color = uniformBlock.uniformMember;
267                         }
268                 ""
269         end
270         case layout_row_major_vertex
271                 version 300 es
272                 expect build_successful
273
274                 vertex ""
275                         #version 300 es
276                         precision highp float;
277
278
279
280                         layout(row_major) uniform UniformBlock
281                         {
282                                 vec4 uniformMember;
283                         } uniformBlock;
284
285                         void main()
286                         {
287                                 gl_Position = uniformBlock.uniformMember;
288                         }
289                 ""
290
291                 fragment ""
292                         #version 300 es
293                         precision highp float;
294
295                         layout(location=0) out vec4 o_color;
296
297                         void main()
298                         {
299                                 o_color = vec4(1.0);
300                         }
301                 ""
302         end
303         case layout_row_major_fragment
304                 version 300 es
305                 expect build_successful
306
307                 vertex ""
308                         #version 300 es
309                         precision highp float;
310
311                         in vec4 a_pos;
312
313                         void main()
314                         {
315                                 gl_Position = a_pos;
316                         }
317                 ""
318
319                 fragment ""
320                         #version 300 es
321                         precision highp float;
322
323                         layout(location=0) out vec4 o_color;
324
325                         layout(row_major) uniform UniformBlock
326                         {
327                                 vec4 uniformMember;
328                         } uniformBlock;
329
330                         void main()
331                         {
332                                 o_color = uniformBlock.uniformMember;
333                         }
334                 ""
335         end
336         case layout_column_major_vertex
337                 version 300 es
338                 expect build_successful
339
340                 vertex ""
341                         #version 300 es
342                         precision highp float;
343
344
345
346                         layout(column_major) uniform UniformBlock
347                         {
348                                 vec4 uniformMember;
349                         } uniformBlock;
350
351                         void main()
352                         {
353                                 gl_Position = uniformBlock.uniformMember;
354                         }
355                 ""
356
357                 fragment ""
358                         #version 300 es
359                         precision highp float;
360
361                         layout(location=0) out vec4 o_color;
362
363                         void main()
364                         {
365                                 o_color = vec4(1.0);
366                         }
367                 ""
368         end
369         case layout_column_major_fragment
370                 version 300 es
371                 expect build_successful
372
373                 vertex ""
374                         #version 300 es
375                         precision highp float;
376
377                         in vec4 a_pos;
378
379                         void main()
380                         {
381                                 gl_Position = a_pos;
382                         }
383                 ""
384
385                 fragment ""
386                         #version 300 es
387                         precision highp float;
388
389                         layout(location=0) out vec4 o_color;
390
391                         layout(column_major) uniform UniformBlock
392                         {
393                                 vec4 uniformMember;
394                         } uniformBlock;
395
396                         void main()
397                         {
398                                 o_color = uniformBlock.uniformMember;
399                         }
400                 ""
401         end
402         case layout_all_vertex
403                 version 300 es
404                 expect build_successful
405
406                 vertex ""
407                         #version 300 es
408                         precision highp float;
409
410
411
412                         layout(shared, packed, std140, row_major, column_major) uniform UniformBlock
413                         {
414                                 vec4 uniformMember;
415                         } uniformBlock;
416
417                         void main()
418                         {
419                                 gl_Position = uniformBlock.uniformMember;
420                         }
421                 ""
422
423                 fragment ""
424                         #version 300 es
425                         precision highp float;
426
427                         layout(location=0) out vec4 o_color;
428
429                         void main()
430                         {
431                                 o_color = vec4(1.0);
432                         }
433                 ""
434         end
435         case layout_all_fragment
436                 version 300 es
437                 expect build_successful
438
439                 vertex ""
440                         #version 300 es
441                         precision highp float;
442
443                         in vec4 a_pos;
444
445                         void main()
446                         {
447                                 gl_Position = a_pos;
448                         }
449                 ""
450
451                 fragment ""
452                         #version 300 es
453                         precision highp float;
454
455                         layout(location=0) out vec4 o_color;
456
457                         layout(shared, packed, std140, row_major, column_major) uniform UniformBlock
458                         {
459                                 vec4 uniformMember;
460                         } uniformBlock;
461
462                         void main()
463                         {
464                                 o_color = uniformBlock.uniformMember;
465                         }
466                 ""
467         end
468         case layout_all_8_times_vertex
469                 version 300 es
470                 expect build_successful
471
472                 vertex ""
473                         #version 300 es
474                         precision highp float;
475
476
477
478                         layout(shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major) uniform UniformBlock
479                         {
480                                 vec4 uniformMember;
481                         } uniformBlock;
482
483                         void main()
484                         {
485                                 gl_Position = uniformBlock.uniformMember;
486                         }
487                 ""
488
489                 fragment ""
490                         #version 300 es
491                         precision highp float;
492
493                         layout(location=0) out vec4 o_color;
494
495                         void main()
496                         {
497                                 o_color = vec4(1.0);
498                         }
499                 ""
500         end
501         case layout_all_8_times_fragment
502                 version 300 es
503                 expect build_successful
504
505                 vertex ""
506                         #version 300 es
507                         precision highp float;
508
509                         in vec4 a_pos;
510
511                         void main()
512                         {
513                                 gl_Position = a_pos;
514                         }
515                 ""
516
517                 fragment ""
518                         #version 300 es
519                         precision highp float;
520
521                         layout(location=0) out vec4 o_color;
522
523                         layout(shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major) uniform UniformBlock
524                         {
525                                 vec4 uniformMember;
526                         } uniformBlock;
527
528                         void main()
529                         {
530                                 o_color = uniformBlock.uniformMember;
531                         }
532                 ""
533         end
534         case global_layout_shared_vertex
535                 version 300 es
536                 expect build_successful
537
538                 vertex ""
539                         #version 300 es
540                         precision highp float;
541
542                         layout(shared) uniform;
543
544
545
546                         uniform UniformBlock
547                         {
548                                 vec4 uniformMember;
549                         } uniformBlock;
550
551                         void main()
552                         {
553                                 gl_Position = uniformBlock.uniformMember;
554                         }
555                 ""
556
557                 fragment ""
558                         #version 300 es
559                         precision highp float;
560
561                         layout(location=0) out vec4 o_color;
562
563                         void main()
564                         {
565                                 o_color = vec4(1.0);
566                         }
567                 ""
568         end
569         case global_layout_shared_fragment
570                 version 300 es
571                 expect build_successful
572
573                 vertex ""
574                         #version 300 es
575                         precision highp float;
576
577                         in vec4 a_pos;
578
579                         void main()
580                         {
581                                 gl_Position = a_pos;
582                         }
583                 ""
584
585                 fragment ""
586                         #version 300 es
587                         precision highp float;
588
589                         layout(shared) uniform;
590
591                         layout(location=0) out vec4 o_color;
592
593                         uniform UniformBlock
594                         {
595                                 vec4 uniformMember;
596                         } uniformBlock;
597
598                         void main()
599                         {
600                                 o_color = uniformBlock.uniformMember;
601                         }
602                 ""
603         end
604         case global_layout_packed_vertex
605                 version 300 es
606                 expect build_successful
607
608                 vertex ""
609                         #version 300 es
610                         precision highp float;
611
612                         layout(packed) uniform;
613
614
615
616                         uniform UniformBlock
617                         {
618                                 vec4 uniformMember;
619                         } uniformBlock;
620
621                         void main()
622                         {
623                                 gl_Position = uniformBlock.uniformMember;
624                         }
625                 ""
626
627                 fragment ""
628                         #version 300 es
629                         precision highp float;
630
631                         layout(location=0) out vec4 o_color;
632
633                         void main()
634                         {
635                                 o_color = vec4(1.0);
636                         }
637                 ""
638         end
639         case global_layout_packed_fragment
640                 version 300 es
641                 expect build_successful
642
643                 vertex ""
644                         #version 300 es
645                         precision highp float;
646
647                         in vec4 a_pos;
648
649                         void main()
650                         {
651                                 gl_Position = a_pos;
652                         }
653                 ""
654
655                 fragment ""
656                         #version 300 es
657                         precision highp float;
658
659                         layout(packed) uniform;
660
661                         layout(location=0) out vec4 o_color;
662
663                         uniform UniformBlock
664                         {
665                                 vec4 uniformMember;
666                         } uniformBlock;
667
668                         void main()
669                         {
670                                 o_color = uniformBlock.uniformMember;
671                         }
672                 ""
673         end
674         case global_layout_std140_vertex
675                 version 300 es
676                 expect build_successful
677
678                 vertex ""
679                         #version 300 es
680                         precision highp float;
681
682                         layout(std140) uniform;
683
684
685
686                         uniform UniformBlock
687                         {
688                                 vec4 uniformMember;
689                         } uniformBlock;
690
691                         void main()
692                         {
693                                 gl_Position = uniformBlock.uniformMember;
694                         }
695                 ""
696
697                 fragment ""
698                         #version 300 es
699                         precision highp float;
700
701                         layout(location=0) out vec4 o_color;
702
703                         void main()
704                         {
705                                 o_color = vec4(1.0);
706                         }
707                 ""
708         end
709         case global_layout_std140_fragment
710                 version 300 es
711                 expect build_successful
712
713                 vertex ""
714                         #version 300 es
715                         precision highp float;
716
717                         in vec4 a_pos;
718
719                         void main()
720                         {
721                                 gl_Position = a_pos;
722                         }
723                 ""
724
725                 fragment ""
726                         #version 300 es
727                         precision highp float;
728
729                         layout(std140) uniform;
730
731                         layout(location=0) out vec4 o_color;
732
733                         uniform UniformBlock
734                         {
735                                 vec4 uniformMember;
736                         } uniformBlock;
737
738                         void main()
739                         {
740                                 o_color = uniformBlock.uniformMember;
741                         }
742                 ""
743         end
744         case global_layout_row_major_vertex
745                 version 300 es
746                 expect build_successful
747
748                 vertex ""
749                         #version 300 es
750                         precision highp float;
751
752                         layout(row_major) uniform;
753
754
755
756                         uniform UniformBlock
757                         {
758                                 vec4 uniformMember;
759                         } uniformBlock;
760
761                         void main()
762                         {
763                                 gl_Position = uniformBlock.uniformMember;
764                         }
765                 ""
766
767                 fragment ""
768                         #version 300 es
769                         precision highp float;
770
771                         layout(location=0) out vec4 o_color;
772
773                         void main()
774                         {
775                                 o_color = vec4(1.0);
776                         }
777                 ""
778         end
779         case global_layout_row_major_fragment
780                 version 300 es
781                 expect build_successful
782
783                 vertex ""
784                         #version 300 es
785                         precision highp float;
786
787                         in vec4 a_pos;
788
789                         void main()
790                         {
791                                 gl_Position = a_pos;
792                         }
793                 ""
794
795                 fragment ""
796                         #version 300 es
797                         precision highp float;
798
799                         layout(row_major) uniform;
800
801                         layout(location=0) out vec4 o_color;
802
803                         uniform UniformBlock
804                         {
805                                 vec4 uniformMember;
806                         } uniformBlock;
807
808                         void main()
809                         {
810                                 o_color = uniformBlock.uniformMember;
811                         }
812                 ""
813         end
814         case global_layout_column_major_vertex
815                 version 300 es
816                 expect build_successful
817
818                 vertex ""
819                         #version 300 es
820                         precision highp float;
821
822                         layout(column_major) uniform;
823
824
825
826                         uniform UniformBlock
827                         {
828                                 vec4 uniformMember;
829                         } uniformBlock;
830
831                         void main()
832                         {
833                                 gl_Position = uniformBlock.uniformMember;
834                         }
835                 ""
836
837                 fragment ""
838                         #version 300 es
839                         precision highp float;
840
841                         layout(location=0) out vec4 o_color;
842
843                         void main()
844                         {
845                                 o_color = vec4(1.0);
846                         }
847                 ""
848         end
849         case global_layout_column_major_fragment
850                 version 300 es
851                 expect build_successful
852
853                 vertex ""
854                         #version 300 es
855                         precision highp float;
856
857                         in vec4 a_pos;
858
859                         void main()
860                         {
861                                 gl_Position = a_pos;
862                         }
863                 ""
864
865                 fragment ""
866                         #version 300 es
867                         precision highp float;
868
869                         layout(column_major) uniform;
870
871                         layout(location=0) out vec4 o_color;
872
873                         uniform UniformBlock
874                         {
875                                 vec4 uniformMember;
876                         } uniformBlock;
877
878                         void main()
879                         {
880                                 o_color = uniformBlock.uniformMember;
881                         }
882                 ""
883         end
884         case global_layout_all_vertex
885                 version 300 es
886                 expect build_successful
887
888                 vertex ""
889                         #version 300 es
890                         precision highp float;
891
892                         layout(shared, packed, std140, row_major, column_major) uniform;
893
894
895
896                         uniform UniformBlock
897                         {
898                                 vec4 uniformMember;
899                         } uniformBlock;
900
901                         void main()
902                         {
903                                 gl_Position = uniformBlock.uniformMember;
904                         }
905                 ""
906
907                 fragment ""
908                         #version 300 es
909                         precision highp float;
910
911                         layout(location=0) out vec4 o_color;
912
913                         void main()
914                         {
915                                 o_color = vec4(1.0);
916                         }
917                 ""
918         end
919         case global_layout_all_fragment
920                 version 300 es
921                 expect build_successful
922
923                 vertex ""
924                         #version 300 es
925                         precision highp float;
926
927                         in vec4 a_pos;
928
929                         void main()
930                         {
931                                 gl_Position = a_pos;
932                         }
933                 ""
934
935                 fragment ""
936                         #version 300 es
937                         precision highp float;
938
939                         layout(shared, packed, std140, row_major, column_major) uniform;
940
941                         layout(location=0) out vec4 o_color;
942
943                         uniform UniformBlock
944                         {
945                                 vec4 uniformMember;
946                         } uniformBlock;
947
948                         void main()
949                         {
950                                 o_color = uniformBlock.uniformMember;
951                         }
952                 ""
953         end
954         case global_layout_all_8_times_vertex
955                 version 300 es
956                 expect build_successful
957
958                 vertex ""
959                         #version 300 es
960                         precision highp float;
961
962                         layout(shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major) uniform;
963
964
965
966                         uniform UniformBlock
967                         {
968                                 vec4 uniformMember;
969                         } uniformBlock;
970
971                         void main()
972                         {
973                                 gl_Position = uniformBlock.uniformMember;
974                         }
975                 ""
976
977                 fragment ""
978                         #version 300 es
979                         precision highp float;
980
981                         layout(location=0) out vec4 o_color;
982
983                         void main()
984                         {
985                                 o_color = vec4(1.0);
986                         }
987                 ""
988         end
989         case global_layout_all_8_times_fragment
990                 version 300 es
991                 expect build_successful
992
993                 vertex ""
994                         #version 300 es
995                         precision highp float;
996
997                         in vec4 a_pos;
998
999                         void main()
1000                         {
1001                                 gl_Position = a_pos;
1002                         }
1003                 ""
1004
1005                 fragment ""
1006                         #version 300 es
1007                         precision highp float;
1008
1009                         layout(shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major, shared, packed, std140, row_major, column_major) uniform;
1010
1011                         layout(location=0) out vec4 o_color;
1012
1013                         uniform UniformBlock
1014                         {
1015                                 vec4 uniformMember;
1016                         } uniformBlock;
1017
1018                         void main()
1019                         {
1020                                 o_color = uniformBlock.uniformMember;
1021                         }
1022                 ""
1023         end
1024         case member_layout_row_major_vertex
1025                 version 300 es
1026                 expect build_successful
1027
1028                 vertex ""
1029                         #version 300 es
1030                         precision highp float;
1031
1032
1033
1034                         uniform UniformBlock
1035                         {
1036                                 layout(row_major) mat4 uniformMember;
1037                         } uniformBlock;
1038
1039                         void main()
1040                         {
1041                                 gl_Position = uniformBlock.uniformMember[0];
1042                         }
1043                 ""
1044
1045                 fragment ""
1046                         #version 300 es
1047                         precision highp float;
1048
1049                         layout(location=0) out vec4 o_color;
1050
1051                         void main()
1052                         {
1053                                 o_color = vec4(1.0);
1054                         }
1055                 ""
1056         end
1057         case member_layout_row_major_fragment
1058                 version 300 es
1059                 expect build_successful
1060
1061                 vertex ""
1062                         #version 300 es
1063                         precision highp float;
1064
1065                         in vec4 a_pos;
1066
1067                         void main()
1068                         {
1069                                 gl_Position = a_pos;
1070                         }
1071                 ""
1072
1073                 fragment ""
1074                         #version 300 es
1075                         precision highp float;
1076
1077                         layout(location=0) out vec4 o_color;
1078
1079                         uniform UniformBlock
1080                         {
1081                                 layout(row_major) mat4 uniformMember;
1082                         } uniformBlock;
1083
1084                         void main()
1085                         {
1086                                 o_color = uniformBlock.uniformMember[0];
1087                         }
1088                 ""
1089         end
1090         case member_layout_column_major_vertex
1091                 version 300 es
1092                 expect build_successful
1093
1094                 vertex ""
1095                         #version 300 es
1096                         precision highp float;
1097
1098
1099
1100                         uniform UniformBlock
1101                         {
1102                                 layout(column_major) mat4 uniformMember;
1103                         } uniformBlock;
1104
1105                         void main()
1106                         {
1107                                 gl_Position = uniformBlock.uniformMember[0];
1108                         }
1109                 ""
1110
1111                 fragment ""
1112                         #version 300 es
1113                         precision highp float;
1114
1115                         layout(location=0) out vec4 o_color;
1116
1117                         void main()
1118                         {
1119                                 o_color = vec4(1.0);
1120                         }
1121                 ""
1122         end
1123         case member_layout_column_major_fragment
1124                 version 300 es
1125                 expect build_successful
1126
1127                 vertex ""
1128                         #version 300 es
1129                         precision highp float;
1130
1131                         in vec4 a_pos;
1132
1133                         void main()
1134                         {
1135                                 gl_Position = a_pos;
1136                         }
1137                 ""
1138
1139                 fragment ""
1140                         #version 300 es
1141                         precision highp float;
1142
1143                         layout(location=0) out vec4 o_color;
1144
1145                         uniform UniformBlock
1146                         {
1147                                 layout(column_major) mat4 uniformMember;
1148                         } uniformBlock;
1149
1150                         void main()
1151                         {
1152                                 o_color = uniformBlock.uniformMember[0];
1153                         }
1154                 ""
1155         end
1156         case member_layout_row_major_vec4_vertex
1157                 version 300 es
1158                 expect build_successful
1159
1160                 vertex ""
1161                         #version 300 es
1162                         precision highp float;
1163
1164
1165
1166                         uniform UniformBlock
1167                         {
1168                                 layout(row_major) vec4 uniformMember;
1169                         } uniformBlock;
1170
1171                         void main()
1172                         {
1173                                 gl_Position = uniformBlock.uniformMember;
1174                         }
1175                 ""
1176
1177                 fragment ""
1178                         #version 300 es
1179                         precision highp float;
1180
1181                         layout(location=0) out vec4 o_color;
1182
1183                         void main()
1184                         {
1185                                 o_color = vec4(1.0);
1186                         }
1187                 ""
1188         end
1189         case member_layout_row_major_vec4_fragment
1190                 version 300 es
1191                 expect build_successful
1192
1193                 vertex ""
1194                         #version 300 es
1195                         precision highp float;
1196
1197                         in vec4 a_pos;
1198
1199                         void main()
1200                         {
1201                                 gl_Position = a_pos;
1202                         }
1203                 ""
1204
1205                 fragment ""
1206                         #version 300 es
1207                         precision highp float;
1208
1209                         layout(location=0) out vec4 o_color;
1210
1211                         uniform UniformBlock
1212                         {
1213                                 layout(row_major) vec4 uniformMember;
1214                         } uniformBlock;
1215
1216                         void main()
1217                         {
1218                                 o_color = uniformBlock.uniformMember;
1219                         }
1220                 ""
1221         end
1222         case member_layout_column_major_vec4_vertex
1223                 version 300 es
1224                 expect build_successful
1225
1226                 vertex ""
1227                         #version 300 es
1228                         precision highp float;
1229
1230
1231
1232                         uniform UniformBlock
1233                         {
1234                                 layout(column_major) vec4 uniformMember;
1235                         } uniformBlock;
1236
1237                         void main()
1238                         {
1239                                 gl_Position = uniformBlock.uniformMember;
1240                         }
1241                 ""
1242
1243                 fragment ""
1244                         #version 300 es
1245                         precision highp float;
1246
1247                         layout(location=0) out vec4 o_color;
1248
1249                         void main()
1250                         {
1251                                 o_color = vec4(1.0);
1252                         }
1253                 ""
1254         end
1255         case member_layout_column_major_vec4_fragment
1256                 version 300 es
1257                 expect build_successful
1258
1259                 vertex ""
1260                         #version 300 es
1261                         precision highp float;
1262
1263                         in vec4 a_pos;
1264
1265                         void main()
1266                         {
1267                                 gl_Position = a_pos;
1268                         }
1269                 ""
1270
1271                 fragment ""
1272                         #version 300 es
1273                         precision highp float;
1274
1275                         layout(location=0) out vec4 o_color;
1276
1277                         uniform UniformBlock
1278                         {
1279                                 layout(column_major) vec4 uniformMember;
1280                         } uniformBlock;
1281
1282                         void main()
1283                         {
1284                                 o_color = uniformBlock.uniformMember;
1285                         }
1286                 ""
1287         end
1288         case member_layout_all_vertex
1289                 version 300 es
1290                 expect build_successful
1291
1292                 vertex ""
1293                         #version 300 es
1294                         precision highp float;
1295
1296
1297
1298                         uniform UniformBlock
1299                         {
1300                                 layout(row_major, column_major) mat4 uniformMember;
1301                         } uniformBlock;
1302
1303                         void main()
1304                         {
1305                                 gl_Position = uniformBlock.uniformMember[0];
1306                         }
1307                 ""
1308
1309                 fragment ""
1310                         #version 300 es
1311                         precision highp float;
1312
1313                         layout(location=0) out vec4 o_color;
1314
1315                         void main()
1316                         {
1317                                 o_color = vec4(1.0);
1318                         }
1319                 ""
1320         end
1321         case member_layout_all_fragment
1322                 version 300 es
1323                 expect build_successful
1324
1325                 vertex ""
1326                         #version 300 es
1327                         precision highp float;
1328
1329                         in vec4 a_pos;
1330
1331                         void main()
1332                         {
1333                                 gl_Position = a_pos;
1334                         }
1335                 ""
1336
1337                 fragment ""
1338                         #version 300 es
1339                         precision highp float;
1340
1341                         layout(location=0) out vec4 o_color;
1342
1343                         uniform UniformBlock
1344                         {
1345                                 layout(row_major, column_major) mat4 uniformMember;
1346                         } uniformBlock;
1347
1348                         void main()
1349                         {
1350                                 o_color = uniformBlock.uniformMember[0];
1351                         }
1352                 ""
1353         end
1354         case member_layout_all_8_times_vertex
1355                 version 300 es
1356                 expect build_successful
1357
1358                 vertex ""
1359                         #version 300 es
1360                         precision highp float;
1361
1362
1363
1364                         uniform UniformBlock
1365                         {
1366                                 layout(row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major) mat4 uniformMember;
1367                         } uniformBlock;
1368
1369                         void main()
1370                         {
1371                                 gl_Position = uniformBlock.uniformMember[0];
1372                         }
1373                 ""
1374
1375                 fragment ""
1376                         #version 300 es
1377                         precision highp float;
1378
1379                         layout(location=0) out vec4 o_color;
1380
1381                         void main()
1382                         {
1383                                 o_color = vec4(1.0);
1384                         }
1385                 ""
1386         end
1387         case member_layout_all_8_times_fragment
1388                 version 300 es
1389                 expect build_successful
1390
1391                 vertex ""
1392                         #version 300 es
1393                         precision highp float;
1394
1395                         in vec4 a_pos;
1396
1397                         void main()
1398                         {
1399                                 gl_Position = a_pos;
1400                         }
1401                 ""
1402
1403                 fragment ""
1404                         #version 300 es
1405                         precision highp float;
1406
1407                         layout(location=0) out vec4 o_color;
1408
1409                         uniform UniformBlock
1410                         {
1411                                 layout(row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major) mat4 uniformMember;
1412                         } uniformBlock;
1413
1414                         void main()
1415                         {
1416                                 o_color = uniformBlock.uniformMember[0];
1417                         }
1418                 ""
1419         end
1420         case no_instance_name_vertex
1421                 version 300 es
1422                 expect build_successful
1423
1424                 vertex ""
1425                         #version 300 es
1426                         precision highp float;
1427
1428
1429
1430                         uniform UniformBlock
1431                         {
1432                                 vec4 uniformMember;
1433                         };
1434
1435                         void main()
1436                         {
1437                                 gl_Position = uniformMember;
1438                         }
1439                 ""
1440
1441                 fragment ""
1442                         #version 300 es
1443                         precision highp float;
1444
1445                         layout(location=0) out vec4 o_color;
1446
1447                         void main()
1448                         {
1449                                 o_color = vec4(1.0);
1450                         }
1451                 ""
1452         end
1453         case no_instance_name_fragment
1454                 version 300 es
1455                 expect build_successful
1456
1457                 vertex ""
1458                         #version 300 es
1459                         precision highp float;
1460
1461                         in vec4 a_pos;
1462
1463                         void main()
1464                         {
1465                                 gl_Position = a_pos;
1466                         }
1467                 ""
1468
1469                 fragment ""
1470                         #version 300 es
1471                         precision highp float;
1472
1473                         layout(location=0) out vec4 o_color;
1474
1475                         uniform UniformBlock
1476                         {
1477                                 vec4 uniformMember;
1478                         };
1479
1480                         void main()
1481                         {
1482                                 o_color = uniformMember;
1483                         }
1484                 ""
1485         end
1486         case same_variable_and_block_name_vertex
1487                 version 300 es
1488                 expect build_successful
1489
1490                 vertex ""
1491                         #version 300 es
1492                         precision highp float;
1493
1494
1495
1496                         uniform UniformBlock
1497                         {
1498                                 vec4 uniformMember;
1499                         } uniformBlock;
1500
1501                         void main()
1502                         {
1503                                 vec4 UniformBlock = vec4(0.0);
1504                                 gl_Position = UniformBlock + uniformBlock.uniformMember;
1505                         }
1506                 ""
1507
1508                 fragment ""
1509                         #version 300 es
1510                         precision highp float;
1511
1512                         layout(location=0) out vec4 o_color;
1513
1514                         void main()
1515                         {
1516                                 o_color = vec4(1.0);
1517                         }
1518                 ""
1519         end
1520         case same_variable_and_block_name_fragment
1521                 version 300 es
1522                 expect build_successful
1523
1524                 vertex ""
1525                         #version 300 es
1526                         precision highp float;
1527
1528                         in vec4 a_pos;
1529
1530                         void main()
1531                         {
1532                                 gl_Position = a_pos;
1533                         }
1534                 ""
1535
1536                 fragment ""
1537                         #version 300 es
1538                         precision highp float;
1539
1540                         layout(location=0) out vec4 o_color;
1541
1542                         uniform UniformBlock
1543                         {
1544                                 vec4 uniformMember;
1545                         } uniformBlock;
1546
1547                         void main()
1548                         {
1549                                 vec4 UniformBlock = vec4(0.0);
1550                                 o_color = UniformBlock + uniformBlock.uniformMember;
1551                         }
1552                 ""
1553         end
1554         case same_variable_and_instance_name_vertex
1555                 version 300 es
1556                 expect build_successful
1557
1558                 vertex ""
1559                         #version 300 es
1560                         precision highp float;
1561
1562
1563
1564                         uniform UniformBlock
1565                         {
1566                                 vec4 uniformMember;
1567                         } uniformBlock;
1568
1569                         void main()
1570                         {
1571                                 vec4 uniformBlock = vec4(0.0);
1572                                 gl_Position = uniformBlock;
1573                         }
1574                 ""
1575
1576                 fragment ""
1577                         #version 300 es
1578                         precision highp float;
1579
1580                         layout(location=0) out vec4 o_color;
1581
1582                         void main()
1583                         {
1584                                 o_color = vec4(1.0);
1585                         }
1586                 ""
1587         end
1588         case same_variable_and_instance_name_fragment
1589                 version 300 es
1590                 expect build_successful
1591
1592                 vertex ""
1593                         #version 300 es
1594                         precision highp float;
1595
1596                         in vec4 a_pos;
1597
1598                         void main()
1599                         {
1600                                 gl_Position = a_pos;
1601                         }
1602                 ""
1603
1604                 fragment ""
1605                         #version 300 es
1606                         precision highp float;
1607
1608                         layout(location=0) out vec4 o_color;
1609
1610                         uniform UniformBlock
1611                         {
1612                                 vec4 uniformMember;
1613                         } uniformBlock;
1614
1615                         void main()
1616                         {
1617                                 vec4 uniformBlock = vec4(0.0);
1618                                 o_color = uniformBlock;
1619                         }
1620                 ""
1621         end
1622         case repeated_block_vertex
1623                 version 300 es
1624                 expect build_successful
1625
1626                 vertex ""
1627                         #version 300 es
1628                         precision highp float;
1629
1630
1631
1632                         uniform UniformBlock
1633                         {
1634                                 vec4 uniformMember;
1635                         } uniformBlockA;
1636
1637                         uniform UniformBlock
1638                         {
1639                                 vec4 uniformMember;
1640                         } uniformBlockB;
1641
1642                         void main()
1643                         {
1644                                 gl_Position = uniformBlockA.uniformMember + uniformBlockB.uniformMember;
1645                         }
1646                 ""
1647
1648                 fragment ""
1649                         #version 300 es
1650                         precision highp float;
1651
1652                         layout(location=0) out vec4 o_color;
1653
1654                         void main()
1655                         {
1656                                 o_color = vec4(1.0);
1657                         }
1658                 ""
1659         end
1660         case repeated_block_fragment
1661                 version 300 es
1662                 expect build_successful
1663
1664                 vertex ""
1665                         #version 300 es
1666                         precision highp float;
1667
1668                         in vec4 a_pos;
1669
1670                         void main()
1671                         {
1672                                 gl_Position = a_pos;
1673                         }
1674                 ""
1675
1676                 fragment ""
1677                         #version 300 es
1678                         precision highp float;
1679
1680                         layout(location=0) out vec4 o_color;
1681
1682                         uniform UniformBlock
1683                         {
1684                                 vec4 uniformMember;
1685                         } uniformBlockA;
1686
1687                         uniform UniformBlock
1688                         {
1689                                 vec4 uniformMember;
1690                         } uniformBlockB;
1691
1692                         void main()
1693                         {
1694                                 o_color = uniformBlockA.uniformMember + uniformBlockB.uniformMember;
1695                         }
1696                 ""
1697         end
1698         case repeated_block_no_instance_name_vertex
1699                 version 300 es
1700                 expect build_successful
1701
1702                 vertex ""
1703                         #version 300 es
1704                         precision highp float;
1705
1706
1707
1708                         uniform UniformBlock
1709                         {
1710                                 vec4 uniformMember;
1711                         } uniformBlock;
1712
1713                         uniform UniformBlock
1714                         {
1715                                 vec4 uniformMember;
1716                         };
1717
1718                         void main()
1719                         {
1720                                 gl_Position = uniformBlock.uniformMember + uniformMember;
1721                         }
1722                 ""
1723
1724                 fragment ""
1725                         #version 300 es
1726                         precision highp float;
1727
1728                         layout(location=0) out vec4 o_color;
1729
1730                         void main()
1731                         {
1732                                 o_color = vec4(1.0);
1733                         }
1734                 ""
1735         end
1736         case repeated_block_no_instance_name_fragment
1737                 version 300 es
1738                 expect build_successful
1739
1740                 vertex ""
1741                         #version 300 es
1742                         precision highp float;
1743
1744                         in vec4 a_pos;
1745
1746                         void main()
1747                         {
1748                                 gl_Position = a_pos;
1749                         }
1750                 ""
1751
1752                 fragment ""
1753                         #version 300 es
1754                         precision highp float;
1755
1756                         layout(location=0) out vec4 o_color;
1757
1758                         uniform UniformBlock
1759                         {
1760                                 vec4 uniformMember;
1761                         } uniformBlock;
1762
1763                         uniform UniformBlock
1764                         {
1765                                 vec4 uniformMember;
1766                         };
1767
1768                         void main()
1769                         {
1770                                 o_color = uniformBlock.uniformMember + uniformMember;
1771                         }
1772                 ""
1773         end
1774         case struct_member_vertex
1775                 version 300 es
1776                 expect build_successful
1777
1778                 vertex ""
1779                         #version 300 es
1780                         precision highp float;
1781
1782
1783
1784                         struct Struct
1785                         {
1786                                 vec4 uniformMember;
1787                         };
1788
1789                         uniform UniformBlock
1790                         {
1791                                 Struct st;
1792                         } uniformBlock;
1793
1794                         void main()
1795                         {
1796                                 gl_Position = uniformBlock.st.uniformMember;
1797                         }
1798                 ""
1799
1800                 fragment ""
1801                         #version 300 es
1802                         precision highp float;
1803
1804                         layout(location=0) out vec4 o_color;
1805
1806                         void main()
1807                         {
1808                                 o_color = vec4(1.0);
1809                         }
1810                 ""
1811         end
1812         case struct_member_fragment
1813                 version 300 es
1814                 expect build_successful
1815
1816                 vertex ""
1817                         #version 300 es
1818                         precision highp float;
1819
1820                         in vec4 a_pos;
1821
1822                         void main()
1823                         {
1824                                 gl_Position = a_pos;
1825                         }
1826                 ""
1827
1828                 fragment ""
1829                         #version 300 es
1830                         precision highp float;
1831
1832                         layout(location=0) out vec4 o_color;
1833
1834                         struct Struct
1835                         {
1836                                 vec4 uniformMember;
1837                         };
1838
1839                         uniform UniformBlock
1840                         {
1841                                 Struct st;
1842                         } uniformBlock;
1843
1844                         void main()
1845                         {
1846                                 o_color = uniformBlock.st.uniformMember;
1847                         }
1848                 ""
1849         end
1850         case struct_member_layout_row_major_vertex
1851                 version 300 es
1852                 expect build_successful
1853
1854                 vertex ""
1855                         #version 300 es
1856                         precision highp float;
1857
1858
1859
1860                         struct Struct
1861                         {
1862                                 vec4 uniformMember;
1863                         };
1864
1865                         uniform UniformBlock
1866                         {
1867                                 layout(row_major) Struct st;
1868                         } uniformBlock;
1869
1870                         void main()
1871                         {
1872                                 gl_Position = uniformBlock.st.uniformMember;
1873                         }
1874                 ""
1875
1876                 fragment ""
1877                         #version 300 es
1878                         precision highp float;
1879
1880                         layout(location=0) out vec4 o_color;
1881
1882                         void main()
1883                         {
1884                                 o_color = vec4(1.0);
1885                         }
1886                 ""
1887         end
1888         case struct_member_layout_row_major_fragment
1889                 version 300 es
1890                 expect build_successful
1891
1892                 vertex ""
1893                         #version 300 es
1894                         precision highp float;
1895
1896                         in vec4 a_pos;
1897
1898                         void main()
1899                         {
1900                                 gl_Position = a_pos;
1901                         }
1902                 ""
1903
1904                 fragment ""
1905                         #version 300 es
1906                         precision highp float;
1907
1908                         layout(location=0) out vec4 o_color;
1909
1910                         struct Struct
1911                         {
1912                                 vec4 uniformMember;
1913                         };
1914
1915                         uniform UniformBlock
1916                         {
1917                                 layout(row_major) Struct st;
1918                         } uniformBlock;
1919
1920                         void main()
1921                         {
1922                                 o_color = uniformBlock.st.uniformMember;
1923                         }
1924                 ""
1925         end
1926         case struct_member_layout_column_major_vertex
1927                 version 300 es
1928                 expect build_successful
1929
1930                 vertex ""
1931                         #version 300 es
1932                         precision highp float;
1933
1934
1935
1936                         struct Struct
1937                         {
1938                                 vec4 uniformMember;
1939                         };
1940
1941                         uniform UniformBlock
1942                         {
1943                                 layout(column_major) Struct st;
1944                         } uniformBlock;
1945
1946                         void main()
1947                         {
1948                                 gl_Position = uniformBlock.st.uniformMember;
1949                         }
1950                 ""
1951
1952                 fragment ""
1953                         #version 300 es
1954                         precision highp float;
1955
1956                         layout(location=0) out vec4 o_color;
1957
1958                         void main()
1959                         {
1960                                 o_color = vec4(1.0);
1961                         }
1962                 ""
1963         end
1964         case struct_member_layout_column_major_fragment
1965                 version 300 es
1966                 expect build_successful
1967
1968                 vertex ""
1969                         #version 300 es
1970                         precision highp float;
1971
1972                         in vec4 a_pos;
1973
1974                         void main()
1975                         {
1976                                 gl_Position = a_pos;
1977                         }
1978                 ""
1979
1980                 fragment ""
1981                         #version 300 es
1982                         precision highp float;
1983
1984                         layout(location=0) out vec4 o_color;
1985
1986                         struct Struct
1987                         {
1988                                 vec4 uniformMember;
1989                         };
1990
1991                         uniform UniformBlock
1992                         {
1993                                 layout(column_major) Struct st;
1994                         } uniformBlock;
1995
1996                         void main()
1997                         {
1998                                 o_color = uniformBlock.st.uniformMember;
1999                         }
2000                 ""
2001         end
2002         case struct_member_layout_all_vertex
2003                 version 300 es
2004                 expect build_successful
2005
2006                 vertex ""
2007                         #version 300 es
2008                         precision highp float;
2009
2010
2011
2012                         struct Struct
2013                         {
2014                                 vec4 uniformMember;
2015                         };
2016
2017                         uniform UniformBlock
2018                         {
2019                                 layout(row_major, column_major) Struct st;
2020                         } uniformBlock;
2021
2022                         void main()
2023                         {
2024                                 gl_Position = uniformBlock.st.uniformMember;
2025                         }
2026                 ""
2027
2028                 fragment ""
2029                         #version 300 es
2030                         precision highp float;
2031
2032                         layout(location=0) out vec4 o_color;
2033
2034                         void main()
2035                         {
2036                                 o_color = vec4(1.0);
2037                         }
2038                 ""
2039         end
2040         case struct_member_layout_all_fragment
2041                 version 300 es
2042                 expect build_successful
2043
2044                 vertex ""
2045                         #version 300 es
2046                         precision highp float;
2047
2048                         in vec4 a_pos;
2049
2050                         void main()
2051                         {
2052                                 gl_Position = a_pos;
2053                         }
2054                 ""
2055
2056                 fragment ""
2057                         #version 300 es
2058                         precision highp float;
2059
2060                         layout(location=0) out vec4 o_color;
2061
2062                         struct Struct
2063                         {
2064                                 vec4 uniformMember;
2065                         };
2066
2067                         uniform UniformBlock
2068                         {
2069                                 layout(row_major, column_major) Struct st;
2070                         } uniformBlock;
2071
2072                         void main()
2073                         {
2074                                 o_color = uniformBlock.st.uniformMember;
2075                         }
2076                 ""
2077         end
2078         case struct_member_layout_all_8_times_vertex
2079                 version 300 es
2080                 expect build_successful
2081
2082                 vertex ""
2083                         #version 300 es
2084                         precision highp float;
2085
2086
2087
2088                         struct Struct
2089                         {
2090                                 vec4 uniformMember;
2091                         };
2092
2093                         uniform UniformBlock
2094                         {
2095                                 layout(row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major) Struct st;
2096                         } uniformBlock;
2097
2098                         void main()
2099                         {
2100                                 gl_Position = uniformBlock.st.uniformMember;
2101                         }
2102                 ""
2103
2104                 fragment ""
2105                         #version 300 es
2106                         precision highp float;
2107
2108                         layout(location=0) out vec4 o_color;
2109
2110                         void main()
2111                         {
2112                                 o_color = vec4(1.0);
2113                         }
2114                 ""
2115         end
2116         case struct_member_layout_all_8_times_fragment
2117                 version 300 es
2118                 expect build_successful
2119
2120                 vertex ""
2121                         #version 300 es
2122                         precision highp float;
2123
2124                         in vec4 a_pos;
2125
2126                         void main()
2127                         {
2128                                 gl_Position = a_pos;
2129                         }
2130                 ""
2131
2132                 fragment ""
2133                         #version 300 es
2134                         precision highp float;
2135
2136                         layout(location=0) out vec4 o_color;
2137
2138                         struct Struct
2139                         {
2140                                 vec4 uniformMember;
2141                         };
2142
2143                         uniform UniformBlock
2144                         {
2145                                 layout(row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major, row_major, column_major) Struct st;
2146                         } uniformBlock;
2147
2148                         void main()
2149                         {
2150                                 o_color = uniformBlock.st.uniformMember;
2151                         }
2152                 ""
2153         end
2154         case long_block_name_vertex
2155                 version 300 es
2156                 expect build_successful
2157
2158                 vertex ""
2159                         #version 300 es
2160                         precision highp float;
2161
2162
2163
2164                         // Total of 1024 characters
2165                         uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2166                         {
2167                                 vec4 uniformMember;
2168                         } uniformBlock;
2169
2170                         void main()
2171                         {
2172                                 gl_Position = uniformBlock.uniformMember;
2173                         }
2174                 ""
2175
2176                 fragment ""
2177                         #version 300 es
2178                         precision highp float;
2179
2180                         layout(location=0) out vec4 o_color;
2181
2182                         void main()
2183                         {
2184                                 o_color = vec4(1.0);
2185                         }
2186                 ""
2187         end
2188         case long_block_name_fragment
2189                 version 300 es
2190                 expect build_successful
2191
2192                 vertex ""
2193                         #version 300 es
2194                         precision highp float;
2195
2196                         in vec4 a_pos;
2197
2198                         void main()
2199                         {
2200                                 gl_Position = a_pos;
2201                         }
2202                 ""
2203
2204                 fragment ""
2205                         #version 300 es
2206                         precision highp float;
2207
2208                         layout(location=0) out vec4 o_color;
2209
2210                         // Total of 1024 characters
2211                         uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2212                         {
2213                                 vec4 uniformMember;
2214                         } uniformBlock;
2215
2216                         void main()
2217                         {
2218                                 o_color = uniformBlock.uniformMember;
2219                         }
2220                 ""
2221         end
2222         case long_instance_name_vertex
2223                 version 300 es
2224                 expect build_successful
2225
2226                 vertex ""
2227                         #version 300 es
2228                         precision highp float;
2229
2230
2231
2232                         uniform UniformBlock
2233                         {
2234                                 vec4 uniformMember;
2235                         } aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
2236                         // Total of 1024 characters
2237
2238                         void main()
2239                         {
2240                                 gl_Position = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.uniformMember;
2241                         }
2242                 ""
2243
2244                 fragment ""
2245                         #version 300 es
2246                         precision highp float;
2247
2248                         layout(location=0) out vec4 o_color;
2249
2250                         void main()
2251                         {
2252                                 o_color = vec4(1.0);
2253                         }
2254                 ""
2255         end
2256         case long_instance_name_fragment
2257                 version 300 es
2258                 expect build_successful
2259
2260                 vertex ""
2261                         #version 300 es
2262                         precision highp float;
2263
2264                         in vec4 a_pos;
2265
2266                         void main()
2267                         {
2268                                 gl_Position = a_pos;
2269                         }
2270                 ""
2271
2272                 fragment ""
2273                         #version 300 es
2274                         precision highp float;
2275
2276                         layout(location=0) out vec4 o_color;
2277
2278                         uniform UniformBlock
2279                         {
2280                                 vec4 uniformMember;
2281                         } aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
2282                         // Total of 1024 characters
2283
2284                         void main()
2285                         {
2286                                 o_color = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.uniformMember;
2287                         }
2288                 ""
2289         end
2290         case underscore_block_name_vertex
2291                 version 300 es
2292                 expect build_successful
2293
2294                 vertex ""
2295                         #version 300 es
2296                         precision highp float;
2297
2298
2299
2300                         uniform _
2301                         {
2302                                 vec4 uniformMember;
2303                         } uniformBlock;
2304
2305                         void main()
2306                         {
2307                                 gl_Position = uniformBlock.uniformMember;
2308                         }
2309                 ""
2310
2311                 fragment ""
2312                         #version 300 es
2313                         precision highp float;
2314
2315                         layout(location=0) out vec4 o_color;
2316
2317                         void main()
2318                         {
2319                                 o_color = vec4(1.0);
2320                         }
2321                 ""
2322         end
2323         case underscore_block_name_fragment
2324                 version 300 es
2325                 expect build_successful
2326
2327                 vertex ""
2328                         #version 300 es
2329                         precision highp float;
2330
2331                         in vec4 a_pos;
2332
2333                         void main()
2334                         {
2335                                 gl_Position = a_pos;
2336                         }
2337                 ""
2338
2339                 fragment ""
2340                         #version 300 es
2341                         precision highp float;
2342
2343                         layout(location=0) out vec4 o_color;
2344
2345                         uniform _
2346                         {
2347                                 vec4 uniformMember;
2348                         } uniformBlock;
2349
2350                         void main()
2351                         {
2352                                 o_color = uniformBlock.uniformMember;
2353                         }
2354                 ""
2355         end
2356         case underscore_instance_name_vertex
2357                 version 300 es
2358                 expect build_successful
2359
2360                 vertex ""
2361                         #version 300 es
2362                         precision highp float;
2363
2364
2365
2366                         uniform UniformBlock
2367                         {
2368                                 vec4 uniformMember;
2369                         } _;
2370
2371                         void main()
2372                         {
2373                                 gl_Position = _.uniformMember;
2374                         }
2375                 ""
2376
2377                 fragment ""
2378                         #version 300 es
2379                         precision highp float;
2380
2381                         layout(location=0) out vec4 o_color;
2382
2383                         void main()
2384                         {
2385                                 o_color = vec4(1.0);
2386                         }
2387                 ""
2388         end
2389         case underscore_instance_name_fragment
2390                 version 300 es
2391                 expect build_successful
2392
2393                 vertex ""
2394                         #version 300 es
2395                         precision highp float;
2396
2397                         in vec4 a_pos;
2398
2399                         void main()
2400                         {
2401                                 gl_Position = a_pos;
2402                         }
2403                 ""
2404
2405                 fragment ""
2406                         #version 300 es
2407                         precision highp float;
2408
2409                         layout(location=0) out vec4 o_color;
2410
2411                         uniform UniformBlock
2412                         {
2413                                 vec4 uniformMember;
2414                         } _;
2415
2416                         void main()
2417                         {
2418                                 o_color = _.uniformMember;
2419                         }
2420                 ""
2421         end
2422
2423 end # valid
2424 group invalid "Invalid uniform interface block syntax tests."
2425
2426         case member_in_interface_qualifier_vertex
2427                 version 300 es
2428                 expect compile_fail
2429
2430                 vertex ""
2431                         #version 300 es
2432                         precision highp float;
2433
2434
2435
2436                         uniform UniformBlock
2437                         {
2438                                 in vec4 uniformMember;
2439                         } uniformBlock;
2440
2441                         void main()
2442                         {
2443                                 gl_Position = uniformBlock.uniformMember;
2444                         }
2445                 ""
2446
2447                 fragment ""
2448                         #version 300 es
2449                         precision highp float;
2450
2451                         layout(location=0) out vec4 o_color;
2452
2453                         void main()
2454                         {
2455                                 o_color = vec4(1.0);
2456                         }
2457                 ""
2458         end
2459         case member_in_interface_qualifier_fragment
2460                 version 300 es
2461                 expect compile_fail
2462
2463                 vertex ""
2464                         #version 300 es
2465                         precision highp float;
2466
2467                         in vec4 a_pos;
2468
2469                         void main()
2470                         {
2471                                 gl_Position = a_pos;
2472                         }
2473                 ""
2474
2475                 fragment ""
2476                         #version 300 es
2477                         precision highp float;
2478
2479                         layout(location=0) out vec4 o_color;
2480
2481                         uniform UniformBlock
2482                         {
2483                                 in vec4 uniformMember;
2484                         } uniformBlock;
2485
2486                         void main()
2487                         {
2488                                 o_color = uniformBlock.uniformMember;
2489                         }
2490                 ""
2491         end
2492         case member_out_interface_qualifier_vertex
2493                 version 300 es
2494                 expect compile_fail
2495
2496                 vertex ""
2497                         #version 300 es
2498                         precision highp float;
2499
2500
2501
2502                         uniform UniformBlock
2503                         {
2504                                 out vec4 uniformMember;
2505                         } uniformBlock;
2506
2507                         void main()
2508                         {
2509                                 gl_Position = uniformBlock.uniformMember;
2510                         }
2511                 ""
2512
2513                 fragment ""
2514                         #version 300 es
2515                         precision highp float;
2516
2517                         layout(location=0) out vec4 o_color;
2518
2519                         void main()
2520                         {
2521                                 o_color = vec4(1.0);
2522                         }
2523                 ""
2524         end
2525         case member_out_interface_qualifier_fragment
2526                 version 300 es
2527                 expect compile_fail
2528
2529                 vertex ""
2530                         #version 300 es
2531                         precision highp float;
2532
2533                         in vec4 a_pos;
2534
2535                         void main()
2536                         {
2537                                 gl_Position = a_pos;
2538                         }
2539                 ""
2540
2541                 fragment ""
2542                         #version 300 es
2543                         precision highp float;
2544
2545                         layout(location=0) out vec4 o_color;
2546
2547                         uniform UniformBlock
2548                         {
2549                                 out vec4 uniformMember;
2550                         } uniformBlock;
2551
2552                         void main()
2553                         {
2554                                 o_color = uniformBlock.uniformMember;
2555                         }
2556                 ""
2557         end
2558         case member_buffer_interface_qualifier_vertex
2559                 version 300 es
2560                 expect compile_fail
2561
2562                 vertex ""
2563                         #version 300 es
2564                         precision highp float;
2565
2566
2567
2568                         uniform UniformBlock
2569                         {
2570                                 buffer vec4 uniformMember;
2571                         } uniformBlock;
2572
2573                         void main()
2574                         {
2575                                 gl_Position = uniformBlock.uniformMember;
2576                         }
2577                 ""
2578
2579                 fragment ""
2580                         #version 300 es
2581                         precision highp float;
2582
2583                         layout(location=0) out vec4 o_color;
2584
2585                         void main()
2586                         {
2587                                 o_color = vec4(1.0);
2588                         }
2589                 ""
2590         end
2591         case member_buffer_interface_qualifier_fragment
2592                 version 300 es
2593                 expect compile_fail
2594
2595                 vertex ""
2596                         #version 300 es
2597                         precision highp float;
2598
2599                         in vec4 a_pos;
2600
2601                         void main()
2602                         {
2603                                 gl_Position = a_pos;
2604                         }
2605                 ""
2606
2607                 fragment ""
2608                         #version 300 es
2609                         precision highp float;
2610
2611                         layout(location=0) out vec4 o_color;
2612
2613                         uniform UniformBlock
2614                         {
2615                                 buffer vec4 uniformMember;
2616                         } uniformBlock;
2617
2618                         void main()
2619                         {
2620                                 o_color = uniformBlock.uniformMember;
2621                         }
2622                 ""
2623         end
2624         case member_attribute_interface_qualifier_vertex
2625                 version 300 es
2626                 expect compile_fail
2627
2628                 vertex ""
2629                         #version 300 es
2630                         precision highp float;
2631
2632
2633
2634                         uniform UniformBlock
2635                         {
2636                                 attribute vec4 uniformMember;
2637                         } uniformBlock;
2638
2639                         void main()
2640                         {
2641                                 gl_Position = uniformBlock.uniformMember;
2642                         }
2643                 ""
2644
2645                 fragment ""
2646                         #version 300 es
2647                         precision highp float;
2648
2649                         layout(location=0) out vec4 o_color;
2650
2651                         void main()
2652                         {
2653                                 o_color = vec4(1.0);
2654                         }
2655                 ""
2656         end
2657         case member_attribute_interface_qualifier_fragment
2658                 version 300 es
2659                 expect compile_fail
2660
2661                 vertex ""
2662                         #version 300 es
2663                         precision highp float;
2664
2665                         in vec4 a_pos;
2666
2667                         void main()
2668                         {
2669                                 gl_Position = a_pos;
2670                         }
2671                 ""
2672
2673                 fragment ""
2674                         #version 300 es
2675                         precision highp float;
2676
2677                         layout(location=0) out vec4 o_color;
2678
2679                         uniform UniformBlock
2680                         {
2681                                 attribute vec4 uniformMember;
2682                         } uniformBlock;
2683
2684                         void main()
2685                         {
2686                                 o_color = uniformBlock.uniformMember;
2687                         }
2688                 ""
2689         end
2690         case member_varying_interface_qualifier_vertex
2691                 version 300 es
2692                 expect compile_fail
2693
2694                 vertex ""
2695                         #version 300 es
2696                         precision highp float;
2697
2698
2699
2700                         uniform UniformBlock
2701                         {
2702                                 varying vec4 uniformMember;
2703                         } uniformBlock;
2704
2705                         void main()
2706                         {
2707                                 gl_Position = uniformBlock.uniformMember;
2708                         }
2709                 ""
2710
2711                 fragment ""
2712                         #version 300 es
2713                         precision highp float;
2714
2715                         layout(location=0) out vec4 o_color;
2716
2717                         void main()
2718                         {
2719                                 o_color = vec4(1.0);
2720                         }
2721                 ""
2722         end
2723         case member_varying_interface_qualifier_fragment
2724                 version 300 es
2725                 expect compile_fail
2726
2727                 vertex ""
2728                         #version 300 es
2729                         precision highp float;
2730
2731                         in vec4 a_pos;
2732
2733                         void main()
2734                         {
2735                                 gl_Position = a_pos;
2736                         }
2737                 ""
2738
2739                 fragment ""
2740                         #version 300 es
2741                         precision highp float;
2742
2743                         layout(location=0) out vec4 o_color;
2744
2745                         uniform UniformBlock
2746                         {
2747                                 varying vec4 uniformMember;
2748                         } uniformBlock;
2749
2750                         void main()
2751                         {
2752                                 o_color = uniformBlock.uniformMember;
2753                         }
2754                 ""
2755         end
2756         case conflicting_instance_names_vertex
2757                 version 300 es
2758                 expect compile_fail
2759
2760                 vertex ""
2761                         #version 300 es
2762                         precision highp float;
2763
2764
2765
2766                         uniform UniformBlockA
2767                         {
2768                                 vec4 uniformMember;
2769                         } uniformBlock;
2770
2771                         uniform UniformBlockB
2772                         {
2773                                 vec4 uniformMember;
2774                         } uniformBlock;
2775
2776                         void main()
2777                         {
2778                                 gl_Position = uniformBlock.uniformMember;
2779                         }
2780                 ""
2781
2782                 fragment ""
2783                         #version 300 es
2784                         precision highp float;
2785
2786                         layout(location=0) out vec4 o_color;
2787
2788                         void main()
2789                         {
2790                                 o_color = vec4(1.0);
2791                         }
2792                 ""
2793         end
2794         case conflicting_instance_names_fragment
2795                 version 300 es
2796                 expect compile_fail
2797
2798                 vertex ""
2799                         #version 300 es
2800                         precision highp float;
2801
2802                         in vec4 a_pos;
2803
2804                         void main()
2805                         {
2806                                 gl_Position = a_pos;
2807                         }
2808                 ""
2809
2810                 fragment ""
2811                         #version 300 es
2812                         precision highp float;
2813
2814                         layout(location=0) out vec4 o_color;
2815
2816                         uniform UniformBlockA
2817                         {
2818                                 vec4 uniformMember;
2819                         } uniformBlock;
2820
2821                         uniform UniformBlockB
2822                         {
2823                                 vec4 uniformMember;
2824                         } uniformBlock;
2825
2826                         void main()
2827                         {
2828                                 o_color = uniformBlock.uniformMember;
2829                         }
2830                 ""
2831         end
2832         case conflicting_function_and_instance_name_vertex
2833                 version 300 es
2834                 expect compile_fail
2835
2836                 vertex ""
2837                         #version 300 es
2838                         precision highp float;
2839
2840
2841
2842                         uniform UniformBlock
2843                         {
2844                                 vec4 uniformMember;
2845                         } uniformBlock;
2846
2847                         float uniformBlock (float x)
2848                         {
2849                                 return x;
2850                         }
2851
2852                         void main()
2853                         {
2854                                 gl_Position = uniformBlock.uniformMember;
2855                         }
2856                 ""
2857
2858                 fragment ""
2859                         #version 300 es
2860                         precision highp float;
2861
2862                         layout(location=0) out vec4 o_color;
2863
2864                         void main()
2865                         {
2866                                 o_color = vec4(1.0);
2867                         }
2868                 ""
2869         end
2870         case conflicting_function_and_instance_name_fragment
2871                 version 300 es
2872                 expect compile_fail
2873
2874                 vertex ""
2875                         #version 300 es
2876                         precision highp float;
2877
2878                         in vec4 a_pos;
2879
2880                         void main()
2881                         {
2882                                 gl_Position = a_pos;
2883                         }
2884                 ""
2885
2886                 fragment ""
2887                         #version 300 es
2888                         precision highp float;
2889
2890                         layout(location=0) out vec4 o_color;
2891
2892                         uniform UniformBlock
2893                         {
2894                                 vec4 uniformMember;
2895                         } uniformBlock;
2896
2897                         float uniformBlock (float x)
2898                         {
2899                                 return x;
2900                         }
2901
2902                         void main()
2903                         {
2904                                 o_color = uniformBlock.uniformMember;
2905                         }
2906                 ""
2907         end
2908         case conflicting_function_and_block_name_vertex
2909                 version 300 es
2910                 expect compile_fail
2911
2912                 vertex ""
2913                         #version 300 es
2914                         precision highp float;
2915
2916
2917
2918                         uniform UniformBlock
2919                         {
2920                                 vec4 uniformMember;
2921                         } uniformBlock;
2922
2923                         float UniformBlock (float x)
2924                         {
2925                                 return x;
2926                         }
2927
2928                         void main()
2929                         {
2930                                 gl_Position = uniformBlock.uniformMember;
2931                         }
2932                 ""
2933
2934                 fragment ""
2935                         #version 300 es
2936                         precision highp float;
2937
2938                         layout(location=0) out vec4 o_color;
2939
2940                         void main()
2941                         {
2942                                 o_color = vec4(1.0);
2943                         }
2944                 ""
2945         end
2946         case conflicting_function_and_block_name_fragment
2947                 version 300 es
2948                 expect compile_fail
2949
2950                 vertex ""
2951                         #version 300 es
2952                         precision highp float;
2953
2954                         in vec4 a_pos;
2955
2956                         void main()
2957                         {
2958                                 gl_Position = a_pos;
2959                         }
2960                 ""
2961
2962                 fragment ""
2963                         #version 300 es
2964                         precision highp float;
2965
2966                         layout(location=0) out vec4 o_color;
2967
2968                         uniform UniformBlock
2969                         {
2970                                 vec4 uniformMember;
2971                         } uniformBlock;
2972
2973                         float UniformBlock (float x)
2974                         {
2975                                 return x;
2976                         }
2977
2978                         void main()
2979                         {
2980                                 o_color = uniformBlock.uniformMember;
2981                         }
2982                 ""
2983         end
2984         case conflicting_uniform_and_instance_name_vertex
2985                 version 300 es
2986                 expect compile_fail
2987
2988                 vertex ""
2989                         #version 300 es
2990                         precision highp float;
2991
2992
2993
2994                         uniform UniformBlock
2995                         {
2996                                 vec4 uniformMember;
2997                         } uniformBlock;
2998
2999                         uniform vec4 uniformBlock;
3000
3001                         void main()
3002                         {
3003                                 gl_Position = uniformBlock.uniformMember;
3004                         }
3005                 ""
3006
3007                 fragment ""
3008                         #version 300 es
3009                         precision highp float;
3010
3011                         layout(location=0) out vec4 o_color;
3012
3013                         void main()
3014                         {
3015                                 o_color = vec4(1.0);
3016                         }
3017                 ""
3018         end
3019         case conflicting_uniform_and_instance_name_fragment
3020                 version 300 es
3021                 expect compile_fail
3022
3023                 vertex ""
3024                         #version 300 es
3025                         precision highp float;
3026
3027                         in vec4 a_pos;
3028
3029                         void main()
3030                         {
3031                                 gl_Position = a_pos;
3032                         }
3033                 ""
3034
3035                 fragment ""
3036                         #version 300 es
3037                         precision highp float;
3038
3039                         layout(location=0) out vec4 o_color;
3040
3041                         uniform UniformBlock
3042                         {
3043                                 vec4 uniformMember;
3044                         } uniformBlock;
3045
3046                         uniform vec4 uniformBlock;
3047
3048                         void main()
3049                         {
3050                                 o_color = uniformBlock.uniformMember;
3051                         }
3052                 ""
3053         end
3054         case conflicting_in_and_instance_name_vertex
3055                 version 300 es
3056                 expect compile_fail
3057
3058                 vertex ""
3059                         #version 300 es
3060                         precision highp float;
3061
3062
3063
3064                         uniform UniformBlock
3065                         {
3066                                 vec4 uniformMember;
3067                         } uniformBlock;
3068
3069                         in vec4 uniformBlock;
3070
3071                         void main()
3072                         {
3073                                 gl_Position = uniformBlock.uniformMember;
3074                         }
3075                 ""
3076
3077                 fragment ""
3078                         #version 300 es
3079                         precision highp float;
3080
3081                         layout(location=0) out vec4 o_color;
3082
3083                         void main()
3084                         {
3085                                 o_color = vec4(1.0);
3086                         }
3087                 ""
3088         end
3089         case conflicting_in_and_instance_name_fragment
3090                 version 300 es
3091                 expect compile_fail
3092
3093                 vertex ""
3094                         #version 300 es
3095                         precision highp float;
3096
3097                         in vec4 a_pos;
3098
3099                         void main()
3100                         {
3101                                 gl_Position = a_pos;
3102                         }
3103                 ""
3104
3105                 fragment ""
3106                         #version 300 es
3107                         precision highp float;
3108
3109                         layout(location=0) out vec4 o_color;
3110
3111                         uniform UniformBlock
3112                         {
3113                                 vec4 uniformMember;
3114                         } uniformBlock;
3115
3116                         in vec4 uniformBlock;
3117
3118                         void main()
3119                         {
3120                                 o_color = uniformBlock.uniformMember;
3121                         }
3122                 ""
3123         end
3124         case conflicting_out_and_instance_name_vertex
3125                 version 300 es
3126                 expect compile_fail
3127
3128                 vertex ""
3129                         #version 300 es
3130                         precision highp float;
3131
3132
3133
3134                         uniform UniformBlock
3135                         {
3136                                 vec4 uniformMember;
3137                         } uniformBlock;
3138
3139                         out vec4 uniformBlock;
3140
3141                         void main()
3142                         {
3143                                 gl_Position = uniformBlock.uniformMember;
3144                         }
3145                 ""
3146
3147                 fragment ""
3148                         #version 300 es
3149                         precision highp float;
3150
3151                         layout(location=0) out vec4 o_color;
3152
3153                         void main()
3154                         {
3155                                 o_color = vec4(1.0);
3156                         }
3157                 ""
3158         end
3159         case conflicting_out_and_instance_name_fragment
3160                 version 300 es
3161                 expect compile_fail
3162
3163                 vertex ""
3164                         #version 300 es
3165                         precision highp float;
3166
3167                         in vec4 a_pos;
3168
3169                         void main()
3170                         {
3171                                 gl_Position = a_pos;
3172                         }
3173                 ""
3174
3175                 fragment ""
3176                         #version 300 es
3177                         precision highp float;
3178
3179                         layout(location=0) out vec4 o_color;
3180
3181                         uniform UniformBlock
3182                         {
3183                                 vec4 uniformMember;
3184                         } uniformBlock;
3185
3186                         out vec4 uniformBlock;
3187
3188                         void main()
3189                         {
3190                                 o_color = uniformBlock.uniformMember;
3191                         }
3192                 ""
3193         end
3194         case conflicting_uniform_and_block_name_vertex
3195                 version 300 es
3196                 expect compile_fail
3197
3198                 vertex ""
3199                         #version 300 es
3200                         precision highp float;
3201
3202
3203
3204                         uniform UniformBlock
3205                         {
3206                                 vec4 uniformMember;
3207                         } uniformBlock;
3208
3209                         uniform vec4 UniformBlock;
3210
3211                         void main()
3212                         {
3213                                 gl_Position = uniformBlock.uniformMember;
3214                         }
3215                 ""
3216
3217                 fragment ""
3218                         #version 300 es
3219                         precision highp float;
3220
3221                         layout(location=0) out vec4 o_color;
3222
3223                         void main()
3224                         {
3225                                 o_color = vec4(1.0);
3226                         }
3227                 ""
3228         end
3229         case conflicting_uniform_and_block_name_fragment
3230                 version 300 es
3231                 expect compile_fail
3232
3233                 vertex ""
3234                         #version 300 es
3235                         precision highp float;
3236
3237                         in vec4 a_pos;
3238
3239                         void main()
3240                         {
3241                                 gl_Position = a_pos;
3242                         }
3243                 ""
3244
3245                 fragment ""
3246                         #version 300 es
3247                         precision highp float;
3248
3249                         layout(location=0) out vec4 o_color;
3250
3251                         uniform UniformBlock
3252                         {
3253                                 vec4 uniformMember;
3254                         } uniformBlock;
3255
3256                         uniform vec4 UniformBlock;
3257
3258                         void main()
3259                         {
3260                                 o_color = uniformBlock.uniformMember;
3261                         }
3262                 ""
3263         end
3264         case conflicting_in_and_block_name_vertex
3265                 version 300 es
3266                 expect compile_fail
3267
3268                 vertex ""
3269                         #version 300 es
3270                         precision highp float;
3271
3272
3273
3274                         uniform UniformBlock
3275                         {
3276                                 vec4 uniformMember;
3277                         } uniformBlock;
3278
3279                         in vec4 UniformBlock;
3280
3281                         void main()
3282                         {
3283                                 gl_Position = uniformBlock.uniformMember;
3284                         }
3285                 ""
3286
3287                 fragment ""
3288                         #version 300 es
3289                         precision highp float;
3290
3291                         layout(location=0) out vec4 o_color;
3292
3293                         void main()
3294                         {
3295                                 o_color = vec4(1.0);
3296                         }
3297                 ""
3298         end
3299         case conflicting_in_and_block_name_fragment
3300                 version 300 es
3301                 expect compile_fail
3302
3303                 vertex ""
3304                         #version 300 es
3305                         precision highp float;
3306
3307                         in vec4 a_pos;
3308
3309                         void main()
3310                         {
3311                                 gl_Position = a_pos;
3312                         }
3313                 ""
3314
3315                 fragment ""
3316                         #version 300 es
3317                         precision highp float;
3318
3319                         layout(location=0) out vec4 o_color;
3320
3321                         uniform UniformBlock
3322                         {
3323                                 vec4 uniformMember;
3324                         } uniformBlock;
3325
3326                         in vec4 UniformBlock;
3327
3328                         void main()
3329                         {
3330                                 o_color = uniformBlock.uniformMember;
3331                         }
3332                 ""
3333         end
3334         case conflicting_out_and_block_name_vertex
3335                 version 300 es
3336                 expect compile_fail
3337
3338                 vertex ""
3339                         #version 300 es
3340                         precision highp float;
3341
3342
3343
3344                         uniform UniformBlock
3345                         {
3346                                 vec4 uniformMember;
3347                         } uniformBlock;
3348
3349                         out vec4 UniformBlock;
3350
3351                         void main()
3352                         {
3353                                 gl_Position = uniformBlock.uniformMember;
3354                         }
3355                 ""
3356
3357                 fragment ""
3358                         #version 300 es
3359                         precision highp float;
3360
3361                         layout(location=0) out vec4 o_color;
3362
3363                         void main()
3364                         {
3365                                 o_color = vec4(1.0);
3366                         }
3367                 ""
3368         end
3369         case conflicting_out_and_block_name_fragment
3370                 version 300 es
3371                 expect compile_fail
3372
3373                 vertex ""
3374                         #version 300 es
3375                         precision highp float;
3376
3377                         in vec4 a_pos;
3378
3379                         void main()
3380                         {
3381                                 gl_Position = a_pos;
3382                         }
3383                 ""
3384
3385                 fragment ""
3386                         #version 300 es
3387                         precision highp float;
3388
3389                         layout(location=0) out vec4 o_color;
3390
3391                         uniform UniformBlock
3392                         {
3393                                 vec4 uniformMember;
3394                         } uniformBlock;
3395
3396                         out vec4 UniformBlock;
3397
3398                         void main()
3399                         {
3400                                 o_color = uniformBlock.uniformMember;
3401                         }
3402                 ""
3403         end
3404         case matching_instance_and_block_name_vertex
3405                 version 300 es
3406                 expect compile_fail
3407
3408                 vertex ""
3409                         #version 300 es
3410                         precision highp float;
3411
3412
3413
3414                         uniform UniformBlock
3415                         {
3416                                 vec4 uniformMember;
3417                         } UniformBlock;
3418
3419                         void main()
3420                         {
3421                                 gl_Position = UniformBlock.uniformMember;
3422                         }
3423                 ""
3424
3425                 fragment ""
3426                         #version 300 es
3427                         precision highp float;
3428
3429                         layout(location=0) out vec4 o_color;
3430
3431                         void main()
3432                         {
3433                                 o_color = vec4(1.0);
3434                         }
3435                 ""
3436         end
3437         case matching_instance_and_block_name_fragment
3438                 version 300 es
3439                 expect compile_fail
3440
3441                 vertex ""
3442                         #version 300 es
3443                         precision highp float;
3444
3445                         in vec4 a_pos;
3446
3447                         void main()
3448                         {
3449                                 gl_Position = a_pos;
3450                         }
3451                 ""
3452
3453                 fragment ""
3454                         #version 300 es
3455                         precision highp float;
3456
3457                         layout(location=0) out vec4 o_color;
3458
3459                         uniform UniformBlock
3460                         {
3461                                 vec4 uniformMember;
3462                         } UniformBlock;
3463
3464                         void main()
3465                         {
3466                                 o_color = UniformBlock.uniformMember;
3467                         }
3468                 ""
3469         end
3470         case reference_using_block_name_vertex
3471                 version 300 es
3472                 expect compile_fail
3473
3474                 vertex ""
3475                         #version 300 es
3476                         precision highp float;
3477
3478
3479
3480                         uniform UniformBlock
3481                         {
3482                                 vec4 uniformMember;
3483                         } uniformBlock;
3484
3485                         void main()
3486                         {
3487                                 gl_Position = UniformBlock.uniformMember;
3488                         }
3489                 ""
3490
3491                 fragment ""
3492                         #version 300 es
3493                         precision highp float;
3494
3495                         layout(location=0) out vec4 o_color;
3496
3497                         void main()
3498                         {
3499                                 o_color = vec4(1.0);
3500                         }
3501                 ""
3502         end
3503         case reference_using_block_name_fragment
3504                 version 300 es
3505                 expect compile_fail
3506
3507                 vertex ""
3508                         #version 300 es
3509                         precision highp float;
3510
3511                         in vec4 a_pos;
3512
3513                         void main()
3514                         {
3515                                 gl_Position = a_pos;
3516                         }
3517                 ""
3518
3519                 fragment ""
3520                         #version 300 es
3521                         precision highp float;
3522
3523                         layout(location=0) out vec4 o_color;
3524
3525                         uniform UniformBlock
3526                         {
3527                                 vec4 uniformMember;
3528                         } uniformBlock;
3529
3530                         void main()
3531                         {
3532                                 o_color = UniformBlock.uniformMember;
3533                         }
3534                 ""
3535         end
3536         case empty_block_vertex
3537                 version 300 es
3538                 expect compile_fail
3539
3540                 vertex ""
3541                         #version 300 es
3542                         precision highp float;
3543
3544
3545
3546                         uniform UniformBlock
3547                         {
3548                         } uniformBlock;
3549
3550                         void main()
3551                         {
3552                                 gl_Position = vec4(0.0);
3553                         }
3554                 ""
3555
3556                 fragment ""
3557                         #version 300 es
3558                         precision highp float;
3559
3560                         layout(location=0) out vec4 o_color;
3561
3562                         void main()
3563                         {
3564                                 o_color = vec4(1.0);
3565                         }
3566                 ""
3567         end
3568         case empty_block_fragment
3569                 version 300 es
3570                 expect compile_fail
3571
3572                 vertex ""
3573                         #version 300 es
3574                         precision highp float;
3575
3576                         in vec4 a_pos;
3577
3578                         void main()
3579                         {
3580                                 gl_Position = a_pos;
3581                         }
3582                 ""
3583
3584                 fragment ""
3585                         #version 300 es
3586                         precision highp float;
3587
3588                         layout(location=0) out vec4 o_color;
3589
3590                         uniform UniformBlock
3591                         {
3592                         } uniformBlock;
3593
3594                         void main()
3595                         {
3596                                 o_color = vec4(0.0);
3597                         }
3598                 ""
3599         end
3600         case empty_layout_vertex
3601                 version 300 es
3602                 expect compile_fail
3603
3604                 vertex ""
3605                         #version 300 es
3606                         precision highp float;
3607
3608
3609
3610                         layout() uniform UniformBlock
3611                         {
3612                                 vec4 uniformMember;
3613                         } uniformBlock;
3614
3615                         void main()
3616                         {
3617                                 gl_Position = uniformBlock.uniformMember;
3618                         }
3619                 ""
3620
3621                 fragment ""
3622                         #version 300 es
3623                         precision highp float;
3624
3625                         layout(location=0) out vec4 o_color;
3626
3627                         void main()
3628                         {
3629                                 o_color = vec4(1.0);
3630                         }
3631                 ""
3632         end
3633         case empty_layout_fragment
3634                 version 300 es
3635                 expect compile_fail
3636
3637                 vertex ""
3638                         #version 300 es
3639                         precision highp float;
3640
3641                         in vec4 a_pos;
3642
3643                         void main()
3644                         {
3645                                 gl_Position = a_pos;
3646                         }
3647                 ""
3648
3649                 fragment ""
3650                         #version 300 es
3651                         precision highp float;
3652
3653                         layout(location=0) out vec4 o_color;
3654
3655                         layout() uniform UniformBlock
3656                         {
3657                                 vec4 uniformMember;
3658                         } uniformBlock;
3659
3660                         void main()
3661                         {
3662                                 o_color = uniformBlock.uniformMember;
3663                         }
3664                 ""
3665         end
3666         case empty_member_layout_vertex
3667                 version 300 es
3668                 expect compile_fail
3669
3670                 vertex ""
3671                         #version 300 es
3672                         precision highp float;
3673
3674
3675
3676                         uniform UniformBlock
3677                         {
3678                                 layout() vec4 uniformMember;
3679                         } uniformBlock;
3680
3681                         void main()
3682                         {
3683                                 gl_Position = uniformBlock.uniformMember;
3684                         }
3685                 ""
3686
3687                 fragment ""
3688                         #version 300 es
3689                         precision highp float;
3690
3691                         layout(location=0) out vec4 o_color;
3692
3693                         void main()
3694                         {
3695                                 o_color = vec4(1.0);
3696                         }
3697                 ""
3698         end
3699         case empty_member_layout_fragment
3700                 version 300 es
3701                 expect compile_fail
3702
3703                 vertex ""
3704                         #version 300 es
3705                         precision highp float;
3706
3707                         in vec4 a_pos;
3708
3709                         void main()
3710                         {
3711                                 gl_Position = a_pos;
3712                         }
3713                 ""
3714
3715                 fragment ""
3716                         #version 300 es
3717                         precision highp float;
3718
3719                         layout(location=0) out vec4 o_color;
3720
3721                         uniform UniformBlock
3722                         {
3723                                 layout() vec4 uniformMember;
3724                         } uniformBlock;
3725
3726                         void main()
3727                         {
3728                                 o_color = uniformBlock.uniformMember;
3729                         }
3730                 ""
3731         end
3732         case empty_global_layout_vertex
3733                 version 300 es
3734                 expect compile_fail
3735
3736                 vertex ""
3737                         #version 300 es
3738                         precision highp float;
3739
3740                         layout() uniform;
3741
3742
3743
3744                         uniform UniformBlock
3745                         {
3746                                 vec4 uniformMember;
3747                         } uniformBlock;
3748
3749                         void main()
3750                         {
3751                                 gl_Position = uniformBlock.uniformMember;
3752                         }
3753                 ""
3754
3755                 fragment ""
3756                         #version 300 es
3757                         precision highp float;
3758
3759                         layout(location=0) out vec4 o_color;
3760
3761                         void main()
3762                         {
3763                                 o_color = vec4(1.0);
3764                         }
3765                 ""
3766         end
3767         case empty_global_layout_fragment
3768                 version 300 es
3769                 expect compile_fail
3770
3771                 vertex ""
3772                         #version 300 es
3773                         precision highp float;
3774
3775                         in vec4 a_pos;
3776
3777                         void main()
3778                         {
3779                                 gl_Position = a_pos;
3780                         }
3781                 ""
3782
3783                 fragment ""
3784                         #version 300 es
3785                         precision highp float;
3786
3787                         layout() uniform;
3788
3789                         layout(location=0) out vec4 o_color;
3790
3791                         uniform UniformBlock
3792                         {
3793                                 vec4 uniformMember;
3794                         } uniformBlock;
3795
3796                         void main()
3797                         {
3798                                 o_color = uniformBlock.uniformMember;
3799                         }
3800                 ""
3801         end
3802         case structure_definition_vertex
3803                 version 300 es
3804                 expect compile_fail
3805
3806                 vertex ""
3807                         #version 300 es
3808                         precision highp float;
3809
3810
3811
3812                         uniform UniformBlock
3813                         {
3814                                 struct A
3815                                 {
3816                                         vec4 uniformMember;
3817                                 } a;
3818                         } uniformBlock;
3819
3820                         void main()
3821                         {
3822                                 gl_Position = uniformBlock.a.uniformMember;
3823                         }
3824                 ""
3825
3826                 fragment ""
3827                         #version 300 es
3828                         precision highp float;
3829
3830                         layout(location=0) out vec4 o_color;
3831
3832                         void main()
3833                         {
3834                                 o_color = vec4(1.0);
3835                         }
3836                 ""
3837         end
3838         case structure_definition_fragment
3839                 version 300 es
3840                 expect compile_fail
3841
3842                 vertex ""
3843                         #version 300 es
3844                         precision highp float;
3845
3846                         in vec4 a_pos;
3847
3848                         void main()
3849                         {
3850                                 gl_Position = a_pos;
3851                         }
3852                 ""
3853
3854                 fragment ""
3855                         #version 300 es
3856                         precision highp float;
3857
3858                         layout(location=0) out vec4 o_color;
3859
3860                         uniform UniformBlock
3861                         {
3862                                 struct A
3863                                 {
3864                                         vec4 uniformMember;
3865                                 } a;
3866                         } uniformBlock;
3867
3868                         void main()
3869                         {
3870                                 o_color = uniformBlock.a.uniformMember;
3871                         }
3872                 ""
3873         end
3874         case member_layout_shared_vertex
3875                 version 300 es
3876                 expect compile_fail
3877
3878                 vertex ""
3879                         #version 300 es
3880                         precision highp float;
3881
3882
3883
3884                         uniform UniformBlock
3885                         {
3886                                 layout(shared) vec4 uniformMember;
3887                         } uniformBlock;
3888
3889                         void main()
3890                         {
3891                                 gl_Position = uniformBlock.uniformMember;
3892                         }
3893                 ""
3894
3895                 fragment ""
3896                         #version 300 es
3897                         precision highp float;
3898
3899                         layout(location=0) out vec4 o_color;
3900
3901                         void main()
3902                         {
3903                                 o_color = vec4(1.0);
3904                         }
3905                 ""
3906         end
3907         case member_layout_shared_fragment
3908                 version 300 es
3909                 expect compile_fail
3910
3911                 vertex ""
3912                         #version 300 es
3913                         precision highp float;
3914
3915                         in vec4 a_pos;
3916
3917                         void main()
3918                         {
3919                                 gl_Position = a_pos;
3920                         }
3921                 ""
3922
3923                 fragment ""
3924                         #version 300 es
3925                         precision highp float;
3926
3927                         layout(location=0) out vec4 o_color;
3928
3929                         uniform UniformBlock
3930                         {
3931                                 layout(shared) vec4 uniformMember;
3932                         } uniformBlock;
3933
3934                         void main()
3935                         {
3936                                 o_color = uniformBlock.uniformMember;
3937                         }
3938                 ""
3939         end
3940         case member_layout_packed_vertex
3941                 version 300 es
3942                 expect compile_fail
3943
3944                 vertex ""
3945                         #version 300 es
3946                         precision highp float;
3947
3948
3949
3950                         uniform UniformBlock
3951                         {
3952                                 layout(packed) vec4 uniformMember;
3953                         } uniformBlock;
3954
3955                         void main()
3956                         {
3957                                 gl_Position = uniformBlock.uniformMember;
3958                         }
3959                 ""
3960
3961                 fragment ""
3962                         #version 300 es
3963                         precision highp float;
3964
3965                         layout(location=0) out vec4 o_color;
3966
3967                         void main()
3968                         {
3969                                 o_color = vec4(1.0);
3970                         }
3971                 ""
3972         end
3973         case member_layout_packed_fragment
3974                 version 300 es
3975                 expect compile_fail
3976
3977                 vertex ""
3978                         #version 300 es
3979                         precision highp float;
3980
3981                         in vec4 a_pos;
3982
3983                         void main()
3984                         {
3985                                 gl_Position = a_pos;
3986                         }
3987                 ""
3988
3989                 fragment ""
3990                         #version 300 es
3991                         precision highp float;
3992
3993                         layout(location=0) out vec4 o_color;
3994
3995                         uniform UniformBlock
3996                         {
3997                                 layout(packed) vec4 uniformMember;
3998                         } uniformBlock;
3999
4000                         void main()
4001                         {
4002                                 o_color = uniformBlock.uniformMember;
4003                         }
4004                 ""
4005         end
4006         case member_layout_std140_vertex
4007                 version 300 es
4008                 expect compile_fail
4009
4010                 vertex ""
4011                         #version 300 es
4012                         precision highp float;
4013
4014
4015
4016                         uniform UniformBlock
4017                         {
4018                                 layout(std140) vec4 uniformMember;
4019                         } uniformBlock;
4020
4021                         void main()
4022                         {
4023                                 gl_Position = uniformBlock.uniformMember;
4024                         }
4025                 ""
4026
4027                 fragment ""
4028                         #version 300 es
4029                         precision highp float;
4030
4031                         layout(location=0) out vec4 o_color;
4032
4033                         void main()
4034                         {
4035                                 o_color = vec4(1.0);
4036                         }
4037                 ""
4038         end
4039         case member_layout_std140_fragment
4040                 version 300 es
4041                 expect compile_fail
4042
4043                 vertex ""
4044                         #version 300 es
4045                         precision highp float;
4046
4047                         in vec4 a_pos;
4048
4049                         void main()
4050                         {
4051                                 gl_Position = a_pos;
4052                         }
4053                 ""
4054
4055                 fragment ""
4056                         #version 300 es
4057                         precision highp float;
4058
4059                         layout(location=0) out vec4 o_color;
4060
4061                         uniform UniformBlock
4062                         {
4063                                 layout(std140) vec4 uniformMember;
4064                         } uniformBlock;
4065
4066                         void main()
4067                         {
4068                                 o_color = uniformBlock.uniformMember;
4069                         }
4070                 ""
4071         end
4072         case missing_block_name_vertex
4073                 version 300 es
4074                 expect compile_fail
4075
4076                 vertex ""
4077                         #version 300 es
4078                         precision highp float;
4079
4080
4081
4082                         uniform
4083                         {
4084                                 vec4 uniformMember;
4085                         } uniformBlock;
4086
4087                         void main()
4088                         {
4089                                 gl_Position = uniformBlock.uniformMember;
4090                         }
4091                 ""
4092
4093                 fragment ""
4094                         #version 300 es
4095                         precision highp float;
4096
4097                         layout(location=0) out vec4 o_color;
4098
4099                         void main()
4100                         {
4101                                 o_color = vec4(1.0);
4102                         }
4103                 ""
4104         end
4105         case missing_block_name_fragment
4106                 version 300 es
4107                 expect compile_fail
4108
4109                 vertex ""
4110                         #version 300 es
4111                         precision highp float;
4112
4113                         in vec4 a_pos;
4114
4115                         void main()
4116                         {
4117                                 gl_Position = a_pos;
4118                         }
4119                 ""
4120
4121                 fragment ""
4122                         #version 300 es
4123                         precision highp float;
4124
4125                         layout(location=0) out vec4 o_color;
4126
4127                         uniform
4128                         {
4129                                 vec4 uniformMember;
4130                         } uniformBlock;
4131
4132                         void main()
4133                         {
4134                                 o_color = uniformBlock.uniformMember;
4135                         }
4136                 ""
4137         end
4138         case invalid_number_block_name_vertex
4139                 version 300 es
4140                 expect compile_fail
4141
4142                 vertex ""
4143                         #version 300 es
4144                         precision highp float;
4145
4146
4147
4148                         uniform 0UniformBlock
4149                         {
4150                                 vec4 uniformMember;
4151                         } uniformBlock;
4152
4153                         void main()
4154                         {
4155                                 gl_Position = uniformBlock.uniformMember;
4156                         }
4157                 ""
4158
4159                 fragment ""
4160                         #version 300 es
4161                         precision highp float;
4162
4163                         layout(location=0) out vec4 o_color;
4164
4165                         void main()
4166                         {
4167                                 o_color = vec4(1.0);
4168                         }
4169                 ""
4170         end
4171         case invalid_number_block_name_fragment
4172                 version 300 es
4173                 expect compile_fail
4174
4175                 vertex ""
4176                         #version 300 es
4177                         precision highp float;
4178
4179                         in vec4 a_pos;
4180
4181                         void main()
4182                         {
4183                                 gl_Position = a_pos;
4184                         }
4185                 ""
4186
4187                 fragment ""
4188                         #version 300 es
4189                         precision highp float;
4190
4191                         layout(location=0) out vec4 o_color;
4192
4193                         uniform 0UniformBlock
4194                         {
4195                                 vec4 uniformMember;
4196                         } uniformBlock;
4197
4198                         void main()
4199                         {
4200                                 o_color = uniformBlock.uniformMember;
4201                         }
4202                 ""
4203         end
4204         case invalid_hash_block_name_vertex
4205                 version 300 es
4206                 expect compile_fail
4207
4208                 vertex ""
4209                         #version 300 es
4210                         precision highp float;
4211
4212
4213
4214                         uniform #UniformBlock
4215                         {
4216                                 vec4 uniformMember;
4217                         } uniformBlock;
4218
4219                         void main()
4220                         {
4221                                 gl_Position = uniformBlock.uniformMember;
4222                         }
4223                 ""
4224
4225                 fragment ""
4226                         #version 300 es
4227                         precision highp float;
4228
4229                         layout(location=0) out vec4 o_color;
4230
4231                         void main()
4232                         {
4233                                 o_color = vec4(1.0);
4234                         }
4235                 ""
4236         end
4237         case invalid_hash_block_name_fragment
4238                 version 300 es
4239                 expect compile_fail
4240
4241                 vertex ""
4242                         #version 300 es
4243                         precision highp float;
4244
4245                         in vec4 a_pos;
4246
4247                         void main()
4248                         {
4249                                 gl_Position = a_pos;
4250                         }
4251                 ""
4252
4253                 fragment ""
4254                         #version 300 es
4255                         precision highp float;
4256
4257                         layout(location=0) out vec4 o_color;
4258
4259                         uniform #UniformBlock
4260                         {
4261                                 vec4 uniformMember;
4262                         } uniformBlock;
4263
4264                         void main()
4265                         {
4266                                 o_color = uniformBlock.uniformMember;
4267                         }
4268                 ""
4269         end
4270         case invalid_dollar_block_name_vertex
4271                 version 300 es
4272                 expect compile_fail
4273
4274                 vertex ""
4275                         #version 300 es
4276                         precision highp float;
4277
4278
4279
4280                         uniform $UniformBlock
4281                         {
4282                                 vec4 uniformMember;
4283                         } uniformBlock;
4284
4285                         void main()
4286                         {
4287                                 gl_Position = uniformBlock.uniformMember;
4288                         }
4289                 ""
4290
4291                 fragment ""
4292                         #version 300 es
4293                         precision highp float;
4294
4295                         layout(location=0) out vec4 o_color;
4296
4297                         void main()
4298                         {
4299                                 o_color = vec4(1.0);
4300                         }
4301                 ""
4302         end
4303         case invalid_dollar_block_name_fragment
4304                 version 300 es
4305                 expect compile_fail
4306
4307                 vertex ""
4308                         #version 300 es
4309                         precision highp float;
4310
4311                         in vec4 a_pos;
4312
4313                         void main()
4314                         {
4315                                 gl_Position = a_pos;
4316                         }
4317                 ""
4318
4319                 fragment ""
4320                         #version 300 es
4321                         precision highp float;
4322
4323                         layout(location=0) out vec4 o_color;
4324
4325                         uniform $UniformBlock
4326                         {
4327                                 vec4 uniformMember;
4328                         } uniformBlock;
4329
4330                         void main()
4331                         {
4332                                 o_color = uniformBlock.uniformMember;
4333                         }
4334                 ""
4335         end
4336         case invalid_identifier_block_name_vertex
4337                 version 300 es
4338                 expect compile_fail
4339
4340                 vertex ""
4341                         #version 300 es
4342                         precision highp float;
4343
4344
4345
4346                         uniform gl_UniformBlock
4347                         {
4348                                 vec4 uniformMember;
4349                         } uniformBlock;
4350
4351                         void main()
4352                         {
4353                                 gl_Position = uniformBlock.uniformMember;
4354                         }
4355                 ""
4356
4357                 fragment ""
4358                         #version 300 es
4359                         precision highp float;
4360
4361                         layout(location=0) out vec4 o_color;
4362
4363                         void main()
4364                         {
4365                                 o_color = vec4(1.0);
4366                         }
4367                 ""
4368         end
4369         case invalid_identifier_block_name_fragment
4370                 version 300 es
4371                 expect compile_fail
4372
4373                 vertex ""
4374                         #version 300 es
4375                         precision highp float;
4376
4377                         in vec4 a_pos;
4378
4379                         void main()
4380                         {
4381                                 gl_Position = a_pos;
4382                         }
4383                 ""
4384
4385                 fragment ""
4386                         #version 300 es
4387                         precision highp float;
4388
4389                         layout(location=0) out vec4 o_color;
4390
4391                         uniform gl_UniformBlock
4392                         {
4393                                 vec4 uniformMember;
4394                         } uniformBlock;
4395
4396                         void main()
4397                         {
4398                                 o_color = uniformBlock.uniformMember;
4399                         }
4400                 ""
4401         end
4402         case too_long_block_name_vertex
4403                 version 300 es
4404                 expect compile_fail
4405
4406                 vertex ""
4407                         #version 300 es
4408                         precision highp float;
4409
4410
4411
4412                         // Total of 1025 characters
4413                         uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4414                         {
4415                                 vec4 uniformMember;
4416                         } uniformBlock;
4417
4418                         void main()
4419                         {
4420                                 gl_Position = uniformBlock.uniformMember;
4421                         }
4422                 ""
4423
4424                 fragment ""
4425                         #version 300 es
4426                         precision highp float;
4427
4428                         layout(location=0) out vec4 o_color;
4429
4430                         void main()
4431                         {
4432                                 o_color = vec4(1.0);
4433                         }
4434                 ""
4435         end
4436         case too_long_block_name_fragment
4437                 version 300 es
4438                 expect compile_fail
4439
4440                 vertex ""
4441                         #version 300 es
4442                         precision highp float;
4443
4444                         in vec4 a_pos;
4445
4446                         void main()
4447                         {
4448                                 gl_Position = a_pos;
4449                         }
4450                 ""
4451
4452                 fragment ""
4453                         #version 300 es
4454                         precision highp float;
4455
4456                         layout(location=0) out vec4 o_color;
4457
4458                         // Total of 1025 characters
4459                         uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4460                         {
4461                                 vec4 uniformMember;
4462                         } uniformBlock;
4463
4464                         void main()
4465                         {
4466                                 o_color = uniformBlock.uniformMember;
4467                         }
4468                 ""
4469         end
4470         case invalid_number_instance_name_vertex
4471                 version 300 es
4472                 expect compile_fail
4473
4474                 vertex ""
4475                         #version 300 es
4476                         precision highp float;
4477
4478
4479
4480                         uniform UniformInstance
4481                         {
4482                                 vec4 uniformMember;
4483                         } 0uniformBlock;
4484
4485                         void main()
4486                         {
4487                                 gl_Position = 0uniformBlock.uniformMember;
4488                         }
4489                 ""
4490
4491                 fragment ""
4492                         #version 300 es
4493                         precision highp float;
4494
4495                         layout(location=0) out vec4 o_color;
4496
4497                         void main()
4498                         {
4499                                 o_color = vec4(1.0);
4500                         }
4501                 ""
4502         end
4503         case invalid_number_instance_name_fragment
4504                 version 300 es
4505                 expect compile_fail
4506
4507                 vertex ""
4508                         #version 300 es
4509                         precision highp float;
4510
4511                         in vec4 a_pos;
4512
4513                         void main()
4514                         {
4515                                 gl_Position = a_pos;
4516                         }
4517                 ""
4518
4519                 fragment ""
4520                         #version 300 es
4521                         precision highp float;
4522
4523                         layout(location=0) out vec4 o_color;
4524
4525                         uniform UniformInstance
4526                         {
4527                                 vec4 uniformMember;
4528                         } 0uniformBlock;
4529
4530                         void main()
4531                         {
4532                                 o_color = 0uniformBlock.uniformMember;
4533                         }
4534                 ""
4535         end
4536         case invalid_hash_instance_name_vertex
4537                 version 300 es
4538                 expect compile_fail
4539
4540                 vertex ""
4541                         #version 300 es
4542                         precision highp float;
4543
4544
4545
4546                         uniform UniformInstance
4547                         {
4548                                 vec4 uniformMember;
4549                         } $uniformBlock;
4550
4551                         void main()
4552                         {
4553                                 gl_Position = $uniformBlock.uniformMember;
4554                         }
4555                 ""
4556
4557                 fragment ""
4558                         #version 300 es
4559                         precision highp float;
4560
4561                         layout(location=0) out vec4 o_color;
4562
4563                         void main()
4564                         {
4565                                 o_color = vec4(1.0);
4566                         }
4567                 ""
4568         end
4569         case invalid_hash_instance_name_fragment
4570                 version 300 es
4571                 expect compile_fail
4572
4573                 vertex ""
4574                         #version 300 es
4575                         precision highp float;
4576
4577                         in vec4 a_pos;
4578
4579                         void main()
4580                         {
4581                                 gl_Position = a_pos;
4582                         }
4583                 ""
4584
4585                 fragment ""
4586                         #version 300 es
4587                         precision highp float;
4588
4589                         layout(location=0) out vec4 o_color;
4590
4591                         uniform UniformInstance
4592                         {
4593                                 vec4 uniformMember;
4594                         } $uniformBlock;
4595
4596                         void main()
4597                         {
4598                                 o_color = $uniformBlock.uniformMember;
4599                         }
4600                 ""
4601         end
4602         case invalid_dollar_instance_name_vertex
4603                 version 300 es
4604                 expect compile_fail
4605
4606                 vertex ""
4607                         #version 300 es
4608                         precision highp float;
4609
4610
4611
4612                         uniform UniformInstance
4613                         {
4614                                 vec4 uniformMember;
4615                         } $uniformBlock;
4616
4617                         void main()
4618                         {
4619                                 gl_Position = $uniformBlock.uniformMember;
4620                         }
4621                 ""
4622
4623                 fragment ""
4624                         #version 300 es
4625                         precision highp float;
4626
4627                         layout(location=0) out vec4 o_color;
4628
4629                         void main()
4630                         {
4631                                 o_color = vec4(1.0);
4632                         }
4633                 ""
4634         end
4635         case invalid_dollar_instance_name_fragment
4636                 version 300 es
4637                 expect compile_fail
4638
4639                 vertex ""
4640                         #version 300 es
4641                         precision highp float;
4642
4643                         in vec4 a_pos;
4644
4645                         void main()
4646                         {
4647                                 gl_Position = a_pos;
4648                         }
4649                 ""
4650
4651                 fragment ""
4652                         #version 300 es
4653                         precision highp float;
4654
4655                         layout(location=0) out vec4 o_color;
4656
4657                         uniform UniformInstance
4658                         {
4659                                 vec4 uniformMember;
4660                         } $uniformBlock;
4661
4662                         void main()
4663                         {
4664                                 o_color = $uniformBlock.uniformMember;
4665                         }
4666                 ""
4667         end
4668         case invalid_identifier_instance_name_vertex
4669                 version 300 es
4670                 expect compile_fail
4671
4672                 vertex ""
4673                         #version 300 es
4674                         precision highp float;
4675
4676
4677
4678                         uniform UniformBlock
4679                         {
4680                                 vec4 uniformMember;
4681                         } gl_uniformBlock;
4682
4683                         void main()
4684                         {
4685                                 gl_Position = gl_uniformBlock.uniformMember;
4686                         }
4687                 ""
4688
4689                 fragment ""
4690                         #version 300 es
4691                         precision highp float;
4692
4693                         layout(location=0) out vec4 o_color;
4694
4695                         void main()
4696                         {
4697                                 o_color = vec4(1.0);
4698                         }
4699                 ""
4700         end
4701         case invalid_identifier_instance_name_fragment
4702                 version 300 es
4703                 expect compile_fail
4704
4705                 vertex ""
4706                         #version 300 es
4707                         precision highp float;
4708
4709                         in vec4 a_pos;
4710
4711                         void main()
4712                         {
4713                                 gl_Position = a_pos;
4714                         }
4715                 ""
4716
4717                 fragment ""
4718                         #version 300 es
4719                         precision highp float;
4720
4721                         layout(location=0) out vec4 o_color;
4722
4723                         uniform UniformBlock
4724                         {
4725                                 vec4 uniformMember;
4726                         } gl_uniformBlock;
4727
4728                         void main()
4729                         {
4730                                 o_color = gl_uniformBlock.uniformMember;
4731                         }
4732                 ""
4733         end
4734         case double_underscore_block_name_vertex
4735                 version 300 es
4736                 expect compile_fail
4737
4738                 vertex ""
4739                         #version 300 es
4740                         precision highp float;
4741
4742
4743
4744                         uniform __
4745                         {
4746                                 vec4 uniformMember;
4747                         } uniformBlock;
4748
4749                         void main()
4750                         {
4751                                 gl_Position = uniformBlock.uniformMember;
4752                         }
4753                 ""
4754
4755                 fragment ""
4756                         #version 300 es
4757                         precision highp float;
4758
4759                         layout(location=0) out vec4 o_color;
4760
4761                         void main()
4762                         {
4763                                 o_color = vec4(1.0);
4764                         }
4765                 ""
4766         end
4767         case double_underscore_block_name_fragment
4768                 version 300 es
4769                 expect compile_fail
4770
4771                 vertex ""
4772                         #version 300 es
4773                         precision highp float;
4774
4775                         in vec4 a_pos;
4776
4777                         void main()
4778                         {
4779                                 gl_Position = a_pos;
4780                         }
4781                 ""
4782
4783                 fragment ""
4784                         #version 300 es
4785                         precision highp float;
4786
4787                         layout(location=0) out vec4 o_color;
4788
4789                         uniform __
4790                         {
4791                                 vec4 uniformMember;
4792                         } uniformBlock;
4793
4794                         void main()
4795                         {
4796                                 o_color = uniformBlock.uniformMember;
4797                         }
4798                 ""
4799         end
4800         case double_underscore_instance_name_vertex
4801                 version 300 es
4802                 expect compile_fail
4803
4804                 vertex ""
4805                         #version 300 es
4806                         precision highp float;
4807
4808
4809
4810                         uniform UniformBlock
4811                         {
4812                                 vec4 uniformMember;
4813                         } __;
4814
4815                         void main()
4816                         {
4817                                 gl_Position = __.uniformMember;
4818                         }
4819                 ""
4820
4821                 fragment ""
4822                         #version 300 es
4823                         precision highp float;
4824
4825                         layout(location=0) out vec4 o_color;
4826
4827                         void main()
4828                         {
4829                                 o_color = vec4(1.0);
4830                         }
4831                 ""
4832         end
4833         case double_underscore_instance_name_fragment
4834                 version 300 es
4835                 expect compile_fail
4836
4837                 vertex ""
4838                         #version 300 es
4839                         precision highp float;
4840
4841                         in vec4 a_pos;
4842
4843                         void main()
4844                         {
4845                                 gl_Position = a_pos;
4846                         }
4847                 ""
4848
4849                 fragment ""
4850                         #version 300 es
4851                         precision highp float;
4852
4853                         layout(location=0) out vec4 o_color;
4854
4855                         uniform UniformBlock
4856                         {
4857                                 vec4 uniformMember;
4858                         } __;
4859
4860                         void main()
4861                         {
4862                                 o_color = __.uniformMember;
4863                         }
4864                 ""
4865         end
4866
4867 end # invalid