ext_gpu_shader4: add compiler tests for everything
[piglit.git] / generated_tests / interpolation-qualifier-built-in-variable.py
blobbff55f17315688e10903b1ce8ee2142fa19d381c
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 from __future__ import print_function, division, absolute_import
27 import os
28 import itertools
30 from templates import template_dir
31 from modules import utils
33 TEMPLATES = template_dir(os.path.basename(os.path.splitext(__file__)[0]))
35 INTERPOLATION_MODES = [
36 'flat',
37 'noperspective',
38 'smooth',
39 'default'
42 VS_VARIABLES = [
43 'gl_FrontColor',
44 'gl_BackColor',
45 'gl_FrontSecondaryColor',
46 'gl_BackSecondaryColor'
49 VS_VARIABLES_FRONT_ONLY = [
50 'gl_FrontColor',
51 'gl_FrontSecondaryColor',
54 OTHER_SIDE_MAP = {
55 'gl_FrontColor': 'gl_BackColor',
56 'gl_BackColor': 'gl_FrontColor',
57 'gl_FrontSecondaryColor': 'gl_BackSecondaryColor',
58 'gl_BackSecondaryColor': 'gl_FrontSecondaryColor'
61 VS_TO_FS_VARIABLE_MAP = {
62 'gl_FrontColor': 'gl_Color',
63 'gl_BackColor': 'gl_Color',
64 'gl_FrontSecondaryColor': 'gl_SecondaryColor',
65 'gl_BackSecondaryColor': 'gl_SecondaryColor'
69 def make_fs_vs_tests(fs_mode, vs_mode, dirname):
70 if vs_mode == fs_mode:
71 return
73 for var in VS_VARIABLES:
74 filename = os.path.join(
75 dirname,
76 '{0}-{1}-{2}-{3}.shader_test'.format(
77 vs_mode, var, fs_mode,
78 VS_TO_FS_VARIABLE_MAP[var]))
79 print(filename)
81 with open(filename, 'w') as f:
82 f.write(TEMPLATES.get_template('vs-fs.shader_test.mako').render_unicode(
83 vs_mode=vs_mode,
84 vs_variable=var,
85 fs_mode=fs_mode,
86 fs_variable=VS_TO_FS_VARIABLE_MAP[var]))
89 def make_vs_unused_tests(vs_mode, dirname):
90 if vs_mode == 'default':
91 return
93 for var in VS_VARIABLES:
94 filename = os.path.join(
95 dirname,
96 '{0}-{1}-unused-{2}.shader_test'.format(
97 vs_mode, var,
98 VS_TO_FS_VARIABLE_MAP[var]))
99 print(filename)
101 with open(filename, 'w') as f:
102 f.write(
103 TEMPLATES.get_template('vs-unused.shader_test.mako').render_unicode(
104 vs_mode=vs_mode,
105 vs_variable=var))
108 def make_fs_unused_tests(fs_mode, vs_mode, dirname):
109 if fs_mode == 'default':
110 return
112 for var in VS_VARIABLES_FRONT_ONLY:
113 filename = os.path.join(
114 dirname,
115 'unused-{0}-{1}-{2}.shader_test'.format(
116 var, fs_mode,
117 VS_TO_FS_VARIABLE_MAP[var]))
118 print(filename)
120 with open(filename, 'w') as f:
121 f.write(TEMPLATES.get_template('fs-unused.shader_test.mako').render_unicode(
122 vs_mode=vs_mode,
123 vs_variable=var,
124 fs_mode=fs_mode,
125 fs_variable=VS_TO_FS_VARIABLE_MAP[var]))
128 def make_vs_fs_unused_tests(fs_mode, vs_mode, dirname):
129 if vs_mode == fs_mode:
130 return
132 for var in VS_VARIABLES:
133 filename = os.path.join(
134 dirname,
135 'unused-{0}-{1}-unused-{2}-{3}.shader_test'.format(
136 vs_mode, var, fs_mode,
137 VS_TO_FS_VARIABLE_MAP[var]))
138 print(filename)
140 with open(filename, 'w') as f:
141 f.write(TEMPLATES.get_template(
142 'fs-vs-unused.shader_test.mako').render_unicode(
143 vs_mode=vs_mode,
144 vs_variable=var,
145 fs_mode=fs_mode,
146 fs_variable=VS_TO_FS_VARIABLE_MAP[var]))
149 def make_vs_fs_flip_tests(fs_mode, vs_mode, dirname):
150 if vs_mode == fs_mode:
151 return
153 for this_side in VS_VARIABLES:
154 other_side = OTHER_SIDE_MAP[this_side]
155 filename = os.path.join(
156 dirname,
157 '{0}-{1}-{2}-{3}.shader_test'.format(
158 vs_mode, this_side, fs_mode, other_side))
159 print(filename)
161 with open(filename, 'w') as f:
162 f.write(TEMPLATES.get_template(
163 'vs-fs-flip.shader_test.mako').render_unicode(
164 vs_mode=vs_mode,
165 this_side_variable=this_side,
166 other_side_variable=other_side,
167 fs_mode=fs_mode,
168 fs_variable=VS_TO_FS_VARIABLE_MAP[this_side]))
171 def main():
172 """main function."""
173 dirname = os.path.join('spec', 'glsl-1.30', 'linker',
174 'interpolation-qualifiers')
175 utils.safe_makedirs(dirname)
177 for fs_mode, vs_mode in itertools.product(INTERPOLATION_MODES, repeat=2):
178 make_fs_vs_tests(fs_mode, vs_mode, dirname)
179 make_vs_unused_tests(vs_mode, dirname)
180 make_fs_unused_tests(fs_mode, vs_mode, dirname)
181 make_vs_fs_unused_tests(fs_mode, vs_mode, dirname)
182 make_vs_fs_flip_tests(fs_mode, vs_mode, dirname)
185 if __name__ == '__main__':
186 main()