Skip to content

Commit 5744c0e

Browse files
authored
[Vulkan] Use the uniform texel buffer type for Buffer SRV (#1041)
We had `VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER` for the `Buffer` type, but for SRVs we need `VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER`. Fixes #1030
1 parent 8e2d7d5 commit 5744c0e

4 files changed

Lines changed: 165 additions & 8 deletions

File tree

lib/API/VK/Device.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ static VkFormat getVKFormat(DataFormat Format, int Channels) {
6666
static VkDescriptorType getDescriptorType(const ResourceKind RK) {
6767
switch (RK) {
6868
case ResourceKind::Buffer:
69+
return VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER;
6970
case ResourceKind::RWBuffer:
7071
return VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER;
7172
case ResourceKind::Texture2D:

test/Feature/TypedBuffer/64bit-scalar.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ DescriptorSets:
125125

126126
# UNSUPPORTED: Metal
127127

128-
# Bug https://github.com/llvm/offload-test-suite/issues/1030
129-
# XFAIL: Vulkan && !AMD
128+
# Bug https://github.com/llvm/offload-test-suite/issues/1110
129+
# XFAIL: Intel && Vulkan && DXC
130130

131131
# REQUIRES: Int64
132132
# RUN: split-file %s %t

test/Feature/TypedBuffer/GetDimensions.test

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,7 @@ DescriptorSets:
8181
#--- end
8282

8383
# Bug https://github.com/llvm/offload-test-suite/issues/469
84-
# GetDimensions on Vulkan (DXC) returns [ 16, 16 ] instead of [ 8, 5 ]
85-
# except on AMD https://github.com/llvm/offload-test-suite/issues/523
86-
# XFAIL: DXC && Vulkan && !Darwin && !AMD
87-
88-
# Unimplemented https://github.com/llvm/llvm-project/issues/164008
89-
# XFAIL: Clang && Vulkan
84+
# XFAIL: DXC && Vulkan && Intel
9085

9186
# RUN: split-file %s %t
9287
# RUN: %dxc_target -T cs_6_5 -Fo %t.o %t/source.hlsl
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
#--- source.hlsl
2+
Buffer<int4> In0 : register(t0);
3+
RWBuffer<int4> Out0 : register(u1);
4+
StructuredBuffer<int4> In1 : register(t2);
5+
RWStructuredBuffer<int4> Out1 : register(u3);
6+
Buffer<float4> In2 : register(t4);
7+
RWBuffer<float4> Out2 : register(u5);
8+
StructuredBuffer<float4> In3 : register(t6);
9+
RWStructuredBuffer<float4> Out3 : register(u7);
10+
11+
[numthreads(1,1,1)]
12+
void main() {
13+
Out0[0] = In0[0];
14+
Out1[0] = In1[0];
15+
Out2[0] = In2[0];
16+
Out3[0] = In3[0];
17+
}
18+
19+
//--- pipeline.yaml
20+
21+
---
22+
Shaders:
23+
- Stage: Compute
24+
Entry: main
25+
DispatchSize: [1, 1, 1]
26+
Buffers:
27+
- Name: In0
28+
Format: Int32
29+
Channels: 4
30+
Data: [ 1, 2, 3, 4 ]
31+
- Name: Out0
32+
Format: Int32
33+
Channels: 4
34+
FillSize: 16
35+
- Name: ExpectedOut0
36+
Format: Int32
37+
Channels: 4
38+
Data: [ 1, 2, 3, 4 ]
39+
- Name: In1
40+
Format: Int32
41+
Channels: 4
42+
Data: [ 1, 2, 3, 4 ]
43+
- Name: Out1
44+
Format: Int32
45+
Channels: 4
46+
FillSize: 16
47+
- Name: ExpectedOut1
48+
Format: Int32
49+
Channels: 4
50+
Data: [ 1, 2, 3, 4 ]
51+
- Name: In2
52+
Format: Float32
53+
Channels: 4
54+
Data: [ 1.0, 2.0, 3.0, 4.0 ]
55+
- Name: Out2
56+
Format: Float32
57+
Channels: 4
58+
FillSize: 16
59+
- Name: ExpectedOut2
60+
Format: Float32
61+
Channels: 4
62+
Data: [ 1.0, 2.0, 3.0, 4.0 ]
63+
- Name: In3
64+
Format: Float32
65+
Channels: 4
66+
Data: [ 1.0, 2.0, 3.0, 4.0 ]
67+
- Name: Out3
68+
Format: Float32
69+
Channels: 4
70+
FillSize: 16
71+
- Name: ExpectedOut3
72+
Format: Float32
73+
Channels: 4
74+
Data: [ 1.0, 2.0, 3.0, 4.0 ]
75+
Results:
76+
- Result: Test0
77+
Rule: BufferExact
78+
Actual: Out0
79+
Expected: ExpectedOut0
80+
- Result: Test1
81+
Rule: BufferExact
82+
Actual: Out1
83+
Expected: ExpectedOut1
84+
- Result: Test2
85+
Rule: BufferExact
86+
Actual: Out2
87+
Expected: ExpectedOut2
88+
- Result: Test3
89+
Rule: BufferExact
90+
Actual: Out3
91+
Expected: ExpectedOut3
92+
DescriptorSets:
93+
- Resources:
94+
- Name: In0
95+
Kind: Buffer
96+
DirectXBinding:
97+
Register: 0
98+
Space: 0
99+
VulkanBinding:
100+
Binding: 0
101+
- Name: Out0
102+
Kind: RWBuffer
103+
DirectXBinding:
104+
Register: 1
105+
Space: 0
106+
VulkanBinding:
107+
Binding: 1
108+
- Name: In1
109+
Kind: StructuredBuffer
110+
DirectXBinding:
111+
Register: 2
112+
Space: 0
113+
VulkanBinding:
114+
Binding: 2
115+
- Name: Out1
116+
Kind: RWStructuredBuffer
117+
DirectXBinding:
118+
Register: 3
119+
Space: 0
120+
VulkanBinding:
121+
Binding: 3
122+
- Name: In2
123+
Kind: Buffer
124+
DirectXBinding:
125+
Register: 4
126+
Space: 0
127+
VulkanBinding:
128+
Binding: 4
129+
- Name: Out2
130+
Kind: RWBuffer
131+
DirectXBinding:
132+
Register: 5
133+
Space: 0
134+
VulkanBinding:
135+
Binding: 5
136+
- Name: In3
137+
Kind: StructuredBuffer
138+
DirectXBinding:
139+
Register: 6
140+
Space: 0
141+
VulkanBinding:
142+
Binding: 6
143+
- Name: Out3
144+
Kind: RWStructuredBuffer
145+
DirectXBinding:
146+
Register: 7
147+
Space: 0
148+
VulkanBinding:
149+
Binding: 7
150+
...
151+
#--- end
152+
153+
# Bug https://github.com/llvm/offload-test-suite/issues/351
154+
# XFAIL: Metal
155+
156+
# Bug https://github.com/llvm/llvm-project/issues/193620
157+
# XFAIL: WARP && Clang
158+
159+
# RUN: split-file %s %t
160+
# RUN: %dxc_target -T cs_6_5 -Fo %t.o %t/source.hlsl
161+
# RUN: %offloader --validation-layer %t/pipeline.yaml %t.o

0 commit comments

Comments
 (0)