• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 variables "Order of qualification in variable declarations."
5
6	group valid "Valid orderings."
7
8		case invariant_interp_storage_precision
9			expect pass
10			values {}
11
12			vertex ""
13				#version 300 es
14				precision mediump float;
15				in highp vec4 dEQP_Position;
16
17				invariant smooth centroid out lowp float x0;
18
19				 flat out mediump float x1;
20
21				 uniform highp float x2;
22
23				void main()
24				{
25					x0 = 1.0;
26					x1 = 2.0;
27					gl_Position = dEQP_Position;
28				}
29			""
30
31			fragment ""
32				#version 300 es
33				precision mediump float;
34				layout(location = 0) out mediump vec4 dEQP_FragColor;
35
36				 smooth centroid in lowp float x0;
37
38				 flat in mediump float x1;
39
40				 uniform highp float x2;
41
42				void main()
43				{
44					float result = (x0 + x1 + x2) / 3.0;
45					dEQP_FragColor = vec4(result, result, result, 1.0);
46				}
47			""
48		end
49		case interp_storage_precision
50			expect pass
51			values {}
52
53			vertex ""
54				#version 300 es
55				precision mediump float;
56				in highp vec4 dEQP_Position;
57
58				smooth centroid out lowp float x0;
59
60				flat out mediump float x1;
61
62				 uniform highp float x2;
63
64				void main()
65				{
66					x0 = 1.0;
67					x1 = 2.0;
68					gl_Position = dEQP_Position;
69				}
70			""
71
72			fragment ""
73				#version 300 es
74				precision mediump float;
75				layout(location = 0) out mediump vec4 dEQP_FragColor;
76
77				smooth centroid in lowp float x0;
78
79				flat in mediump float x1;
80
81				 uniform highp float x2;
82
83				void main()
84				{
85					float result = (x0 + x1 + x2) / 3.0;
86					dEQP_FragColor = vec4(result, result, result, 1.0);
87				}
88			""
89		end
90		case invariant_interp_storage
91			expect pass
92			values {}
93
94			vertex ""
95				#version 300 es
96				precision mediump float;
97				in highp vec4 dEQP_Position;
98
99				invariant smooth centroid out float x0;
100
101				 flat out float x1;
102
103				 uniform float x2;
104
105				void main()
106				{
107					x0 = 1.0;
108					x1 = 2.0;
109					gl_Position = dEQP_Position;
110				}
111			""
112
113			fragment ""
114				#version 300 es
115				precision mediump float;
116				layout(location = 0) out mediump vec4 dEQP_FragColor;
117
118				 smooth centroid in float x0;
119
120				 flat in float x1;
121
122				 uniform float x2;
123
124				void main()
125				{
126					float result = (x0 + x1 + x2) / 3.0;
127					dEQP_FragColor = vec4(result, result, result, 1.0);
128				}
129			""
130		end
131		case invariant_storage_precision
132			expect pass
133			values {}
134
135			vertex ""
136				#version 300 es
137				precision mediump float;
138				in highp vec4 dEQP_Position;
139
140				invariant centroid out lowp float x0;
141
142				 out mediump float x1;
143
144				 uniform highp float x2;
145
146				void main()
147				{
148					x0 = 1.0;
149					x1 = 2.0;
150					gl_Position = dEQP_Position;
151				}
152			""
153
154			fragment ""
155				#version 300 es
156				precision mediump float;
157				layout(location = 0) out mediump vec4 dEQP_FragColor;
158
159				 centroid in lowp float x0;
160
161				 in mediump float x1;
162
163				 uniform highp float x2;
164
165				void main()
166				{
167					float result = (x0 + x1 + x2) / 3.0;
168					dEQP_FragColor = vec4(result, result, result, 1.0);
169				}
170			""
171		end
172		case storage_precision
173			expect pass
174			values {}
175
176			vertex ""
177				#version 300 es
178				precision mediump float;
179				in highp vec4 dEQP_Position;
180
181				centroid out lowp float x0;
182
183				out mediump float x1;
184
185				uniform highp float x2;
186
187				void main()
188				{
189					x0 = 1.0;
190					x1 = 2.0;
191					gl_Position = dEQP_Position;
192				}
193			""
194
195			fragment ""
196				#version 300 es
197				precision mediump float;
198				layout(location = 0) out mediump vec4 dEQP_FragColor;
199
200				centroid in lowp float x0;
201
202				in mediump float x1;
203
204				uniform highp float x2;
205
206				void main()
207				{
208					float result = (x0 + x1 + x2) / 3.0;
209					dEQP_FragColor = vec4(result, result, result, 1.0);
210				}
211			""
212		end
213		case interp_storage
214			expect pass
215			values {}
216
217			vertex ""
218				#version 300 es
219				precision mediump float;
220				in highp vec4 dEQP_Position;
221
222				smooth centroid out float x0;
223
224				flat out float x1;
225
226				 uniform float x2;
227
228				void main()
229				{
230					x0 = 1.0;
231					x1 = 2.0;
232					gl_Position = dEQP_Position;
233				}
234			""
235
236			fragment ""
237				#version 300 es
238				precision mediump float;
239				layout(location = 0) out mediump vec4 dEQP_FragColor;
240
241				smooth centroid in float x0;
242
243				flat in float x1;
244
245				 uniform float x2;
246
247				void main()
248				{
249					float result = (x0 + x1 + x2) / 3.0;
250					dEQP_FragColor = vec4(result, result, result, 1.0);
251				}
252			""
253		end
254		case invariant_storage
255			expect pass
256			values {}
257
258			vertex ""
259				#version 300 es
260				precision mediump float;
261				in highp vec4 dEQP_Position;
262
263				invariant centroid out float x0;
264
265				 out float x1;
266
267				 uniform float x2;
268
269				void main()
270				{
271					x0 = 1.0;
272					x1 = 2.0;
273					gl_Position = dEQP_Position;
274				}
275			""
276
277			fragment ""
278				#version 300 es
279				precision mediump float;
280				layout(location = 0) out mediump vec4 dEQP_FragColor;
281
282				 centroid in float x0;
283
284				 in float x1;
285
286				 uniform float x2;
287
288				void main()
289				{
290					float result = (x0 + x1 + x2) / 3.0;
291					dEQP_FragColor = vec4(result, result, result, 1.0);
292				}
293			""
294		end
295
296	end # valid
297	group invalid "Invalid orderings."
298
299		case invariant_interp_precision_storage
300			expect compile_fail
301			values {}
302
303			vertex ""
304				#version 300 es
305				precision mediump float;
306				in highp vec4 dEQP_Position;
307
308				invariant smooth lowp centroid out float x0;
309
310				 flat mediump out float x1;
311
312				 highp uniform float x2;
313
314				void main()
315				{
316					x0 = 1.0;
317					x1 = 2.0;
318					gl_Position = dEQP_Position;
319				}
320			""
321
322			fragment ""
323				#version 300 es
324				precision mediump float;
325				layout(location = 0) out mediump vec4 dEQP_FragColor;
326
327				 smooth lowp centroid in float x0;
328
329				 flat mediump in float x1;
330
331				 highp uniform float x2;
332
333				void main()
334				{
335					float result = (x0 + x1 + x2) / 3.0;
336					dEQP_FragColor = vec4(result, result, result, 1.0);
337				}
338			""
339		end
340		case invariant_storage_interp_precision
341			expect compile_fail
342			values {}
343
344			vertex ""
345				#version 300 es
346				precision mediump float;
347				in highp vec4 dEQP_Position;
348
349				invariant centroid out smooth lowp float x0;
350
351				 out flat mediump float x1;
352
353				 uniform highp float x2;
354
355				void main()
356				{
357					x0 = 1.0;
358					x1 = 2.0;
359					gl_Position = dEQP_Position;
360				}
361			""
362
363			fragment ""
364				#version 300 es
365				precision mediump float;
366				layout(location = 0) out mediump vec4 dEQP_FragColor;
367
368				 centroid in smooth lowp float x0;
369
370				 in flat mediump float x1;
371
372				 uniform highp float x2;
373
374				void main()
375				{
376					float result = (x0 + x1 + x2) / 3.0;
377					dEQP_FragColor = vec4(result, result, result, 1.0);
378				}
379			""
380		end
381		case invariant_storage_precision_interp
382			expect compile_fail
383			values {}
384
385			vertex ""
386				#version 300 es
387				precision mediump float;
388				in highp vec4 dEQP_Position;
389
390				invariant centroid out lowp smooth float x0;
391
392				 out mediump flat float x1;
393
394				 uniform highp float x2;
395
396				void main()
397				{
398					x0 = 1.0;
399					x1 = 2.0;
400					gl_Position = dEQP_Position;
401				}
402			""
403
404			fragment ""
405				#version 300 es
406				precision mediump float;
407				layout(location = 0) out mediump vec4 dEQP_FragColor;
408
409				 centroid in lowp smooth float x0;
410
411				 in mediump flat float x1;
412
413				 uniform highp float x2;
414
415				void main()
416				{
417					float result = (x0 + x1 + x2) / 3.0;
418					dEQP_FragColor = vec4(result, result, result, 1.0);
419				}
420			""
421		end
422		case invariant_precision_interp_storage
423			expect compile_fail
424			values {}
425
426			vertex ""
427				#version 300 es
428				precision mediump float;
429				in highp vec4 dEQP_Position;
430
431				invariant lowp smooth centroid out float x0;
432
433				 mediump flat out float x1;
434
435				 highp uniform float x2;
436
437				void main()
438				{
439					x0 = 1.0;
440					x1 = 2.0;
441					gl_Position = dEQP_Position;
442				}
443			""
444
445			fragment ""
446				#version 300 es
447				precision mediump float;
448				layout(location = 0) out mediump vec4 dEQP_FragColor;
449
450				 lowp smooth centroid in float x0;
451
452				 mediump flat in float x1;
453
454				 highp uniform float x2;
455
456				void main()
457				{
458					float result = (x0 + x1 + x2) / 3.0;
459					dEQP_FragColor = vec4(result, result, result, 1.0);
460				}
461			""
462		end
463		case invariant_precision_storage_interp
464			expect compile_fail
465			values {}
466
467			vertex ""
468				#version 300 es
469				precision mediump float;
470				in highp vec4 dEQP_Position;
471
472				invariant lowp centroid out smooth float x0;
473
474				 mediump out flat float x1;
475
476				 highp uniform float x2;
477
478				void main()
479				{
480					x0 = 1.0;
481					x1 = 2.0;
482					gl_Position = dEQP_Position;
483				}
484			""
485
486			fragment ""
487				#version 300 es
488				precision mediump float;
489				layout(location = 0) out mediump vec4 dEQP_FragColor;
490
491				 lowp centroid in smooth float x0;
492
493				 mediump in flat float x1;
494
495				 highp uniform float x2;
496
497				void main()
498				{
499					float result = (x0 + x1 + x2) / 3.0;
500					dEQP_FragColor = vec4(result, result, result, 1.0);
501				}
502			""
503		end
504		case interp_invariant_storage_precision
505			expect compile_fail
506			values {}
507
508			vertex ""
509				#version 300 es
510				precision mediump float;
511				in highp vec4 dEQP_Position;
512
513				smooth invariant centroid out lowp float x0;
514
515				flat out mediump float x1;
516
517				 uniform highp float x2;
518
519				void main()
520				{
521					x0 = 1.0;
522					x1 = 2.0;
523					gl_Position = dEQP_Position;
524				}
525			""
526
527			fragment ""
528				#version 300 es
529				precision mediump float;
530				layout(location = 0) out mediump vec4 dEQP_FragColor;
531
532				smooth  centroid in lowp float x0;
533
534				flat in mediump float x1;
535
536				 uniform highp float x2;
537
538				void main()
539				{
540					float result = (x0 + x1 + x2) / 3.0;
541					dEQP_FragColor = vec4(result, result, result, 1.0);
542				}
543			""
544		end
545		case interp_invariant_precision_storage
546			expect compile_fail
547			values {}
548
549			vertex ""
550				#version 300 es
551				precision mediump float;
552				in highp vec4 dEQP_Position;
553
554				smooth invariant lowp centroid out float x0;
555
556				flat mediump out float x1;
557
558				 highp uniform float x2;
559
560				void main()
561				{
562					x0 = 1.0;
563					x1 = 2.0;
564					gl_Position = dEQP_Position;
565				}
566			""
567
568			fragment ""
569				#version 300 es
570				precision mediump float;
571				layout(location = 0) out mediump vec4 dEQP_FragColor;
572
573				smooth  lowp centroid in float x0;
574
575				flat mediump in float x1;
576
577				 highp uniform float x2;
578
579				void main()
580				{
581					float result = (x0 + x1 + x2) / 3.0;
582					dEQP_FragColor = vec4(result, result, result, 1.0);
583				}
584			""
585		end
586		case interp_storage_invariant_precision
587			expect compile_fail
588			values {}
589
590			vertex ""
591				#version 300 es
592				precision mediump float;
593				in highp vec4 dEQP_Position;
594
595				smooth centroid out invariant lowp float x0;
596
597				flat out mediump float x1;
598
599				 uniform highp float x2;
600
601				void main()
602				{
603					x0 = 1.0;
604					x1 = 2.0;
605					gl_Position = dEQP_Position;
606				}
607			""
608
609			fragment ""
610				#version 300 es
611				precision mediump float;
612				layout(location = 0) out mediump vec4 dEQP_FragColor;
613
614				smooth centroid in  lowp float x0;
615
616				flat in mediump float x1;
617
618				 uniform highp float x2;
619
620				void main()
621				{
622					float result = (x0 + x1 + x2) / 3.0;
623					dEQP_FragColor = vec4(result, result, result, 1.0);
624				}
625			""
626		end
627		case interp_storage_precision_invariant
628			expect compile_fail
629			values {}
630
631			vertex ""
632				#version 300 es
633				precision mediump float;
634				in highp vec4 dEQP_Position;
635
636				smooth centroid out lowp invariant float x0;
637
638				flat out mediump float x1;
639
640				 uniform highp float x2;
641
642				void main()
643				{
644					x0 = 1.0;
645					x1 = 2.0;
646					gl_Position = dEQP_Position;
647				}
648			""
649
650			fragment ""
651				#version 300 es
652				precision mediump float;
653				layout(location = 0) out mediump vec4 dEQP_FragColor;
654
655				smooth centroid in lowp  float x0;
656
657				flat in mediump float x1;
658
659				 uniform highp float x2;
660
661				void main()
662				{
663					float result = (x0 + x1 + x2) / 3.0;
664					dEQP_FragColor = vec4(result, result, result, 1.0);
665				}
666			""
667		end
668		case interp_precision_invariant_storage
669			expect compile_fail
670			values {}
671
672			vertex ""
673				#version 300 es
674				precision mediump float;
675				in highp vec4 dEQP_Position;
676
677				smooth lowp invariant centroid out float x0;
678
679				flat mediump out float x1;
680
681				 highp uniform float x2;
682
683				void main()
684				{
685					x0 = 1.0;
686					x1 = 2.0;
687					gl_Position = dEQP_Position;
688				}
689			""
690
691			fragment ""
692				#version 300 es
693				precision mediump float;
694				layout(location = 0) out mediump vec4 dEQP_FragColor;
695
696				smooth lowp  centroid in float x0;
697
698				flat mediump in float x1;
699
700				 highp uniform float x2;
701
702				void main()
703				{
704					float result = (x0 + x1 + x2) / 3.0;
705					dEQP_FragColor = vec4(result, result, result, 1.0);
706				}
707			""
708		end
709		case interp_precision_storage_invariant
710			expect compile_fail
711			values {}
712
713			vertex ""
714				#version 300 es
715				precision mediump float;
716				in highp vec4 dEQP_Position;
717
718				smooth lowp centroid out invariant float x0;
719
720				flat mediump out float x1;
721
722				 highp uniform float x2;
723
724				void main()
725				{
726					x0 = 1.0;
727					x1 = 2.0;
728					gl_Position = dEQP_Position;
729				}
730			""
731
732			fragment ""
733				#version 300 es
734				precision mediump float;
735				layout(location = 0) out mediump vec4 dEQP_FragColor;
736
737				smooth lowp centroid in  float x0;
738
739				flat mediump in float x1;
740
741				 highp uniform float x2;
742
743				void main()
744				{
745					float result = (x0 + x1 + x2) / 3.0;
746					dEQP_FragColor = vec4(result, result, result, 1.0);
747				}
748			""
749		end
750		case storage_invariant_interp_precision
751			expect compile_fail
752			values {}
753
754			vertex ""
755				#version 300 es
756				precision mediump float;
757				in highp vec4 dEQP_Position;
758
759				centroid out invariant smooth lowp float x0;
760
761				out flat mediump float x1;
762
763				uniform  highp float x2;
764
765				void main()
766				{
767					x0 = 1.0;
768					x1 = 2.0;
769					gl_Position = dEQP_Position;
770				}
771			""
772
773			fragment ""
774				#version 300 es
775				precision mediump float;
776				layout(location = 0) out mediump vec4 dEQP_FragColor;
777
778				centroid in  smooth lowp float x0;
779
780				in flat mediump float x1;
781
782				uniform  highp float x2;
783
784				void main()
785				{
786					float result = (x0 + x1 + x2) / 3.0;
787					dEQP_FragColor = vec4(result, result, result, 1.0);
788				}
789			""
790		end
791		case storage_invariant_precision_interp
792			expect compile_fail
793			values {}
794
795			vertex ""
796				#version 300 es
797				precision mediump float;
798				in highp vec4 dEQP_Position;
799
800				centroid out invariant lowp smooth float x0;
801
802				out mediump flat float x1;
803
804				uniform highp float x2;
805
806				void main()
807				{
808					x0 = 1.0;
809					x1 = 2.0;
810					gl_Position = dEQP_Position;
811				}
812			""
813
814			fragment ""
815				#version 300 es
816				precision mediump float;
817				layout(location = 0) out mediump vec4 dEQP_FragColor;
818
819				centroid in  lowp smooth float x0;
820
821				in mediump flat float x1;
822
823				uniform highp float x2;
824
825				void main()
826				{
827					float result = (x0 + x1 + x2) / 3.0;
828					dEQP_FragColor = vec4(result, result, result, 1.0);
829				}
830			""
831		end
832		case storage_interp_invariant_precision
833			expect compile_fail
834			values {}
835
836			vertex ""
837				#version 300 es
838				precision mediump float;
839				in highp vec4 dEQP_Position;
840
841				centroid out smooth invariant lowp float x0;
842
843				out flat mediump float x1;
844
845				uniform  highp float x2;
846
847				void main()
848				{
849					x0 = 1.0;
850					x1 = 2.0;
851					gl_Position = dEQP_Position;
852				}
853			""
854
855			fragment ""
856				#version 300 es
857				precision mediump float;
858				layout(location = 0) out mediump vec4 dEQP_FragColor;
859
860				centroid in smooth  lowp float x0;
861
862				in flat mediump float x1;
863
864				uniform  highp float x2;
865
866				void main()
867				{
868					float result = (x0 + x1 + x2) / 3.0;
869					dEQP_FragColor = vec4(result, result, result, 1.0);
870				}
871			""
872		end
873		case storage_interp_precision_invariant
874			expect compile_fail
875			values {}
876
877			vertex ""
878				#version 300 es
879				precision mediump float;
880				in highp vec4 dEQP_Position;
881
882				centroid out smooth lowp invariant float x0;
883
884				out flat mediump float x1;
885
886				uniform highp float x2;
887
888				void main()
889				{
890					x0 = 1.0;
891					x1 = 2.0;
892					gl_Position = dEQP_Position;
893				}
894			""
895
896			fragment ""
897				#version 300 es
898				precision mediump float;
899				layout(location = 0) out mediump vec4 dEQP_FragColor;
900
901				centroid in smooth lowp  float x0;
902
903				in flat mediump float x1;
904
905				uniform highp float x2;
906
907				void main()
908				{
909					float result = (x0 + x1 + x2) / 3.0;
910					dEQP_FragColor = vec4(result, result, result, 1.0);
911				}
912			""
913		end
914		case storage_precision_invariant_interp
915			expect compile_fail
916			values {}
917
918			vertex ""
919				#version 300 es
920				precision mediump float;
921				in highp vec4 dEQP_Position;
922
923				centroid out lowp invariant smooth float x0;
924
925				out mediump flat float x1;
926
927				uniform highp  float x2;
928
929				void main()
930				{
931					x0 = 1.0;
932					x1 = 2.0;
933					gl_Position = dEQP_Position;
934				}
935			""
936
937			fragment ""
938				#version 300 es
939				precision mediump float;
940				layout(location = 0) out mediump vec4 dEQP_FragColor;
941
942				centroid in lowp  smooth float x0;
943
944				in mediump flat float x1;
945
946				uniform highp  float x2;
947
948				void main()
949				{
950					float result = (x0 + x1 + x2) / 3.0;
951					dEQP_FragColor = vec4(result, result, result, 1.0);
952				}
953			""
954		end
955		case storage_precision_interp_invariant
956			expect compile_fail
957			values {}
958
959			vertex ""
960				#version 300 es
961				precision mediump float;
962				in highp vec4 dEQP_Position;
963
964				centroid out lowp smooth invariant float x0;
965
966				out mediump flat float x1;
967
968				uniform highp  float x2;
969
970				void main()
971				{
972					x0 = 1.0;
973					x1 = 2.0;
974					gl_Position = dEQP_Position;
975				}
976			""
977
978			fragment ""
979				#version 300 es
980				precision mediump float;
981				layout(location = 0) out mediump vec4 dEQP_FragColor;
982
983				centroid in lowp smooth  float x0;
984
985				in mediump flat float x1;
986
987				uniform highp  float x2;
988
989				void main()
990				{
991					float result = (x0 + x1 + x2) / 3.0;
992					dEQP_FragColor = vec4(result, result, result, 1.0);
993				}
994			""
995		end
996		case precision_invariant_interp_storage
997			expect compile_fail
998			values {}
999
1000			vertex ""
1001				#version 300 es
1002				precision mediump float;
1003				in highp vec4 dEQP_Position;
1004
1005				lowp invariant smooth centroid out float x0;
1006
1007				mediump flat out float x1;
1008
1009				highp  uniform float x2;
1010
1011				void main()
1012				{
1013					x0 = 1.0;
1014					x1 = 2.0;
1015					gl_Position = dEQP_Position;
1016				}
1017			""
1018
1019			fragment ""
1020				#version 300 es
1021				precision mediump float;
1022				layout(location = 0) out mediump vec4 dEQP_FragColor;
1023
1024				lowp  smooth centroid in float x0;
1025
1026				mediump flat in float x1;
1027
1028				highp  uniform float x2;
1029
1030				void main()
1031				{
1032					float result = (x0 + x1 + x2) / 3.0;
1033					dEQP_FragColor = vec4(result, result, result, 1.0);
1034				}
1035			""
1036		end
1037		case precision_invariant_storage_interp
1038			expect compile_fail
1039			values {}
1040
1041			vertex ""
1042				#version 300 es
1043				precision mediump float;
1044				in highp vec4 dEQP_Position;
1045
1046				lowp invariant centroid out smooth float x0;
1047
1048				mediump out flat float x1;
1049
1050				highp uniform float x2;
1051
1052				void main()
1053				{
1054					x0 = 1.0;
1055					x1 = 2.0;
1056					gl_Position = dEQP_Position;
1057				}
1058			""
1059
1060			fragment ""
1061				#version 300 es
1062				precision mediump float;
1063				layout(location = 0) out mediump vec4 dEQP_FragColor;
1064
1065				lowp  centroid in smooth float x0;
1066
1067				mediump in flat float x1;
1068
1069				highp uniform float x2;
1070
1071				void main()
1072				{
1073					float result = (x0 + x1 + x2) / 3.0;
1074					dEQP_FragColor = vec4(result, result, result, 1.0);
1075				}
1076			""
1077		end
1078		case precision_interp_invariant_storage
1079			expect compile_fail
1080			values {}
1081
1082			vertex ""
1083				#version 300 es
1084				precision mediump float;
1085				in highp vec4 dEQP_Position;
1086
1087				lowp smooth invariant centroid out float x0;
1088
1089				mediump flat out float x1;
1090
1091				highp  uniform float x2;
1092
1093				void main()
1094				{
1095					x0 = 1.0;
1096					x1 = 2.0;
1097					gl_Position = dEQP_Position;
1098				}
1099			""
1100
1101			fragment ""
1102				#version 300 es
1103				precision mediump float;
1104				layout(location = 0) out mediump vec4 dEQP_FragColor;
1105
1106				lowp smooth  centroid in float x0;
1107
1108				mediump flat in float x1;
1109
1110				highp  uniform float x2;
1111
1112				void main()
1113				{
1114					float result = (x0 + x1 + x2) / 3.0;
1115					dEQP_FragColor = vec4(result, result, result, 1.0);
1116				}
1117			""
1118		end
1119		case precision_interp_storage_invariant
1120			expect compile_fail
1121			values {}
1122
1123			vertex ""
1124				#version 300 es
1125				precision mediump float;
1126				in highp vec4 dEQP_Position;
1127
1128				lowp smooth centroid out invariant float x0;
1129
1130				mediump flat out float x1;
1131
1132				highp uniform float x2;
1133
1134				void main()
1135				{
1136					x0 = 1.0;
1137					x1 = 2.0;
1138					gl_Position = dEQP_Position;
1139				}
1140			""
1141
1142			fragment ""
1143				#version 300 es
1144				precision mediump float;
1145				layout(location = 0) out mediump vec4 dEQP_FragColor;
1146
1147				lowp smooth centroid in  float x0;
1148
1149				mediump flat in float x1;
1150
1151				highp uniform float x2;
1152
1153				void main()
1154				{
1155					float result = (x0 + x1 + x2) / 3.0;
1156					dEQP_FragColor = vec4(result, result, result, 1.0);
1157				}
1158			""
1159		end
1160		case precision_storage_invariant_interp
1161			expect compile_fail
1162			values {}
1163
1164			vertex ""
1165				#version 300 es
1166				precision mediump float;
1167				in highp vec4 dEQP_Position;
1168
1169				lowp centroid out invariant smooth float x0;
1170
1171				mediump out flat float x1;
1172
1173				highp uniform  float x2;
1174
1175				void main()
1176				{
1177					x0 = 1.0;
1178					x1 = 2.0;
1179					gl_Position = dEQP_Position;
1180				}
1181			""
1182
1183			fragment ""
1184				#version 300 es
1185				precision mediump float;
1186				layout(location = 0) out mediump vec4 dEQP_FragColor;
1187
1188				lowp centroid in  smooth float x0;
1189
1190				mediump in flat float x1;
1191
1192				highp uniform  float x2;
1193
1194				void main()
1195				{
1196					float result = (x0 + x1 + x2) / 3.0;
1197					dEQP_FragColor = vec4(result, result, result, 1.0);
1198				}
1199			""
1200		end
1201		case precision_storage_interp_invariant
1202			expect compile_fail
1203			values {}
1204
1205			vertex ""
1206				#version 300 es
1207				precision mediump float;
1208				in highp vec4 dEQP_Position;
1209
1210				lowp centroid out smooth invariant float x0;
1211
1212				mediump out flat float x1;
1213
1214				highp uniform  float x2;
1215
1216				void main()
1217				{
1218					x0 = 1.0;
1219					x1 = 2.0;
1220					gl_Position = dEQP_Position;
1221				}
1222			""
1223
1224			fragment ""
1225				#version 300 es
1226				precision mediump float;
1227				layout(location = 0) out mediump vec4 dEQP_FragColor;
1228
1229				lowp centroid in smooth  float x0;
1230
1231				mediump in flat float x1;
1232
1233				highp uniform  float x2;
1234
1235				void main()
1236				{
1237					float result = (x0 + x1 + x2) / 3.0;
1238					dEQP_FragColor = vec4(result, result, result, 1.0);
1239				}
1240			""
1241		end
1242		case interp_precision_storage
1243			expect compile_fail
1244			values {}
1245
1246			vertex ""
1247				#version 300 es
1248				precision mediump float;
1249				in highp vec4 dEQP_Position;
1250
1251				smooth lowp centroid out float x0;
1252
1253				flat mediump out float x1;
1254
1255				 highp uniform float x2;
1256
1257				void main()
1258				{
1259					x0 = 1.0;
1260					x1 = 2.0;
1261					gl_Position = dEQP_Position;
1262				}
1263			""
1264
1265			fragment ""
1266				#version 300 es
1267				precision mediump float;
1268				layout(location = 0) out mediump vec4 dEQP_FragColor;
1269
1270				smooth lowp centroid in float x0;
1271
1272				flat mediump in float x1;
1273
1274				 highp uniform float x2;
1275
1276				void main()
1277				{
1278					float result = (x0 + x1 + x2) / 3.0;
1279					dEQP_FragColor = vec4(result, result, result, 1.0);
1280				}
1281			""
1282		end
1283		case storage_interp_precision
1284			expect compile_fail
1285			values {}
1286
1287			vertex ""
1288				#version 300 es
1289				precision mediump float;
1290				in highp vec4 dEQP_Position;
1291
1292				centroid out smooth lowp float x0;
1293
1294				out flat mediump float x1;
1295
1296				uniform highp float x2;
1297
1298				void main()
1299				{
1300					x0 = 1.0;
1301					x1 = 2.0;
1302					gl_Position = dEQP_Position;
1303				}
1304			""
1305
1306			fragment ""
1307				#version 300 es
1308				precision mediump float;
1309				layout(location = 0) out mediump vec4 dEQP_FragColor;
1310
1311				centroid in smooth lowp float x0;
1312
1313				in flat mediump float x1;
1314
1315				uniform highp float x2;
1316
1317				void main()
1318				{
1319					float result = (x0 + x1 + x2) / 3.0;
1320					dEQP_FragColor = vec4(result, result, result, 1.0);
1321				}
1322			""
1323		end
1324		case storage_precision_interp
1325			expect compile_fail
1326			values {}
1327
1328			vertex ""
1329				#version 300 es
1330				precision mediump float;
1331				in highp vec4 dEQP_Position;
1332
1333				centroid out lowp smooth float x0;
1334
1335				out mediump flat float x1;
1336
1337				uniform highp float x2;
1338
1339				void main()
1340				{
1341					x0 = 1.0;
1342					x1 = 2.0;
1343					gl_Position = dEQP_Position;
1344				}
1345			""
1346
1347			fragment ""
1348				#version 300 es
1349				precision mediump float;
1350				layout(location = 0) out mediump vec4 dEQP_FragColor;
1351
1352				centroid in lowp smooth float x0;
1353
1354				in mediump flat float x1;
1355
1356				uniform highp float x2;
1357
1358				void main()
1359				{
1360					float result = (x0 + x1 + x2) / 3.0;
1361					dEQP_FragColor = vec4(result, result, result, 1.0);
1362				}
1363			""
1364		end
1365		case precision_interp_storage
1366			expect compile_fail
1367			values {}
1368
1369			vertex ""
1370				#version 300 es
1371				precision mediump float;
1372				in highp vec4 dEQP_Position;
1373
1374				lowp smooth centroid out float x0;
1375
1376				mediump flat out float x1;
1377
1378				highp uniform float x2;
1379
1380				void main()
1381				{
1382					x0 = 1.0;
1383					x1 = 2.0;
1384					gl_Position = dEQP_Position;
1385				}
1386			""
1387
1388			fragment ""
1389				#version 300 es
1390				precision mediump float;
1391				layout(location = 0) out mediump vec4 dEQP_FragColor;
1392
1393				lowp smooth centroid in float x0;
1394
1395				mediump flat in float x1;
1396
1397				highp uniform float x2;
1398
1399				void main()
1400				{
1401					float result = (x0 + x1 + x2) / 3.0;
1402					dEQP_FragColor = vec4(result, result, result, 1.0);
1403				}
1404			""
1405		end
1406		case precision_storage_interp
1407			expect compile_fail
1408			values {}
1409
1410			vertex ""
1411				#version 300 es
1412				precision mediump float;
1413				in highp vec4 dEQP_Position;
1414
1415				lowp centroid out smooth float x0;
1416
1417				mediump out flat float x1;
1418
1419				highp uniform float x2;
1420
1421				void main()
1422				{
1423					x0 = 1.0;
1424					x1 = 2.0;
1425					gl_Position = dEQP_Position;
1426				}
1427			""
1428
1429			fragment ""
1430				#version 300 es
1431				precision mediump float;
1432				layout(location = 0) out mediump vec4 dEQP_FragColor;
1433
1434				lowp centroid in smooth float x0;
1435
1436				mediump in flat float x1;
1437
1438				highp uniform float x2;
1439
1440				void main()
1441				{
1442					float result = (x0 + x1 + x2) / 3.0;
1443					dEQP_FragColor = vec4(result, result, result, 1.0);
1444				}
1445			""
1446		end
1447		case invariant_storage_interp
1448			expect compile_fail
1449			values {}
1450
1451			vertex ""
1452				#version 300 es
1453				precision mediump float;
1454				in highp vec4 dEQP_Position;
1455
1456				invariant centroid out smooth float x0;
1457
1458				 out flat float x1;
1459
1460				 uniform float x2;
1461
1462				void main()
1463				{
1464					x0 = 1.0;
1465					x1 = 2.0;
1466					gl_Position = dEQP_Position;
1467				}
1468			""
1469
1470			fragment ""
1471				#version 300 es
1472				precision mediump float;
1473				layout(location = 0) out mediump vec4 dEQP_FragColor;
1474
1475				 centroid in smooth float x0;
1476
1477				 in flat float x1;
1478
1479				 uniform float x2;
1480
1481				void main()
1482				{
1483					float result = (x0 + x1 + x2) / 3.0;
1484					dEQP_FragColor = vec4(result, result, result, 1.0);
1485				}
1486			""
1487		end
1488		case interp_invariant_storage
1489			expect compile_fail
1490			values {}
1491
1492			vertex ""
1493				#version 300 es
1494				precision mediump float;
1495				in highp vec4 dEQP_Position;
1496
1497				smooth invariant centroid out float x0;
1498
1499				flat out float x1;
1500
1501				 uniform float x2;
1502
1503				void main()
1504				{
1505					x0 = 1.0;
1506					x1 = 2.0;
1507					gl_Position = dEQP_Position;
1508				}
1509			""
1510
1511			fragment ""
1512				#version 300 es
1513				precision mediump float;
1514				layout(location = 0) out mediump vec4 dEQP_FragColor;
1515
1516				smooth  centroid in float x0;
1517
1518				flat in float x1;
1519
1520				 uniform float x2;
1521
1522				void main()
1523				{
1524					float result = (x0 + x1 + x2) / 3.0;
1525					dEQP_FragColor = vec4(result, result, result, 1.0);
1526				}
1527			""
1528		end
1529		case interp_storage_invariant
1530			expect compile_fail
1531			values {}
1532
1533			vertex ""
1534				#version 300 es
1535				precision mediump float;
1536				in highp vec4 dEQP_Position;
1537
1538				smooth centroid out invariant float x0;
1539
1540				flat out float x1;
1541
1542				 uniform float x2;
1543
1544				void main()
1545				{
1546					x0 = 1.0;
1547					x1 = 2.0;
1548					gl_Position = dEQP_Position;
1549				}
1550			""
1551
1552			fragment ""
1553				#version 300 es
1554				precision mediump float;
1555				layout(location = 0) out mediump vec4 dEQP_FragColor;
1556
1557				smooth centroid in  float x0;
1558
1559				flat in float x1;
1560
1561				 uniform float x2;
1562
1563				void main()
1564				{
1565					float result = (x0 + x1 + x2) / 3.0;
1566					dEQP_FragColor = vec4(result, result, result, 1.0);
1567				}
1568			""
1569		end
1570		case storage_invariant_interp
1571			expect compile_fail
1572			values {}
1573
1574			vertex ""
1575				#version 300 es
1576				precision mediump float;
1577				in highp vec4 dEQP_Position;
1578
1579				centroid out invariant smooth float x0;
1580
1581				out flat float x1;
1582
1583				uniform  float x2;
1584
1585				void main()
1586				{
1587					x0 = 1.0;
1588					x1 = 2.0;
1589					gl_Position = dEQP_Position;
1590				}
1591			""
1592
1593			fragment ""
1594				#version 300 es
1595				precision mediump float;
1596				layout(location = 0) out mediump vec4 dEQP_FragColor;
1597
1598				centroid in  smooth float x0;
1599
1600				in flat float x1;
1601
1602				uniform  float x2;
1603
1604				void main()
1605				{
1606					float result = (x0 + x1 + x2) / 3.0;
1607					dEQP_FragColor = vec4(result, result, result, 1.0);
1608				}
1609			""
1610		end
1611		case storage_interp_invariant
1612			expect compile_fail
1613			values {}
1614
1615			vertex ""
1616				#version 300 es
1617				precision mediump float;
1618				in highp vec4 dEQP_Position;
1619
1620				centroid out smooth invariant float x0;
1621
1622				out flat float x1;
1623
1624				uniform  float x2;
1625
1626				void main()
1627				{
1628					x0 = 1.0;
1629					x1 = 2.0;
1630					gl_Position = dEQP_Position;
1631				}
1632			""
1633
1634			fragment ""
1635				#version 300 es
1636				precision mediump float;
1637				layout(location = 0) out mediump vec4 dEQP_FragColor;
1638
1639				centroid in smooth  float x0;
1640
1641				in flat float x1;
1642
1643				uniform  float x2;
1644
1645				void main()
1646				{
1647					float result = (x0 + x1 + x2) / 3.0;
1648					dEQP_FragColor = vec4(result, result, result, 1.0);
1649				}
1650			""
1651		end
1652		case invariant_precision_storage
1653			expect compile_fail
1654			values {}
1655
1656			vertex ""
1657				#version 300 es
1658				precision mediump float;
1659				in highp vec4 dEQP_Position;
1660
1661				invariant lowp centroid out float x0;
1662
1663				 mediump out float x1;
1664
1665				 highp uniform float x2;
1666
1667				void main()
1668				{
1669					x0 = 1.0;
1670					x1 = 2.0;
1671					gl_Position = dEQP_Position;
1672				}
1673			""
1674
1675			fragment ""
1676				#version 300 es
1677				precision mediump float;
1678				layout(location = 0) out mediump vec4 dEQP_FragColor;
1679
1680				 lowp centroid in float x0;
1681
1682				 mediump in float x1;
1683
1684				 highp uniform float x2;
1685
1686				void main()
1687				{
1688					float result = (x0 + x1 + x2) / 3.0;
1689					dEQP_FragColor = vec4(result, result, result, 1.0);
1690				}
1691			""
1692		end
1693		case storage_invariant_precision
1694			expect compile_fail
1695			values {}
1696
1697			vertex ""
1698				#version 300 es
1699				precision mediump float;
1700				in highp vec4 dEQP_Position;
1701
1702				centroid out invariant lowp float x0;
1703
1704				out mediump float x1;
1705
1706				uniform highp float x2;
1707
1708				void main()
1709				{
1710					x0 = 1.0;
1711					x1 = 2.0;
1712					gl_Position = dEQP_Position;
1713				}
1714			""
1715
1716			fragment ""
1717				#version 300 es
1718				precision mediump float;
1719				layout(location = 0) out mediump vec4 dEQP_FragColor;
1720
1721				centroid in  lowp float x0;
1722
1723				in mediump float x1;
1724
1725				uniform highp float x2;
1726
1727				void main()
1728				{
1729					float result = (x0 + x1 + x2) / 3.0;
1730					dEQP_FragColor = vec4(result, result, result, 1.0);
1731				}
1732			""
1733		end
1734		case storage_precision_invariant
1735			expect compile_fail
1736			values {}
1737
1738			vertex ""
1739				#version 300 es
1740				precision mediump float;
1741				in highp vec4 dEQP_Position;
1742
1743				centroid out lowp invariant float x0;
1744
1745				out mediump float x1;
1746
1747				uniform highp float x2;
1748
1749				void main()
1750				{
1751					x0 = 1.0;
1752					x1 = 2.0;
1753					gl_Position = dEQP_Position;
1754				}
1755			""
1756
1757			fragment ""
1758				#version 300 es
1759				precision mediump float;
1760				layout(location = 0) out mediump vec4 dEQP_FragColor;
1761
1762				centroid in lowp  float x0;
1763
1764				in mediump float x1;
1765
1766				uniform highp float x2;
1767
1768				void main()
1769				{
1770					float result = (x0 + x1 + x2) / 3.0;
1771					dEQP_FragColor = vec4(result, result, result, 1.0);
1772				}
1773			""
1774		end
1775		case precision_invariant_storage
1776			expect compile_fail
1777			values {}
1778
1779			vertex ""
1780				#version 300 es
1781				precision mediump float;
1782				in highp vec4 dEQP_Position;
1783
1784				lowp invariant centroid out float x0;
1785
1786				mediump out float x1;
1787
1788				highp uniform float x2;
1789
1790				void main()
1791				{
1792					x0 = 1.0;
1793					x1 = 2.0;
1794					gl_Position = dEQP_Position;
1795				}
1796			""
1797
1798			fragment ""
1799				#version 300 es
1800				precision mediump float;
1801				layout(location = 0) out mediump vec4 dEQP_FragColor;
1802
1803				lowp  centroid in float x0;
1804
1805				mediump in float x1;
1806
1807				highp uniform float x2;
1808
1809				void main()
1810				{
1811					float result = (x0 + x1 + x2) / 3.0;
1812					dEQP_FragColor = vec4(result, result, result, 1.0);
1813				}
1814			""
1815		end
1816		case precision_storage_invariant
1817			expect compile_fail
1818			values {}
1819
1820			vertex ""
1821				#version 300 es
1822				precision mediump float;
1823				in highp vec4 dEQP_Position;
1824
1825				lowp centroid out invariant float x0;
1826
1827				mediump out float x1;
1828
1829				highp uniform float x2;
1830
1831				void main()
1832				{
1833					x0 = 1.0;
1834					x1 = 2.0;
1835					gl_Position = dEQP_Position;
1836				}
1837			""
1838
1839			fragment ""
1840				#version 300 es
1841				precision mediump float;
1842				layout(location = 0) out mediump vec4 dEQP_FragColor;
1843
1844				lowp centroid in  float x0;
1845
1846				mediump in float x1;
1847
1848				highp uniform float x2;
1849
1850				void main()
1851				{
1852					float result = (x0 + x1 + x2) / 3.0;
1853					dEQP_FragColor = vec4(result, result, result, 1.0);
1854				}
1855			""
1856		end
1857		case precision_storage
1858			expect compile_fail
1859			values {}
1860
1861			vertex ""
1862				#version 300 es
1863				precision mediump float;
1864				in highp vec4 dEQP_Position;
1865
1866				lowp centroid out float x0;
1867
1868				mediump out float x1;
1869
1870				highp uniform float x2;
1871
1872				void main()
1873				{
1874					x0 = 1.0;
1875					x1 = 2.0;
1876					gl_Position = dEQP_Position;
1877				}
1878			""
1879
1880			fragment ""
1881				#version 300 es
1882				precision mediump float;
1883				layout(location = 0) out mediump vec4 dEQP_FragColor;
1884
1885				lowp centroid in float x0;
1886
1887				mediump in float x1;
1888
1889				highp uniform float x2;
1890
1891				void main()
1892				{
1893					float result = (x0 + x1 + x2) / 3.0;
1894					dEQP_FragColor = vec4(result, result, result, 1.0);
1895				}
1896			""
1897		end
1898		case storage_interp
1899			expect compile_fail
1900			values {}
1901
1902			vertex ""
1903				#version 300 es
1904				precision mediump float;
1905				in highp vec4 dEQP_Position;
1906
1907				centroid out smooth float x0;
1908
1909				out flat float x1;
1910
1911				uniform float x2;
1912
1913				void main()
1914				{
1915					x0 = 1.0;
1916					x1 = 2.0;
1917					gl_Position = dEQP_Position;
1918				}
1919			""
1920
1921			fragment ""
1922				#version 300 es
1923				precision mediump float;
1924				layout(location = 0) out mediump vec4 dEQP_FragColor;
1925
1926				centroid in smooth float x0;
1927
1928				in flat float x1;
1929
1930				uniform float x2;
1931
1932				void main()
1933				{
1934					float result = (x0 + x1 + x2) / 3.0;
1935					dEQP_FragColor = vec4(result, result, result, 1.0);
1936				}
1937			""
1938		end
1939		case storage_invariant
1940			expect compile_fail
1941			values {}
1942
1943			vertex ""
1944				#version 300 es
1945				precision mediump float;
1946				in highp vec4 dEQP_Position;
1947
1948				centroid out invariant float x0;
1949
1950				out float x1;
1951
1952				uniform float x2;
1953
1954				void main()
1955				{
1956					x0 = 1.0;
1957					x1 = 2.0;
1958					gl_Position = dEQP_Position;
1959				}
1960			""
1961
1962			fragment ""
1963				#version 300 es
1964				precision mediump float;
1965				layout(location = 0) out mediump vec4 dEQP_FragColor;
1966
1967				centroid in  float x0;
1968
1969				in float x1;
1970
1971				uniform float x2;
1972
1973				void main()
1974				{
1975					float result = (x0 + x1 + x2) / 3.0;
1976					dEQP_FragColor = vec4(result, result, result, 1.0);
1977				}
1978			""
1979		end
1980		case invariant_interp_storage_precision_invariant_input
1981			expect compile_fail
1982			values {}
1983
1984			vertex ""
1985				#version 300 es
1986				precision mediump float;
1987				in highp vec4 dEQP_Position;
1988
1989				invariant smooth centroid out lowp float x0;
1990
1991				 flat out mediump float x1;
1992
1993				 uniform highp float x2;
1994
1995				void main()
1996				{
1997					x0 = 1.0;
1998					x1 = 2.0;
1999					gl_Position = dEQP_Position;
2000				}
2001			""
2002
2003			fragment ""
2004				#version 300 es
2005				precision mediump float;
2006				layout(location = 0) out mediump vec4 dEQP_FragColor;
2007
2008				invariant  smooth centroid in lowp float x0;
2009
2010				 flat in mediump float x1;
2011
2012				 uniform highp float x2;
2013
2014				void main()
2015				{
2016					float result = (x0 + x1 + x2) / 3.0;
2017					dEQP_FragColor = vec4(result, result, result, 1.0);
2018				}
2019			""
2020		end
2021		case interp_storage_precision_invariant_input
2022			expect compile_fail
2023			values {}
2024
2025			vertex ""
2026				#version 300 es
2027				precision mediump float;
2028				in highp vec4 dEQP_Position;
2029
2030				smooth centroid out lowp float x0;
2031
2032				flat out mediump float x1;
2033
2034				 uniform highp float x2;
2035
2036				void main()
2037				{
2038					x0 = 1.0;
2039					x1 = 2.0;
2040					gl_Position = dEQP_Position;
2041				}
2042			""
2043
2044			fragment ""
2045				#version 300 es
2046				precision mediump float;
2047				layout(location = 0) out mediump vec4 dEQP_FragColor;
2048
2049				invariant smooth centroid in lowp float x0;
2050
2051				flat in mediump float x1;
2052
2053				 uniform highp float x2;
2054
2055				void main()
2056				{
2057					float result = (x0 + x1 + x2) / 3.0;
2058					dEQP_FragColor = vec4(result, result, result, 1.0);
2059				}
2060			""
2061		end
2062		case invariant_interp_storage_invariant_input
2063			expect compile_fail
2064			values {}
2065
2066			vertex ""
2067				#version 300 es
2068				precision mediump float;
2069				in highp vec4 dEQP_Position;
2070
2071				invariant smooth centroid out float x0;
2072
2073				 flat out float x1;
2074
2075				 uniform float x2;
2076
2077				void main()
2078				{
2079					x0 = 1.0;
2080					x1 = 2.0;
2081					gl_Position = dEQP_Position;
2082				}
2083			""
2084
2085			fragment ""
2086				#version 300 es
2087				precision mediump float;
2088				layout(location = 0) out mediump vec4 dEQP_FragColor;
2089
2090				invariant  smooth centroid in float x0;
2091
2092				 flat in float x1;
2093
2094				 uniform float x2;
2095
2096				void main()
2097				{
2098					float result = (x0 + x1 + x2) / 3.0;
2099					dEQP_FragColor = vec4(result, result, result, 1.0);
2100				}
2101			""
2102		end
2103		case invariant_storage_precision_invariant_input
2104			expect compile_fail
2105			values {}
2106
2107			vertex ""
2108				#version 300 es
2109				precision mediump float;
2110				in highp vec4 dEQP_Position;
2111
2112				invariant centroid out lowp float x0;
2113
2114				 out mediump float x1;
2115
2116				 uniform highp float x2;
2117
2118				void main()
2119				{
2120					x0 = 1.0;
2121					x1 = 2.0;
2122					gl_Position = dEQP_Position;
2123				}
2124			""
2125
2126			fragment ""
2127				#version 300 es
2128				precision mediump float;
2129				layout(location = 0) out mediump vec4 dEQP_FragColor;
2130
2131				invariant  centroid in lowp float x0;
2132
2133				 in mediump float x1;
2134
2135				 uniform highp float x2;
2136
2137				void main()
2138				{
2139					float result = (x0 + x1 + x2) / 3.0;
2140					dEQP_FragColor = vec4(result, result, result, 1.0);
2141				}
2142			""
2143		end
2144		case storage_precision_invariant_input
2145			expect compile_fail
2146			values {}
2147
2148			vertex ""
2149				#version 300 es
2150				precision mediump float;
2151				in highp vec4 dEQP_Position;
2152
2153				centroid out lowp float x0;
2154
2155				out mediump float x1;
2156
2157				uniform highp float x2;
2158
2159				void main()
2160				{
2161					x0 = 1.0;
2162					x1 = 2.0;
2163					gl_Position = dEQP_Position;
2164				}
2165			""
2166
2167			fragment ""
2168				#version 300 es
2169				precision mediump float;
2170				layout(location = 0) out mediump vec4 dEQP_FragColor;
2171
2172				invariant centroid in lowp float x0;
2173
2174				in mediump float x1;
2175
2176				uniform highp float x2;
2177
2178				void main()
2179				{
2180					float result = (x0 + x1 + x2) / 3.0;
2181					dEQP_FragColor = vec4(result, result, result, 1.0);
2182				}
2183			""
2184		end
2185		case interp_storage_invariant_input
2186			expect compile_fail
2187			values {}
2188
2189			vertex ""
2190				#version 300 es
2191				precision mediump float;
2192				in highp vec4 dEQP_Position;
2193
2194				smooth centroid out float x0;
2195
2196				flat out float x1;
2197
2198				 uniform float x2;
2199
2200				void main()
2201				{
2202					x0 = 1.0;
2203					x1 = 2.0;
2204					gl_Position = dEQP_Position;
2205				}
2206			""
2207
2208			fragment ""
2209				#version 300 es
2210				precision mediump float;
2211				layout(location = 0) out mediump vec4 dEQP_FragColor;
2212
2213				invariant smooth centroid in float x0;
2214
2215				flat in float x1;
2216
2217				 uniform float x2;
2218
2219				void main()
2220				{
2221					float result = (x0 + x1 + x2) / 3.0;
2222					dEQP_FragColor = vec4(result, result, result, 1.0);
2223				}
2224			""
2225		end
2226		case invariant_storage_invariant_input
2227			expect compile_fail
2228			values {}
2229
2230			vertex ""
2231				#version 300 es
2232				precision mediump float;
2233				in highp vec4 dEQP_Position;
2234
2235				invariant centroid out float x0;
2236
2237				 out float x1;
2238
2239				 uniform float x2;
2240
2241				void main()
2242				{
2243					x0 = 1.0;
2244					x1 = 2.0;
2245					gl_Position = dEQP_Position;
2246				}
2247			""
2248
2249			fragment ""
2250				#version 300 es
2251				precision mediump float;
2252				layout(location = 0) out mediump vec4 dEQP_FragColor;
2253
2254				invariant  centroid in float x0;
2255
2256				 in float x1;
2257
2258				 uniform float x2;
2259
2260				void main()
2261				{
2262					float result = (x0 + x1 + x2) / 3.0;
2263					dEQP_FragColor = vec4(result, result, result, 1.0);
2264				}
2265			""
2266		end
2267
2268	end # invalid
2269
2270end # variables
2271group parameters "Order of qualification in function parameters."
2272
2273	group valid "Valid orderings."
2274
2275		case storage_parameter_precision
2276			expect pass
2277			version 300 es
2278			values {}
2279
2280			both ""
2281				#version 300 es
2282				precision mediump float;
2283				${DECLARATIONS}
2284
2285				float foo0 (const in lowp float x)
2286				{
2287					return x + 1.0;
2288				}
2289
2290				void foo1 ( out mediump float x)
2291				{
2292					x = 1.0;
2293				}
2294
2295				float foo2 ( inout highp float x)
2296				{
2297					return x + 1.0;
2298				}
2299
2300				void main()
2301				{
2302					${SETUP}
2303					float result;
2304					foo1(result);
2305					float x0 = foo0(1.0);
2306					foo2(result);
2307					${OUTPUT}
2308				}
2309			""
2310		end
2311		case storage_parameter
2312			expect pass
2313			version 300 es
2314			values {}
2315
2316			both ""
2317				#version 300 es
2318				precision mediump float;
2319				${DECLARATIONS}
2320
2321				float foo0 (const in float x)
2322				{
2323					return x + 1.0;
2324				}
2325
2326				void foo1 ( out float x)
2327				{
2328					x = 1.0;
2329				}
2330
2331				float foo2 ( inout float x)
2332				{
2333					return x + 1.0;
2334				}
2335
2336				void main()
2337				{
2338					${SETUP}
2339					float result;
2340					foo1(result);
2341					float x0 = foo0(1.0);
2342					foo2(result);
2343					${OUTPUT}
2344				}
2345			""
2346		end
2347		case storage_precision
2348			expect pass
2349			version 300 es
2350			values {}
2351
2352			both ""
2353				#version 300 es
2354				precision mediump float;
2355				${DECLARATIONS}
2356
2357				float foo0 (const lowp float x)
2358				{
2359					return x + 1.0;
2360				}
2361
2362				void foo1 ( mediump float x)
2363				{
2364					x = 1.0;
2365				}
2366
2367				float foo2 ( highp float x)
2368				{
2369					return x + 1.0;
2370				}
2371
2372				void main()
2373				{
2374					${SETUP}
2375					float result;
2376					foo1(result);
2377					float x0 = foo0(1.0);
2378					foo2(result);
2379					${OUTPUT}
2380				}
2381			""
2382		end
2383		case parameter_precision
2384			expect pass
2385			version 300 es
2386			values {}
2387
2388			both ""
2389				#version 300 es
2390				precision mediump float;
2391				${DECLARATIONS}
2392
2393				float foo0 (in lowp float x)
2394				{
2395					return x + 1.0;
2396				}
2397
2398				void foo1 (out mediump float x)
2399				{
2400					x = 1.0;
2401				}
2402
2403				float foo2 (inout highp float x)
2404				{
2405					return x + 1.0;
2406				}
2407
2408				void main()
2409				{
2410					${SETUP}
2411					float result;
2412					foo1(result);
2413					float x0 = foo0(1.0);
2414					foo2(result);
2415					${OUTPUT}
2416				}
2417			""
2418		end
2419
2420	end # valid
2421	group invalid "Invalid orderings."
2422
2423		case storage_precision_parameter
2424			expect compile_fail
2425			version 300 es
2426			values {}
2427
2428			both ""
2429				#version 300 es
2430				precision mediump float;
2431				${DECLARATIONS}
2432
2433				float foo0 (const lowp in float x)
2434				{
2435					return x + 1.0;
2436				}
2437
2438				void foo1 ( mediump out float x)
2439				{
2440					x = 1.0;
2441				}
2442
2443				float foo2 ( highp inout float x)
2444				{
2445					return x + 1.0;
2446				}
2447
2448				void main()
2449				{
2450					${SETUP}
2451					float result;
2452					foo1(result);
2453					float x0 = foo0(1.0);
2454					foo2(result);
2455					${OUTPUT}
2456				}
2457			""
2458		end
2459		case parameter_storage_precision
2460			expect compile_fail
2461			version 300 es
2462			values {}
2463
2464			both ""
2465				#version 300 es
2466				precision mediump float;
2467				${DECLARATIONS}
2468
2469				float foo0 (in const lowp float x)
2470				{
2471					return x + 1.0;
2472				}
2473
2474				void foo1 (out mediump float x)
2475				{
2476					x = 1.0;
2477				}
2478
2479				float foo2 (inout highp float x)
2480				{
2481					return x + 1.0;
2482				}
2483
2484				void main()
2485				{
2486					${SETUP}
2487					float result;
2488					foo1(result);
2489					float x0 = foo0(1.0);
2490					foo2(result);
2491					${OUTPUT}
2492				}
2493			""
2494		end
2495		case parameter_precision_storage
2496			expect compile_fail
2497			version 300 es
2498			values {}
2499
2500			both ""
2501				#version 300 es
2502				precision mediump float;
2503				${DECLARATIONS}
2504
2505				float foo0 (in lowp const float x)
2506				{
2507					return x + 1.0;
2508				}
2509
2510				void foo1 (out mediump float x)
2511				{
2512					x = 1.0;
2513				}
2514
2515				float foo2 (inout highp float x)
2516				{
2517					return x + 1.0;
2518				}
2519
2520				void main()
2521				{
2522					${SETUP}
2523					float result;
2524					foo1(result);
2525					float x0 = foo0(1.0);
2526					foo2(result);
2527					${OUTPUT}
2528				}
2529			""
2530		end
2531		case precision_storage_parameter
2532			expect compile_fail
2533			version 300 es
2534			values {}
2535
2536			both ""
2537				#version 300 es
2538				precision mediump float;
2539				${DECLARATIONS}
2540
2541				float foo0 (lowp const in float x)
2542				{
2543					return x + 1.0;
2544				}
2545
2546				void foo1 (mediump out float x)
2547				{
2548					x = 1.0;
2549				}
2550
2551				float foo2 (highp inout float x)
2552				{
2553					return x + 1.0;
2554				}
2555
2556				void main()
2557				{
2558					${SETUP}
2559					float result;
2560					foo1(result);
2561					float x0 = foo0(1.0);
2562					foo2(result);
2563					${OUTPUT}
2564				}
2565			""
2566		end
2567		case precision_parameter_storage
2568			expect compile_fail
2569			version 300 es
2570			values {}
2571
2572			both ""
2573				#version 300 es
2574				precision mediump float;
2575				${DECLARATIONS}
2576
2577				float foo0 (lowp in const float x)
2578				{
2579					return x + 1.0;
2580				}
2581
2582				void foo1 (mediump out float x)
2583				{
2584					x = 1.0;
2585				}
2586
2587				float foo2 (highp inout float x)
2588				{
2589					return x + 1.0;
2590				}
2591
2592				void main()
2593				{
2594					${SETUP}
2595					float result;
2596					foo1(result);
2597					float x0 = foo0(1.0);
2598					foo2(result);
2599					${OUTPUT}
2600				}
2601			""
2602		end
2603		case parameter_storage
2604			expect compile_fail
2605			version 300 es
2606			values {}
2607
2608			both ""
2609				#version 300 es
2610				precision mediump float;
2611				${DECLARATIONS}
2612
2613				float foo0 (in const float x)
2614				{
2615					return x + 1.0;
2616				}
2617
2618				void foo1 (out float x)
2619				{
2620					x = 1.0;
2621				}
2622
2623				float foo2 (inout float x)
2624				{
2625					return x + 1.0;
2626				}
2627
2628				void main()
2629				{
2630					${SETUP}
2631					float result;
2632					foo1(result);
2633					float x0 = foo0(1.0);
2634					foo2(result);
2635					${OUTPUT}
2636				}
2637			""
2638		end
2639		case precision_storage
2640			expect compile_fail
2641			version 300 es
2642			values {}
2643
2644			both ""
2645				#version 300 es
2646				precision mediump float;
2647				${DECLARATIONS}
2648
2649				float foo0 (lowp const float x)
2650				{
2651					return x + 1.0;
2652				}
2653
2654				void foo1 (mediump float x)
2655				{
2656					x = 1.0;
2657				}
2658
2659				float foo2 (highp float x)
2660				{
2661					return x + 1.0;
2662				}
2663
2664				void main()
2665				{
2666					${SETUP}
2667					float result;
2668					foo1(result);
2669					float x0 = foo0(1.0);
2670					foo2(result);
2671					${OUTPUT}
2672				}
2673			""
2674		end
2675		case precision_parameter
2676			expect compile_fail
2677			version 300 es
2678			values {}
2679
2680			both ""
2681				#version 300 es
2682				precision mediump float;
2683				${DECLARATIONS}
2684
2685				float foo0 (lowp in float x)
2686				{
2687					return x + 1.0;
2688				}
2689
2690				void foo1 (mediump out float x)
2691				{
2692					x = 1.0;
2693				}
2694
2695				float foo2 (highp inout float x)
2696				{
2697					return x + 1.0;
2698				}
2699
2700				void main()
2701				{
2702					${SETUP}
2703					float result;
2704					foo1(result);
2705					float x0 = foo0(1.0);
2706					foo2(result);
2707					${OUTPUT}
2708				}
2709			""
2710		end
2711
2712	end # invalid
2713
2714end # parameters
2715