Skip to content

Commit 3fc1f17

Browse files
authored
Rewrite the command list to move the automatic barrier to the c# part
2 parents 8690000 + 31a2015 commit 3fc1f17

File tree

141 files changed

+11942
-2440
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+11942
-2440
lines changed

.clang-format

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
---
2+
Language: Cpp
3+
BasedOnStyle: Microsoft
4+
AccessModifierOffset: -4
5+
AlignConsecutiveAssignments: false
6+
AlignConsecutiveDeclarations: false
7+
AlignOperands: false
8+
AlignTrailingComments: false
9+
AlwaysBreakTemplateDeclarations: Yes
10+
BraceWrapping:
11+
AfterCaseLabel: true
12+
AfterClass: true
13+
AfterControlStatement: true
14+
AfterEnum: true
15+
AfterFunction: true
16+
AfterNamespace: true
17+
AfterStruct: true
18+
AfterUnion: true
19+
AfterExternBlock: false
20+
BeforeCatch: true
21+
BeforeElse: true
22+
BeforeLambdaBody: true
23+
BeforeWhile: true
24+
SplitEmptyFunction: true
25+
SplitEmptyRecord: true
26+
SplitEmptyNamespace: true
27+
BreakConstructorInitializers: AfterColon
28+
BreakConstructorInitializersBeforeComma: false
29+
ConstructorInitializerAllOnOneLineOrOnePerLine: false
30+
IncludeCategories:
31+
- Regex: '^<.*'
32+
Priority: 1
33+
- Regex: '^".*'
34+
Priority: 2
35+
- Regex: '.*'
36+
Priority: 3
37+
IncludeIsMainRegex: '([-_](test|unittest))?$'
38+
IndentCaseBlocks: true
39+
IndentPPDirectives: BeforeHash
40+
InsertNewlineAtEOF: true
41+
MacroBlockBegin: ''
42+
MacroBlockEnd: ''
43+
MaxEmptyLinesToKeep: 2
44+
NamespaceIndentation: All
45+
PointerAlignment: Left
46+
SpaceInEmptyParentheses: false
47+
SpacesInAngles: false
48+
SpacesInConditionalStatement: false
49+
SpacesInCStyleCastParentheses: false
50+
SpacesInParentheses: false
51+
...

.gitmodules

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
[submodule "Coplt.Graphics.Native/D3d12/ThirdParty/DirectX-Headers"]
2020
path = Coplt.Graphics.Native/D3d12/ThirdParty/DirectX-Headers
2121
url = https://github.com/Microsoft/DirectX-Headers
22-
[submodule "ThirdParty/emhash"]
23-
path = ThirdParty/emhash
24-
url = https://github.com/ktprime/emhash
22+
[submodule "ThirdParty/concurrentqueue"]
23+
path = ThirdParty/concurrentqueue
24+
url = https://github.com/cameron314/concurrentqueue

.idea/codeStyles/Project.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/editor.xml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ add_subdirectory(ThirdParty/cpptrace)
3030
add_subdirectory(ThirdParty/glm)
3131
add_subdirectory(ThirdParty/fmt)
3232
add_subdirectory(ThirdParty/mimalloc)
33+
add_subdirectory(ThirdParty/concurrentqueue)
3334

3435
add_subdirectory(Coplt.Graphics.Native/Api)
3536
add_subdirectory(Coplt.Graphics.Native/D3d12)

