1// todo: validate the existance of this file and figure out what it's named
2
3#pragma once
4
5#include <nn/gfx/gfx_Enum.h>
6
7namespace nn::gfx {
8
9template <typename TTarget>
10class TDevice;
11
12template <typename TTarget>
13class TCommandBuffer;
14
15template <typename TTarget>
16class TMemoryPool;
17
18template <typename TTarget>
19class TTexture;
20
21template <typename TTarget>
22class TPipeline;
23
24template <typename TTarget>
25class TColorTargetView;
26
27template <typename TTarget>
28class TDepthStencilView;
29
30template <typename TTarget>
31class TViewportScissorState;
32
33template <typename TTarget>
34class TBuffer;
35
36template <typename TTarget>
37class TDescriptorPool;
38
39template <typename TTarget>
40class TRootSignature;
41
42template <typename TTarget>
43class TTextureView;
44
45template <typename TTarget>
46class TSampler;
47
48template <typename TTarget>
49class TShader;
50
51template <typename TTarget>
52class TRasterizerState;
53
54template <typename TTarget>
55class TBlendState;
56
57template <typename TTarget>
58class TDepthStencilState;
59
60template <typename TTarget>
61class TVertexState;
62
63template <typename TTarget>
64class TTessellationState;
65
66template <typename TTarget>
67class TQueue;
68
69template <typename TTarget>
70class TInteroperation;
71
72template <typename TTarget>
73class TFence;
74
75template <typename TTarget>
76class TSemaphore;
77
78template <typename TTarget>
79class TSwapChain;
80
81template <typename TTarget>
82class TColorTargetView;
83
84template <typename TTarget>
85class TBufferTextureView;
86
87template <typename TTarget>
88struct BufferImplData;
89
90template <typename TTarget>
91struct BufferTextureViewImplData;
92
93template <typename TTarget>
94struct CommandBufferImplData;
95
96template <typename TTarget>
97struct RasterizerStateImplData;
98
99template <typename TTarget>
100struct BlendStateImplData;
101
102template <typename TTarget>
103struct DepthStencilStateImplData;
104
105template <typename TTarget>
106struct VertexStateImplData;
107
108template <typename TTarget>
109struct TessellationStateImplData;
110
111template <typename TTarget>
112struct ViewportScissorStateImplData;
113
114template <typename TTarget>
115struct PipelineImplData;
116
117template <typename TTarget>
118struct ShaderImplData;
119
120template <typename TTarget>
121struct TextureImplData;
122
123template <typename TTarget>
124struct TextureViewImplData;
125
126template <typename TTarget>
127struct ColorTargetViewImplData;
128
129template <typename TTarget>
130struct DepthStencilViewImplData;
131
132template <typename TTarget>
133struct MemoryPoolImplData;
134
135template <typename TTarget>
136struct DeviceImplData;
137
138template <typename TTarget>
139struct DescriptorPoolImplData;
140
141template <class TTarget>
142struct SamplerImplData;
143
144template <class TTarget>
145struct QueueImplData;
146
147template <class TTarget>
148struct SwapChainImplData;
149
150template <class TTarget>
151struct FenceImplData;
152
153template <class TTarget>
154struct SemaphoreImplData;
155
156struct ImageFormatProperty;
157
158namespace detail {
159
160template <typename TTarget>
161class MemoryPoolImpl;
162
163template <typename TTarget>
164class DeviceImpl;
165
166template <typename TTarget>
167class BufferImpl;
168
169template <typename TTarget>
170class BufferTextureViewImpl;
171
172template <typename TTarget>
173class CommandBufferImpl;
174
175template <typename TTarget>
176class PipelineImpl;
177
178template <typename TTarget>
179class RootSignatureImpl;
180
181template <typename TTarget>
182class ShaderImpl;
183
184template <typename TTarget>
185class TextureImpl;
186
187template <typename TTarget>
188class DescriptorPoolImpl;
189
190template <typename TTarget>
191class SamplerImpl;
192
193template <typename TTarget>
194class RasterizerStateImpl;
195
196template <typename TTarget>
197class BlendStateImpl;
198
199template <typename TTarget>
200class DepthStencilStateImpl;
201
202template <typename TTarget>
203class VertexStateImpl;
204
205template <typename TTarget>
206class TessellationStateImpl;
207
208template <typename TTarget>
209class ViewportScissorStateImpl;
210
211template <typename TTarget>
212class ColorTargetViewImpl;
213
214template <typename TTarget>
215class DepthStencilViewImpl;
216
217template <typename TTarget>
218class TextureViewImpl;
219
220template <typename TTarget>
221class BufferTextureViewImpl;
222
223template <typename TTarget>
224class QueueImpl;
225
226template <typename TTarget>
227class FenceImpl;
228
229template <typename TTarget>
230class SemaphoreImpl;
231
232template <typename TTarget>
233class SwapChainImpl;
234
235// todo: figure out where to put this
236template <typename TTarget>
237void GetImageFormatProperty(ImageFormatProperty*, DeviceImpl<TTarget>*, ImageFormat);
238
239} // namespace detail
240
241namespace util {
242// todo: figure out where to put these
243template <typename TTarget>
244void SetMemoryPoolDebugLabel(TMemoryPool<TTarget>*, const char*);
245template <typename TTarget>
246void SetBufferDebugLabel(TBuffer<TTarget>*, const char*);
247template <typename TTarget>
248void SetTextureDebugLabel(TTexture<TTarget>*, const char*);
249template <typename TTarget>
250void SetSamplerDebugLabel(TSampler<TTarget>*, const char*);
251} // namespace util
252} // namespace nn::gfx