Skip to content

Commit 51d9501

Browse files
Fix atomics resource declaration issue (#3833)
Resources used as raw RWByteAddressBuffer but created as structured could see conflicting allocation and stride values, resulting in OOB access in some configurations.
1 parent 1725f29 commit 51d9501

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

tools/clang/test/HLSL/ShaderOpArith.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1774,12 +1774,12 @@
17741774
<Resource Name="U1" Dimension="BUFFER" Width="9216"
17751775
Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST"
17761776
Init="Zero" ReadBack="true" />
1777-
<Resource Name="U2" Dimension="BUFFER" Width="256"
1777+
<Resource Name="U2" Dimension="BUFFER" Width="256" Format="R32_TYPELESS"
17781778
Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST"
17791779
Init="FromBytes" ReadBack="true">
17801780
{ 0I, 0I, 99999999I, 99999999I, 0I, 0I, -1I, -1I, 0I, 0I, 0I, 0I, 42I, 42I, 42I, 42I }
17811781
</Resource>
1782-
<Resource Name="U3" Dimension="BUFFER" Width="1024"
1782+
<Resource Name="U3" Dimension="BUFFER" Width="1024" Format="R32_TYPELESS"
17831783
Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST"
17841784
Init="Zero" ReadBack="true" />
17851785
<!-- groupshared output buffers -->
@@ -1852,10 +1852,10 @@
18521852
NumElements="8" StructureByteStride="72" />
18531853
<Descriptor Name="U1" Kind="UAV" ResName="U1"
18541854
NumElements="128" StructureByteStride="72" />
1855-
<Descriptor Name="U2" Kind="UAV" ResName="U2"
1856-
NumElements="16" StructureByteStride="8" />
1857-
<Descriptor Name="U3" Kind="UAV" ResName="U3"
1858-
NumElements="128" StructureByteStride="8" />
1855+
<Descriptor Name="U2" Kind="UAV" ResName="U2" Flags='RAW' Format="R32_TYPELESS"
1856+
NumElements="16" StructureByteStride="0" />
1857+
<Descriptor Name="U3" Kind="UAV" ResName="U3" Flags='RAW' Format="R32_TYPELESS"
1858+
NumElements="128" StructureByteStride="0" />
18591859
<!-- groupshared output buffers -->
18601860
<Descriptor Name="U4" Kind="UAV" ResName="U4"
18611861
NumElements="8" StructureByteStride="8" />
@@ -2322,7 +2322,7 @@
23222322
<Resource Name="U0" Dimension="BUFFER" Width="2816"
23232323
Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST"
23242324
Init="Zero" ReadBack="true" />
2325-
<Resource Name="U1" Dimension="BUFFER" Width="256"
2325+
<Resource Name="U1" Dimension="BUFFER" Width="256" Format="R32_TYPELESS"
23262326
Flags="ALLOW_UNORDERED_ACCESS" InitialResourceState="COPY_DEST"
23272327
Init="Zero" ReadBack="true" />
23282328
<Resource Name="U2" Dimension="BUFFER" Width="256"
@@ -2340,8 +2340,8 @@
23402340
<DescriptorHeap Name="ResHeap" Type="CBV_SRV_UAV">
23412341
<Descriptor Name="U0" Kind="UAV" ResName="U0"
23422342
NumElements="64" StructureByteStride="44" />
2343-
<Descriptor Name="U1" Kind="UAV" ResName="U1"
2344-
NumElements="64" StructureByteStride="4" />
2343+
<Descriptor Name="U1" Kind="UAV" ResName="U1" Flags='RAW' Format="R32_TYPELESS"
2344+
NumElements="64" StructureByteStride="0" />
23452345
<Descriptor Name="U2" Kind="UAV" ResName="U2"
23462346
NumElements="64" Format="R32_FLOAT" />
23472347
<Descriptor Name="U3" Kind="UAV" ResName="U3" Dimension="TEXTURE1D"

0 commit comments

Comments
 (0)