Coplt.Graphics.Core/Coplt.Graphics.Core.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<ItemGroup>
1616
<PackageReference Include="Coplt.Dropping" Version="0.6.0" />
1717
<PackageReference Include="Coplt.Mathematics" Version="0.10.0"/>
18+
<PackageReference Include="Coplt.Union" Version="0.11.0" />
1819
<PackageReference Include="Fody" Version="6.9.1">
1920
<PrivateAssets>all</PrivateAssets>
2021
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
using Coplt.Graphics.Native;
2+
using Coplt.Union;
3+
4+
namespace Coplt.Graphics.Core;
5+
6+
[Union]
7+
public partial struct Barrier
8+
{
9+
[UnionTemplate]
10+
private interface Template
11+
{
12+
void None();
13+
GlobalBarrier Global();
14+
BufferBarrier Buffer();
15+
ImageBarrier Image();
16+
}
17+
18+
public static implicit operator Barrier(GlobalBarrier value) => MakeGlobal(value);
19+
20+
public static implicit operator Barrier(BufferBarrier value) => MakeBuffer(value);
21+
22+
public static implicit operator Barrier(ImageBarrier value) => MakeImage(value);
23+
}
24+
25+
public record struct GlobalBarrier(
26+
ResAccess AccessBefore,
27+
ResAccess AccessAfter,
28+
ShaderStageFlags StagesBefore,
29+
ShaderStageFlags StagesAfter
30+
)
31+
{
32+
public ResAccess AccessBefore = AccessBefore;
33+
public ResAccess AccessAfter = AccessAfter;
34+
public ShaderStageFlags StagesBefore = StagesBefore;
35+
public ShaderStageFlags StagesAfter = StagesAfter;
36+
}
37+
38+
public record struct BufferBarrier(
39+
IGpuResource Buffer,
40+
ulong Offset,
41+
ulong Size,
42+
LegacyState LegacyBefore,
43+
LegacyState LegacyAfter,
44+
ResAccess AccessBefore,
45+
ResAccess AccessAfter,
46+
ShaderStageFlags StagesBefore = ShaderStageFlags.None,
47+
ShaderStageFlags StagesAfter = ShaderStageFlags.None
48+
)
49+
{
50+
public IGpuResource Buffer = Buffer;
51+
public ulong Offset = Offset;
52+
public ulong Size = Size;
53+
public LegacyState LegacyBefore = LegacyBefore;
54+
public LegacyState LegacyAfter = LegacyAfter;
55+
public ResAccess AccessBefore = AccessBefore;
56+
public ResAccess AccessAfter = AccessAfter;
57+
public ShaderStageFlags StagesBefore = StagesBefore;
58+
public ShaderStageFlags StagesAfter = StagesAfter;
59+
60+
public BufferBarrier(
61+
IGpuResource Buffer,
62+
LegacyState LegacyBefore,
63+
LegacyState LegacyAfter,
64+
ResAccess AccessBefore,
65+
ResAccess AccessAfter,
66+
ShaderStageFlags StagesBefore = ShaderStageFlags.None,
67+
ShaderStageFlags StagesAfter = ShaderStageFlags.None
68+
) : this(
69+
Buffer, 0, Buffer.Size,
70+
LegacyBefore, LegacyAfter, AccessBefore, AccessAfter, StagesBefore, StagesAfter
71+
) { }
72+
73+
public BufferBarrier(
74+
IGpuResource Buffer,
75+
LegacyState LegacyBefore,
76+
LegacyState LegacyAfter
77+
) : this(
78+
Buffer, 0, Buffer.Size,
79+
LegacyBefore, LegacyAfter, default, default, default, default
80+
) { }
81+
82+
public BufferBarrier(
83+
IGpuResource Buffer,
84+
ulong Offset,
85+
ulong Size,
86+
LegacyState LegacyBefore,
87+
LegacyState LegacyAfter
88+
) : this(
89+
Buffer, Offset, Size,
90+
LegacyBefore, LegacyAfter, default, default, default, default
91+
) { }
92+
93+
public BufferBarrier(
94+
IGpuResource Buffer,
95+
ResAccess AccessBefore,
96+
ResAccess AccessAfter,
97+
ShaderStageFlags StagesBefore = ShaderStageFlags.None,
98+
ShaderStageFlags StagesAfter = ShaderStageFlags.None
99+
) : this(
100+
Buffer, 0, Buffer.Size,
101+
default, default, AccessBefore, AccessAfter, StagesBefore, StagesAfter
102+
) { }
103+
104+
public BufferBarrier(
105+
IGpuResource Buffer,
106+
ulong Offset,
107+
ulong Size,
108+
ResAccess AccessBefore,
109+
ResAccess AccessAfter,
110+
ShaderStageFlags StagesBefore = ShaderStageFlags.None,
111+
ShaderStageFlags StagesAfter = ShaderStageFlags.None
112+
) : this(
113+
Buffer, Offset, Size,
114+
default, default, AccessBefore, AccessAfter, StagesBefore, StagesAfter
115+
) { }
116+
}
117+
118+
public record struct ImageBarrier(
119+
IGpuResource Image,
120+
SubResourceRange SubResourceRange,
121+
LegacyState LegacyBefore,
122+
LegacyState LegacyAfter,
123+
ResLayout LayoutBefore,
124+
ResLayout LayoutAfter,
125+
ResAccess AccessBefore,
126+
ResAccess AccessAfter,
127+
ShaderStageFlags StagesBefore = ShaderStageFlags.None,
128+
ShaderStageFlags StagesAfter = ShaderStageFlags.None,
129+
ImageBarrierFlags Flags = ImageBarrierFlags.None
130+
)
131+
{
132+
public IGpuResource Image = Image;
133+
public SubResourceRange SubResourceRange = SubResourceRange;
134+
public LegacyState LegacyBefore = LegacyBefore;
135+
public LegacyState LegacyAfter = LegacyAfter;
136+
public ResLayout LayoutBefore = LayoutBefore;
137+
public ResLayout LayoutAfter = LayoutAfter;
138+
public ResAccess AccessBefore = AccessBefore;
139+
public ResAccess AccessAfter = AccessAfter;
140+
public ShaderStageFlags StagesBefore = StagesBefore;
141+
public ShaderStageFlags StagesAfter = StagesAfter;
142+
public ImageBarrierFlags Flags = Flags;
143+
144+
public ImageBarrier(
145+
IGpuResource Image,
146+
LegacyState LegacyBefore,
147+
LegacyState LegacyAfter,
148+
ResLayout LayoutBefore,
149+
ResLayout LayoutAfter,
150+
ResAccess AccessBefore,
151+
ResAccess AccessAfter,
152+
ShaderStageFlags StagesBefore = ShaderStageFlags.None,
153+
ShaderStageFlags StagesAfter = ShaderStageFlags.None,
154+
ImageBarrierFlags Flags = ImageBarrierFlags.None
155+
) : this(
156+
Image, new(Image),
157+
LegacyBefore, LegacyAfter, LayoutBefore, LayoutAfter, AccessBefore, AccessAfter, StagesBefore, StagesAfter,
158+
Flags
159+
) { }
160+
161+
public ImageBarrier(
162+
IGpuResource Image,
163+
SubResourceRange SubResourceRange,
164+
LegacyState LegacyBefore,
165+
LegacyState LegacyAfter,
166+
ImageBarrierFlags Flags = ImageBarrierFlags.None
167+
) : this(
168+
Image, SubResourceRange,
169+
LegacyBefore, LegacyAfter, default, default, default, default, default, default, Flags
170+
) { }
171+
172+
public ImageBarrier(
173+
IGpuResource Image,
174+
LegacyState LegacyBefore,
175+
LegacyState LegacyAfter,
176+
ImageBarrierFlags Flags = ImageBarrierFlags.None
177+
) : this(
178+
Image, new(Image),
179+
LegacyBefore, LegacyAfter, default, default, default, default, default, default, Flags
180+
) { }
181+
182+
public ImageBarrier(
183+
IGpuResource Image,
184+
ResLayout LayoutBefore,
185+
ResLayout LayoutAfter,
186+
ResAccess AccessBefore,
187+
ResAccess AccessAfter,
188+
ShaderStageFlags StagesBefore = ShaderStageFlags.None,
189+
ShaderStageFlags StagesAfter = ShaderStageFlags.None,
190+
ImageBarrierFlags Flags = ImageBarrierFlags.None
191+
) : this(
192+
Image, new(Image),
193+
default, default, LayoutBefore, LayoutAfter, AccessBefore, AccessAfter, StagesBefore, StagesAfter, Flags
194+
) { }
195+
196+
public ImageBarrier(
197+
IGpuResource Image,
198+
SubResourceRange SubResourceRange,
199+
ResLayout LayoutBefore,
200+
ResLayout LayoutAfter,
201+
ResAccess AccessBefore,
202+
ResAccess AccessAfter,
203+
ShaderStageFlags StagesBefore = ShaderStageFlags.None,
204+
ShaderStageFlags StagesAfter = ShaderStageFlags.None,
205+
ImageBarrierFlags Flags = ImageBarrierFlags.None
206+
) : this(
207+
Image, SubResourceRange,
208+
default, default, LayoutBefore, LayoutAfter, AccessBefore, AccessAfter, StagesBefore, StagesAfter, Flags
209+
) { }
210+
}
211+
212+
[Flags]
213+
public enum ImageBarrierFlags : uint
214+
{
215+
None,
216+
Discard = 1 << 0,
217+
CrossQueue = 1 << 1,
218+
}
219+
220+
public record struct SubResourceRange(
221+
uint IndexOrFirstMipLevel,
222+
uint NumMipLevels,
223+
uint FirstArraySlice,
224+
uint NumArraySlices,
225+
uint FirstPlane,
226+
uint NumPlanes
227+
)
228+
{
229+
public uint IndexOrFirstMipLevel = IndexOrFirstMipLevel;
230+
public uint NumMipLevels = NumMipLevels;
231+
public uint FirstArraySlice = FirstArraySlice;
232+
public uint NumArraySlices = NumArraySlices;
233+
public uint FirstPlane = FirstPlane;
234+
public uint NumPlanes = NumPlanes;
235+
236+
public SubResourceRange(IGpuResource Image)
237+
: this(0, Image.MipLevels, 0, Image.DepthOrLength, 0, Image.Planes) { }
238+
}

0 commit comments

Comments
 (0)