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