xref: /aosp_15_r20/external/deqp/modules/gles3/scripts/gen-invalid-texture-funcs.py (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Worker# -*- coding: utf-8 -*-
2*35238bceSAndroid Build Coastguard Worker
3*35238bceSAndroid Build Coastguard Worker#-------------------------------------------------------------------------
4*35238bceSAndroid Build Coastguard Worker# drawElements Quality Program utilities
5*35238bceSAndroid Build Coastguard Worker# --------------------------------------
6*35238bceSAndroid Build Coastguard Worker#
7*35238bceSAndroid Build Coastguard Worker# Copyright 2015 The Android Open Source Project
8*35238bceSAndroid Build Coastguard Worker#
9*35238bceSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
10*35238bceSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
11*35238bceSAndroid Build Coastguard Worker# You may obtain a copy of the License at
12*35238bceSAndroid Build Coastguard Worker#
13*35238bceSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
14*35238bceSAndroid Build Coastguard Worker#
15*35238bceSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
16*35238bceSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
17*35238bceSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18*35238bceSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
19*35238bceSAndroid Build Coastguard Worker# limitations under the License.
20*35238bceSAndroid Build Coastguard Worker#
21*35238bceSAndroid Build Coastguard Worker#-------------------------------------------------------------------------
22*35238bceSAndroid Build Coastguard Worker
23*35238bceSAndroid Build Coastguard Workerimport sys
24*35238bceSAndroid Build Coastguard Workerimport string
25*35238bceSAndroid Build Coastguard Workerfrom genutil import *
26*35238bceSAndroid Build Coastguard Worker
27*35238bceSAndroid Build Coastguard Worker# Templates
28*35238bceSAndroid Build Coastguard Worker
29*35238bceSAndroid Build Coastguard WorkerINVALID_TEXTURE_FUNC_TEMPLATE = """
30*35238bceSAndroid Build Coastguard Workercase ${{NAME}}
31*35238bceSAndroid Build Coastguard Worker    expect compile_fail
32*35238bceSAndroid Build Coastguard Worker    values {}
33*35238bceSAndroid Build Coastguard Worker    version 300 es
34*35238bceSAndroid Build Coastguard Worker
35*35238bceSAndroid Build Coastguard Worker    both ""
36*35238bceSAndroid Build Coastguard Worker        #version 300 es
37*35238bceSAndroid Build Coastguard Worker        precision mediump float;
38*35238bceSAndroid Build Coastguard Worker        ${DECLARATIONS}
39*35238bceSAndroid Build Coastguard Worker        uniform mediump ${{SAMPLERTYPE}} s;
40*35238bceSAndroid Build Coastguard Worker
41*35238bceSAndroid Build Coastguard Worker        void main()
42*35238bceSAndroid Build Coastguard Worker        {
43*35238bceSAndroid Build Coastguard Worker            ${SETUP}
44*35238bceSAndroid Build Coastguard Worker            ${POSITION_FRAG_COLOR} = vec4(${{LOOKUP}});
45*35238bceSAndroid Build Coastguard Worker            ${OUTPUT}
46*35238bceSAndroid Build Coastguard Worker        }
47*35238bceSAndroid Build Coastguard Worker    ""
48*35238bceSAndroid Build Coastguard Workerend
49*35238bceSAndroid Build Coastguard Worker"""[1:-1]
50*35238bceSAndroid Build Coastguard Worker
51*35238bceSAndroid Build Coastguard Worker# Classes
52*35238bceSAndroid Build Coastguard Worker
53*35238bceSAndroid Build Coastguard Workerdef getValueExpr (argType):
54*35238bceSAndroid Build Coastguard Worker    return "%s(0)" % argType
55*35238bceSAndroid Build Coastguard Worker
56*35238bceSAndroid Build Coastguard Workerclass InvalidTexFuncCase(ShaderCase):
57*35238bceSAndroid Build Coastguard Worker    def __init__(self, funcname, args):
58*35238bceSAndroid Build Coastguard Worker        self.name = string.join([s.lower() for s in [funcname] + args], "_")
59*35238bceSAndroid Build Coastguard Worker        self.funcname = funcname
60*35238bceSAndroid Build Coastguard Worker        self.args = args
61*35238bceSAndroid Build Coastguard Worker
62*35238bceSAndroid Build Coastguard Worker    def __str__(self):
63*35238bceSAndroid Build Coastguard Worker        samplerType = self.args[0]
64*35238bceSAndroid Build Coastguard Worker
65*35238bceSAndroid Build Coastguard Worker        lookup = self.funcname + "(s"
66*35238bceSAndroid Build Coastguard Worker        for arg in self.args[1:]:
67*35238bceSAndroid Build Coastguard Worker            lookup += ", %s" % getValueExpr(arg)
68*35238bceSAndroid Build Coastguard Worker        lookup += ")"
69*35238bceSAndroid Build Coastguard Worker
70*35238bceSAndroid Build Coastguard Worker        params = { "NAME": self.name, "SAMPLERTYPE": samplerType, "LOOKUP": lookup }
71*35238bceSAndroid Build Coastguard Worker        return fillTemplate(INVALID_TEXTURE_FUNC_TEMPLATE, params)
72*35238bceSAndroid Build Coastguard Worker
73*35238bceSAndroid Build Coastguard Worker# Invalid lookup cases
74*35238bceSAndroid Build Coastguard Worker# \note Does not include cases that don't make sense
75*35238bceSAndroid Build Coastguard Worker
76*35238bceSAndroid Build Coastguard WorkerINVALID_TEX_FUNC_CASES = [
77*35238bceSAndroid Build Coastguard Worker    # texture
78*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texture", ["sampler3DShadow", "vec4"]),
79*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texture", ["sampler2DArrayShadow", "vec4", "float"]),
80*35238bceSAndroid Build Coastguard Worker
81*35238bceSAndroid Build Coastguard Worker    # textureProj
82*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProj", ["samplerCube", "vec4"]),
83*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProj", ["isamplerCube", "vec4"]),
84*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProj", ["usamplerCube", "vec4"]),
85*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProj", ["samplerCube", "vec4", "float"]),
86*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProj", ["isamplerCube", "vec4", "float"]),
87*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProj", ["usamplerCube", "vec4", "float"]),
88*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProj", ["sampler2DArrayShadow", "vec4"]),
89*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProj", ["sampler2DArrayShadow", "vec4", "float"]),
90*35238bceSAndroid Build Coastguard Worker
91*35238bceSAndroid Build Coastguard Worker    # textureLod
92*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureLod", ["samplerCubeShadow", "vec4", "float"]),
93*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureLod", ["sampler2DArrayShadow", "vec4", "float"]),
94*35238bceSAndroid Build Coastguard Worker
95*35238bceSAndroid Build Coastguard Worker    # textureOffset
96*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["samplerCube", "vec3", "ivec2"]),
97*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["isamplerCube", "vec3", "ivec2"]),
98*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["usamplerCube", "vec3", "ivec2"]),
99*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["samplerCube", "vec3", "ivec3"]),
100*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["isamplerCube", "vec3", "ivec3"]),
101*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["usamplerCube", "vec3", "ivec3"]),
102*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["samplerCube", "vec3", "ivec2", "float"]),
103*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["samplerCube", "vec3", "ivec3", "float"]),
104*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["sampler2DArray", "vec3", "ivec3"]),
105*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["sampler2DArray", "vec3", "ivec3", "float"]),
106*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["samplerCubeShadow", "vec4", "ivec2"]),
107*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["samplerCubeShadow", "vec4", "ivec3"]),
108*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["sampler2DArrayShadow", "vec4", "ivec2"]),
109*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureOffset", ["sampler2DArrayShadow", "vec4", "ivec2", "float"]),
110*35238bceSAndroid Build Coastguard Worker
111*35238bceSAndroid Build Coastguard Worker    # texelFetch
112*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texelFetch", ["samplerCube", "ivec3", "int"]),
113*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texelFetch", ["isamplerCube", "ivec3", "int"]),
114*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texelFetch", ["usamplerCube", "ivec3", "int"]),
115*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texelFetch", ["sampler2DShadow", "ivec2", "int"]),
116*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texelFetch", ["samplerCubeShadow", "ivec3", "int"]),
117*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texelFetch", ["sampler2DArrayShadow", "ivec3", "int"]),
118*35238bceSAndroid Build Coastguard Worker
119*35238bceSAndroid Build Coastguard Worker    # texelFetchOffset
120*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texelFetch", ["samplerCube", "ivec3", "int", "ivec3"]),
121*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texelFetch", ["sampler2DShadow", "ivec2", "int", "ivec2"]),
122*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texelFetch", ["samplerCubeShadow", "ivec3", "int", "ivec3"]),
123*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("texelFetch", ["sampler2DArrayShadow", "ivec3", "int", "ivec3"]),
124*35238bceSAndroid Build Coastguard Worker
125*35238bceSAndroid Build Coastguard Worker    # textureProjOffset
126*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjOffset", ["samplerCube", "vec4", "ivec2"]),
127*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjOffset", ["samplerCube", "vec4", "ivec3"]),
128*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjOffset", ["samplerCubeShadow", "vec4", "ivec3"]),
129*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjOffset", ["sampler2DArrayShadow", "vec4", "ivec2"]),
130*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjOffset", ["sampler2DArrayShadow", "vec4", "ivec3"]),
131*35238bceSAndroid Build Coastguard Worker
132*35238bceSAndroid Build Coastguard Worker    # textureLodOffset
133*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureLodOffset", ["samplerCube", "vec3", "float", "ivec2"]),
134*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureLodOffset", ["samplerCube", "vec3", "float", "ivec3"]),
135*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureLodOffset", ["samplerCubeShadow", "vec3", "float", "ivec3"]),
136*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureLodOffset", ["sampler2DArrayShadow", "vec3", "float", "ivec2"]),
137*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureLodOffset", ["sampler2DArrayShadow", "vec3", "float", "ivec3"]),
138*35238bceSAndroid Build Coastguard Worker
139*35238bceSAndroid Build Coastguard Worker    # textureProjLod
140*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjLod", ["samplerCube", "vec4", "float"]),
141*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjLod", ["sampler2DArray", "vec4", "float"]),
142*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjLod", ["sampler2DArrayShadow", "vec4", "float"]),
143*35238bceSAndroid Build Coastguard Worker
144*35238bceSAndroid Build Coastguard Worker    # textureGrad
145*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureGrad", ["sampler2DArray", "vec3", "vec3", "vec3"]),
146*35238bceSAndroid Build Coastguard Worker
147*35238bceSAndroid Build Coastguard Worker    # textureGradOffset
148*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureGradOffset", ["samplerCube", "vec3", "vec3", "vec3", "ivec2"]),
149*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureGradOffset", ["samplerCube", "vec3", "vec3", "vec3", "ivec3"]),
150*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureGradOffset", ["samplerCubeShadow", "vec4", "vec3", "vec3", "ivec2"]),
151*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureGradOffset", ["samplerCubeShadow", "vec4", "vec3", "vec3", "ivec3"]),
152*35238bceSAndroid Build Coastguard Worker
153*35238bceSAndroid Build Coastguard Worker    # textureProjGrad
154*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjGrad", ["samplerCube", "vec4", "vec3", "vec3"]),
155*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjGrad", ["sampler2DArray", "vec4", "vec2", "vec2"]),
156*35238bceSAndroid Build Coastguard Worker
157*35238bceSAndroid Build Coastguard Worker    # textureProjGradOffset
158*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjGradOffset", ["samplerCube", "vec4", "vec3", "vec3", "ivec2"]),
159*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjGradOffset", ["samplerCube", "vec4", "vec3", "vec3", "ivec3"]),
160*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjGradOffset", ["sampler2DArray", "vec4", "vec2", "vec2", "ivec2"]),
161*35238bceSAndroid Build Coastguard Worker    InvalidTexFuncCase("textureProjGradOffset", ["sampler2DArray", "vec4", "vec2", "vec2", "ivec3"])
162*35238bceSAndroid Build Coastguard Worker]
163*35238bceSAndroid Build Coastguard Worker
164*35238bceSAndroid Build Coastguard Workerif __name__ == "__main__":
165*35238bceSAndroid Build Coastguard Worker    print("Generating shader case files.")
166*35238bceSAndroid Build Coastguard Worker    writeAllCases("invalid_texture_functions.test", INVALID_TEX_FUNC_CASES)
167