Lower correlation threshold in flush-finish tests again am: 6455e6f987 am: 2e18b48b04
[platform/upstream/VK-GL-CTS.git] / modules / gles2 / scripts / gen-reserved_operators.py
1 # -*- coding: utf-8 -*-
2
3 #-------------------------------------------------------------------------
4 # drawElements Quality Program utilities
5 # --------------------------------------
6 #
7 # Copyright 2015 The Android Open Source Project
8 #
9 # Licensed under the Apache License, Version 2.0 (the "License");
10 # you may not use this file except in compliance with the License.
11 # You may obtain a copy of the License at
12 #
13 #      http://www.apache.org/licenses/LICENSE-2.0
14 #
15 # Unless required by applicable law or agreed to in writing, software
16 # distributed under the License is distributed on an "AS IS" BASIS,
17 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 # See the License for the specific language governing permissions and
19 # limitations under the License.
20 #
21 #-------------------------------------------------------------------------
22
23 import sys
24 from genutil import *
25
26 # Templates
27
28 reservedOperatorCaseTemplate = """
29 case operator_${{NAME}}
30         expect compile_fail
31         values {}
32
33         both ""
34                 precision mediump float;
35                 precision mediump int;
36
37                 ${DECLARATIONS}
38
39                 void main()
40                 {
41                         ${SETUP}
42                         int value = 100;
43                         ${{OP}}
44                         ${OUTPUT}
45                 }
46         ""
47 end
48 """[1:-1]
49
50 # Classes
51
52 class ReservedOperatorCase(ShaderCase):
53         def __init__(self, op):
54                 self.name               = op.name
55                 if op.operator == "~":
56                         self.operation = 'value = ~value;'
57                 else:
58                         self.operation  = 'value ' + op.operator + ' 1;'
59
60         def __str__(self):
61                 params = {
62                         "NAME": self.name,
63                         "OP"  : self.operation
64                 }
65                 return fillTemplate(reservedOperatorCaseTemplate, params)
66
67
68 class Operator():
69         def __init__(self, operator, name):
70                 self.operator   = operator
71                 self.name               = name
72
73 # Declarations
74
75 RESERVED_OPERATORS = [
76         Operator("%",   "modulo"),
77         Operator("~",   "bitwise_not"),
78         Operator("<<",  "bitwise_shift_left"),
79         Operator(">>",  "bitwise_shift_right"),
80         Operator("&",   "bitwise_and"),
81         Operator("^",   "bitwise_xor"),
82         Operator("|",   "bitwise_or"),
83         Operator("%=",  "assign_modulo"),
84         Operator("<<=", "assign_shift_left"),
85         Operator(">>=", "assign_shift_right"),
86         Operator("&=",  "assign_and"),
87         Operator("^=",  "assign_xor"),
88         Operator("|=",  "assign_or")
89 ]
90
91 # Reserved operator usage cases
92
93 reservedOperatorCases = []
94
95 for operator in RESERVED_OPERATORS:
96         reservedOperatorCases.append(ReservedOperatorCase(operator))            # Reserved operators
97
98 # Main program
99
100 if __name__ == "__main__":
101         print "Generating shader case files."
102         writeAllCases("reserved_operators.test",        reservedOperatorCases)