am 25ed53b9: Fix primitive bbox line verification regression.
[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 struct_member_vertex
1623                 version 300 es
1624                 expect build_successful
1625
1626                 vertex ""
1627                         #version 300 es
1628                         precision highp float;
1629
1630
1631
1632                         struct Struct
1633                         {
1634                                 vec4 uniformMember;
1635                         };
1636
1637                         uniform UniformBlock
1638                         {
1639                                 Struct st;
1640                         } uniformBlock;
1641
1642                         void main()
1643                         {
1644                                 gl_Position = uniformBlock.st.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 struct_member_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                         struct Struct
1683                         {
1684                                 vec4 uniformMember;
1685                         };
1686
1687                         uniform UniformBlock
1688                         {
1689                                 Struct st;
1690                         } uniformBlock;
1691
1692                         void main()
1693                         {
1694                                 o_color = uniformBlock.st.uniformMember;
1695                         }
1696                 ""
1697         end
1698         case struct_member_layout_row_major_vertex
1699                 version 300 es
1700                 expect build_successful
1701
1702                 vertex ""
1703                         #version 300 es
1704                         precision highp float;
1705
1706
1707
1708                         struct Struct
1709                         {
1710                                 vec4 uniformMember;
1711                         };
1712
1713                         uniform UniformBlock
1714                         {
1715                                 layout(row_major) Struct st;
1716                         } uniformBlock;
1717
1718                         void main()
1719                         {
1720                                 gl_Position = uniformBlock.st.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 struct_member_layout_row_major_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                         struct Struct
1759                         {
1760                                 vec4 uniformMember;
1761                         };
1762
1763                         uniform UniformBlock
1764                         {
1765                                 layout(row_major) Struct st;
1766                         } uniformBlock;
1767
1768                         void main()
1769                         {
1770                                 o_color = uniformBlock.st.uniformMember;
1771                         }
1772                 ""
1773         end
1774         case struct_member_layout_column_major_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                                 layout(column_major) 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_layout_column_major_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                                 layout(column_major) Struct st;
1842                         } uniformBlock;
1843
1844                         void main()
1845                         {
1846                                 o_color = uniformBlock.st.uniformMember;
1847                         }
1848                 ""
1849         end
1850         case struct_member_layout_all_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, column_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_all_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, column_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_all_8_times_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(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;
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_all_8_times_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(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;
1994                         } uniformBlock;
1995
1996                         void main()
1997                         {
1998                                 o_color = uniformBlock.st.uniformMember;
1999                         }
2000                 ""
2001         end
2002         case long_block_name_vertex
2003                 version 300 es
2004                 expect build_successful
2005
2006                 vertex ""
2007                         #version 300 es
2008                         precision highp float;
2009
2010
2011
2012                         // Total of 1024 characters
2013                         uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2014                         {
2015                                 vec4 uniformMember;
2016                         } uniformBlock;
2017
2018                         void main()
2019                         {
2020                                 gl_Position = uniformBlock.uniformMember;
2021                         }
2022                 ""
2023
2024                 fragment ""
2025                         #version 300 es
2026                         precision highp float;
2027
2028                         layout(location=0) out vec4 o_color;
2029
2030                         void main()
2031                         {
2032                                 o_color = vec4(1.0);
2033                         }
2034                 ""
2035         end
2036         case long_block_name_fragment
2037                 version 300 es
2038                 expect build_successful
2039
2040                 vertex ""
2041                         #version 300 es
2042                         precision highp float;
2043
2044                         in vec4 a_pos;
2045
2046                         void main()
2047                         {
2048                                 gl_Position = a_pos;
2049                         }
2050                 ""
2051
2052                 fragment ""
2053                         #version 300 es
2054                         precision highp float;
2055
2056                         layout(location=0) out vec4 o_color;
2057
2058                         // Total of 1024 characters
2059                         uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2060                         {
2061                                 vec4 uniformMember;
2062                         } uniformBlock;
2063
2064                         void main()
2065                         {
2066                                 o_color = uniformBlock.uniformMember;
2067                         }
2068                 ""
2069         end
2070         case long_instance_name_vertex
2071                 version 300 es
2072                 expect build_successful
2073
2074                 vertex ""
2075                         #version 300 es
2076                         precision highp float;
2077
2078
2079
2080                         uniform UniformBlock
2081                         {
2082                                 vec4 uniformMember;
2083                         } aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
2084                         // Total of 1024 characters
2085
2086                         void main()
2087                         {
2088                                 gl_Position = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.uniformMember;
2089                         }
2090                 ""
2091
2092                 fragment ""
2093                         #version 300 es
2094                         precision highp float;
2095
2096                         layout(location=0) out vec4 o_color;
2097
2098                         void main()
2099                         {
2100                                 o_color = vec4(1.0);
2101                         }
2102                 ""
2103         end
2104         case long_instance_name_fragment
2105                 version 300 es
2106                 expect build_successful
2107
2108                 vertex ""
2109                         #version 300 es
2110                         precision highp float;
2111
2112                         in vec4 a_pos;
2113
2114                         void main()
2115                         {
2116                                 gl_Position = a_pos;
2117                         }
2118                 ""
2119
2120                 fragment ""
2121                         #version 300 es
2122                         precision highp float;
2123
2124                         layout(location=0) out vec4 o_color;
2125
2126                         uniform UniformBlock
2127                         {
2128                                 vec4 uniformMember;
2129                         } aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
2130                         // Total of 1024 characters
2131
2132                         void main()
2133                         {
2134                                 o_color = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.uniformMember;
2135                         }
2136                 ""
2137         end
2138         case underscore_block_name_vertex
2139                 version 300 es
2140                 expect build_successful
2141
2142                 vertex ""
2143                         #version 300 es
2144                         precision highp float;
2145
2146
2147
2148                         uniform _
2149                         {
2150                                 vec4 uniformMember;
2151                         } uniformBlock;
2152
2153                         void main()
2154                         {
2155                                 gl_Position = uniformBlock.uniformMember;
2156                         }
2157                 ""
2158
2159                 fragment ""
2160                         #version 300 es
2161                         precision highp float;
2162
2163                         layout(location=0) out vec4 o_color;
2164
2165                         void main()
2166                         {
2167                                 o_color = vec4(1.0);
2168                         }
2169                 ""
2170         end
2171         case underscore_block_name_fragment
2172                 version 300 es
2173                 expect build_successful
2174
2175                 vertex ""
2176                         #version 300 es
2177                         precision highp float;
2178
2179                         in vec4 a_pos;
2180
2181                         void main()
2182                         {
2183                                 gl_Position = a_pos;
2184                         }
2185                 ""
2186
2187                 fragment ""
2188                         #version 300 es
2189                         precision highp float;
2190
2191                         layout(location=0) out vec4 o_color;
2192
2193                         uniform _
2194                         {
2195                                 vec4 uniformMember;
2196                         } uniformBlock;
2197
2198                         void main()
2199                         {
2200                                 o_color = uniformBlock.uniformMember;
2201                         }
2202                 ""
2203         end
2204         case underscore_instance_name_vertex
2205                 version 300 es
2206                 expect build_successful
2207
2208                 vertex ""
2209                         #version 300 es
2210                         precision highp float;
2211
2212
2213
2214                         uniform UniformBlock
2215                         {
2216                                 vec4 uniformMember;
2217                         } _;
2218
2219                         void main()
2220                         {
2221                                 gl_Position = _.uniformMember;
2222                         }
2223                 ""
2224
2225                 fragment ""
2226                         #version 300 es
2227                         precision highp float;
2228
2229                         layout(location=0) out vec4 o_color;
2230
2231                         void main()
2232                         {
2233                                 o_color = vec4(1.0);
2234                         }
2235                 ""
2236         end
2237         case underscore_instance_name_fragment
2238                 version 300 es
2239                 expect build_successful
2240
2241                 vertex ""
2242                         #version 300 es
2243                         precision highp float;
2244
2245                         in vec4 a_pos;
2246
2247                         void main()
2248                         {
2249                                 gl_Position = a_pos;
2250                         }
2251                 ""
2252
2253                 fragment ""
2254                         #version 300 es
2255                         precision highp float;
2256
2257                         layout(location=0) out vec4 o_color;
2258
2259                         uniform UniformBlock
2260                         {
2261                                 vec4 uniformMember;
2262                         } _;
2263
2264                         void main()
2265                         {
2266                                 o_color = _.uniformMember;
2267                         }
2268                 ""
2269         end
2270
2271 end # valid
2272 group invalid "Invalid uniform interface block syntax tests."
2273
2274         case member_in_interface_qualifier_vertex
2275                 version 300 es
2276                 expect compile_fail
2277
2278                 vertex ""
2279                         #version 300 es
2280                         precision highp float;
2281
2282
2283
2284                         uniform UniformBlock
2285                         {
2286                                 in vec4 uniformMember;
2287                         } uniformBlock;
2288
2289                         void main()
2290                         {
2291                                 gl_Position = uniformBlock.uniformMember;
2292                         }
2293                 ""
2294
2295                 fragment ""
2296                         #version 300 es
2297                         precision highp float;
2298
2299                         layout(location=0) out vec4 o_color;
2300
2301                         void main()
2302                         {
2303                                 o_color = vec4(1.0);
2304                         }
2305                 ""
2306         end
2307         case member_in_interface_qualifier_fragment
2308                 version 300 es
2309                 expect compile_fail
2310
2311                 vertex ""
2312                         #version 300 es
2313                         precision highp float;
2314
2315                         in vec4 a_pos;
2316
2317                         void main()
2318                         {
2319                                 gl_Position = a_pos;
2320                         }
2321                 ""
2322
2323                 fragment ""
2324                         #version 300 es
2325                         precision highp float;
2326
2327                         layout(location=0) out vec4 o_color;
2328
2329                         uniform UniformBlock
2330                         {
2331                                 in vec4 uniformMember;
2332                         } uniformBlock;
2333
2334                         void main()
2335                         {
2336                                 o_color = uniformBlock.uniformMember;
2337                         }
2338                 ""
2339         end
2340         case member_out_interface_qualifier_vertex
2341                 version 300 es
2342                 expect compile_fail
2343
2344                 vertex ""
2345                         #version 300 es
2346                         precision highp float;
2347
2348
2349
2350                         uniform UniformBlock
2351                         {
2352                                 out vec4 uniformMember;
2353                         } uniformBlock;
2354
2355                         void main()
2356                         {
2357                                 gl_Position = uniformBlock.uniformMember;
2358                         }
2359                 ""
2360
2361                 fragment ""
2362                         #version 300 es
2363                         precision highp float;
2364
2365                         layout(location=0) out vec4 o_color;
2366
2367                         void main()
2368                         {
2369                                 o_color = vec4(1.0);
2370                         }
2371                 ""
2372         end
2373         case member_out_interface_qualifier_fragment
2374                 version 300 es
2375                 expect compile_fail
2376
2377                 vertex ""
2378                         #version 300 es
2379                         precision highp float;
2380
2381                         in vec4 a_pos;
2382
2383                         void main()
2384                         {
2385                                 gl_Position = a_pos;
2386                         }
2387                 ""
2388
2389                 fragment ""
2390                         #version 300 es
2391                         precision highp float;
2392
2393                         layout(location=0) out vec4 o_color;
2394
2395                         uniform UniformBlock
2396                         {
2397                                 out vec4 uniformMember;
2398                         } uniformBlock;
2399
2400                         void main()
2401                         {
2402                                 o_color = uniformBlock.uniformMember;
2403                         }
2404                 ""
2405         end
2406         case member_buffer_interface_qualifier_vertex
2407                 version 300 es
2408                 expect compile_fail
2409
2410                 vertex ""
2411                         #version 300 es
2412                         precision highp float;
2413
2414
2415
2416                         uniform UniformBlock
2417                         {
2418                                 buffer vec4 uniformMember;
2419                         } uniformBlock;
2420
2421                         void main()
2422                         {
2423                                 gl_Position = uniformBlock.uniformMember;
2424                         }
2425                 ""
2426
2427                 fragment ""
2428                         #version 300 es
2429                         precision highp float;
2430
2431                         layout(location=0) out vec4 o_color;
2432
2433                         void main()
2434                         {
2435                                 o_color = vec4(1.0);
2436                         }
2437                 ""
2438         end
2439         case member_buffer_interface_qualifier_fragment
2440                 version 300 es
2441                 expect compile_fail
2442
2443                 vertex ""
2444                         #version 300 es
2445                         precision highp float;
2446
2447                         in vec4 a_pos;
2448
2449                         void main()
2450                         {
2451                                 gl_Position = a_pos;
2452                         }
2453                 ""
2454
2455                 fragment ""
2456                         #version 300 es
2457                         precision highp float;
2458
2459                         layout(location=0) out vec4 o_color;
2460
2461                         uniform UniformBlock
2462                         {
2463                                 buffer vec4 uniformMember;
2464                         } uniformBlock;
2465
2466                         void main()
2467                         {
2468                                 o_color = uniformBlock.uniformMember;
2469                         }
2470                 ""
2471         end
2472         case member_attribute_interface_qualifier_vertex
2473                 version 300 es
2474                 expect compile_fail
2475
2476                 vertex ""
2477                         #version 300 es
2478                         precision highp float;
2479
2480
2481
2482                         uniform UniformBlock
2483                         {
2484                                 attribute vec4 uniformMember;
2485                         } uniformBlock;
2486
2487                         void main()
2488                         {
2489                                 gl_Position = uniformBlock.uniformMember;
2490                         }
2491                 ""
2492
2493                 fragment ""
2494                         #version 300 es
2495                         precision highp float;
2496
2497                         layout(location=0) out vec4 o_color;
2498
2499                         void main()
2500                         {
2501                                 o_color = vec4(1.0);
2502                         }
2503                 ""
2504         end
2505         case member_attribute_interface_qualifier_fragment
2506                 version 300 es
2507                 expect compile_fail
2508
2509                 vertex ""
2510                         #version 300 es
2511                         precision highp float;
2512
2513                         in vec4 a_pos;
2514
2515                         void main()
2516                         {
2517                                 gl_Position = a_pos;
2518                         }
2519                 ""
2520
2521                 fragment ""
2522                         #version 300 es
2523                         precision highp float;
2524
2525                         layout(location=0) out vec4 o_color;
2526
2527                         uniform UniformBlock
2528                         {
2529                                 attribute vec4 uniformMember;
2530                         } uniformBlock;
2531
2532                         void main()
2533                         {
2534                                 o_color = uniformBlock.uniformMember;
2535                         }
2536                 ""
2537         end
2538         case member_varying_interface_qualifier_vertex
2539                 version 300 es
2540                 expect compile_fail
2541
2542                 vertex ""
2543                         #version 300 es
2544                         precision highp float;
2545
2546
2547
2548                         uniform UniformBlock
2549                         {
2550                                 varying vec4 uniformMember;
2551                         } uniformBlock;
2552
2553                         void main()
2554                         {
2555                                 gl_Position = uniformBlock.uniformMember;
2556                         }
2557                 ""
2558
2559                 fragment ""
2560                         #version 300 es
2561                         precision highp float;
2562
2563                         layout(location=0) out vec4 o_color;
2564
2565                         void main()
2566                         {
2567                                 o_color = vec4(1.0);
2568                         }
2569                 ""
2570         end
2571         case member_varying_interface_qualifier_fragment
2572                 version 300 es
2573                 expect compile_fail
2574
2575                 vertex ""
2576                         #version 300 es
2577                         precision highp float;
2578
2579                         in vec4 a_pos;
2580
2581                         void main()
2582                         {
2583                                 gl_Position = a_pos;
2584                         }
2585                 ""
2586
2587                 fragment ""
2588                         #version 300 es
2589                         precision highp float;
2590
2591                         layout(location=0) out vec4 o_color;
2592
2593                         uniform UniformBlock
2594                         {
2595                                 varying vec4 uniformMember;
2596                         } uniformBlock;
2597
2598                         void main()
2599                         {
2600                                 o_color = uniformBlock.uniformMember;
2601                         }
2602                 ""
2603         end
2604         case conflicting_instance_names_vertex
2605                 version 300 es
2606                 expect compile_fail
2607
2608                 vertex ""
2609                         #version 300 es
2610                         precision highp float;
2611
2612
2613
2614                         uniform UniformBlockA
2615                         {
2616                                 vec4 uniformMember;
2617                         } uniformBlock;
2618
2619                         uniform UniformBlockB
2620                         {
2621                                 vec4 uniformMember;
2622                         } uniformBlock;
2623
2624                         void main()
2625                         {
2626                                 gl_Position = uniformBlock.uniformMember;
2627                         }
2628                 ""
2629
2630                 fragment ""
2631                         #version 300 es
2632                         precision highp float;
2633
2634                         layout(location=0) out vec4 o_color;
2635
2636                         void main()
2637                         {
2638                                 o_color = vec4(1.0);
2639                         }
2640                 ""
2641         end
2642         case conflicting_instance_names_fragment
2643                 version 300 es
2644                 expect compile_fail
2645
2646                 vertex ""
2647                         #version 300 es
2648                         precision highp float;
2649
2650                         in vec4 a_pos;
2651
2652                         void main()
2653                         {
2654                                 gl_Position = a_pos;
2655                         }
2656                 ""
2657
2658                 fragment ""
2659                         #version 300 es
2660                         precision highp float;
2661
2662                         layout(location=0) out vec4 o_color;
2663
2664                         uniform UniformBlockA
2665                         {
2666                                 vec4 uniformMember;
2667                         } uniformBlock;
2668
2669                         uniform UniformBlockB
2670                         {
2671                                 vec4 uniformMember;
2672                         } uniformBlock;
2673
2674                         void main()
2675                         {
2676                                 o_color = uniformBlock.uniformMember;
2677                         }
2678                 ""
2679         end
2680         case conflicting_function_and_instance_name_vertex
2681                 version 300 es
2682                 expect compile_fail
2683
2684                 vertex ""
2685                         #version 300 es
2686                         precision highp float;
2687
2688
2689
2690                         uniform UniformBlock
2691                         {
2692                                 vec4 uniformMember;
2693                         } uniformBlock;
2694
2695                         float uniformBlock (float x)
2696                         {
2697                                 return x;
2698                         }
2699
2700                         void main()
2701                         {
2702                                 gl_Position = uniformBlock.uniformMember;
2703                         }
2704                 ""
2705
2706                 fragment ""
2707                         #version 300 es
2708                         precision highp float;
2709
2710                         layout(location=0) out vec4 o_color;
2711
2712                         void main()
2713                         {
2714                                 o_color = vec4(1.0);
2715                         }
2716                 ""
2717         end
2718         case conflicting_function_and_instance_name_fragment
2719                 version 300 es
2720                 expect compile_fail
2721
2722                 vertex ""
2723                         #version 300 es
2724                         precision highp float;
2725
2726                         in vec4 a_pos;
2727
2728                         void main()
2729                         {
2730                                 gl_Position = a_pos;
2731                         }
2732                 ""
2733
2734                 fragment ""
2735                         #version 300 es
2736                         precision highp float;
2737
2738                         layout(location=0) out vec4 o_color;
2739
2740                         uniform UniformBlock
2741                         {
2742                                 vec4 uniformMember;
2743                         } uniformBlock;
2744
2745                         float uniformBlock (float x)
2746                         {
2747                                 return x;
2748                         }
2749
2750                         void main()
2751                         {
2752                                 o_color = uniformBlock.uniformMember;
2753                         }
2754                 ""
2755         end
2756         case conflicting_function_and_block_name_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 UniformBlock
2767                         {
2768                                 vec4 uniformMember;
2769                         } uniformBlock;
2770
2771                         float UniformBlock (float x)
2772                         {
2773                                 return x;
2774                         }
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_function_and_block_name_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 UniformBlock
2817                         {
2818                                 vec4 uniformMember;
2819                         } uniformBlock;
2820
2821                         float UniformBlock (float x)
2822                         {
2823                                 return x;
2824                         }
2825
2826                         void main()
2827                         {
2828                                 o_color = uniformBlock.uniformMember;
2829                         }
2830                 ""
2831         end
2832         case conflicting_uniform_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                         uniform vec4 uniformBlock;
2848
2849                         void main()
2850                         {
2851                                 gl_Position = uniformBlock.uniformMember;
2852                         }
2853                 ""
2854
2855                 fragment ""
2856                         #version 300 es
2857                         precision highp float;
2858
2859                         layout(location=0) out vec4 o_color;
2860
2861                         void main()
2862                         {
2863                                 o_color = vec4(1.0);
2864                         }
2865                 ""
2866         end
2867         case conflicting_uniform_and_instance_name_fragment
2868                 version 300 es
2869                 expect compile_fail
2870
2871                 vertex ""
2872                         #version 300 es
2873                         precision highp float;
2874
2875                         in vec4 a_pos;
2876
2877                         void main()
2878                         {
2879                                 gl_Position = a_pos;
2880                         }
2881                 ""
2882
2883                 fragment ""
2884                         #version 300 es
2885                         precision highp float;
2886
2887                         layout(location=0) out vec4 o_color;
2888
2889                         uniform UniformBlock
2890                         {
2891                                 vec4 uniformMember;
2892                         } uniformBlock;
2893
2894                         uniform vec4 uniformBlock;
2895
2896                         void main()
2897                         {
2898                                 o_color = uniformBlock.uniformMember;
2899                         }
2900                 ""
2901         end
2902         case conflicting_in_and_instance_name_vertex
2903                 version 300 es
2904                 expect compile_fail
2905
2906                 vertex ""
2907                         #version 300 es
2908                         precision highp float;
2909
2910
2911
2912                         uniform UniformBlock
2913                         {
2914                                 vec4 uniformMember;
2915                         } uniformBlock;
2916
2917                         in vec4 uniformBlock;
2918
2919                         void main()
2920                         {
2921                                 gl_Position = uniformBlock.uniformMember;
2922                         }
2923                 ""
2924
2925                 fragment ""
2926                         #version 300 es
2927                         precision highp float;
2928
2929                         layout(location=0) out vec4 o_color;
2930
2931                         void main()
2932                         {
2933                                 o_color = vec4(1.0);
2934                         }
2935                 ""
2936         end
2937         case conflicting_in_and_instance_name_fragment
2938                 version 300 es
2939                 expect compile_fail
2940
2941                 vertex ""
2942                         #version 300 es
2943                         precision highp float;
2944
2945                         in vec4 a_pos;
2946
2947                         void main()
2948                         {
2949                                 gl_Position = a_pos;
2950                         }
2951                 ""
2952
2953                 fragment ""
2954                         #version 300 es
2955                         precision highp float;
2956
2957                         layout(location=0) out vec4 o_color;
2958
2959                         uniform UniformBlock
2960                         {
2961                                 vec4 uniformMember;
2962                         } uniformBlock;
2963
2964                         in vec4 uniformBlock;
2965
2966                         void main()
2967                         {
2968                                 o_color = uniformBlock.uniformMember;
2969                         }
2970                 ""
2971         end
2972         case conflicting_out_and_instance_name_vertex
2973                 version 300 es
2974                 expect compile_fail
2975
2976                 vertex ""
2977                         #version 300 es
2978                         precision highp float;
2979
2980
2981
2982                         uniform UniformBlock
2983                         {
2984                                 vec4 uniformMember;
2985                         } uniformBlock;
2986
2987                         out vec4 uniformBlock;
2988
2989                         void main()
2990                         {
2991                                 gl_Position = uniformBlock.uniformMember;
2992                         }
2993                 ""
2994
2995                 fragment ""
2996                         #version 300 es
2997                         precision highp float;
2998
2999                         layout(location=0) out vec4 o_color;
3000
3001                         void main()
3002                         {
3003                                 o_color = vec4(1.0);
3004                         }
3005                 ""
3006         end
3007         case conflicting_out_and_instance_name_fragment
3008                 version 300 es
3009                 expect compile_fail
3010
3011                 vertex ""
3012                         #version 300 es
3013                         precision highp float;
3014
3015                         in vec4 a_pos;
3016
3017                         void main()
3018                         {
3019                                 gl_Position = a_pos;
3020                         }
3021                 ""
3022
3023                 fragment ""
3024                         #version 300 es
3025                         precision highp float;
3026
3027                         layout(location=0) out vec4 o_color;
3028
3029                         uniform UniformBlock
3030                         {
3031                                 vec4 uniformMember;
3032                         } uniformBlock;
3033
3034                         out vec4 uniformBlock;
3035
3036                         void main()
3037                         {
3038                                 o_color = uniformBlock.uniformMember;
3039                         }
3040                 ""
3041         end
3042         case conflicting_uniform_and_block_name_vertex
3043                 version 300 es
3044                 expect compile_fail
3045
3046                 vertex ""
3047                         #version 300 es
3048                         precision highp float;
3049
3050
3051
3052                         uniform UniformBlock
3053                         {
3054                                 vec4 uniformMember;
3055                         } uniformBlock;
3056
3057                         uniform vec4 UniformBlock;
3058
3059                         void main()
3060                         {
3061                                 gl_Position = uniformBlock.uniformMember;
3062                         }
3063                 ""
3064
3065                 fragment ""
3066                         #version 300 es
3067                         precision highp float;
3068
3069                         layout(location=0) out vec4 o_color;
3070
3071                         void main()
3072                         {
3073                                 o_color = vec4(1.0);
3074                         }
3075                 ""
3076         end
3077         case conflicting_uniform_and_block_name_fragment
3078                 version 300 es
3079                 expect compile_fail
3080
3081                 vertex ""
3082                         #version 300 es
3083                         precision highp float;
3084
3085                         in vec4 a_pos;
3086
3087                         void main()
3088                         {
3089                                 gl_Position = a_pos;
3090                         }
3091                 ""
3092
3093                 fragment ""
3094                         #version 300 es
3095                         precision highp float;
3096
3097                         layout(location=0) out vec4 o_color;
3098
3099                         uniform UniformBlock
3100                         {
3101                                 vec4 uniformMember;
3102                         } uniformBlock;
3103
3104                         uniform vec4 UniformBlock;
3105
3106                         void main()
3107                         {
3108                                 o_color = uniformBlock.uniformMember;
3109                         }
3110                 ""
3111         end
3112         case conflicting_in_and_block_name_vertex
3113                 version 300 es
3114                 expect compile_fail
3115
3116                 vertex ""
3117                         #version 300 es
3118                         precision highp float;
3119
3120
3121
3122                         uniform UniformBlock
3123                         {
3124                                 vec4 uniformMember;
3125                         } uniformBlock;
3126
3127                         in vec4 UniformBlock;
3128
3129                         void main()
3130                         {
3131                                 gl_Position = uniformBlock.uniformMember;
3132                         }
3133                 ""
3134
3135                 fragment ""
3136                         #version 300 es
3137                         precision highp float;
3138
3139                         layout(location=0) out vec4 o_color;
3140
3141                         void main()
3142                         {
3143                                 o_color = vec4(1.0);
3144                         }
3145                 ""
3146         end
3147         case conflicting_in_and_block_name_fragment
3148                 version 300 es
3149                 expect compile_fail
3150
3151                 vertex ""
3152                         #version 300 es
3153                         precision highp float;
3154
3155                         in vec4 a_pos;
3156
3157                         void main()
3158                         {
3159                                 gl_Position = a_pos;
3160                         }
3161                 ""
3162
3163                 fragment ""
3164                         #version 300 es
3165                         precision highp float;
3166
3167                         layout(location=0) out vec4 o_color;
3168
3169                         uniform UniformBlock
3170                         {
3171                                 vec4 uniformMember;
3172                         } uniformBlock;
3173
3174                         in vec4 UniformBlock;
3175
3176                         void main()
3177                         {
3178                                 o_color = uniformBlock.uniformMember;
3179                         }
3180                 ""
3181         end
3182         case conflicting_out_and_block_name_vertex
3183                 version 300 es
3184                 expect compile_fail
3185
3186                 vertex ""
3187                         #version 300 es
3188                         precision highp float;
3189
3190
3191
3192                         uniform UniformBlock
3193                         {
3194                                 vec4 uniformMember;
3195                         } uniformBlock;
3196
3197                         out vec4 UniformBlock;
3198
3199                         void main()
3200                         {
3201                                 gl_Position = uniformBlock.uniformMember;
3202                         }
3203                 ""
3204
3205                 fragment ""
3206                         #version 300 es
3207                         precision highp float;
3208
3209                         layout(location=0) out vec4 o_color;
3210
3211                         void main()
3212                         {
3213                                 o_color = vec4(1.0);
3214                         }
3215                 ""
3216         end
3217         case conflicting_out_and_block_name_fragment
3218                 version 300 es
3219                 expect compile_fail
3220
3221                 vertex ""
3222                         #version 300 es
3223                         precision highp float;
3224
3225                         in vec4 a_pos;
3226
3227                         void main()
3228                         {
3229                                 gl_Position = a_pos;
3230                         }
3231                 ""
3232
3233                 fragment ""
3234                         #version 300 es
3235                         precision highp float;
3236
3237                         layout(location=0) out vec4 o_color;
3238
3239                         uniform UniformBlock
3240                         {
3241                                 vec4 uniformMember;
3242                         } uniformBlock;
3243
3244                         out vec4 UniformBlock;
3245
3246                         void main()
3247                         {
3248                                 o_color = uniformBlock.uniformMember;
3249                         }
3250                 ""
3251         end
3252         case matching_instance_and_block_name_vertex
3253                 version 300 es
3254                 expect compile_fail
3255
3256                 vertex ""
3257                         #version 300 es
3258                         precision highp float;
3259
3260
3261
3262                         uniform UniformBlock
3263                         {
3264                                 vec4 uniformMember;
3265                         } UniformBlock;
3266
3267                         void main()
3268                         {
3269                                 gl_Position = UniformBlock.uniformMember;
3270                         }
3271                 ""
3272
3273                 fragment ""
3274                         #version 300 es
3275                         precision highp float;
3276
3277                         layout(location=0) out vec4 o_color;
3278
3279                         void main()
3280                         {
3281                                 o_color = vec4(1.0);
3282                         }
3283                 ""
3284         end
3285         case matching_instance_and_block_name_fragment
3286                 version 300 es
3287                 expect compile_fail
3288
3289                 vertex ""
3290                         #version 300 es
3291                         precision highp float;
3292
3293                         in vec4 a_pos;
3294
3295                         void main()
3296                         {
3297                                 gl_Position = a_pos;
3298                         }
3299                 ""
3300
3301                 fragment ""
3302                         #version 300 es
3303                         precision highp float;
3304
3305                         layout(location=0) out vec4 o_color;
3306
3307                         uniform UniformBlock
3308                         {
3309                                 vec4 uniformMember;
3310                         } UniformBlock;
3311
3312                         void main()
3313                         {
3314                                 o_color = UniformBlock.uniformMember;
3315                         }
3316                 ""
3317         end
3318         case reference_using_block_name_vertex
3319                 version 300 es
3320                 expect compile_fail
3321
3322                 vertex ""
3323                         #version 300 es
3324                         precision highp float;
3325
3326
3327
3328                         uniform UniformBlock
3329                         {
3330                                 vec4 uniformMember;
3331                         } uniformBlock;
3332
3333                         void main()
3334                         {
3335                                 gl_Position = UniformBlock.uniformMember;
3336                         }
3337                 ""
3338
3339                 fragment ""
3340                         #version 300 es
3341                         precision highp float;
3342
3343                         layout(location=0) out vec4 o_color;
3344
3345                         void main()
3346                         {
3347                                 o_color = vec4(1.0);
3348                         }
3349                 ""
3350         end
3351         case reference_using_block_name_fragment
3352                 version 300 es
3353                 expect compile_fail
3354
3355                 vertex ""
3356                         #version 300 es
3357                         precision highp float;
3358
3359                         in vec4 a_pos;
3360
3361                         void main()
3362                         {
3363                                 gl_Position = a_pos;
3364                         }
3365                 ""
3366
3367                 fragment ""
3368                         #version 300 es
3369                         precision highp float;
3370
3371                         layout(location=0) out vec4 o_color;
3372
3373                         uniform UniformBlock
3374                         {
3375                                 vec4 uniformMember;
3376                         } uniformBlock;
3377
3378                         void main()
3379                         {
3380                                 o_color = UniformBlock.uniformMember;
3381                         }
3382                 ""
3383         end
3384         case empty_block_vertex
3385                 version 300 es
3386                 expect compile_fail
3387
3388                 vertex ""
3389                         #version 300 es
3390                         precision highp float;
3391
3392
3393
3394                         uniform UniformBlock
3395                         {
3396                         } uniformBlock;
3397
3398                         void main()
3399                         {
3400                                 gl_Position = vec4(0.0);
3401                         }
3402                 ""
3403
3404                 fragment ""
3405                         #version 300 es
3406                         precision highp float;
3407
3408                         layout(location=0) out vec4 o_color;
3409
3410                         void main()
3411                         {
3412                                 o_color = vec4(1.0);
3413                         }
3414                 ""
3415         end
3416         case empty_block_fragment
3417                 version 300 es
3418                 expect compile_fail
3419
3420                 vertex ""
3421                         #version 300 es
3422                         precision highp float;
3423
3424                         in vec4 a_pos;
3425
3426                         void main()
3427                         {
3428                                 gl_Position = a_pos;
3429                         }
3430                 ""
3431
3432                 fragment ""
3433                         #version 300 es
3434                         precision highp float;
3435
3436                         layout(location=0) out vec4 o_color;
3437
3438                         uniform UniformBlock
3439                         {
3440                         } uniformBlock;
3441
3442                         void main()
3443                         {
3444                                 o_color = vec4(0.0);
3445                         }
3446                 ""
3447         end
3448         case empty_layout_vertex
3449                 version 300 es
3450                 expect compile_fail
3451
3452                 vertex ""
3453                         #version 300 es
3454                         precision highp float;
3455
3456
3457
3458                         layout() uniform UniformBlock
3459                         {
3460                                 vec4 uniformMember;
3461                         } uniformBlock;
3462
3463                         void main()
3464                         {
3465                                 gl_Position = uniformBlock.uniformMember;
3466                         }
3467                 ""
3468
3469                 fragment ""
3470                         #version 300 es
3471                         precision highp float;
3472
3473                         layout(location=0) out vec4 o_color;
3474
3475                         void main()
3476                         {
3477                                 o_color = vec4(1.0);
3478                         }
3479                 ""
3480         end
3481         case empty_layout_fragment
3482                 version 300 es
3483                 expect compile_fail
3484
3485                 vertex ""
3486                         #version 300 es
3487                         precision highp float;
3488
3489                         in vec4 a_pos;
3490
3491                         void main()
3492                         {
3493                                 gl_Position = a_pos;
3494                         }
3495                 ""
3496
3497                 fragment ""
3498                         #version 300 es
3499                         precision highp float;
3500
3501                         layout(location=0) out vec4 o_color;
3502
3503                         layout() uniform UniformBlock
3504                         {
3505                                 vec4 uniformMember;
3506                         } uniformBlock;
3507
3508                         void main()
3509                         {
3510                                 o_color = uniformBlock.uniformMember;
3511                         }
3512                 ""
3513         end
3514         case empty_member_layout_vertex
3515                 version 300 es
3516                 expect compile_fail
3517
3518                 vertex ""
3519                         #version 300 es
3520                         precision highp float;
3521
3522
3523
3524                         uniform UniformBlock
3525                         {
3526                                 layout() vec4 uniformMember;
3527                         } uniformBlock;
3528
3529                         void main()
3530                         {
3531                                 gl_Position = uniformBlock.uniformMember;
3532                         }
3533                 ""
3534
3535                 fragment ""
3536                         #version 300 es
3537                         precision highp float;
3538
3539                         layout(location=0) out vec4 o_color;
3540
3541                         void main()
3542                         {
3543                                 o_color = vec4(1.0);
3544                         }
3545                 ""
3546         end
3547         case empty_member_layout_fragment
3548                 version 300 es
3549                 expect compile_fail
3550
3551                 vertex ""
3552                         #version 300 es
3553                         precision highp float;
3554
3555                         in vec4 a_pos;
3556
3557                         void main()
3558                         {
3559                                 gl_Position = a_pos;
3560                         }
3561                 ""
3562
3563                 fragment ""
3564                         #version 300 es
3565                         precision highp float;
3566
3567                         layout(location=0) out vec4 o_color;
3568
3569                         uniform UniformBlock
3570                         {
3571                                 layout() vec4 uniformMember;
3572                         } uniformBlock;
3573
3574                         void main()
3575                         {
3576                                 o_color = uniformBlock.uniformMember;
3577                         }
3578                 ""
3579         end
3580         case empty_global_layout_vertex
3581                 version 300 es
3582                 expect compile_fail
3583
3584                 vertex ""
3585                         #version 300 es
3586                         precision highp float;
3587
3588                         layout() uniform;
3589
3590
3591
3592                         uniform UniformBlock
3593                         {
3594                                 vec4 uniformMember;
3595                         } uniformBlock;
3596
3597                         void main()
3598                         {
3599                                 gl_Position = uniformBlock.uniformMember;
3600                         }
3601                 ""
3602
3603                 fragment ""
3604                         #version 300 es
3605                         precision highp float;
3606
3607                         layout(location=0) out vec4 o_color;
3608
3609                         void main()
3610                         {
3611                                 o_color = vec4(1.0);
3612                         }
3613                 ""
3614         end
3615         case empty_global_layout_fragment
3616                 version 300 es
3617                 expect compile_fail
3618
3619                 vertex ""
3620                         #version 300 es
3621                         precision highp float;
3622
3623                         in vec4 a_pos;
3624
3625                         void main()
3626                         {
3627                                 gl_Position = a_pos;
3628                         }
3629                 ""
3630
3631                 fragment ""
3632                         #version 300 es
3633                         precision highp float;
3634
3635                         layout() uniform;
3636
3637                         layout(location=0) out vec4 o_color;
3638
3639                         uniform UniformBlock
3640                         {
3641                                 vec4 uniformMember;
3642                         } uniformBlock;
3643
3644                         void main()
3645                         {
3646                                 o_color = uniformBlock.uniformMember;
3647                         }
3648                 ""
3649         end
3650         case structure_definition_vertex
3651                 version 300 es
3652                 expect compile_fail
3653
3654                 vertex ""
3655                         #version 300 es
3656                         precision highp float;
3657
3658
3659
3660                         uniform UniformBlock
3661                         {
3662                                 struct A
3663                                 {
3664                                         vec4 uniformMember;
3665                                 } a;
3666                         } uniformBlock;
3667
3668                         void main()
3669                         {
3670                                 gl_Position = uniformBlock.a.uniformMember;
3671                         }
3672                 ""
3673
3674                 fragment ""
3675                         #version 300 es
3676                         precision highp float;
3677
3678                         layout(location=0) out vec4 o_color;
3679
3680                         void main()
3681                         {
3682                                 o_color = vec4(1.0);
3683                         }
3684                 ""
3685         end
3686         case structure_definition_fragment
3687                 version 300 es
3688                 expect compile_fail
3689
3690                 vertex ""
3691                         #version 300 es
3692                         precision highp float;
3693
3694                         in vec4 a_pos;
3695
3696                         void main()
3697                         {
3698                                 gl_Position = a_pos;
3699                         }
3700                 ""
3701
3702                 fragment ""
3703                         #version 300 es
3704                         precision highp float;
3705
3706                         layout(location=0) out vec4 o_color;
3707
3708                         uniform UniformBlock
3709                         {
3710                                 struct A
3711                                 {
3712                                         vec4 uniformMember;
3713                                 } a;
3714                         } uniformBlock;
3715
3716                         void main()
3717                         {
3718                                 o_color = uniformBlock.a.uniformMember;
3719                         }
3720                 ""
3721         end
3722         case member_layout_shared_vertex
3723                 version 300 es
3724                 expect compile_fail
3725
3726                 vertex ""
3727                         #version 300 es
3728                         precision highp float;
3729
3730
3731
3732                         uniform UniformBlock
3733                         {
3734                                 layout(shared) vec4 uniformMember;
3735                         } uniformBlock;
3736
3737                         void main()
3738                         {
3739                                 gl_Position = uniformBlock.uniformMember;
3740                         }
3741                 ""
3742
3743                 fragment ""
3744                         #version 300 es
3745                         precision highp float;
3746
3747                         layout(location=0) out vec4 o_color;
3748
3749                         void main()
3750                         {
3751                                 o_color = vec4(1.0);
3752                         }
3753                 ""
3754         end
3755         case member_layout_shared_fragment
3756                 version 300 es
3757                 expect compile_fail
3758
3759                 vertex ""
3760                         #version 300 es
3761                         precision highp float;
3762
3763                         in vec4 a_pos;
3764
3765                         void main()
3766                         {
3767                                 gl_Position = a_pos;
3768                         }
3769                 ""
3770
3771                 fragment ""
3772                         #version 300 es
3773                         precision highp float;
3774
3775                         layout(location=0) out vec4 o_color;
3776
3777                         uniform UniformBlock
3778                         {
3779                                 layout(shared) vec4 uniformMember;
3780                         } uniformBlock;
3781
3782                         void main()
3783                         {
3784                                 o_color = uniformBlock.uniformMember;
3785                         }
3786                 ""
3787         end
3788         case member_layout_packed_vertex
3789                 version 300 es
3790                 expect compile_fail
3791
3792                 vertex ""
3793                         #version 300 es
3794                         precision highp float;
3795
3796
3797
3798                         uniform UniformBlock
3799                         {
3800                                 layout(packed) vec4 uniformMember;
3801                         } uniformBlock;
3802
3803                         void main()
3804                         {
3805                                 gl_Position = uniformBlock.uniformMember;
3806                         }
3807                 ""
3808
3809                 fragment ""
3810                         #version 300 es
3811                         precision highp float;
3812
3813                         layout(location=0) out vec4 o_color;
3814
3815                         void main()
3816                         {
3817                                 o_color = vec4(1.0);
3818                         }
3819                 ""
3820         end
3821         case member_layout_packed_fragment
3822                 version 300 es
3823                 expect compile_fail
3824
3825                 vertex ""
3826                         #version 300 es
3827                         precision highp float;
3828
3829                         in vec4 a_pos;
3830
3831                         void main()
3832                         {
3833                                 gl_Position = a_pos;
3834                         }
3835                 ""
3836
3837                 fragment ""
3838                         #version 300 es
3839                         precision highp float;
3840
3841                         layout(location=0) out vec4 o_color;
3842
3843                         uniform UniformBlock
3844                         {
3845                                 layout(packed) vec4 uniformMember;
3846                         } uniformBlock;
3847
3848                         void main()
3849                         {
3850                                 o_color = uniformBlock.uniformMember;
3851                         }
3852                 ""
3853         end
3854         case member_layout_std140_vertex
3855                 version 300 es
3856                 expect compile_fail
3857
3858                 vertex ""
3859                         #version 300 es
3860                         precision highp float;
3861
3862
3863
3864                         uniform UniformBlock
3865                         {
3866                                 layout(std140) vec4 uniformMember;
3867                         } uniformBlock;
3868
3869                         void main()
3870                         {
3871                                 gl_Position = uniformBlock.uniformMember;
3872                         }
3873                 ""
3874
3875                 fragment ""
3876                         #version 300 es
3877                         precision highp float;
3878
3879                         layout(location=0) out vec4 o_color;
3880
3881                         void main()
3882                         {
3883                                 o_color = vec4(1.0);
3884                         }
3885                 ""
3886         end
3887         case member_layout_std140_fragment
3888                 version 300 es
3889                 expect compile_fail
3890
3891                 vertex ""
3892                         #version 300 es
3893                         precision highp float;
3894
3895                         in vec4 a_pos;
3896
3897                         void main()
3898                         {
3899                                 gl_Position = a_pos;
3900                         }
3901                 ""
3902
3903                 fragment ""
3904                         #version 300 es
3905                         precision highp float;
3906
3907                         layout(location=0) out vec4 o_color;
3908
3909                         uniform UniformBlock
3910                         {
3911                                 layout(std140) vec4 uniformMember;
3912                         } uniformBlock;
3913
3914                         void main()
3915                         {
3916                                 o_color = uniformBlock.uniformMember;
3917                         }
3918                 ""
3919         end
3920         case missing_block_name_vertex
3921                 version 300 es
3922                 expect compile_fail
3923
3924                 vertex ""
3925                         #version 300 es
3926                         precision highp float;
3927
3928
3929
3930                         uniform
3931                         {
3932                                 vec4 uniformMember;
3933                         } uniformBlock;
3934
3935                         void main()
3936                         {
3937                                 gl_Position = uniformBlock.uniformMember;
3938                         }
3939                 ""
3940
3941                 fragment ""
3942                         #version 300 es
3943                         precision highp float;
3944
3945                         layout(location=0) out vec4 o_color;
3946
3947                         void main()
3948                         {
3949                                 o_color = vec4(1.0);
3950                         }
3951                 ""
3952         end
3953         case missing_block_name_fragment
3954                 version 300 es
3955                 expect compile_fail
3956
3957                 vertex ""
3958                         #version 300 es
3959                         precision highp float;
3960
3961                         in vec4 a_pos;
3962
3963                         void main()
3964                         {
3965                                 gl_Position = a_pos;
3966                         }
3967                 ""
3968
3969                 fragment ""
3970                         #version 300 es
3971                         precision highp float;
3972
3973                         layout(location=0) out vec4 o_color;
3974
3975                         uniform
3976                         {
3977                                 vec4 uniformMember;
3978                         } uniformBlock;
3979
3980                         void main()
3981                         {
3982                                 o_color = uniformBlock.uniformMember;
3983                         }
3984                 ""
3985         end
3986         case invalid_number_block_name_vertex
3987                 version 300 es
3988                 expect compile_fail
3989
3990                 vertex ""
3991                         #version 300 es
3992                         precision highp float;
3993
3994
3995
3996                         uniform 0UniformBlock
3997                         {
3998                                 vec4 uniformMember;
3999                         } uniformBlock;
4000
4001                         void main()
4002                         {
4003                                 gl_Position = uniformBlock.uniformMember;
4004                         }
4005                 ""
4006
4007                 fragment ""
4008                         #version 300 es
4009                         precision highp float;
4010
4011                         layout(location=0) out vec4 o_color;
4012
4013                         void main()
4014                         {
4015                                 o_color = vec4(1.0);
4016                         }
4017                 ""
4018         end
4019         case invalid_number_block_name_fragment
4020                 version 300 es
4021                 expect compile_fail
4022
4023                 vertex ""
4024                         #version 300 es
4025                         precision highp float;
4026
4027                         in vec4 a_pos;
4028
4029                         void main()
4030                         {
4031                                 gl_Position = a_pos;
4032                         }
4033                 ""
4034
4035                 fragment ""
4036                         #version 300 es
4037                         precision highp float;
4038
4039                         layout(location=0) out vec4 o_color;
4040
4041                         uniform 0UniformBlock
4042                         {
4043                                 vec4 uniformMember;
4044                         } uniformBlock;
4045
4046                         void main()
4047                         {
4048                                 o_color = uniformBlock.uniformMember;
4049                         }
4050                 ""
4051         end
4052         case invalid_hash_block_name_vertex
4053                 version 300 es
4054                 expect compile_fail
4055
4056                 vertex ""
4057                         #version 300 es
4058                         precision highp float;
4059
4060
4061
4062                         uniform #UniformBlock
4063                         {
4064                                 vec4 uniformMember;
4065                         } uniformBlock;
4066
4067                         void main()
4068                         {
4069                                 gl_Position = uniformBlock.uniformMember;
4070                         }
4071                 ""
4072
4073                 fragment ""
4074                         #version 300 es
4075                         precision highp float;
4076
4077                         layout(location=0) out vec4 o_color;
4078
4079                         void main()
4080                         {
4081                                 o_color = vec4(1.0);
4082                         }
4083                 ""
4084         end
4085         case invalid_hash_block_name_fragment
4086                 version 300 es
4087                 expect compile_fail
4088
4089                 vertex ""
4090                         #version 300 es
4091                         precision highp float;
4092
4093                         in vec4 a_pos;
4094
4095                         void main()
4096                         {
4097                                 gl_Position = a_pos;
4098                         }
4099                 ""
4100
4101                 fragment ""
4102                         #version 300 es
4103                         precision highp float;
4104
4105                         layout(location=0) out vec4 o_color;
4106
4107                         uniform #UniformBlock
4108                         {
4109                                 vec4 uniformMember;
4110                         } uniformBlock;
4111
4112                         void main()
4113                         {
4114                                 o_color = uniformBlock.uniformMember;
4115                         }
4116                 ""
4117         end
4118         case invalid_dollar_block_name_vertex
4119                 version 300 es
4120                 expect compile_fail
4121
4122                 vertex ""
4123                         #version 300 es
4124                         precision highp float;
4125
4126
4127
4128                         uniform $UniformBlock
4129                         {
4130                                 vec4 uniformMember;
4131                         } uniformBlock;
4132
4133                         void main()
4134                         {
4135                                 gl_Position = uniformBlock.uniformMember;
4136                         }
4137                 ""
4138
4139                 fragment ""
4140                         #version 300 es
4141                         precision highp float;
4142
4143                         layout(location=0) out vec4 o_color;
4144
4145                         void main()
4146                         {
4147                                 o_color = vec4(1.0);
4148                         }
4149                 ""
4150         end
4151         case invalid_dollar_block_name_fragment
4152                 version 300 es
4153                 expect compile_fail
4154
4155                 vertex ""
4156                         #version 300 es
4157                         precision highp float;
4158
4159                         in vec4 a_pos;
4160
4161                         void main()
4162                         {
4163                                 gl_Position = a_pos;
4164                         }
4165                 ""
4166
4167                 fragment ""
4168                         #version 300 es
4169                         precision highp float;
4170
4171                         layout(location=0) out vec4 o_color;
4172
4173                         uniform $UniformBlock
4174                         {
4175                                 vec4 uniformMember;
4176                         } uniformBlock;
4177
4178                         void main()
4179                         {
4180                                 o_color = uniformBlock.uniformMember;
4181                         }
4182                 ""
4183         end
4184         case invalid_identifier_block_name_vertex
4185                 version 300 es
4186                 expect compile_fail
4187
4188                 vertex ""
4189                         #version 300 es
4190                         precision highp float;
4191
4192
4193
4194                         uniform gl_UniformBlock
4195                         {
4196                                 vec4 uniformMember;
4197                         } uniformBlock;
4198
4199                         void main()
4200                         {
4201                                 gl_Position = uniformBlock.uniformMember;
4202                         }
4203                 ""
4204
4205                 fragment ""
4206                         #version 300 es
4207                         precision highp float;
4208
4209                         layout(location=0) out vec4 o_color;
4210
4211                         void main()
4212                         {
4213                                 o_color = vec4(1.0);
4214                         }
4215                 ""
4216         end
4217         case invalid_identifier_block_name_fragment
4218                 version 300 es
4219                 expect compile_fail
4220
4221                 vertex ""
4222                         #version 300 es
4223                         precision highp float;
4224
4225                         in vec4 a_pos;
4226
4227                         void main()
4228                         {
4229                                 gl_Position = a_pos;
4230                         }
4231                 ""
4232
4233                 fragment ""
4234                         #version 300 es
4235                         precision highp float;
4236
4237                         layout(location=0) out vec4 o_color;
4238
4239                         uniform gl_UniformBlock
4240                         {
4241                                 vec4 uniformMember;
4242                         } uniformBlock;
4243
4244                         void main()
4245                         {
4246                                 o_color = uniformBlock.uniformMember;
4247                         }
4248                 ""
4249         end
4250         case too_long_block_name_vertex
4251                 version 300 es
4252                 expect compile_fail
4253
4254                 vertex ""
4255                         #version 300 es
4256                         precision highp float;
4257
4258
4259
4260                         // Total of 1025 characters
4261                         uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4262                         {
4263                                 vec4 uniformMember;
4264                         } uniformBlock;
4265
4266                         void main()
4267                         {
4268                                 gl_Position = uniformBlock.uniformMember;
4269                         }
4270                 ""
4271
4272                 fragment ""
4273                         #version 300 es
4274                         precision highp float;
4275
4276                         layout(location=0) out vec4 o_color;
4277
4278                         void main()
4279                         {
4280                                 o_color = vec4(1.0);
4281                         }
4282                 ""
4283         end
4284         case too_long_block_name_fragment
4285                 version 300 es
4286                 expect compile_fail
4287
4288                 vertex ""
4289                         #version 300 es
4290                         precision highp float;
4291
4292                         in vec4 a_pos;
4293
4294                         void main()
4295                         {
4296                                 gl_Position = a_pos;
4297                         }
4298                 ""
4299
4300                 fragment ""
4301                         #version 300 es
4302                         precision highp float;
4303
4304                         layout(location=0) out vec4 o_color;
4305
4306                         // Total of 1025 characters
4307                         uniform aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4308                         {
4309                                 vec4 uniformMember;
4310                         } uniformBlock;
4311
4312                         void main()
4313                         {
4314                                 o_color = uniformBlock.uniformMember;
4315                         }
4316                 ""
4317         end
4318         case invalid_number_instance_name_vertex
4319                 version 300 es
4320                 expect compile_fail
4321
4322                 vertex ""
4323                         #version 300 es
4324                         precision highp float;
4325
4326
4327
4328                         uniform UniformInstance
4329                         {
4330                                 vec4 uniformMember;
4331                         } 0uniformBlock;
4332
4333                         void main()
4334                         {
4335                                 gl_Position = 0uniformBlock.uniformMember;
4336                         }
4337                 ""
4338
4339                 fragment ""
4340                         #version 300 es
4341                         precision highp float;
4342
4343                         layout(location=0) out vec4 o_color;
4344
4345                         void main()
4346                         {
4347                                 o_color = vec4(1.0);
4348                         }
4349                 ""
4350         end
4351         case invalid_number_instance_name_fragment
4352                 version 300 es
4353                 expect compile_fail
4354
4355                 vertex ""
4356                         #version 300 es
4357                         precision highp float;
4358
4359                         in vec4 a_pos;
4360
4361                         void main()
4362                         {
4363                                 gl_Position = a_pos;
4364                         }
4365                 ""
4366
4367                 fragment ""
4368                         #version 300 es
4369                         precision highp float;
4370
4371                         layout(location=0) out vec4 o_color;
4372
4373                         uniform UniformInstance
4374                         {
4375                                 vec4 uniformMember;
4376                         } 0uniformBlock;
4377
4378                         void main()
4379                         {
4380                                 o_color = 0uniformBlock.uniformMember;
4381                         }
4382                 ""
4383         end
4384         case invalid_hash_instance_name_vertex
4385                 version 300 es
4386                 expect compile_fail
4387
4388                 vertex ""
4389                         #version 300 es
4390                         precision highp float;
4391
4392
4393
4394                         uniform UniformInstance
4395                         {
4396                                 vec4 uniformMember;
4397                         } $uniformBlock;
4398
4399                         void main()
4400                         {
4401                                 gl_Position = $uniformBlock.uniformMember;
4402                         }
4403                 ""
4404
4405                 fragment ""
4406                         #version 300 es
4407                         precision highp float;
4408
4409                         layout(location=0) out vec4 o_color;
4410
4411                         void main()
4412                         {
4413                                 o_color = vec4(1.0);
4414                         }
4415                 ""
4416         end
4417         case invalid_hash_instance_name_fragment
4418                 version 300 es
4419                 expect compile_fail
4420
4421                 vertex ""
4422                         #version 300 es
4423                         precision highp float;
4424
4425                         in vec4 a_pos;
4426
4427                         void main()
4428                         {
4429                                 gl_Position = a_pos;
4430                         }
4431                 ""
4432
4433                 fragment ""
4434                         #version 300 es
4435                         precision highp float;
4436
4437                         layout(location=0) out vec4 o_color;
4438
4439                         uniform UniformInstance
4440                         {
4441                                 vec4 uniformMember;
4442                         } $uniformBlock;
4443
4444                         void main()
4445                         {
4446                                 o_color = $uniformBlock.uniformMember;
4447                         }
4448                 ""
4449         end
4450         case invalid_dollar_instance_name_vertex
4451                 version 300 es
4452                 expect compile_fail
4453
4454                 vertex ""
4455                         #version 300 es
4456                         precision highp float;
4457
4458
4459
4460                         uniform UniformInstance
4461                         {
4462                                 vec4 uniformMember;
4463                         } $uniformBlock;
4464
4465                         void main()
4466                         {
4467                                 gl_Position = $uniformBlock.uniformMember;
4468                         }
4469                 ""
4470
4471                 fragment ""
4472                         #version 300 es
4473                         precision highp float;
4474
4475                         layout(location=0) out vec4 o_color;
4476
4477                         void main()
4478                         {
4479                                 o_color = vec4(1.0);
4480                         }
4481                 ""
4482         end
4483         case invalid_dollar_instance_name_fragment
4484                 version 300 es
4485                 expect compile_fail
4486
4487                 vertex ""
4488                         #version 300 es
4489                         precision highp float;
4490
4491                         in vec4 a_pos;
4492
4493                         void main()
4494                         {
4495                                 gl_Position = a_pos;
4496                         }
4497                 ""
4498
4499                 fragment ""
4500                         #version 300 es
4501                         precision highp float;
4502
4503                         layout(location=0) out vec4 o_color;
4504
4505                         uniform UniformInstance
4506                         {
4507                                 vec4 uniformMember;
4508                         } $uniformBlock;
4509
4510                         void main()
4511                         {
4512                                 o_color = $uniformBlock.uniformMember;
4513                         }
4514                 ""
4515         end
4516         case invalid_identifier_instance_name_vertex
4517                 version 300 es
4518                 expect compile_fail
4519
4520                 vertex ""
4521                         #version 300 es
4522                         precision highp float;
4523
4524
4525
4526                         uniform UniformBlock
4527                         {
4528                                 vec4 uniformMember;
4529                         } gl_uniformBlock;
4530
4531                         void main()
4532                         {
4533                                 gl_Position = gl_uniformBlock.uniformMember;
4534                         }
4535                 ""
4536
4537                 fragment ""
4538                         #version 300 es
4539                         precision highp float;
4540
4541                         layout(location=0) out vec4 o_color;
4542
4543                         void main()
4544                         {
4545                                 o_color = vec4(1.0);
4546                         }
4547                 ""
4548         end
4549         case invalid_identifier_instance_name_fragment
4550                 version 300 es
4551                 expect compile_fail
4552
4553                 vertex ""
4554                         #version 300 es
4555                         precision highp float;
4556
4557                         in vec4 a_pos;
4558
4559                         void main()
4560                         {
4561                                 gl_Position = a_pos;
4562                         }
4563                 ""
4564
4565                 fragment ""
4566                         #version 300 es
4567                         precision highp float;
4568
4569                         layout(location=0) out vec4 o_color;
4570
4571                         uniform UniformBlock
4572                         {
4573                                 vec4 uniformMember;
4574                         } gl_uniformBlock;
4575
4576                         void main()
4577                         {
4578                                 o_color = gl_uniformBlock.uniformMember;
4579                         }
4580                 ""
4581         end
4582         case repeated_block_vertex
4583                 version 300 es
4584                 expect compile_fail
4585
4586                 vertex ""
4587                         #version 300 es
4588                         precision highp float;
4589
4590
4591
4592                         uniform UniformBlock
4593                         {
4594                                 vec4 uniformMember;
4595                         } uniformBlockA;
4596
4597                         uniform UniformBlock
4598                         {
4599                                 vec4 uniformMember;
4600                         } uniformBlockB;
4601
4602                         void main()
4603                         {
4604                                 gl_Position = uniformBlockA.uniformMember + uniformBlockB.uniformMember;
4605                         }
4606                 ""
4607
4608                 fragment ""
4609                         #version 300 es
4610                         precision highp float;
4611
4612                         layout(location=0) out vec4 o_color;
4613
4614                         void main()
4615                         {
4616                                 o_color = vec4(1.0);
4617                         }
4618                 ""
4619         end
4620         case repeated_block_fragment
4621                 version 300 es
4622                 expect compile_fail
4623
4624                 vertex ""
4625                         #version 300 es
4626                         precision highp float;
4627
4628                         in vec4 a_pos;
4629
4630                         void main()
4631                         {
4632                                 gl_Position = a_pos;
4633                         }
4634                 ""
4635
4636                 fragment ""
4637                         #version 300 es
4638                         precision highp float;
4639
4640                         layout(location=0) out vec4 o_color;
4641
4642                         uniform UniformBlock
4643                         {
4644                                 vec4 uniformMember;
4645                         } uniformBlockA;
4646
4647                         uniform UniformBlock
4648                         {
4649                                 vec4 uniformMember;
4650                         } uniformBlockB;
4651
4652                         void main()
4653                         {
4654                                 o_color = uniformBlockA.uniformMember + uniformBlockB.uniformMember;
4655                         }
4656                 ""
4657         end
4658         case repeated_block_no_instance_name_vertex
4659                 version 300 es
4660                 expect compile_fail
4661
4662                 vertex ""
4663                         #version 300 es
4664                         precision highp float;
4665
4666
4667
4668                         uniform UniformBlock
4669                         {
4670                                 vec4 uniformMember;
4671                         } uniformBlock;
4672
4673                         uniform UniformBlock
4674                         {
4675                                 vec4 uniformMember;
4676                         };
4677
4678                         void main()
4679                         {
4680                                 gl_Position = uniformBlock.uniformMember + uniformMember;
4681                         }
4682                 ""
4683
4684                 fragment ""
4685                         #version 300 es
4686                         precision highp float;
4687
4688                         layout(location=0) out vec4 o_color;
4689
4690                         void main()
4691                         {
4692                                 o_color = vec4(1.0);
4693                         }
4694                 ""
4695         end
4696         case repeated_block_no_instance_name_fragment
4697                 version 300 es
4698                 expect compile_fail
4699
4700                 vertex ""
4701                         #version 300 es
4702                         precision highp float;
4703
4704                         in vec4 a_pos;
4705
4706                         void main()
4707                         {
4708                                 gl_Position = a_pos;
4709                         }
4710                 ""
4711
4712                 fragment ""
4713                         #version 300 es
4714                         precision highp float;
4715
4716                         layout(location=0) out vec4 o_color;
4717
4718                         uniform UniformBlock
4719                         {
4720                                 vec4 uniformMember;
4721                         } uniformBlock;
4722
4723                         uniform UniformBlock
4724                         {
4725                                 vec4 uniformMember;
4726                         };
4727
4728                         void main()
4729                         {
4730                                 o_color = uniformBlock.uniformMember + uniformMember;
4731                         }
4732                 ""
4733         end
4734
4735 end # invalid