# -*- coding: utf-8 -*- #------------------------------------------------------------------------- # drawElements Quality Program utilities # -------------------------------------- # # Copyright 2015 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # #------------------------------------------------------------------------- import sys from genutil import * # Templates reservedOperatorCaseTemplate = """ case operator_${{NAME}} expect compile_fail values {} both "" precision mediump float; precision mediump int; ${DECLARATIONS} void main() { ${SETUP} int value = 100; ${{OP}} ${OUTPUT} } "" end """[1:-1] # Classes class ReservedOperatorCase(ShaderCase): def __init__(self, op): self.name = op.name if op.operator == "~": self.operation = 'value = ~value;' else: self.operation = 'value ' + op.operator + ' 1;' def __str__(self): params = { "NAME": self.name, "OP" : self.operation } return fillTemplate(reservedOperatorCaseTemplate, params) class Operator(): def __init__(self, operator, name): self.operator = operator self.name = name # Declarations RESERVED_OPERATORS = [ Operator("%", "modulo"), Operator("~", "bitwise_not"), Operator("<<", "bitwise_shift_left"), Operator(">>", "bitwise_shift_right"), Operator("&", "bitwise_and"), Operator("^", "bitwise_xor"), Operator("|", "bitwise_or"), Operator("%=", "assign_modulo"), Operator("<<=", "assign_shift_left"), Operator(">>=", "assign_shift_right"), Operator("&=", "assign_and"), Operator("^=", "assign_xor"), Operator("|=", "assign_or") ] # Reserved operator usage cases reservedOperatorCases = [] for operator in RESERVED_OPERATORS: reservedOperatorCases.append(ReservedOperatorCase(operator)) # Reserved operators # Main program if __name__ == "__main__": print("Generating shader case files.") writeAllCases("reserved_operators.test", reservedOperatorCases)