xref: /aosp_15_r20/external/deqp/data/gles3/shaders/qualification_order.test (revision 35238bce31c2a825756842865a792f8cf7f89930)
1# WARNING: This file is auto-generated. Do NOT modify it manually, but rather
2# modify the generating script file. Otherwise changes will be lost!
3
4group 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