xref: /aosp_15_r20/external/deqp/data/gles31/shaders/es32/uniform_block.test (revision 35238bce31c2a825756842865a792f8cf7f89930)
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
4group valid "Valid uniform interface block syntax tests."
5
6    case repeat_interface_qualifier_vertex
7        version 320 es
8        expect build_successful
9
10        vertex ""
11            #version 320 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 320 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 320 es
41        expect build_successful
42
43        vertex ""
44            #version 320 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 320 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 320 es
74        expect build_successful
75
76        vertex ""
77            #version 320 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 320 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 320 es
107        expect build_successful
108
109        vertex ""
110            #version 320 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 320 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 320 es
140        expect build_successful
141
142        vertex ""
143            #version 320 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 320 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 320 es
173        expect build_successful
174
175        vertex ""
176            #version 320 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 320 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 320 es
206        expect build_successful
207
208        vertex ""
209            #version 320 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 320 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 320 es
239        expect build_successful
240
241        vertex ""
242            #version 320 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 320 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 320 es
272        expect build_successful
273
274        vertex ""
275            #version 320 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 320 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 320 es
305        expect build_successful
306
307        vertex ""
308            #version 320 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 320 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 320 es
338        expect build_successful
339
340        vertex ""
341            #version 320 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 320 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 320 es
371        expect build_successful
372
373        vertex ""
374            #version 320 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 320 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 320 es
404        expect build_successful
405
406        vertex ""
407            #version 320 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 320 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 320 es
437        expect build_successful
438
439        vertex ""
440            #version 320 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 320 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 320 es
470        expect build_successful
471
472        vertex ""
473            #version 320 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 320 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 320 es
503        expect build_successful
504
505        vertex ""
506            #version 320 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 320 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 320 es
536        expect build_successful
537
538        vertex ""
539            #version 320 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 320 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 320 es
571        expect build_successful
572
573        vertex ""
574            #version 320 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 320 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 320 es
606        expect build_successful
607
608        vertex ""
609            #version 320 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 320 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 320 es
641        expect build_successful
642
643        vertex ""
644            #version 320 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 320 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 320 es
676        expect build_successful
677
678        vertex ""
679            #version 320 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 320 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 320 es
711        expect build_successful
712
713        vertex ""
714            #version 320 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 320 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 320 es
746        expect build_successful
747
748        vertex ""
749            #version 320 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 320 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 320 es
781        expect build_successful
782
783        vertex ""
784            #version 320 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 320 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 320 es
816        expect build_successful
817
818        vertex ""
819            #version 320 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 320 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 320 es
851        expect build_successful
852
853        vertex ""
854            #version 320 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 320 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 320 es
886        expect build_successful
887
888        vertex ""
889            #version 320 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 320 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 320 es
921        expect build_successful
922
923        vertex ""
924            #version 320 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 320 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 320 es
956        expect build_successful
957
958        vertex ""
959            #version 320 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 320 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 320 es
991        expect build_successful
992
993        vertex ""
994            #version 320 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 320 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 320 es
1026        expect build_successful
1027
1028        vertex ""
1029            #version 320 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 320 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 320 es
1059        expect build_successful
1060
1061        vertex ""
1062            #version 320 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 320 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 320 es
1092        expect build_successful
1093
1094        vertex ""
1095            #version 320 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 320 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 320 es
1125        expect build_successful
1126
1127        vertex ""
1128            #version 320 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 320 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 320 es
1158        expect build_successful
1159
1160        vertex ""
1161            #version 320 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 320 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 320 es
1191        expect build_successful
1192
1193        vertex ""
1194            #version 320 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 320 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 320 es
1224        expect build_successful
1225
1226        vertex ""
1227            #version 320 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 320 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 320 es
1257        expect build_successful
1258
1259        vertex ""
1260            #version 320 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 320 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 320 es
1290        expect build_successful
1291
1292        vertex ""
1293            #version 320 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 320 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 320 es
1323        expect build_successful
1324
1325        vertex ""
1326            #version 320 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 320 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 320 es
1356        expect build_successful
1357
1358        vertex ""
1359            #version 320 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 320 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 320 es
1389        expect build_successful
1390
1391        vertex ""
1392            #version 320 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 320 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 320 es
1422        expect build_successful
1423
1424        vertex ""
1425            #version 320 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 320 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 320 es
1455        expect build_successful
1456
1457        vertex ""
1458            #version 320 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 320 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 320 es
1488        expect build_successful
1489
1490        vertex ""
1491            #version 320 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 320 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 320 es
1522        expect build_successful
1523
1524        vertex ""
1525            #version 320 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 320 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 320 es
1556        expect build_successful
1557
1558        vertex ""
1559            #version 320 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 320 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 320 es
1590        expect build_successful
1591
1592        vertex ""
1593            #version 320 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 320 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 320 es
1624        expect build_successful
1625
1626        vertex ""
1627            #version 320 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 320 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 320 es
1662        expect build_successful
1663
1664        vertex ""
1665            #version 320 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 320 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 320 es
1700        expect build_successful
1701
1702        vertex ""
1703            #version 320 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 320 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 320 es
1738        expect build_successful
1739
1740        vertex ""
1741            #version 320 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 320 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 320 es
1776        expect build_successful
1777
1778        vertex ""
1779            #version 320 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 320 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 320 es
1814        expect build_successful
1815
1816        vertex ""
1817            #version 320 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 320 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 320 es
1852        expect build_successful
1853
1854        vertex ""
1855            #version 320 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 320 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 320 es
1890        expect build_successful
1891
1892        vertex ""
1893            #version 320 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 320 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 320 es
1928        expect build_successful
1929
1930        vertex ""
1931            #version 320 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 320 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 320 es
1966        expect build_successful
1967
1968        vertex ""
1969            #version 320 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 320 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 320 es
2004        expect build_successful
2005
2006        vertex ""
2007            #version 320 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 320 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 320 es
2038        expect build_successful
2039
2040        vertex ""
2041            #version 320 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 320 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 320 es
2072        expect build_successful
2073
2074        vertex ""
2075            #version 320 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 320 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 320 es
2106        expect build_successful
2107
2108        vertex ""
2109            #version 320 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 320 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 320 es
2140        expect build_successful
2141
2142        vertex ""
2143            #version 320 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 320 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 320 es
2173        expect build_successful
2174
2175        vertex ""
2176            #version 320 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 320 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 320 es
2206        expect build_successful
2207
2208        vertex ""
2209            #version 320 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 320 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 320 es
2239        expect build_successful
2240
2241        vertex ""
2242            #version 320 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 320 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
2271end # valid
2272group invalid "Invalid uniform interface block syntax tests."
2273
2274    case member_in_interface_qualifier_vertex
2275        version 320 es
2276        expect compile_fail
2277
2278        vertex ""
2279            #version 320 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 320 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 320 es
2309        expect compile_fail
2310
2311        vertex ""
2312            #version 320 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 320 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 320 es
2342        expect compile_fail
2343
2344        vertex ""
2345            #version 320 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 320 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 320 es
2375        expect compile_fail
2376
2377        vertex ""
2378            #version 320 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 320 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 320 es
2408        expect compile_fail
2409
2410        vertex ""
2411            #version 320 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 320 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 320 es
2441        expect compile_fail
2442
2443        vertex ""
2444            #version 320 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 320 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 320 es
2474        expect compile_fail
2475
2476        vertex ""
2477            #version 320 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 320 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 320 es
2507        expect compile_fail
2508
2509        vertex ""
2510            #version 320 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 320 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 320 es
2540        expect compile_fail
2541
2542        vertex ""
2543            #version 320 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 320 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 320 es
2573        expect compile_fail
2574
2575        vertex ""
2576            #version 320 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 320 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 320 es
2606        expect compile_fail
2607
2608        vertex ""
2609            #version 320 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 320 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 320 es
2644        expect compile_fail
2645
2646        vertex ""
2647            #version 320 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 320 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 320 es
2682        expect compile_fail
2683
2684        vertex ""
2685            #version 320 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 320 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 320 es
2720        expect compile_fail
2721
2722        vertex ""
2723            #version 320 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 320 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 320 es
2758        expect compile_fail
2759
2760        vertex ""
2761            #version 320 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 320 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 320 es
2796        expect compile_fail
2797
2798        vertex ""
2799            #version 320 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 320 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 320 es
2834        expect compile_fail
2835
2836        vertex ""
2837            #version 320 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 320 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 320 es
2869        expect compile_fail
2870
2871        vertex ""
2872            #version 320 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 320 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 320 es
2904        expect compile_fail
2905
2906        vertex ""
2907            #version 320 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 320 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 320 es
2939        expect compile_fail
2940
2941        vertex ""
2942            #version 320 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 320 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 320 es
2974        expect compile_fail
2975
2976        vertex ""
2977            #version 320 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 320 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 320 es
3009        expect compile_fail
3010
3011        vertex ""
3012            #version 320 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 320 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 320 es
3044        expect compile_fail
3045
3046        vertex ""
3047            #version 320 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 320 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 320 es
3079        expect compile_fail
3080
3081        vertex ""
3082            #version 320 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 320 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 320 es
3114        expect compile_fail
3115
3116        vertex ""
3117            #version 320 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 320 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 320 es
3149        expect compile_fail
3150
3151        vertex ""
3152            #version 320 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 320 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 320 es
3184        expect compile_fail
3185
3186        vertex ""
3187            #version 320 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 320 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 320 es
3219        expect compile_fail
3220
3221        vertex ""
3222            #version 320 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 320 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 320 es
3254        expect compile_fail
3255
3256        vertex ""
3257            #version 320 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 320 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 320 es
3287        expect compile_fail
3288
3289        vertex ""
3290            #version 320 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 320 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 320 es
3320        expect compile_fail
3321
3322        vertex ""
3323            #version 320 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 320 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 320 es
3353        expect compile_fail
3354
3355        vertex ""
3356            #version 320 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 320 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 320 es
3386        expect compile_fail
3387
3388        vertex ""
3389            #version 320 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 320 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 320 es
3418        expect compile_fail
3419
3420        vertex ""
3421            #version 320 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 320 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 320 es
3450        expect compile_fail
3451
3452        vertex ""
3453            #version 320 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 320 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 320 es
3483        expect compile_fail
3484
3485        vertex ""
3486            #version 320 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 320 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 320 es
3516        expect compile_fail
3517
3518        vertex ""
3519            #version 320 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 320 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 320 es
3549        expect compile_fail
3550
3551        vertex ""
3552            #version 320 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 320 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 320 es
3582        expect compile_fail
3583
3584        vertex ""
3585            #version 320 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 320 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 320 es
3617        expect compile_fail
3618
3619        vertex ""
3620            #version 320 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 320 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 320 es
3652        expect compile_fail
3653
3654        vertex ""
3655            #version 320 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 320 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 320 es
3688        expect compile_fail
3689
3690        vertex ""
3691            #version 320 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 320 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 320 es
3724        expect compile_fail
3725
3726        vertex ""
3727            #version 320 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 320 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 320 es
3757        expect compile_fail
3758
3759        vertex ""
3760            #version 320 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 320 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 320 es
3790        expect compile_fail
3791
3792        vertex ""
3793            #version 320 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 320 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 320 es
3823        expect compile_fail
3824
3825        vertex ""
3826            #version 320 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 320 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_std140std430_vertex
3855        version 320 es
3856        expect compile_fail
3857
3858        vertex ""
3859            #version 320 es
3860            precision highp float;
3861
3862
3863
3864            uniform UniformBlock
3865            {
3866                layout(std140std430) vec4 uniformMember;
3867            } uniformBlock;
3868
3869            void main()
3870            {
3871                gl_Position = uniformBlock.uniformMember;
3872            }
3873        ""
3874
3875        fragment ""
3876            #version 320 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_std140std430_fragment
3888        version 320 es
3889        expect compile_fail
3890
3891        vertex ""
3892            #version 320 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 320 es
3905            precision highp float;
3906
3907            layout(location=0) out vec4 o_color;
3908
3909            uniform UniformBlock
3910            {
3911                layout(std140std430) 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 320 es
3922        expect compile_fail
3923
3924        vertex ""
3925            #version 320 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 320 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 320 es
3955        expect compile_fail
3956
3957        vertex ""
3958            #version 320 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 320 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 320 es
3988        expect compile_fail
3989
3990        vertex ""
3991            #version 320 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 320 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 320 es
4021        expect compile_fail
4022
4023        vertex ""
4024            #version 320 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 320 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_identifier_block_name_vertex
4053        version 320 es
4054        expect compile_fail
4055
4056        vertex ""
4057            #version 320 es
4058            precision highp float;
4059
4060
4061
4062            uniform gl_UniformBlock
4063            {
4064                vec4 uniformMember;
4065            } uniformBlock;
4066
4067            void main()
4068            {
4069                gl_Position = uniformBlock.uniformMember;
4070            }
4071        ""
4072
4073        fragment ""
4074            #version 320 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_identifier_block_name_fragment
4086        version 320 es
4087        expect compile_fail
4088
4089        vertex ""
4090            #version 320 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 320 es
4103            precision highp float;
4104
4105            layout(location=0) out vec4 o_color;
4106
4107            uniform gl_UniformBlock
4108            {
4109                vec4 uniformMember;
4110            } uniformBlock;
4111
4112            void main()
4113            {
4114                o_color = uniformBlock.uniformMember;
4115            }
4116        ""
4117    end
4118    case invalid_hash_block_name_vertex
4119        version 320 es
4120        expect compile_fail
4121
4122        vertex ""
4123            #version 320 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 320 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_hash_block_name_fragment
4152        version 320 es
4153        expect compile_fail
4154
4155        vertex ""
4156            #version 320 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 320 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_dollar_block_name_vertex
4185        version 320 es
4186        expect compile_fail
4187
4188        vertex ""
4189            #version 320 es
4190            precision highp float;
4191
4192
4193
4194            uniform $UniformBlock
4195            {
4196                vec4 uniformMember;
4197            } uniformBlock;
4198
4199            void main()
4200            {
4201                gl_Position = uniformBlock.uniformMember;
4202            }
4203        ""
4204
4205        fragment ""
4206            #version 320 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_dollar_block_name_fragment
4218        version 320 es
4219        expect compile_fail
4220
4221        vertex ""
4222            #version 320 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 320 es
4235            precision highp float;
4236
4237            layout(location=0) out vec4 o_color;
4238
4239            uniform $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 320 es
4252        expect compile_fail
4253
4254        vertex ""
4255            #version 320 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 320 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 320 es
4286        expect compile_fail
4287
4288        vertex ""
4289            #version 320 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 320 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 320 es
4320        expect compile_fail
4321
4322        vertex ""
4323            #version 320 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 320 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 320 es
4353        expect compile_fail
4354
4355        vertex ""
4356            #version 320 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 320 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_identifier_instance_name_vertex
4385        version 320 es
4386        expect compile_fail
4387
4388        vertex ""
4389            #version 320 es
4390            precision highp float;
4391
4392
4393
4394            uniform UniformBlock
4395            {
4396                vec4 uniformMember;
4397            } gl_uniformBlock;
4398
4399            void main()
4400            {
4401                gl_Position = gl_uniformBlock.uniformMember;
4402            }
4403        ""
4404
4405        fragment ""
4406            #version 320 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_identifier_instance_name_fragment
4418        version 320 es
4419        expect compile_fail
4420
4421        vertex ""
4422            #version 320 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 320 es
4435            precision highp float;
4436
4437            layout(location=0) out vec4 o_color;
4438
4439            uniform UniformBlock
4440            {
4441                vec4 uniformMember;
4442            } gl_uniformBlock;
4443
4444            void main()
4445            {
4446                o_color = gl_uniformBlock.uniformMember;
4447            }
4448        ""
4449    end
4450    case invalid_hash_instance_name_vertex
4451        version 320 es
4452        expect compile_fail
4453
4454        vertex ""
4455            #version 320 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 320 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_hash_instance_name_fragment
4484        version 320 es
4485        expect compile_fail
4486
4487        vertex ""
4488            #version 320 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 320 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_dollar_instance_name_vertex
4517        version 320 es
4518        expect compile_fail
4519
4520        vertex ""
4521            #version 320 es
4522            precision highp float;
4523
4524
4525
4526            uniform UniformInstance
4527            {
4528                vec4 uniformMember;
4529            } $uniformBlock;
4530
4531            void main()
4532            {
4533                gl_Position = $uniformBlock.uniformMember;
4534            }
4535        ""
4536
4537        fragment ""
4538            #version 320 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_dollar_instance_name_fragment
4550        version 320 es
4551        expect compile_fail
4552
4553        vertex ""
4554            #version 320 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 320 es
4567            precision highp float;
4568
4569            layout(location=0) out vec4 o_color;
4570
4571            uniform UniformInstance
4572            {
4573                vec4 uniformMember;
4574            } $uniformBlock;
4575
4576            void main()
4577            {
4578                o_color = $uniformBlock.uniformMember;
4579            }
4580        ""
4581    end
4582    case repeated_block_vertex
4583        version 320 es
4584        expect compile_fail
4585
4586        vertex ""
4587            #version 320 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 320 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 320 es
4622        expect compile_fail
4623
4624        vertex ""
4625            #version 320 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 320 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 320 es
4660        expect compile_fail
4661
4662        vertex ""
4663            #version 320 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 320 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 320 es
4698        expect compile_fail
4699
4700        vertex ""
4701            #version 320 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 320 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    case layout_std430_vertex
4735        version 320 es
4736        expect compile_fail
4737
4738        vertex ""
4739            #version 320 es
4740            precision highp float;
4741
4742
4743
4744            layout(std430) uniform UniformBlock
4745            {
4746                vec4 uniformMember;
4747            } uniformBlock;
4748
4749            void main()
4750            {
4751                gl_Position = uniformBlock.uniformMember;
4752            }
4753        ""
4754
4755        fragment ""
4756            #version 320 es
4757            precision highp float;
4758
4759            layout(location=0) out vec4 o_color;
4760
4761            void main()
4762            {
4763                o_color = vec4(1.0);
4764            }
4765        ""
4766    end
4767    case layout_std430_fragment
4768        version 320 es
4769        expect compile_fail
4770
4771        vertex ""
4772            #version 320 es
4773            precision highp float;
4774
4775            in vec4 a_pos;
4776
4777            void main()
4778            {
4779                gl_Position = a_pos;
4780            }
4781        ""
4782
4783        fragment ""
4784            #version 320 es
4785            precision highp float;
4786
4787            layout(location=0) out vec4 o_color;
4788
4789            layout(std430) uniform UniformBlock
4790            {
4791                vec4 uniformMember;
4792            } uniformBlock;
4793
4794            void main()
4795            {
4796                o_color = uniformBlock.uniformMember;
4797            }
4798        ""
4799    end
4800    case global_layout_std430_vertex
4801        version 320 es
4802        expect compile_fail
4803
4804        vertex ""
4805            #version 320 es
4806            precision highp float;
4807
4808            layout(std430) uniform;
4809
4810
4811
4812            uniform UniformBlock
4813            {
4814                vec4 uniformMember;
4815            } uniformBlock;
4816
4817            void main()
4818            {
4819                gl_Position = uniformBlock.uniformMember;
4820            }
4821        ""
4822
4823        fragment ""
4824            #version 320 es
4825            precision highp float;
4826
4827            layout(location=0) out vec4 o_color;
4828
4829            void main()
4830            {
4831                o_color = vec4(1.0);
4832            }
4833        ""
4834    end
4835    case global_layout_std430_fragment
4836        version 320 es
4837        expect compile_fail
4838
4839        vertex ""
4840            #version 320 es
4841            precision highp float;
4842
4843            in vec4 a_pos;
4844
4845            void main()
4846            {
4847                gl_Position = a_pos;
4848            }
4849        ""
4850
4851        fragment ""
4852            #version 320 es
4853            precision highp float;
4854
4855            layout(std430) uniform;
4856
4857            layout(location=0) out vec4 o_color;
4858
4859            uniform UniformBlock
4860            {
4861                vec4 uniformMember;
4862            } uniformBlock;
4863
4864            void main()
4865            {
4866                o_color = uniformBlock.uniformMember;
4867            }
4868        ""
4869    end
4870
4871end # invalid
4872