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