Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/shaderc
Path: blob/main/glslc/test/option_target_env.py
1560 views
1
# Copyright 2015 The Shaderc Authors. All rights reserved.
2
#
3
# Licensed under the Apache License, Version 2.0 (the "License");
4
# you may not use this file except in compliance with the License.
5
# You may obtain a copy of the License at
6
#
7
# http://www.apache.org/licenses/LICENSE-2.0
8
#
9
# Unless required by applicable law or agreed to in writing, software
10
# distributed under the License is distributed on an "AS IS" BASIS,
11
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
# See the License for the specific language governing permissions and
13
# limitations under the License.
14
15
import expect
16
from glslc_test_framework import inside_glslc_testsuite
17
from placeholder import FileShader
18
19
20
def opengl_compat_fragment_shader():
21
return """#version 330
22
uniform highp sampler2D tex;
23
void main() {
24
gl_FragColor = texture2D(tex, vec2(0.0, 0.0));
25
}"""
26
27
28
def opengl_vertex_shader():
29
return """#version 330
30
void main() { int t = gl_VertexID; }"""
31
32
33
def vulkan_vertex_shader():
34
return """#version 310 es
35
void main() { int t = gl_VertexIndex; }"""
36
37
38
def vulkan_compute_subgroup_shader():
39
"""Returns a compute shader that requires Vulkan 1.1"""
40
return """#version 450
41
#extension GL_KHR_shader_subgroup_basic : enable
42
void main() { subgroupBarrier(); }"""
43
44
45
@inside_glslc_testsuite('OptionTargetEnv')
46
class TestTargetEnvEqOpenglCompatWithOpenGlCompatShader(expect.ErrorMessageSubstr):
47
"""Tests that compiling OpenGL Compatibility Fragment shader with
48
--target-env=opengl_compat works correctly"""
49
shader = FileShader(opengl_compat_fragment_shader(), '.frag')
50
glslc_args = ['--target-env=opengl_compat', '-c', shader]
51
expected_error_substr = "error: opengl_compat is no longer supported"
52
53
54
@inside_glslc_testsuite('OptionTargetEnv')
55
class TestTargetEnvEqOpenglWithOpenGlCompatShader(expect.ErrorMessageSubstr):
56
"""Tests the error message of compiling OpenGL Compatibility Fragment shader
57
with --target-env=opengl"""
58
shader = FileShader(opengl_compat_fragment_shader(), '.frag')
59
glslc_args = ['--target-env=opengl', shader]
60
# Glslang does not give a pretty message. Make sure we get an error.
61
expected_error_substr = "errors generated"
62
63
64
@inside_glslc_testsuite('OptionTargetEnv')
65
class TestTargetEnvEqOpenglCompatWithOpenGlVertexShader(expect.ErrorMessageSubstr):
66
"""Tests that compiling OpenGL vertex shader with --target-env=opengl_compat
67
generates valid SPIR-V code"""
68
shader = FileShader(opengl_vertex_shader(), '.vert')
69
glslc_args = ['--target-env=opengl_compat', '-c', shader]
70
expected_error_substr = "error: opengl_compat is no longer supported"
71
72
73
@inside_glslc_testsuite('OptionTargetEnv')
74
class TestTargetEnvEqOpenglWithOpenGlVertexShader(expect.ValidObjectFile):
75
"""Tests that compiling OpenGL vertex shader with --target-env=opengl
76
generates valid SPIR-V code"""
77
shader = FileShader(opengl_vertex_shader(), '.vert')
78
glslc_args = ['--target-env=opengl', '-c', shader]
79
80
81
@inside_glslc_testsuite('OptionTargetEnv')
82
class TestDefaultTargetEnvWithVulkanShader(expect.ValidObjectFile):
83
"""Tests that compiling a Vulkan-specific shader with a default
84
target environment succeeds"""
85
shader = FileShader(vulkan_vertex_shader(), '.vert')
86
glslc_args = ['-c', shader]
87
88
89
@inside_glslc_testsuite('OptionTargetEnv')
90
class TestTargetEnvEqVulkanWithVulkan1_0ShaderSucceeds(expect.ValidObjectFile):
91
"""Tests that compiling a Vulkan-specific Vulkan 1.0 shader succeeds with
92
--target-env=vulkan"""
93
shader = FileShader(vulkan_vertex_shader(), '.vert')
94
glslc_args = ['--target-env=vulkan', '-c', shader]
95
96
97
@inside_glslc_testsuite('OptionTargetEnv')
98
class TestTargetEnvEqVulkan1_0WithVulkan1_0ShaderSucceeds(expect.ValidObjectFile):
99
"""Tests that compiling a Vulkan-specific Vulkan 1.0 shader succeeds with
100
--target-env=vulkan1.0"""
101
shader = FileShader(vulkan_vertex_shader(), '.vert')
102
glslc_args = ['--target-env=vulkan1.0', '-c', shader]
103
104
105
@inside_glslc_testsuite('OptionTargetEnv')
106
class TestTargetEnvEqVulkan1_0WithVulkan1_1ShaderFails(expect.ErrorMessageSubstr):
107
shader = FileShader(vulkan_compute_subgroup_shader(), '.comp')
108
glslc_args = ['--target-env=vulkan1.0', '-c', shader]
109
expected_error_substr = "error: 'subgroup op' : requires SPIR-V 1.3"
110
111
112
@inside_glslc_testsuite('OptionTargetEnv')
113
class TestTargetEnvEqVulkan1_1WithVulkan1_0ShaderSucceeds(expect.ValidObjectFile1_3):
114
shader = FileShader(vulkan_vertex_shader(), '.vert')
115
glslc_args = ['--target-env=vulkan1.1', '-c', shader]
116
117
118
@inside_glslc_testsuite('OptionTargetEnv')
119
class TestTargetEnvEqVulkan1_1WithVulkan1_1ShaderSucceeds(expect.ValidObjectFile1_3):
120
shader = FileShader(vulkan_compute_subgroup_shader(), '.comp')
121
glslc_args = ['--target-env=vulkan1.1', '-c', shader]
122
123
@inside_glslc_testsuite('OptionTargetEnv')
124
class TestTargetEnvEqVulkan1_2WithVulkan1_0ShaderSucceeds(expect.ValidObjectFile1_5):
125
shader = FileShader(vulkan_vertex_shader(), '.vert')
126
glslc_args = ['--target-env=vulkan1.2', '-c', shader]
127
128
@inside_glslc_testsuite('OptionTargetEnv')
129
class TestTargetEnvEqVulkan1_2WithVulkan1_1ShaderSucceeds(expect.ValidObjectFile1_5):
130
shader = FileShader(vulkan_compute_subgroup_shader(), '.comp')
131
glslc_args = ['--target-env=vulkan1.2', '-c', shader]
132
133
@inside_glslc_testsuite('OptionTargetEnv')
134
class TestTargetEnvEqVulkan1_2WithVulkan1_0ShaderSucceeds(expect.ValidObjectFile1_6):
135
shader = FileShader(vulkan_vertex_shader(), '.vert')
136
glslc_args = ['--target-env=vulkan1.3', '-c', shader]
137
138
@inside_glslc_testsuite('OptionTargetEnv')
139
class TestTargetEnvEqVulkan1_2WithVulkan1_1ShaderSucceeds(expect.ValidObjectFile1_6):
140
shader = FileShader(vulkan_compute_subgroup_shader(), '.comp')
141
glslc_args = ['--target-env=vulkan1.3', '-c', shader]
142
143
@inside_glslc_testsuite('OptionTargetEnv')
144
class TestTargetEnvEqOpenGL4_5WithOpenGLShaderSucceeds(expect.ValidObjectFile):
145
shader = FileShader(opengl_vertex_shader(), '.vert')
146
glslc_args = ['--target-env=opengl4.5', '-c', shader]
147
148
149
@inside_glslc_testsuite('OptionTargetEnv')
150
class TestTargetEnvEqOpenGL4_6WithOpenGLShaderFailsUnsupported(expect.ErrorMessageSubstr):
151
shader = FileShader(opengl_vertex_shader(), '.vert')
152
glslc_args = ['--target-env=opengl4.6', '-c', shader]
153
expected_error_substr = "invalid value 'opengl4.6' in '--target-env=opengl4.6'"
154
155
156
# Note: Negative tests are covered in the libshaderc_util unit tests.
157
# For example, that an OpenGL-specific shader should fail to compile
158
# for Vulkan, or a Vulkan-specific shader should fail to compile for
159
# OpenGL.
160
161
162
@inside_glslc_testsuite('OptionTargetEnv')
163
class TestTargetEnvEqNoArg(expect.ErrorMessage):
164
"""Tests the error message of assigning empty string to --target-env"""
165
shader = FileShader(opengl_vertex_shader(), '.vert')
166
glslc_args = ['--target-env=', shader]
167
expected_error = ["glslc: error: invalid value ",
168
"'' in '--target-env='\n"]
169
170
171
@inside_glslc_testsuite('OptionTargetEnv')
172
class TestTargetEnvNoEqNoArg(expect.ErrorMessage):
173
"""Tests the error message of using --target-env without equal sign and
174
arguments"""
175
shader = FileShader(opengl_vertex_shader(), '.vert')
176
glslc_args = ['--target-env', shader]
177
expected_error = ["glslc: error: unsupported option: ",
178
"'--target-env'\n"]
179
180
181
@inside_glslc_testsuite('OptionTargetEnv')
182
class TestTargetEnvNoEqWithArg(expect.ErrorMessage):
183
"""Tests the error message of using --target-env without equal sign but
184
arguments"""
185
shader = FileShader(opengl_vertex_shader(), '.vert')
186
glslc_args = ['--target-env', 'opengl', shader]
187
expected_error = ["glslc: error: unsupported option: ",
188
"'--target-env'\n"]
189
190
191
@inside_glslc_testsuite('OptionTargetEnv')
192
class TestTargetEnvEqWrongArg(expect.ErrorMessage):
193
"""Tests the error message of using --target-env with wrong argument"""
194
shader = FileShader(opengl_vertex_shader(), '.vert')
195
glslc_args = ['--target-env=wrong_arg', shader]
196
expected_error = ["glslc: error: invalid value ",
197
"'wrong_arg' in '--target-env=wrong_arg'\n"]
198
199