Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/shaderc
Path: blob/main/glslc/test/option_target_spv.py
1560 views
1
# Copyright 2019 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 vulkan_vertex_shader():
21
return """#version 310 es
22
void main() { int t = gl_VertexIndex; }"""
23
24
25
def vulkan_compute_subgroup_shader():
26
"""Returns a compute shader that requires Vulkan 1.1 and SPIR-V 1.3"""
27
return """#version 450
28
#extension GL_KHR_shader_subgroup_basic : enable
29
void main() { subgroupBarrier(); }"""
30
31
32
@inside_glslc_testsuite('OptionTargetSpv')
33
class TestDefaultTargetSpvWithVulkanShader(expect.ValidObjectFile):
34
"""Tests that compiling a Vulkan-specific shader with a default
35
target environment succeeds"""
36
shader = FileShader(vulkan_vertex_shader(), '.vert')
37
glslc_args = ['-c', shader]
38
39
40
@inside_glslc_testsuite('OptionTargetSpv')
41
class TestDefaultTargetSpvWithShaderRequiringSpv1p3Fails(expect.ErrorMessageSubstr):
42
"""Tests that compiling a shader requiring SPIR-V 1.3 with default SPIR-V
43
target should fail.
44
"""
45
shader = FileShader(vulkan_compute_subgroup_shader(), '.comp')
46
glslc_args = ['-c', shader]
47
expected_error_substr = ["error: 'subgroup op' : requires SPIR-V 1.3\n"]
48
49
50
@inside_glslc_testsuite('OptionTargetSpv')
51
class TestTargetSpv1p2WithShaderRequiringSpv1p3Fails(expect.ErrorMessageSubstr):
52
"""Tests that compiling a shader requiring SPIR-V 1.3 but targeting 1.2
53
should fail.
54
"""
55
shader = FileShader(vulkan_compute_subgroup_shader(), '.comp')
56
glslc_args = ['--target-spv=spv1.2', '-c', shader]
57
expected_error_substr = ["error: 'subgroup op' : requires SPIR-V 1.3\n"]
58
59
60
@inside_glslc_testsuite('OptionTargetSpv')
61
class TestTargetSpv1p3(expect.ValidObjectFile1_3):
62
"""Tests that compiling to spv1.3 succeeds and generates SPIR-V 1.3 binary."""
63
shader = FileShader(vulkan_compute_subgroup_shader(), '.comp')
64
glslc_args = ['--target-spv=spv1.3', '-c', shader]
65
66
67
@inside_glslc_testsuite('OptionTargetSpv')
68
class TestTargetSpv1p4(expect.ValidObjectFile1_4):
69
"""Tests that compiling to spv1.4 succeeds and generates SPIR-V 1.4 binary."""
70
shader = FileShader(vulkan_vertex_shader(), '.vert')
71
glslc_args = ['--target-spv=spv1.4', '-c', shader]
72
73
74
@inside_glslc_testsuite('OptionTargetSpv')
75
class TestTargetSpv1p5(expect.ValidObjectFile1_5):
76
"""Tests that compiling to spv1.5 succeeds and generates SPIR-V 1.5 binary."""
77
shader = FileShader(vulkan_vertex_shader(), '.vert')
78
glslc_args = ['--target-spv=spv1.5', '-c', shader]
79
80
81
@inside_glslc_testsuite('OptionTargetSpv')
82
class TestTargetSpv1p5(expect.ValidObjectFile1_6):
83
"""Tests that compiling to spv1.6 succeeds and generates SPIR-V 1.6 binary."""
84
shader = FileShader(vulkan_vertex_shader(), '.vert')
85
glslc_args = ['--target-spv=spv1.6', '-c', shader]
86
87
88
### Option parsing error cases
89
90
@inside_glslc_testsuite('OptionTargetSpv')
91
class TestTargetSpvNoArg(expect.ErrorMessage):
92
"""Tests the error message of assigning empty string to --target-spv"""
93
shader = FileShader(vulkan_vertex_shader(), '.vert')
94
glslc_args = ['--target-spv=', shader]
95
expected_error = ["glslc: error: invalid value ",
96
"'' in '--target-spv='\n"]
97
98
99
@inside_glslc_testsuite('OptionTargetSpv')
100
class TestTargetSpvNoEqNoArg(expect.ErrorMessage):
101
"""Tests the error message of using --target-spv without equal sign and
102
arguments"""
103
shader = FileShader(vulkan_vertex_shader(), '.vert')
104
glslc_args = ['--target-spv', shader]
105
expected_error = ["glslc: error: unsupported option: ",
106
"'--target-spv'\n"]
107
108
109
@inside_glslc_testsuite('OptionTargetSpv')
110
class TestTargetSpvNoEqWithArg(expect.ErrorMessage):
111
"""Tests the error message of using --target-spv without equal sign but
112
arguments"""
113
shader = FileShader(vulkan_vertex_shader(), '.vert')
114
glslc_args = ['--target-spv', 'spv1.3', shader]
115
expected_error = ["glslc: error: unsupported option: ",
116
"'--target-spv'\n"]
117
118
119
@inside_glslc_testsuite('OptionTargetSpv')
120
class TestTargetSpvEqWrongArg(expect.ErrorMessage):
121
"""Tests the error message of using --target-spv with wrong argument"""
122
shader = FileShader(vulkan_vertex_shader(), '.vert')
123
glslc_args = ['--target-spv=wrong_arg', shader]
124
expected_error = ["glslc: error: invalid value ",
125
"'wrong_arg' in '--target-spv=wrong_arg'\n"]
126
127