fix arb_query_buffer_object-coherency to warn on invalid GS results instead of fail
[piglit.git] / generated_tests / interpolation-qualifier-built-in-variable.py
blobcd83a9fcc834512037adeae0d5179aabf88f4186
1 # coding=utf-8
3 # Copyright © 2013, 2014 Intel Corporation
5 # Permission is hereby granted, free of charge, to any person obtaining a
6 # copy of this software and associated documentation files (the "Software"),
7 # to deal in the Software without restriction, including without limitation
8 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 # and/or sell copies of the Software, and to permit persons to whom the
10 # Software is furnished to do so, subject to the following conditions:
12 # The above copyright notice and this permission notice (including the next
13 # paragraph) shall be included in all copies or substantial portions of the
14 # Software.
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 # DEALINGS IN THE SOFTWARE.
24 """Generate interpolation-qualifier tests."""
26 import os
27 import itertools
28 import sys
30 from mako import exceptions
32 from templates import template_dir
33 from modules import utils
35 TEMPLATES = template_dir(os.path.basename(os.path.splitext(__file__)[0]))
37 INTERPOLATION_MODES = [
38 'flat',
39 'noperspective',
40 'smooth',
41 'default'
44 VS_VARIABLES = [
45 'gl_FrontColor',
46 'gl_BackColor',
47 'gl_FrontSecondaryColor',
48 'gl_BackSecondaryColor'
51 VS_VARIABLES_FRONT_ONLY = [
52 'gl_FrontColor',
53 'gl_FrontSecondaryColor',
56 OTHER_SIDE_MAP = {
57 'gl_FrontColor': 'gl_BackColor',
58 'gl_BackColor': 'gl_FrontColor',
59 'gl_FrontSecondaryColor': 'gl_BackSecondaryColor',
60 'gl_BackSecondaryColor': 'gl_FrontSecondaryColor'
63 VS_TO_FS_VARIABLE_MAP = {
64 'gl_FrontColor': 'gl_Color',
65 'gl_BackColor': 'gl_Color',
66 'gl_FrontSecondaryColor': 'gl_SecondaryColor',
67 'gl_BackSecondaryColor': 'gl_SecondaryColor'
71 def make_fs_vs_tests(fs_mode, vs_mode, dirname):
72 if vs_mode == fs_mode:
73 return
75 for var in VS_VARIABLES:
76 filename = os.path.join(
77 dirname,
78 '{0}-{1}-{2}-{3}.shader_test'.format(
79 vs_mode, var, fs_mode,
80 VS_TO_FS_VARIABLE_MAP[var]))
81 print(filename)
83 with open(filename, 'w') as f:
84 try:
85 f.write(TEMPLATES.get_template('vs-fs.shader_test.mako').render_unicode(
86 vs_mode=vs_mode,
87 vs_variable=var,
88 fs_mode=fs_mode,
89 fs_variable=VS_TO_FS_VARIABLE_MAP[var]))
90 except:
91 print(exceptions.text_error_template().render(), file=sys.stderr)
92 raise
95 def make_vs_unused_tests(vs_mode, dirname):
96 if vs_mode == 'default':
97 return
99 for var in VS_VARIABLES:
100 filename = os.path.join(
101 dirname,
102 '{0}-{1}-unused-{2}.shader_test'.format(
103 vs_mode, var,
104 VS_TO_FS_VARIABLE_MAP[var]))
105 print(filename)
107 with open(filename, 'w') as f:
108 try:
109 f.write(
110 TEMPLATES.get_template('vs-unused.shader_test.mako').render_unicode(
111 vs_mode=vs_mode,
112 vs_variable=var))
113 except:
114 print(exceptions.text_error_template().render(), file=sys.stderr)
115 raise
118 def make_fs_unused_tests(fs_mode, vs_mode, dirname):
119 if fs_mode == 'default':
120 return
122 for var in VS_VARIABLES_FRONT_ONLY:
123 filename = os.path.join(
124 dirname,
125 'unused-{0}-{1}-{2}.shader_test'.format(
126 var, fs_mode,
127 VS_TO_FS_VARIABLE_MAP[var]))
128 print(filename)
130 with open(filename, 'w') as f:
131 try:
132 f.write(TEMPLATES.get_template('fs-unused.shader_test.mako').render_unicode(
133 vs_mode=vs_mode,
134 vs_variable=var,
135 fs_mode=fs_mode,
136 fs_variable=VS_TO_FS_VARIABLE_MAP[var]))
137 except:
138 print(exceptions.text_error_template().render(), file=sys.stderr)
139 raise
142 def make_vs_fs_unused_tests(fs_mode, vs_mode, dirname):
143 if vs_mode == fs_mode:
144 return
146 for var in VS_VARIABLES:
147 filename = os.path.join(
148 dirname,
149 'unused-{0}-{1}-unused-{2}-{3}.shader_test'.format(
150 vs_mode, var, fs_mode,
151 VS_TO_FS_VARIABLE_MAP[var]))
152 print(filename)
154 with open(filename, 'w') as f:
155 try:
156 f.write(TEMPLATES.get_template(
157 'fs-vs-unused.shader_test.mako').render_unicode(
158 vs_mode=vs_mode,
159 vs_variable=var,
160 fs_mode=fs_mode,
161 fs_variable=VS_TO_FS_VARIABLE_MAP[var]))
162 except:
163 print(exceptions.text_error_template().render(), file=sys.stderr)
164 raise
167 def make_vs_fs_flip_tests(fs_mode, vs_mode, dirname):
168 if vs_mode == fs_mode:
169 return
171 for this_side in VS_VARIABLES:
172 other_side = OTHER_SIDE_MAP[this_side]
173 filename = os.path.join(
174 dirname,
175 '{0}-{1}-{2}-{3}.shader_test'.format(
176 vs_mode, this_side, fs_mode, other_side))
177 print(filename)
179 with open(filename, 'w') as f:
180 try:
181 f.write(TEMPLATES.get_template(
182 'vs-fs-flip.shader_test.mako').render_unicode(
183 vs_mode=vs_mode,
184 this_side_variable=this_side,
185 other_side_variable=other_side,
186 fs_mode=fs_mode,
187 fs_variable=VS_TO_FS_VARIABLE_MAP[this_side]))
188 except:
189 print(exceptions.text_error_template().render(), file=sys.stderr)
190 raise
193 def main():
194 """main function."""
195 dirname = os.path.join('spec', 'glsl-1.30', 'linker',
196 'interpolation-qualifiers')
197 utils.safe_makedirs(dirname)
199 for fs_mode, vs_mode in itertools.product(INTERPOLATION_MODES, repeat=2):
200 make_fs_vs_tests(fs_mode, vs_mode, dirname)
201 make_vs_unused_tests(vs_mode, dirname)
202 make_fs_unused_tests(fs_mode, vs_mode, dirname)
203 make_vs_fs_unused_tests(fs_mode, vs_mode, dirname)
204 make_vs_fs_flip_tests(fs_mode, vs_mode, dirname)
207 if __name__ == '__main__':
208 main()