LeviLamina
Loading...
Searching...
No Matches
RendererContextD3D12.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/external/bgfx/AccelerationStructureHandle.h"
7#include "mc/external/bgfx/BlasCompactionState.h"
8#include "mc/external/bgfx/BufferD3D12.h"
9#include "mc/external/bgfx/CommandQueueD3D12.h"
10#include "mc/external/bgfx/Dxgi.h"
11#include "mc/external/bgfx/FatalError.h"
12#include "mc/external/bgfx/FenceSyncContext.h"
13#include "mc/external/bgfx/FrameBufferD3D12.h"
14#include "mc/external/bgfx/FrameBufferHandle.h"
15#include "mc/external/bgfx/GuardedPagedHeapBackedArray.h"
16#include "mc/external/bgfx/IndexBufferHandle.h"
17#include "mc/external/bgfx/OcclusionQueryD3D12.h"
18#include "mc/external/bgfx/ProfilerEvents.h"
19#include "mc/external/bgfx/ProgramD3D12.h"
20#include "mc/external/bgfx/RendererContextI.h"
21#include "mc/external/bgfx/Resolution.h"
22#include "mc/external/bgfx/ResourceStatesMananger.h"
23#include "mc/external/bgfx/RingBuffer.h"
24#include "mc/external/bgfx/RingBufferAllocator.h"
25#include "mc/external/bgfx/ShaderD3D12.h"
26#include "mc/external/bgfx/SwapChainDesc.h"
27#include "mc/external/bgfx/TextVideoMem.h"
28#include "mc/external/bgfx/TimerQueryD3D12.h"
29#include "mc/external/bgfx/UniformRegistry.h"
30#include "mc/external/bgfx/VertexBufferD3D12.h"
31#include "mc/external/bgfx/VertexBufferHandle.h"
32#include "mc/external/bgfx/VertexDecl.h"
33#include "mc/external/bgfx/VertexDeclHandle.h"
34#include "mc/external/bgfx/ViewProfilerManager.h"
35#include "mc/external/bgfx/acceleration_structure_build_flags/Enum.h"
36#include "mc/external/bgfx/d3d12/heap_property/Enum.h"
37#include "mc/external/bgfx/renderer_type/Enum.h"
38#include "mc/external/bgfx/texture_format/Enum.h"
39#include "mc/external/bgfx/uniform_type/Enum.h"
40
41// auto generated forward declare list
42// clang-format off
43namespace bgfx { struct Attachment; }
44namespace bgfx { struct ClearQuad; }
45namespace bgfx { struct Frame; }
46namespace bgfx { struct Handle; }
47namespace bgfx { struct Init; }
48namespace bgfx { struct Matrix4; }
49namespace bgfx { struct Memory; }
50namespace bgfx { struct OcclusionQueryHandle; }
51namespace bgfx { struct ProgramHandle; }
52namespace bgfx { struct RayTracingConfiguration; }
53namespace bgfx { struct RayTracingResources; }
54namespace bgfx { struct Rect; }
55namespace bgfx { struct RenderBind; }
56namespace bgfx { struct ShaderBufferHandle; }
57namespace bgfx { struct ShaderHandle; }
58namespace bgfx { struct TextVideoMemBlitter; }
59namespace bgfx { struct TextureHandle; }
60namespace bgfx { struct TopLevelInstanceDesc; }
61namespace bgfx { struct UniformHandle; }
62namespace bgfx::d3d12 { class BufferHeap; }
63namespace bgfx::d3d12 { class StagingBufferD3D12; }
64namespace bgfx::d3d12 { struct CommandContextD3D12; }
65namespace bgfx::d3d12 { struct CommandList; }
66namespace bgfx::d3d12 { struct CommandListD3D12; }
67namespace bgfx::d3d12 { struct ResourceCreate; }
68namespace bgfx::d3d12 { struct TextureD3D12; }
69// clang-format on
70
71namespace bgfx::d3d12 {
72
73struct RendererContextD3D12 : public ::bgfx::RendererContextI {
74public:
75 // RendererContextD3D12 inner types declare
76 // clang-format off
77 struct TlasBuildRequest;
78 struct BlasBuildRequest;
80 struct BLASGeometryInfo;
81 struct PresentTimings;
82 // clang-format on
83
84 // RendererContextD3D12 inner types define
85 struct TlasBuildRequest {
86 public:
87 // member variables
88 // NOLINTBEGIN
89 ::ll::TypedStorage<2, 2, ::bgfx::AccelerationStructureHandle> m_asHandle;
90 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::TopLevelInstanceDesc>> m_tlasInstanceDescs;
91 // NOLINTEND
92 };
93
94 struct BlasBuildRequest {
95 public:
96 // member variables
97 // NOLINTBEGIN
98 ::ll::TypedStorage<8, 56, ::D3D12_RAYTRACING_GEOMETRY_DESC> m_desc;
99 ::ll::TypedStorage<2, 2, ::bgfx::AccelerationStructureHandle> m_asHandle;
100 ::ll::TypedStorage<4, 4, ::D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS> m_flags;
101 ::ll::TypedStorage<4, 4, uint> m_scratchSize;
102 // NOLINTEND
103 };
104
105 struct BlasCompactionRequest {
106 public:
107 // member variables
108 // NOLINTBEGIN
109 ::ll::TypedStorage<4, 4, ::bgfx::d3d12::BlasCompactionState> m_state;
110 ::ll::TypedStorage<2, 2, ::bgfx::AccelerationStructureHandle> m_asHandle;
111 ::ll::TypedStorage<4, 4, uint> m_beforeSize;
112 ::ll::TypedStorage<4, 4, uint> m_afterSize;
113 ::ll::TypedStorage<4, 4, uint> m_frameCountOfLastUpdate;
114 ::ll::TypedStorage<4, 4, int> m_sizeRequestIndex;
115 // NOLINTEND
116 };
117
118 struct BLASGeometryInfo {
119 public:
120 // member variables
121 // NOLINTBEGIN
122 ::ll::TypedStorage<2, 2, ::bgfx::VertexBufferHandle> m_vb;
123 ::ll::TypedStorage<2, 2, ::bgfx::VertexDeclHandle> m_vbDecl;
124 ::ll::TypedStorage<2, 2, ushort> m_vertexStrideBytes;
125 ::ll::TypedStorage<2, 2, ::bgfx::IndexBufferHandle> m_ib;
126 ::ll::TypedStorage<4, 4, uint> m_verticesCount;
127 ::ll::TypedStorage<4, 4, uint> m_vertexOffsetInBaseVertices;
128 ::ll::TypedStorage<4, 4, uint> m_vertexOffsetInParallelVertices;
129 ::ll::TypedStorage<4, 4, uint> m_indicesCount;
130 ::ll::TypedStorage<4, 4, uint> m_indexOffsetInIndices;
131 ::ll::TypedStorage<2, 2, ushort> m_indexSize;
132 ::ll::TypedStorage<4, 4, uint> m_frameCountOfCreation;
133 ::ll::TypedStorage<4, 4, uint> m_frameCountOfUpdate;
134 ::ll::TypedStorage<4, 4, uint> m_mostRecentFrameInTLAS;
135 ::ll::TypedStorage<2, 2, ushort> m_flags;
136 ::ll::TypedStorage<2, 2, ushort> m_objectInstanceIdx;
137 ::ll::TypedStorage<2, 2, ushort> m_previousObjectInstanceIdx;
138 bool m_needFaceDataUpdate : 1;
139 // NOLINTEND
140 };
141
142 struct PresentTimings {
143 public:
144 // member variables
145 // NOLINTBEGIN
146 ::ll::TypedStorage<8, 8, int64> m_flipCompletionTime;
147 ::ll::TypedStorage<8, 8, int64> m_gpuFlipRequestTime;
148 ::ll::TypedStorage<8, 8, int64> m_cpuFlipRequestTime;
149 // NOLINTEND
150 };
151
152 using ASScratchBuffer =
153 ::bgfx::RingBuffer<::bgfx::d3d12::StagingBufferD3D12, uint64, void*, ::bgfx::d3d12::RingBufferAllocator<0>>;
154
155public:
156 // member variables
157 // NOLINTBEGIN
158 ::ll::TypedStorage<8, 8, ::ID3D12DescriptorHeap*> m_rtvDescriptorHeap;
159 ::ll::TypedStorage<8, 8, ::ID3D12DescriptorHeap*> m_dsvDescriptorHeap;
160 ::ll::TypedStorage<8, 24, ::ID3D12Resource* [3]> m_backBufferColor;
161 ::ll::TypedStorage<8, 24, uint64[3]> m_backBufferColorFence;
162 ::ll::TypedStorage<8, 8, ::ID3D12Resource*> m_backBufferDepthStencil;
163 ::ll::TypedStorage<4, 4, uint> m_frameCount;
164 ::ll::TypedStorage<1, 1, bool> m_rldoEnabled;
165 ::ll::TypedStorage<1, 1, bool> m_useBufferHeaps;
166 ::ll::TypedStorage<8, 448, ::bgfx::Dxgi> m_dxgi;
167 ::ll::TypedStorage<8, 8, void*> m_kernel32dll;
168 ::ll::TypedStorage<8, 8, void*> m_d3d12dll;
169 ::ll::TypedStorage<8, 8, void*> m_renderdocdll;
170 ::ll::TypedStorage<8, 8, void*> m_winPixEvent;
171 ::ll::TypedStorage<
172 8,
173 8,
174 ::std::unique_ptr<
175 ::bgfx::
176 RingBuffer<::bgfx::d3d12::StagingBufferD3D12, uint64, void*, ::bgfx::d3d12::RingBufferAllocator<2>>>>
177 m_uploadBuffer;
178 ::ll::TypedStorage<8, 56, ::bgfx::d3d12::FenceSyncContext> m_sync;
179 ::ll::TypedStorage<4, 4, ::D3D_FEATURE_LEVEL> m_featureLevel;
180 ::ll::TypedStorage<4, 4, ::D3D_SHADER_MODEL> m_shaderModel;
181 ::ll::TypedStorage<4, 4, ::D3D_DRIVER_TYPE> m_driverType;
182 ::ll::TypedStorage<4, 16, ::D3D12_FEATURE_DATA_ARCHITECTURE> m_architecture;
183 ::ll::TypedStorage<4, 60, ::D3D12_FEATURE_DATA_D3D12_OPTIONS> m_options;
184 ::ll::TypedStorage<8, 8, void*> m_swapchainWaitableObject;
185 ::ll::TypedStorage<8, 8, ::IDXGISwapChain3*> m_swapChain;
186 ::ll::TypedStorage<8, 8, ::ID3D12Resource*> m_msaaRenderTarget;
187 ::ll::TypedStorage<8, 8, int64> m_presentElapsed;
188 ::ll::TypedStorage<2, 2, ushort> m_numWindows;
189 ::ll::TypedStorage<2, 256, ::bgfx::FrameBufferHandle[128]> m_windows;
190 ::ll::TypedStorage<8, 8, ::ID3D12Device*> m_device;
191 ::ll::TypedStorage<8, 8, ::ID3D12Device5*> m_device5;
192 ::ll::TypedStorage<8, 30880, ::bgfx::d3d12::TimerQueryD3D12> m_gpuTimer;
193 ::ll::TypedStorage<8, 552, ::bgfx::d3d12::OcclusionQueryD3D12> m_occlusionQuery;
194 ::ll::TypedStorage<8, 73768, ::bgfx::ViewProfilerManager<::bgfx::d3d12::TimerQueryD3D12>> m_profiler;
195 ::ll::TypedStorage<1, 1, ::bgfx::ProfilerEvents> m_profilerEvents;
196 ::ll::TypedStorage<8, 56, ::bgfx::d3d12::BufferHeap* [7]> m_bufferHeaps;
197 ::ll::TypedStorage<8, 24, ::ID3D12CommandSignature* [3]> m_commandSignature;
198 ::ll::TypedStorage<8, 8, ::bgfx::d3d12::CommandList*> m_globalCommands;
199 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::bgfx::d3d12::CommandContextD3D12>>> m_commandContext;
200 ::ll::TypedStorage<4, 12, ::bgfx::Resolution> m_resolution;
201 ::ll::TypedStorage<1, 1, bool> m_wireframe;
202 ::ll::TypedStorage<1, 1, bool> m_fatal;
203 ::ll::TypedStorage<4, 8, ::bgfx::FatalError> m_fatalError;
204 ::ll::TypedStorage<8, 72, ::bgfx::SwapChainDesc> m_scd;
205 ::ll::TypedStorage<4, 4, uint> m_maxAnisotropy;
206 ::ll::TypedStorage<1, 1, bool> m_depthClamp;
207 ::ll::TypedStorage<1, 1, bool> m_flipped;
208 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::TlasBuildRequest>> m_tlasBuildRequests;
209 ::ll::TypedStorage<1, 1, bool> m_tlasValid;
210 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::BlasBuildRequest>> m_blasBuildRequests;
211 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::BlasCompactionRequest>>
212 m_blasCompactionRequests;
213 ::ll::TypedStorage<8, 3932160, ::bgfx::d3d12::BufferD3D12[32768]> m_compactedAsBuffers;
214 ::ll::TypedStorage<8, 120, ::bgfx::d3d12::BufferD3D12> m_asBuffersCompactionSizes;
215 ::ll::TypedStorage<8, 24, ::std::vector<::ID3D12Resource*>> m_asBuffersCompactionSizesReadback;
216 ::ll::TypedStorage<8, 24, ::std::vector<uint>> m_asCompactionCountList;
217 ::ll::TypedStorage<1, 1, bool> m_asCompactionCountListAvailable;
218 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::BufferD3D12>> m_freeASBuffers;
219 ::ll::TypedStorage<
220 8,
221 8,
222 ::std::unique_ptr<
223 ::bgfx::
224 RingBuffer<::bgfx::d3d12::StagingBufferD3D12, uint64, void*, ::bgfx::d3d12::RingBufferAllocator<0>>>>
225 m_asScratchBuffer;
226 ::ll::TypedStorage<4, 1703936, ::bgfx::d3d12::RendererContextD3D12::BLASGeometryInfo[32768]> m_blasGeometryInfo;
227 ::ll::TypedStorage<8, 120, ::bgfx::d3d12::BufferD3D12> m_blasQuadIndexBuffer;
228 ::ll::TypedStorage<8, 3932160, ::bgfx::d3d12::BufferD3D12[32768]> m_asBuffers;
229 ::ll::TypedStorage<8, 491520, ::bgfx::d3d12::BufferD3D12[4096]> m_indexBuffers;
230 ::ll::TypedStorage<8, 524288, ::bgfx::d3d12::VertexBufferD3D12[4096]> m_vertexBuffers;
231 ::ll::TypedStorage<8, 491520, ::bgfx::d3d12::BufferD3D12[4096]> m_shaderBuffers;
232 ::ll::TypedStorage<8, 753664, ::bgfx::d3d12::ShaderD3D12[4096]> m_shaders;
233 ::ll::TypedStorage<8, 507904, ::bgfx::d3d12::ProgramD3D12[2048]> m_program;
234 ::ll::TypedStorage<8, 753696, ::bgfx::GuardedPagedHeapBackedArray<::bgfx::d3d12::TextureD3D12, 4096>> m_textures;
235 ::ll::TypedStorage<4, 5376, ::bgfx::VertexDecl[64]> m_vertexDecls;
236 ::ll::TypedStorage<8, 13312, ::bgfx::d3d12::FrameBufferD3D12[128]> m_frameBuffers;
237 ::ll::TypedStorage<4, 7176, ::bgfx::UniformRegistry> m_uniformReg;
238 ::ll::TypedStorage<8, 16, ::std::map<uint, ::bgfx::d3d12::RendererContextD3D12::PresentTimings>> m_presentTimings;
239 ::ll::TypedStorage<8, 8, ::bgfx::d3d12::RendererContextD3D12::PresentTimings*> m_completedTiming;
240 ::ll::TypedStorage<8, 24, ::bgfx::TextVideoMem> m_textVideoMem;
241 ::ll::TypedStorage<4, 4, uint> m_backBufferColorIdx;
242 ::ll::TypedStorage<1, 1, bool> m_directAccessSupport;
243 ::ll::TypedStorage<8, 183184, ::bgfx::d3d12::ResourceStatesMananger> m_states;
244 ::ll::TypedStorage<8, 49860952, ::bgfx::d3d12::CommandQueueD3D12> m_cmd;
245 ::ll::TypedStorage<8, 80, ::std::mutex> m_cmdCreateMtx;
246 // NOLINTEND
247
248public:
249 // virtual functions
250 // NOLINTBEGIN
251 virtual ~RendererContextD3D12() /*override*/;
252
253 virtual bool init(::bgfx::Init const& _init);
254
255 virtual void shutdown();
256
257 virtual ::bgfx::RendererType::Enum getRendererType() const /*override*/;
258
259 virtual uint64 getRendererVersion() const /*override*/;
260
261 virtual uint64 getShaderVersion() const /*override*/;
262
263 virtual char const* getRendererName() const /*override*/;
264
265 virtual bool isDeviceRemoved() /*override*/;
266
267 virtual void suspend() /*override*/;
268
269 virtual void resume() /*override*/;
270
271 virtual void advanceToNextFrame() /*override*/;
272
273 virtual void flip() /*override*/;
274
275 virtual void waitForFlipQueue() /*override*/;
276
277 virtual void
278 createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags) /*override*/;
279
280 virtual void destroyIndexBuffer(::bgfx::IndexBufferHandle _handle) /*override*/;
281
282 virtual void createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl) /*override*/;
283
284 virtual void destroyVertexDecl(::bgfx::VertexDeclHandle) /*override*/;
285
286 virtual void createVertexBuffer(
287 ::bgfx::VertexBufferHandle _handle,
288 ::bgfx::Memory const* _mem,
289 ::bgfx::VertexDeclHandle _declHandle,
290 ushort _flags
291 ) /*override*/;
292
293 virtual void destroyVertexBuffer(::bgfx::VertexBufferHandle _handle) /*override*/;
294
295 virtual void createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags) /*override*/;
296
297 virtual void updateDynamicIndexBuffer(
298 ::bgfx::IndexBufferHandle _handle,
299 uint _offset,
300 uint _size,
301 ::bgfx::Memory const* _mem
302 ) /*override*/;
303
304 virtual void destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle) /*override*/;
305
306 virtual void createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags) /*override*/;
307
308 virtual void updateDynamicVertexBuffer(
309 ::bgfx::VertexBufferHandle _handle,
310 uint _offset,
311 uint _size,
312 ::bgfx::Memory const* _mem
313 ) /*override*/;
314
315 virtual void destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle) /*override*/;
316
317 virtual void createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem) /*override*/;
318
319 virtual void destroyShader(::bgfx::ShaderHandle _handle) /*override*/;
320
321 virtual void
322 createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh) /*override*/;
323
324 virtual void destroyProgram(::bgfx::ProgramHandle _handle) /*override*/;
325
326 virtual void* createTexture(
327 ::bgfx::TextureHandle _handle,
328 ::bgfx::Memory const* _mem,
329 uint _flags,
330 uchar _skip,
331 ::bgfx::Memory const** _imageContainerData
332 ) /*override*/;
333
334 virtual void updateTextureBegin(::bgfx::TextureHandle, uchar, uchar) /*override*/;
335
336 virtual void updateTexture(
337 ::bgfx::TextureHandle _handle,
338 uchar _side,
339 uchar _mip,
340 ::bgfx::Rect const& _rect,
341 ushort _z,
342 ushort _depth,
343 ushort _pitch,
344 ::bgfx::Memory const* _mem
345 ) /*override*/;
346
347 virtual void updateTextureEnd() /*override*/;
348
349 virtual void readTexture(::bgfx::TextureHandle _handle, void* _data, uchar _mip) /*override*/;
350
351 virtual void resizeTexture(
352 ::bgfx::TextureHandle _handle,
353 ushort _width,
354 ushort _height,
355 uchar _numMips,
356 ushort _numLayers
357 ) /*override*/;
358
359 virtual void wrapExternalTexture(
360 ::bgfx::TextureHandle _handle,
361 ::bgfx::RendererType::Enum _type,
362 void* _texturePtr,
363 void* _deferredRef
364 ) /*override*/;
365
366 virtual void overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint _flags) /*override*/;
367
368 virtual uint64 getInternal(::bgfx::TextureHandle _handle) /*override*/;
369
370 virtual void destroyTexture(::bgfx::TextureHandle _handle) /*override*/;
371
372 virtual void
373 createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags) /*override*/;
374
375 virtual void
376 updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem) /*override*/;
377
378 virtual void destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle) /*override*/;
379
380 virtual void createBottomLevelAccelerationStructure(
381 ::bgfx::AccelerationStructureHandle _handle,
382 ::bgfx::VertexBufferHandle _vertexBufferHandle,
383 ::bgfx::VertexDeclHandle _vertexDeclHandle,
384 uint _vertexCount,
385 uint _vertexOffsetBytes,
386 ::bgfx::IndexBufferHandle _indexBufferHandle,
387 uint _indexCount,
388 uint _indexOffsetBytes,
389 ushort _indexSize,
390 ::bgfx::AccelerationStructureBuildFlags::Enum _flags
391 ) /*override*/;
392
393 virtual void destroyAccelerationStructureBuffer(::bgfx::AccelerationStructureHandle _handle) /*override*/;
394
395 virtual void createTopLevelAccelerationStructure(
396 ::bgfx::AccelerationStructureHandle _handle,
397 uint _numInstances,
398 ::bgfx::TopLevelInstanceDesc* _instanceDescs
399 ) /*override*/;
400
401 virtual void createFrameBuffer(
402 ::bgfx::FrameBufferHandle _handle,
403 uchar _num,
404 ::bgfx::Attachment const* _attachment
405 ) /*override*/;
406
407 virtual void createFrameBuffer(
408 ::bgfx::FrameBufferHandle _handle,
409 void* _nwh,
410 uint _width,
411 uint _height,
412 ::bgfx::TextureFormat::Enum _depthFormat
413 ) /*override*/;
414
415 virtual void destroyFrameBuffer(::bgfx::FrameBufferHandle _handle) /*override*/;
416
417 virtual void createUniform(
418 ::bgfx::UniformHandle _handle,
419 ::bgfx::UniformType::Enum _type,
420 ushort _num,
421 char const* _name
422 ) /*override*/;
423
424 virtual void destroyUniform(::bgfx::UniformHandle _handle) /*override*/;
425
426 virtual void requestScreenShot(::bgfx::FrameBufferHandle _handle, char const* _filePath) /*override*/;
427
428 virtual void updateViewName(ushort _id, char const* _name) /*override*/;
429
430 virtual void updateUniform(void* _uniformsTarget, ushort _loc, void const* _data, uint _size) /*override*/;
431
432 virtual void setMarker(void*, char const* _marker, uint) /*override*/;
433
434 virtual void invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle) /*override*/;
435
436 virtual void setName(::bgfx::Handle _handle, char const* _name) /*override*/;
437
438 virtual void submit(
439 ::bgfx::Frame* _render,
440 ::bgfx::ClearQuad& _clearQuad,
441 ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter
442 ) /*override*/;
443
444 virtual void blitSetup(::bgfx::TextVideoMemBlitter& _blitter) /*override*/;
445
446 virtual void blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices) /*override*/;
447
448 virtual bool updateResolution(::bgfx::Resolution const& _resolution);
449
450 virtual void kick(bool _alloc);
451
452 virtual void finish();
453
454 virtual void doPreBlasSkinning(::bgfx::d3d12::CommandListD3D12& bgfxCommandList);
455
456 virtual void rayTrace(
457 ::bgfx::d3d12::CommandListD3D12& bgfxCommandList,
458 ::bgfx::RayTracingConfiguration const& rtConfig,
459 ::bgfx::RayTracingResources const& rtResources,
460 ::bgfx::RenderBind const& renderBind,
461 ::bgfx::Matrix4 const& viewMat,
462 ::bgfx::Matrix4 const& projMat
463 );
464 // NOLINTEND
465
466public:
467 // member functions
468 // NOLINTBEGIN
469 MCAPI RendererContextD3D12();
470
471 MCAPI ::bgfx::d3d12::ResourceCreate allocateResource(
472 wchar_t const* _name,
473 ::bgfx::d3d12::HeapProperty::Enum _heapProperty,
474 uint64 _size,
475 ::D3D12_RESOURCE_STATES _initialState,
476 ::D3D12_RESOURCE_FLAGS _flags
477 );
478
479 MCAPI ::D3D12_CPU_DESCRIPTOR_HANDLE getRtv(::bgfx::FrameBufferHandle _fbh);
480
481 MCAPI void postReset(bool _swapChainReset);
482
483 MCAPI void preReset(bool _swapChainReset);
484
485 MCAPI void updateMsaa(::DXGI_FORMAT _format);
486 // NOLINTEND
487
488public:
489 // constructor thunks
490 // NOLINTBEGIN
491 MCAPI void* $ctor();
492 // NOLINTEND
493
494public:
495 // destructor thunk
496 // NOLINTBEGIN
497 MCAPI void $dtor();
498 // NOLINTEND
499
500public:
501 // virtual function thunks
502 // NOLINTBEGIN
503 MCAPI bool $init(::bgfx::Init const& _init);
504
505 MCAPI void $shutdown();
506
507 MCFOLD ::bgfx::RendererType::Enum $getRendererType() const;
508
509 MCAPI uint64 $getRendererVersion() const;
510
511 MCAPI uint64 $getShaderVersion() const;
512
513 MCAPI char const* $getRendererName() const;
514
515 MCAPI bool $isDeviceRemoved();
516
517 MCAPI void $suspend();
518
519 MCFOLD void $resume();
520
521 MCAPI void $advanceToNextFrame();
522
523 MCAPI void $flip();
524
525 MCFOLD void $waitForFlipQueue();
526
527 MCAPI void $createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags);
528
529 MCFOLD void $destroyIndexBuffer(::bgfx::IndexBufferHandle _handle);
530
531 MCAPI void $createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl);
532
533 MCFOLD void $destroyVertexDecl(::bgfx::VertexDeclHandle);
534
535 MCAPI void $createVertexBuffer(
536 ::bgfx::VertexBufferHandle _handle,
537 ::bgfx::Memory const* _mem,
538 ::bgfx::VertexDeclHandle _declHandle,
539 ushort _flags
540 );
541
542 MCFOLD void $destroyVertexBuffer(::bgfx::VertexBufferHandle _handle);
543
544 MCAPI void $createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags);
545
546 MCAPI void
547 $updateDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _offset, uint _size, ::bgfx::Memory const* _mem);
548
549 MCFOLD void $destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle);
550
551 MCAPI void $createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags);
552
553 MCAPI void $updateDynamicVertexBuffer(
554 ::bgfx::VertexBufferHandle _handle,
555 uint _offset,
556 uint _size,
557 ::bgfx::Memory const* _mem
558 );
559
560 MCFOLD void $destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle);
561
562 MCAPI void $createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem);
563
564 MCAPI void $destroyShader(::bgfx::ShaderHandle _handle);
565
566 MCAPI void $createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh);
567
568 MCAPI void $destroyProgram(::bgfx::ProgramHandle _handle);
569
570 MCAPI void* $createTexture(
571 ::bgfx::TextureHandle _handle,
572 ::bgfx::Memory const* _mem,
573 uint _flags,
574 uchar _skip,
575 ::bgfx::Memory const** _imageContainerData
576 );
577
578 MCFOLD void $updateTextureBegin(::bgfx::TextureHandle, uchar, uchar);
579
580 MCAPI void $updateTexture(
581 ::bgfx::TextureHandle _handle,
582 uchar _side,
583 uchar _mip,
584 ::bgfx::Rect const& _rect,
585 ushort _z,
586 ushort _depth,
587 ushort _pitch,
588 ::bgfx::Memory const* _mem
589 );
590
591 MCFOLD void $updateTextureEnd();
592
593 MCAPI void $readTexture(::bgfx::TextureHandle _handle, void* _data, uchar _mip);
594
595 MCAPI void
596 $resizeTexture(::bgfx::TextureHandle _handle, ushort _width, ushort _height, uchar _numMips, ushort _numLayers);
597
598 MCAPI void $wrapExternalTexture(
599 ::bgfx::TextureHandle _handle,
600 ::bgfx::RendererType::Enum _type,
601 void* _texturePtr,
602 void* _deferredRef
603 );
604
605 MCAPI void $overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint _flags);
606
607 MCAPI uint64 $getInternal(::bgfx::TextureHandle _handle);
608
609 MCAPI void $destroyTexture(::bgfx::TextureHandle _handle);
610
611 MCAPI void $createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags);
612
613 MCAPI void $updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem);
614
615 MCAPI void $destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle);
616
617 MCAPI void $createBottomLevelAccelerationStructure(
618 ::bgfx::AccelerationStructureHandle _handle,
619 ::bgfx::VertexBufferHandle _vertexBufferHandle,
620 ::bgfx::VertexDeclHandle _vertexDeclHandle,
621 uint _vertexCount,
622 uint _vertexOffsetBytes,
623 ::bgfx::IndexBufferHandle _indexBufferHandle,
624 uint _indexCount,
625 uint _indexOffsetBytes,
626 ushort _indexSize,
627 ::bgfx::AccelerationStructureBuildFlags::Enum _flags
628 );
629
630 MCAPI void $destroyAccelerationStructureBuffer(::bgfx::AccelerationStructureHandle _handle);
631
632 MCAPI void $createTopLevelAccelerationStructure(
633 ::bgfx::AccelerationStructureHandle _handle,
634 uint _numInstances,
635 ::bgfx::TopLevelInstanceDesc* _instanceDescs
636 );
637
638 MCAPI void $createFrameBuffer(::bgfx::FrameBufferHandle _handle, uchar _num, ::bgfx::Attachment const* _attachment);
639
640 MCAPI void $createFrameBuffer(
641 ::bgfx::FrameBufferHandle _handle,
642 void* _nwh,
643 uint _width,
644 uint _height,
645 ::bgfx::TextureFormat::Enum _depthFormat
646 );
647
648 MCAPI void $destroyFrameBuffer(::bgfx::FrameBufferHandle _handle);
649
650 MCAPI void
651 $createUniform(::bgfx::UniformHandle _handle, ::bgfx::UniformType::Enum _type, ushort _num, char const* _name);
652
653 MCAPI void $destroyUniform(::bgfx::UniformHandle _handle);
654
655 MCAPI void $requestScreenShot(::bgfx::FrameBufferHandle _handle, char const* _filePath);
656
657 MCAPI void $updateViewName(ushort _id, char const* _name);
658
659 MCAPI void $updateUniform(void* _uniformsTarget, ushort _loc, void const* _data, uint _size);
660
661 MCFOLD void $setMarker(void*, char const* _marker, uint);
662
663 MCAPI void $invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle);
664
665 MCAPI void $setName(::bgfx::Handle _handle, char const* _name);
666
667 MCAPI void
668 $submit(::bgfx::Frame* _render, ::bgfx::ClearQuad& _clearQuad, ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter);
669
670 MCAPI void $blitSetup(::bgfx::TextVideoMemBlitter& _blitter);
671
672 MCAPI void $blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices);
673
674 MCAPI bool $updateResolution(::bgfx::Resolution const& _resolution);
675
676 MCAPI void $kick(bool _alloc);
677
678 MCAPI void $finish();
679
680 MCFOLD void $doPreBlasSkinning(::bgfx::d3d12::CommandListD3D12& bgfxCommandList);
681
682 MCFOLD void $rayTrace(
683 ::bgfx::d3d12::CommandListD3D12& bgfxCommandList,
684 ::bgfx::RayTracingConfiguration const& rtConfig,
685 ::bgfx::RayTracingResources const& rtResources,
686 ::bgfx::RenderBind const& renderBind,
687 ::bgfx::Matrix4 const& viewMat,
688 ::bgfx::Matrix4 const& projMat
689 );
690 // NOLINTEND
691};
692
693} // namespace bgfx::d3d12
Definition BufferHeap.h:7
Definition StagingBufferD3D12.h:7
Definition Attachment.h:7
Definition ClearQuad.h:7
Definition Frame.h:7
Definition Handle.h:7
Definition Init.h:7
Definition Matrix4.h:7
Definition Memory.h:7
Definition OcclusionQueryHandle.h:7
Definition ProgramHandle.h:7
Definition RayTracingConfiguration.h:7
Definition RayTracingResources.h:7
Definition Rect.h:7
Definition RenderBind.h:7
Definition ShaderBufferHandle.h:7
Definition ShaderHandle.h:7
Definition TextVideoMemBlitter.h:7
Definition TextureHandle.h:7
Definition TopLevelInstanceDesc.h:7
Definition UniformHandle.h:7
Definition CommandContextD3D12.h:7
Definition CommandListD3D12.h:7
Definition CommandList.h:7
Definition RendererContextD3D12.h:25
Definition RendererContextD3D12.h:21
Definition RendererContextD3D12.h:27
Definition RendererContextD3D12.h:19
Definition RendererContextD3D12.h:7
Definition ResourceCreate.h:7
Definition TextureD3D12.h:7