Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/shaderc
Path: blob/main/glslc/test/option_fresource_set_binding.py
1560 views
1
# Copyright 2017 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
# An HLSL shader with uniforms without explicit bindings.
20
HLSL_SHADER = """
21
Buffer<float4> t4 : register(t4);
22
Buffer<float4> t5 : register(t5);
23
24
float4 main() : SV_Target0 {
25
return float4(t4.Load(0) + t5.Load(1));
26
}
27
"""
28
29
30
NEED_THREE_ARGS_ERR = "error: Option -fresource-set-binding requires at least 3 arguments"
31
32
@inside_glslc_testsuite('OptionFRegisterSetBinding')
33
class FRegisterSetBindingForFragRespected(expect.ValidAssemblyFileWithSubstr):
34
"""Tests -fresource-set-binding on specific shader two textures"""
35
36
shader = FileShader(HLSL_SHADER, '.frag')
37
glslc_args = ['-S', '-x', 'hlsl', shader,
38
'-fresource-set-binding', 'frag',
39
't4', '9', '16',
40
't5', '17', '18']
41
expected_assembly_substr = """OpDecorate %t4 DescriptorSet 9
42
OpDecorate %t4 Binding 16
43
OpDecorate %t5 DescriptorSet 17
44
OpDecorate %t5 Binding 18"""
45
46
47
@inside_glslc_testsuite('OptionFRegisterSetBinding')
48
class FRegisterSetBindingForFragRespectedJustOneTriple(expect.ValidAssemblyFileWithSubstr):
49
"""Tests -fresource-set-binding on specific shader just one texture specified."""
50
51
shader = FileShader(HLSL_SHADER, '.frag')
52
glslc_args = ['-S', '-x', 'hlsl', shader,
53
'-fresource-set-binding', 'frag',
54
't4', '9', '16']
55
expected_assembly_substr = """OpDecorate %t4 DescriptorSet 9
56
OpDecorate %t4 Binding 16
57
OpDecorate %t5 DescriptorSet 0
58
OpDecorate %t5 Binding 5"""
59
60
61
@inside_glslc_testsuite('OptionFRegisterSetBinding')
62
class FRegisterSetBindingForWrongStageIgnored(expect.ValidAssemblyFileWithSubstr):
63
"""Tests -fresource-set-binding on wrong shader ignored"""
64
65
shader = FileShader(HLSL_SHADER, '.frag')
66
glslc_args = ['-S', '-x', 'hlsl', shader,
67
'-fresource-set-binding', 'vert',
68
't4', '9', '16',
69
't5', '17', '18']
70
expected_assembly_substr = """OpDecorate %t4 DescriptorSet 0
71
OpDecorate %t4 Binding 4
72
OpDecorate %t5 DescriptorSet 0
73
OpDecorate %t5 Binding 5"""
74
75
76
@inside_glslc_testsuite('OptionFRegisterSetBinding')
77
class FRegisterSetBindingForAllRespected(expect.ValidAssemblyFileWithSubstr):
78
"""Tests -fresource-set-binding on all stages respected"""
79
80
shader = FileShader(HLSL_SHADER, '.frag')
81
glslc_args = ['-S', '-x', 'hlsl', shader,
82
'-fresource-set-binding',
83
't4', '9', '16',
84
't5', '17', '18']
85
expected_assembly_substr = """OpDecorate %t4 DescriptorSet 9
86
OpDecorate %t4 Binding 16
87
OpDecorate %t5 DescriptorSet 17
88
OpDecorate %t5 Binding 18"""
89
90
91
@inside_glslc_testsuite('OptionFRegisterSetBinding')
92
class FRegisterSetBindingTooFewArgs(expect.ErrorMessageSubstr):
93
"""Tests -fresource-set-binding with too few arguments"""
94
95
shader = FileShader(HLSL_SHADER, '.frag')
96
glslc_args = ['-S', '-x', 'hlsl', shader,
97
'-fresource-set-binding', 'frag',
98
't4', '9']
99
expected_error_substr = NEED_THREE_ARGS_ERR
100
101
102
@inside_glslc_testsuite('OptionFRegisterSetBinding')
103
class FRegisterSetBindingInvalidSetNumber(expect.ErrorMessageSubstr):
104
"""Tests -fresource-set-binding with inavlid set number"""
105
106
shader = FileShader(HLSL_SHADER, '.frag')
107
glslc_args = ['-S', '-x', 'hlsl', shader,
108
'-fresource-set-binding', 'frag',
109
't4', '-9', '16']
110
expected_error_substr = NEED_THREE_ARGS_ERR
111
112
113
@inside_glslc_testsuite('OptionFRegisterSetBinding')
114
class FRegisterSetBindingInvalidBindingNumber(expect.ErrorMessageSubstr):
115
"""Tests -fresource-set-binding with inavlid binding number"""
116
117
shader = FileShader(HLSL_SHADER, '.frag')
118
glslc_args = ['-S', '-x', 'hlsl', shader,
119
'-fresource-set-binding', 'frag',
120
't4', '9', '-16']
121
expected_error_substr = NEED_THREE_ARGS_ERR
122
123