Skip to content

Commit 24c7f98

Browse files
authored
[RootSignature] Add obj2yaml testing (#366)
This pr adds testing using `obj2yaml` for root signatures. There are types of tests added: - edge-cases: which check for edge cases as specified in the test cases - consistency: which checks that `DXC` and `clang` set the root signature values to be the same. The particular values are not necessarily important, as they will have been covered in the edge-cases Resolves: #260.
1 parent a795d70 commit 24c7f98

12 files changed

+420
-0
lines changed

test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ list(APPEND OFFLOADTEST_DEPS
6161
split-file
6262
imgdiff
6363
OffloadTestUnit
64+
obj2yaml
6465
not)
6566

6667
if (OFFLOADTEST_TEST_CLANG)

test/Feature/RootSignatures/Defaults.test

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,58 @@ DescriptorSets:
8585
# RUN: split-file %s %t
8686
# RUN: %dxc_target -T cs_6_0 -Fo %t.o %t/source.hlsl
8787
# RUN: %offloader %t/pipeline.yaml %t.o | FileCheck %s
88+
# RUN: obj2yaml %t.o | FileCheck %s --check-prefix=OBJ
8889

8990
# CHECK-LABEL: Name: Out1
9091
# CHECK: Data: [ 40, 192, 504, 1024 ]
9192
# CHECK-LABEL: Name: Out2
9293
# CHECK: Data: [ 80, 384, 1008, 2048 ]
94+
95+
## Root Signature Header
96+
# OBJ: - Name: RTS0
97+
# OBJ-NEXT: Size: 140
98+
# OBJ-NEXT: RootSignature:
99+
# OBJ-NEXT: Version: 2
100+
# OBJ-NEXT: NumRootParameters: 3
101+
# OBJ-NEXT: RootParametersOffset: 24
102+
# OBJ-NEXT: NumStaticSamplers: 0
103+
# OBJ-NEXT: StaticSamplersOffset: 140
104+
105+
# OBJ-NEXT: Parameters:
106+
107+
## RootConstants(num32BitConstants = 4, b0)
108+
# OBJ-NEXT: - ParameterType: 1
109+
# OBJ-NEXT: ShaderVisibility: 0
110+
# OBJ-NEXT: Constants:
111+
# OBJ-NEXT: Num32BitValues: 4
112+
# OBJ-NEXT: RegisterSpace: 0
113+
# OBJ-NEXT: ShaderRegister: 0
114+
115+
## DescriptorTable
116+
# OBJ: - ParameterType: 0
117+
# OBJ-NEXT: ShaderVisibility: 0
118+
# OBJ-NEXT: Table:
119+
# OBJ-NEXT: NumRanges: 2
120+
# OBJ-NEXT: RangesOffset: 80
121+
# OBJ-NEXT: Ranges:
122+
123+
## SRV(t0)
124+
# OBJ-NEXT: - RangeType: 0
125+
# OBJ-NEXT: NumDescriptors: 1
126+
# OBJ-NEXT: BaseShaderRegister: 0
127+
# OBJ-NEXT: RegisterSpace: 0
128+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
129+
130+
## UAV(u1)
131+
# OBJ: - RangeType: 1
132+
# OBJ-NEXT: NumDescriptors: 1
133+
# OBJ-NEXT: BaseShaderRegister: 1
134+
# OBJ-NEXT: RegisterSpace: 0
135+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
136+
137+
## UAV(u2)
138+
# OBJ: - ParameterType: 4
139+
# OBJ-NEXT: ShaderVisibility: 0
140+
# OBJ-NEXT: Descriptor:
141+
# OBJ-NEXT: RegisterSpace: 0
142+
# OBJ-NEXT: ShaderRegister: 2

test/Feature/RootSignatures/DescriptorTables.test

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,41 @@ DescriptorSets:
5757
# RUN: split-file %s %t
5858
# RUN: %dxc_target -T cs_6_0 -Fo %t.o %t/source.hlsl
5959
# RUN: %offloader %t/pipeline.yaml %t.o | FileCheck %s
60+
# RUN: obj2yaml %t.o | FileCheck %s --check-prefix=OBJ
6061

6162
# CHECK: Data:
6263
# CHECK-LABEL: Name: Out1
6364
# CHECK: Data: [ 20, 48, 84, 128 ]
6465
# CHECK-LABEL: Name: Out2
6566
# CHECK: Data: [ 40, 96, 168, 256 ]
67+
68+
# OBJ: - Name: RTS0
69+
# OBJ-NEXT: Size: 116
70+
# OBJ-NEXT: RootSignature:
71+
# OBJ-NEXT: Version: 2
72+
# OBJ-NEXT: NumRootParameters: 1
73+
# OBJ-NEXT: RootParametersOffset: 24
74+
# OBJ-NEXT: NumStaticSamplers: 0
75+
# OBJ-NEXT: StaticSamplersOffset: 116
76+
# OBJ-NEXT: Parameters:
77+
# OBJ-NEXT: - ParameterType: 0
78+
# OBJ-NEXT: ShaderVisibility: 0
79+
# OBJ-NEXT: Table:
80+
# OBJ-NEXT: NumRanges: 3
81+
# OBJ-NEXT: RangesOffset: 44
82+
# OBJ-NEXT: Ranges:
83+
# OBJ-NEXT: - RangeType: 0
84+
# OBJ-NEXT: NumDescriptors: 1
85+
# OBJ-NEXT: BaseShaderRegister: 2
86+
# OBJ-NEXT: RegisterSpace: 0
87+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
88+
# OBJ: - RangeType: 1
89+
# OBJ-NEXT: NumDescriptors: 1
90+
# OBJ-NEXT: BaseShaderRegister: 1
91+
# OBJ-NEXT: RegisterSpace: 4
92+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
93+
# OBJ: - RangeType: 1
94+
# OBJ-NEXT: NumDescriptors: 1
95+
# OBJ-NEXT: BaseShaderRegister: 2
96+
# OBJ-NEXT: RegisterSpace: 4
97+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295

test/Feature/RootSignatures/Flags.test

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,75 @@ DescriptorSets:
9595
# RUN: split-file %s %t
9696
# RUN: %dxc_target -T cs_6_0 -Fo %t.o %t/source.hlsl
9797
# RUN: %offloader %t/pipeline.yaml %t.o | FileCheck %s
98+
# RUN: obj2yaml %t.o | FileCheck %s --check-prefix=OBJ
9899

99100
# CHECK-LABEL: Name: Out1
100101
# CHECK: Data: [ 20, 48, 84, 128 ]
101102
# CHECK-LABEL: Name: Out2
102103
# CHECK: Data: [ 40, 96, 168, 256 ]
104+
105+
## Root Signature Header
106+
# OBJ: - Name: RTS0
107+
# OBJ-NEXT: Size: 140
108+
# OBJ-NEXT: RootSignature:
109+
# OBJ-NEXT: Version: 2
110+
# OBJ-NEXT: NumRootParameters: 1
111+
# OBJ-NEXT: RootParametersOffset: 24
112+
# OBJ-NEXT: NumStaticSamplers: 0
113+
# OBJ-NEXT: StaticSamplersOffset: 140
114+
115+
# OBJ-NEXT: Parameters:
116+
117+
## Descriptor Table
118+
# OBJ-NEXT: - ParameterType: 0
119+
# OBJ-NEXT: ShaderVisibility: 0
120+
# OBJ-NEXT: Table:
121+
# OBJ-NEXT: NumRanges: 4
122+
# OBJ-NEXT: RangesOffset: 44
123+
# OBJ-NEXT: Ranges:
124+
125+
## SRV(t0, flags = DATA_STATIC)
126+
# OBJ-NEXT: - RangeType: 0
127+
# OBJ-NEXT: NumDescriptors: 1
128+
# OBJ-NEXT: BaseShaderRegister: 0
129+
# OBJ-NEXT: RegisterSpace: 0
130+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
131+
## Only data flag set as expected:
132+
# OBJ-NEXT: DATA_STATIC: true
133+
134+
## SRV(t1, flags = DATA_STATIC_WHILE_SET_AT_EXECUTE)
135+
# OBJ-NEXT: - RangeType: 0
136+
# OBJ-NEXT: NumDescriptors: 1
137+
# OBJ-NEXT: BaseShaderRegister: 1
138+
# OBJ-NEXT: RegisterSpace: 0
139+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
140+
## Only data flag set as expected:
141+
# OBJ-NEXT: DATA_STATIC_WHILE_SET_AT_EXECUTE: true
142+
143+
## UAV(u1, flags = DESCRIPTORS_VOLATILE | DATA_VOLATILE)
144+
# OBJ-NEXT: - RangeType: 1
145+
# OBJ-NEXT: NumDescriptors: 1
146+
# OBJ-NEXT: BaseShaderRegister: 1
147+
# OBJ-NEXT: RegisterSpace: 0
148+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
149+
## Both flags set as expected:
150+
# OBJ-NEXT: DESCRIPTORS_VOLATILE: true
151+
# OBJ-NEXT: DATA_VOLATILE: true
152+
153+
## UAV(u2, flags = 0)
154+
# OBJ-NEXT: - RangeType: 1
155+
# OBJ-NEXT: NumDescriptors: 1
156+
# OBJ-NEXT: BaseShaderRegister: 2
157+
# OBJ-NEXT: RegisterSpace: 0
158+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
159+
## No flags set as expected (verified using OBJ-NEXT below):
160+
161+
## RootFlags(
162+
## ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |
163+
## CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED |
164+
## ALLOW_STREAM_OUTPUT
165+
## )
166+
## RootFlags set as expected:
167+
# OBJ-NEXT: AllowInputAssemblerInputLayout: true
168+
# OBJ-NEXT: AllowStreamOutput: true
169+
# OBJ-NEXT: CBVSRVUAVHeapDirectlyIndexed: true

test/Feature/RootSignatures/ManualDescriptors.test

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,59 @@ DescriptorSets:
9191
# RUN: split-file %s %t
9292
# RUN: %dxc_target -T cs_6_0 -Fo %t.o %t/source.hlsl
9393
# RUN: %offloader %t/pipeline.yaml %t.o | FileCheck %s
94+
# RUN: obj2yaml %t.o | FileCheck %s --check-prefix=OBJ
9495

9596
# CHECK-LABEL: Name: Out1
9697
# CHECK: Data: [ 20, 48, 84, 128 ]
9798
# CHECK-LABEL: Name: Out2
9899
# CHECK: Data: [ 40, 96, 168, 256 ]
100+
101+
## Root Signature Header
102+
# OBJ: - Name: RTS0
103+
# OBJ-NEXT: Size: 116
104+
# OBJ-NEXT: RootSignature:
105+
# OBJ-NEXT: Version: 2
106+
# OBJ-NEXT: NumRootParameters: 1
107+
# OBJ-NEXT: RootParametersOffset: 24
108+
# OBJ-NEXT: NumStaticSamplers: 0
109+
# OBJ-NEXT: StaticSamplersOffset: 116
110+
# OBJ-NEXT: Parameters:
111+
112+
## DescriptorTable
113+
# OBJ-NEXT: - ParameterType: 0
114+
# OBJ-NEXT: ShaderVisibility: 0
115+
# OBJ-NEXT: Table:
116+
# OBJ-NEXT: NumRanges: 3
117+
# OBJ-NEXT: RangesOffset: 44
118+
# OBJ-NEXT: Ranges:
119+
120+
## UAV(u2, offset = 3, numDescriptors = unbounded)
121+
# OBJ: - RangeType: 1
122+
## Ensure unbounded descriptors
123+
# OBJ-NEXT: NumDescriptors: -1
124+
# OBJ-NEXT: BaseShaderRegister: 2
125+
# OBJ-NEXT: RegisterSpace: 0
126+
## Ensure offset = 3
127+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 3
128+
129+
## SRV(t0, offset = 0, numDescriptors = 2)
130+
# OBJ: - RangeType: 0
131+
## Ensure 2 descriptors
132+
# OBJ-NEXT: NumDescriptors: 2
133+
# OBJ-NEXT: BaseShaderRegister: 0
134+
# OBJ-NEXT: RegisterSpace: 0
135+
## Ensure offset = 0
136+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 0
137+
138+
## UAV(u1,
139+
## offset = DESCRIPTOR_RANGE_OFFSET_APPEND,
140+
## numDescriptors = 1
141+
## )
142+
# OBJ: - RangeType: 1
143+
## Ensure 1 descriptor
144+
# OBJ-NEXT: NumDescriptors: 1
145+
# OBJ-NEXT: BaseShaderRegister: 1
146+
# OBJ-NEXT: RegisterSpace: 0
147+
148+
## Ensure append
149+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295

test/Feature/RootSignatures/NumberParameters.test

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,61 @@ DescriptorSets:
9090
# RUN: split-file %s %t
9191
# RUN: %dxc_target -T cs_6_0 -Fo %t.o %t/source.hlsl
9292
# RUN: %offloader %t/pipeline.yaml %t.o | FileCheck %s
93+
# RUN: obj2yaml %t.o | FileCheck %s --check-prefix=OBJ
9394

9495
# CHECK-LABEL: Name: Out1
9596
# CHECK: Data: [ 40, 192, 504, 1024 ]
9697
# CHECK-LABEL: Name: Out2
9798
# CHECK: Data: [ 80, 384, 1008, 2048 ]
99+
100+
## Root Signature Header
101+
# OBJ: - Name: RTS0
102+
# OBJ-NEXT: Size: 140
103+
# OBJ-NEXT: RootSignature:
104+
# OBJ-NEXT: Version: 2
105+
# OBJ-NEXT: NumRootParameters: 3
106+
# OBJ-NEXT: RootParametersOffset: 24
107+
# OBJ-NEXT: NumStaticSamplers: 0
108+
# OBJ-NEXT: StaticSamplersOffset: 140
109+
110+
# OBJ-NEXT: Parameters:
111+
112+
## RootConstants(num32BitConstants = +61, b0)
113+
# OBJ-NEXT: - ParameterType: 1
114+
# OBJ-NEXT: ShaderVisibility: 0
115+
# OBJ-NEXT: Constants:
116+
## Check positively signed integer
117+
# OBJ-NEXT: Num32BitValues: 61
118+
# OBJ-NEXT: RegisterSpace: 0
119+
# OBJ-NEXT: ShaderRegister: 0
120+
121+
## DescriptorTable
122+
# OBJ-NEXT: - ParameterType: 0
123+
# OBJ-NEXT: ShaderVisibility: 0
124+
# OBJ-NEXT: Table:
125+
# OBJ-NEXT: NumRanges: 2
126+
# OBJ-NEXT: RangesOffset: 80
127+
# OBJ-NEXT: Ranges:
128+
129+
## SRV(t4294967294)
130+
# OBJ-NEXT: - RangeType: 0
131+
# OBJ-NEXT: NumDescriptors: 1
132+
## Check edge-case
133+
# OBJ-NEXT: BaseShaderRegister: 4294967294
134+
# OBJ-NEXT: RegisterSpace: 0
135+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
136+
137+
## UAV(u1, space = 4294967279)
138+
# OBJ: - RangeType: 1
139+
# OBJ-NEXT: NumDescriptors: 1
140+
# OBJ-NEXT: BaseShaderRegister: 1
141+
## Check edge-case
142+
# OBJ-NEXT: RegisterSpace: 4294967279
143+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
144+
145+
## UAV(u2)
146+
# OBJ: - ParameterType: 4
147+
# OBJ-NEXT: ShaderVisibility: 0
148+
# OBJ-NEXT: Descriptor:
149+
# OBJ-NEXT: RegisterSpace: 0
150+
# OBJ-NEXT: ShaderRegister: 2

test/Feature/RootSignatures/ParameterInsensitivity.test

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,41 @@ DescriptorSets:
7878
# RUN: split-file %s %t
7979
# RUN: %dxc_target -T cs_6_0 -Fo %t.o %t/source.hlsl
8080
# RUN: %offloader %t/pipeline.yaml %t.o | FileCheck %s
81+
# RUN: obj2yaml %t.o | FileCheck %s --check-prefix=OBJ
8182

8283
# CHECK-LABEL: Name: Out
8384
# CHECK: Data: [ 40, 192, 504, 1024 ]
85+
86+
# OBJ: - Name: RTS0
87+
# OBJ-NEXT: Size: 116
88+
# OBJ-NEXT: RootSignature:
89+
# OBJ-NEXT: Version: 2
90+
# OBJ-NEXT: NumRootParameters: 2
91+
# OBJ-NEXT: RootParametersOffset: 24
92+
# OBJ-NEXT: NumStaticSamplers: 0
93+
# OBJ-NEXT: StaticSamplersOffset: 116
94+
# OBJ-NEXT: Parameters:
95+
# OBJ-NEXT: - ParameterType: 1
96+
# OBJ-NEXT: ShaderVisibility: 0
97+
# OBJ-NEXT: Constants:
98+
# OBJ-NEXT: Num32BitValues: 4
99+
# OBJ-NEXT: RegisterSpace: 2
100+
# OBJ-NEXT: ShaderRegister: 0
101+
# OBJ-NEXT: - ParameterType: 0
102+
# OBJ-NEXT: ShaderVisibility: 0
103+
# OBJ-NEXT: Table:
104+
# OBJ-NEXT: NumRanges: 2
105+
# OBJ-NEXT: RangesOffset: 68
106+
# OBJ-NEXT: Ranges:
107+
# OBJ-NEXT: - RangeType: 0
108+
# OBJ-NEXT: NumDescriptors: 1
109+
# OBJ-NEXT: BaseShaderRegister: 0
110+
# OBJ-NEXT: RegisterSpace: 0
111+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
112+
# OBJ-NEXT: DATA_STATIC: true
113+
# OBJ-NEXT: - RangeType: 1
114+
# OBJ-NEXT: NumDescriptors: -1
115+
# OBJ-NEXT: BaseShaderRegister: 1
116+
# OBJ-NEXT: RegisterSpace: 0
117+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
118+
# OBJ: AllowInputAssemblerInputLayout: true

test/Feature/RootSignatures/RootConstants.test

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,39 @@ DescriptorSets:
5959
# RUN: split-file %s %t
6060
# RUN: %dxc_target -T cs_6_0 -Fo %t.o %t/source.hlsl
6161
# RUN: %offloader %t/pipeline.yaml %t.o | FileCheck %s
62+
# RUN: obj2yaml %t.o | FileCheck %s --check-prefix=OBJ
6263

6364
# CHECK-LABEL: Name: Out
6465
# CHECK: Data: [ 40, 192, 504, 1024 ]
66+
67+
# OBJ: - Name: RTS0
68+
# OBJ-NEXT: Size: 116
69+
# OBJ-NEXT: RootSignature:
70+
# OBJ-NEXT: Version: 2
71+
# OBJ-NEXT: NumRootParameters: 2
72+
# OBJ-NEXT: RootParametersOffset: 24
73+
# OBJ-NEXT: NumStaticSamplers: 0
74+
# OBJ-NEXT: StaticSamplersOffset: 116
75+
# OBJ-NEXT: Parameters:
76+
# OBJ-NEXT: - ParameterType: 1
77+
# OBJ-NEXT: ShaderVisibility: 0
78+
# OBJ-NEXT: Constants:
79+
# OBJ-NEXT: Num32BitValues: 4
80+
# OBJ-NEXT: RegisterSpace: 0
81+
# OBJ-NEXT: ShaderRegister: 2
82+
# OBJ: - ParameterType: 0
83+
# OBJ-NEXT: ShaderVisibility: 0
84+
# OBJ-NEXT: Table:
85+
# OBJ-NEXT: NumRanges: 2
86+
# OBJ-NEXT: RangesOffset: 68
87+
# OBJ-NEXT: Ranges:
88+
# OBJ: - RangeType: 0
89+
# OBJ-NEXT: NumDescriptors: 1
90+
# OBJ-NEXT: BaseShaderRegister: 2
91+
# OBJ-NEXT: RegisterSpace: 0
92+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295
93+
# OBJ: - RangeType: 1
94+
# OBJ-NEXT: NumDescriptors: 1
95+
# OBJ-NEXT: BaseShaderRegister: 1
96+
# OBJ-NEXT: RegisterSpace: 4
97+
# OBJ-NEXT: OffsetInDescriptorsFromTableStart: 4294967295

0 commit comments

Comments
 (0)