Skip to content
LeviMC
English
AutoLightDark
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<4, 4, uint> m_numRecordingThreads;
188 ::ll::TypedStorage<8, 8, int64> m_presentElapsed;
189 ::ll::TypedStorage<2, 2, ushort> m_numWindows;
190 ::ll::TypedStorage<2, 256, ::bgfx::FrameBufferHandle[128]> m_windows;
191 ::ll::TypedStorage<8, 8, ::ID3D12Device*> m_device;
192 ::ll::TypedStorage<8, 8, ::ID3D12Device5*> m_device5;
193 ::ll::TypedStorage<8, 30880, ::bgfx::d3d12::TimerQueryD3D12> m_gpuTimer;
194 ::ll::TypedStorage<8, 552, ::bgfx::d3d12::OcclusionQueryD3D12> m_occlusionQuery;
195 ::ll::TypedStorage<8, 73768, ::bgfx::ViewProfilerManager<::bgfx::d3d12::TimerQueryD3D12>> m_profiler;
196 ::ll::TypedStorage<1, 1, ::bgfx::ProfilerEvents> m_profilerEvents;
197 ::ll::TypedStorage<8, 56, ::bgfx::d3d12::BufferHeap* [7]> m_bufferHeaps;
198 ::ll::TypedStorage<8, 24, ::ID3D12CommandSignature* [3]> m_commandSignature;
199 ::ll::TypedStorage<8, 8, ::bgfx::d3d12::CommandList*> m_globalCommands;
200 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::bgfx::d3d12::CommandContextD3D12>>> m_commandContext;
201 ::ll::TypedStorage<4, 12, ::bgfx::Resolution> m_resolution;
202 ::ll::TypedStorage<1, 1, bool> m_wireframe;
203 ::ll::TypedStorage<1, 1, bool> m_fatal;
204 ::ll::TypedStorage<4, 8, ::bgfx::FatalError> m_fatalError;
205 ::ll::TypedStorage<8, 72, ::bgfx::SwapChainDesc> m_scd;
206 ::ll::TypedStorage<4, 4, uint> m_maxAnisotropy;
207 ::ll::TypedStorage<1, 1, bool> m_depthClamp;
208 ::ll::TypedStorage<1, 1, bool> m_flipped;
209 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::TlasBuildRequest>> m_tlasBuildRequests;
210 ::ll::TypedStorage<1, 1, bool> m_tlasValid;
211 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::BlasBuildRequest>> m_blasBuildRequests;
212 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::RendererContextD3D12::BlasCompactionRequest>>
213 m_blasCompactionRequests;
214 ::ll::TypedStorage<8, 3932160, ::bgfx::d3d12::BufferD3D12[32768]> m_compactedAsBuffers;
215 ::ll::TypedStorage<8, 120, ::bgfx::d3d12::BufferD3D12> m_asBuffersCompactionSizes;
216 ::ll::TypedStorage<8, 24, ::std::vector<::ID3D12Resource*>> m_asBuffersCompactionSizesReadback;
217 ::ll::TypedStorage<8, 24, ::std::vector<uint>> m_asCompactionCountList;
218 ::ll::TypedStorage<1, 1, bool> m_asCompactionCountListAvailable;
219 ::ll::TypedStorage<8, 24, ::std::vector<::bgfx::d3d12::BufferD3D12>> m_freeASBuffers;
220 ::ll::TypedStorage<
221 8,
222 8,
223 ::std::unique_ptr<
224 ::bgfx::
225 RingBuffer<::bgfx::d3d12::StagingBufferD3D12, uint64, void*, ::bgfx::d3d12::RingBufferAllocator<0>>>>
226 m_asScratchBuffer;
227 ::ll::TypedStorage<4, 1703936, ::bgfx::d3d12::RendererContextD3D12::BLASGeometryInfo[32768]> m_blasGeometryInfo;
228 ::ll::TypedStorage<8, 120, ::bgfx::d3d12::BufferD3D12> m_blasQuadIndexBuffer;
229 ::ll::TypedStorage<8, 3932160, ::bgfx::d3d12::BufferD3D12[32768]> m_asBuffers;
230 ::ll::TypedStorage<8, 491520, ::bgfx::d3d12::BufferD3D12[4096]> m_indexBuffers;
231 ::ll::TypedStorage<8, 524288, ::bgfx::d3d12::VertexBufferD3D12[4096]> m_vertexBuffers;
232 ::ll::TypedStorage<8, 491520, ::bgfx::d3d12::BufferD3D12[4096]> m_shaderBuffers;
233 ::ll::TypedStorage<8, 753664, ::bgfx::d3d12::ShaderD3D12[4096]> m_shaders;
234 ::ll::TypedStorage<8, 507904, ::bgfx::d3d12::ProgramD3D12[2048]> m_program;
235 ::ll::TypedStorage<8, 753696, ::bgfx::GuardedPagedHeapBackedArray<::bgfx::d3d12::TextureD3D12, 4096>> m_textures;
236 ::ll::TypedStorage<4, 5376, ::bgfx::VertexDecl[64]> m_vertexDecls;
237 ::ll::TypedStorage<8, 13312, ::bgfx::d3d12::FrameBufferD3D12[128]> m_frameBuffers;
238 ::ll::TypedStorage<4, 7176, ::bgfx::UniformRegistry> m_uniformReg;
239 ::ll::TypedStorage<8, 16, ::std::map<uint, ::bgfx::d3d12::RendererContextD3D12::PresentTimings>> m_presentTimings;
240 ::ll::TypedStorage<8, 8, ::bgfx::d3d12::RendererContextD3D12::PresentTimings*> m_completedTiming;
241 ::ll::TypedStorage<8, 24, ::bgfx::TextVideoMem> m_textVideoMem;
242 ::ll::TypedStorage<4, 4, uint> m_backBufferColorIdx;
243 ::ll::TypedStorage<1, 1, bool> m_directAccessSupport;
244 ::ll::TypedStorage<8, 183184, ::bgfx::d3d12::ResourceStatesMananger> m_states;
245 ::ll::TypedStorage<8, 49860952, ::bgfx::d3d12::CommandQueueD3D12> m_cmd;
246 ::ll::TypedStorage<8, 80, ::std::mutex> m_cmdCreateMtx;
247 // NOLINTEND
248
249public:
250 // virtual functions
251 // NOLINTBEGIN
252 virtual ~RendererContextD3D12() /*override*/;
253
254 virtual bool init(::bgfx::Init const& _init);
255
256 virtual void shutdown();
257
258 virtual ::bgfx::RendererType::Enum getRendererType() const /*override*/;
259
260 virtual uint64 getRendererVersion() const /*override*/;
261
262 virtual uint64 getShaderVersion() const /*override*/;
263
264 virtual char const* getRendererName() const /*override*/;
265
266 virtual bool isDeviceRemoved() /*override*/;
267
268 virtual void suspend() /*override*/;
269
270 virtual void resume() /*override*/;
271
272 virtual void advanceToNextFrame() /*override*/;
273
274 virtual void flip() /*override*/;
275
276 virtual void waitForFlipQueue() /*override*/;
277
278 virtual void
279 createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags) /*override*/;
280
281 virtual void destroyIndexBuffer(::bgfx::IndexBufferHandle _handle) /*override*/;
282
283 virtual void createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl) /*override*/;
284
285 virtual void destroyVertexDecl(::bgfx::VertexDeclHandle) /*override*/;
286
287 virtual void createVertexBuffer(
288 ::bgfx::VertexBufferHandle _handle,
289 ::bgfx::Memory const* _mem,
290 ::bgfx::VertexDeclHandle _declHandle,
291 ushort _flags
292 ) /*override*/;
293
294 virtual void destroyVertexBuffer(::bgfx::VertexBufferHandle _handle) /*override*/;
295
296 virtual void createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags) /*override*/;
297
298 virtual void updateDynamicIndexBuffer(
299 ::bgfx::IndexBufferHandle _handle,
300 uint _offset,
301 uint _size,
302 ::bgfx::Memory const* _mem
303 ) /*override*/;
304
305 virtual void destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle) /*override*/;
306
307 virtual void createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags) /*override*/;
308
309 virtual void updateDynamicVertexBuffer(
310 ::bgfx::VertexBufferHandle _handle,
311 uint _offset,
312 uint _size,
313 ::bgfx::Memory const* _mem
314 ) /*override*/;
315
316 virtual void destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle) /*override*/;
317
318 virtual void createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem) /*override*/;
319
320 virtual void destroyShader(::bgfx::ShaderHandle _handle) /*override*/;
321
322 virtual void
323 createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh) /*override*/;
324
325 virtual void destroyProgram(::bgfx::ProgramHandle _handle) /*override*/;
326
327 virtual void* createTexture(
328 ::bgfx::TextureHandle _handle,
329 ::bgfx::Memory const* _mem,
330 uint _flags,
331 uchar _skip,
332 ::bgfx::Memory const** _imageContainerData
333 ) /*override*/;
334
335 virtual void updateTextureBegin(::bgfx::TextureHandle, uchar, uchar) /*override*/;
336
337 virtual void updateTexture(
338 ::bgfx::TextureHandle _handle,
339 uchar _side,
340 uchar _mip,
341 ::bgfx::Rect const& _rect,
342 ushort _z,
343 ushort _depth,
344 ushort _pitch,
345 ::bgfx::Memory const* _mem
346 ) /*override*/;
347
348 virtual void updateTextureEnd() /*override*/;
349
350 virtual void readTexture(::bgfx::TextureHandle _handle, void* _data, uchar _mip) /*override*/;
351
352 virtual void resizeTexture(
353 ::bgfx::TextureHandle _handle,
354 ushort _width,
355 ushort _height,
356 uchar _numMips,
357 ushort _numLayers
358 ) /*override*/;
359
360 virtual void wrapExternalTexture(
361 ::bgfx::TextureHandle _handle,
362 ::bgfx::RendererType::Enum _type,
363 void* _texturePtr,
364 void* _deferredRef
365 ) /*override*/;
366
367 virtual void overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint _flags) /*override*/;
368
369 virtual uint64 getInternal(::bgfx::TextureHandle _handle) /*override*/;
370
371 virtual void destroyTexture(::bgfx::TextureHandle _handle) /*override*/;
372
373 virtual void
374 createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags) /*override*/;
375
376 virtual void
377 updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem) /*override*/;
378
379 virtual void destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle) /*override*/;
380
381 virtual void createBottomLevelAccelerationStructure(
382 ::bgfx::AccelerationStructureHandle _handle,
383 ::bgfx::VertexBufferHandle _vertexBufferHandle,
384 ::bgfx::VertexDeclHandle _vertexDeclHandle,
385 uint _vertexCount,
386 uint _vertexOffsetBytes,
387 ::bgfx::IndexBufferHandle _indexBufferHandle,
388 uint _indexCount,
389 uint _indexOffsetBytes,
390 ushort _indexSize,
391 ::bgfx::AccelerationStructureBuildFlags::Enum _flags
392 ) /*override*/;
393
394 virtual void destroyAccelerationStructureBuffer(::bgfx::AccelerationStructureHandle _handle) /*override*/;
395
396 virtual void createTopLevelAccelerationStructure(
397 ::bgfx::AccelerationStructureHandle _handle,
398 uint _numInstances,
399 ::bgfx::TopLevelInstanceDesc* _instanceDescs
400 ) /*override*/;
401
402 virtual void createFrameBuffer(
403 ::bgfx::FrameBufferHandle _handle,
404 uchar _num,
405 ::bgfx::Attachment const* _attachment
406 ) /*override*/;
407
408 virtual void createFrameBuffer(
409 ::bgfx::FrameBufferHandle _handle,
410 void* _nwh,
411 uint _width,
412 uint _height,
413 ::bgfx::TextureFormat::Enum _depthFormat
414 ) /*override*/;
415
416 virtual void destroyFrameBuffer(::bgfx::FrameBufferHandle _handle) /*override*/;
417
418 virtual void createUniform(
419 ::bgfx::UniformHandle _handle,
420 ::bgfx::UniformType::Enum _type,
421 ushort _num,
422 char const* _name
423 ) /*override*/;
424
425 virtual void destroyUniform(::bgfx::UniformHandle _handle) /*override*/;
426
427 virtual void requestScreenShot(::bgfx::FrameBufferHandle _handle, char const* _filePath) /*override*/;
428
429 virtual void updateViewName(ushort _id, char const* _name) /*override*/;
430
431 virtual void updateUniform(void* _uniformsTarget, ushort _loc, void const* _data, uint _size) /*override*/;
432
433 virtual void setMarker(void*, char const* _marker, uint) /*override*/;
434
435 virtual void invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle) /*override*/;
436
437 virtual void setName(::bgfx::Handle _handle, char const* _name) /*override*/;
438
439 virtual void submit(
440 ::bgfx::Frame* _render,
441 ::bgfx::ClearQuad& _clearQuad,
442 ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter
443 ) /*override*/;
444
445 virtual void blitSetup(::bgfx::TextVideoMemBlitter& _blitter) /*override*/;
446
447 virtual void blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices) /*override*/;
448
449 virtual bool updateResolution(::bgfx::Resolution const& _resolution);
450
451 virtual void kick(bool _alloc);
452
453 virtual void finish();
454
455 virtual void doPreBlasSkinning(::bgfx::d3d12::CommandListD3D12& bgfxCommandList);
456
457 virtual void rayTrace(
458 ::bgfx::d3d12::CommandListD3D12& bgfxCommandList,
459 ::bgfx::RayTracingConfiguration const& rtConfig,
460 ::bgfx::RayTracingResources const& rtResources,
461 ::bgfx::RenderBind const& renderBind,
462 ::bgfx::Matrix4 const& viewMat,
463 ::bgfx::Matrix4 const& projMat
464 );
465 // NOLINTEND
466
467public:
468 // member functions
469 // NOLINTBEGIN
471
472 MCNAPI ::bgfx::d3d12::ResourceCreate allocateResource(
473 wchar_t const* _name,
474 ::bgfx::d3d12::HeapProperty::Enum _heapProperty,
475 uint64 _size,
476 ::D3D12_RESOURCE_STATES _initialState,
477 ::D3D12_RESOURCE_FLAGS _flags
478 );
479
480 MCNAPI ::D3D12_CPU_DESCRIPTOR_HANDLE getRtv(::bgfx::FrameBufferHandle _fbh);
481
482 MCAPI void postReset(bool _swapChainReset);
483
484 MCAPI void preReset(bool _swapChainReset);
485
486 MCNAPI void updateMsaa(::DXGI_FORMAT _format);
487 // NOLINTEND
488
489public:
490 // constructor thunks
491 // NOLINTBEGIN
492 MCNAPI void* $ctor();
493 // NOLINTEND
494
495public:
496 // destructor thunk
497 // NOLINTBEGIN
498 MCNAPI void $dtor();
499 // NOLINTEND
500
501public:
502 // virtual function thunks
503 // NOLINTBEGIN
504 MCAPI bool $init(::bgfx::Init const& _init);
505
506 MCAPI void $shutdown();
507
508 MCNAPI ::bgfx::RendererType::Enum $getRendererType() const;
509
510 MCNAPI uint64 $getRendererVersion() const;
511
512 MCNAPI uint64 $getShaderVersion() const;
513
514 MCNAPI char const* $getRendererName() const;
515
516 MCNAPI bool $isDeviceRemoved();
517
518 MCNAPI void $suspend();
519
520 MCNAPI void $resume();
521
522 MCNAPI void $advanceToNextFrame();
523
524 MCNAPI void $flip();
525
526 MCNAPI void $waitForFlipQueue();
527
528 MCNAPI void $createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags);
529
530 MCNAPI void $destroyIndexBuffer(::bgfx::IndexBufferHandle _handle);
531
532 MCNAPI void $createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl);
533
535
537 ::bgfx::VertexBufferHandle _handle,
538 ::bgfx::Memory const* _mem,
539 ::bgfx::VertexDeclHandle _declHandle,
540 ushort _flags
541 );
542
543 MCNAPI void $destroyVertexBuffer(::bgfx::VertexBufferHandle _handle);
544
545 MCNAPI void $createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags);
546
547 MCNAPI void
548 $updateDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _offset, uint _size, ::bgfx::Memory const* _mem);
549
550 MCNAPI void $destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle);
551
552 MCNAPI void $createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags);
553
555 ::bgfx::VertexBufferHandle _handle,
556 uint _offset,
557 uint _size,
558 ::bgfx::Memory const* _mem
559 );
560
562
563 MCNAPI void $createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem);
564
565 MCNAPI void $destroyShader(::bgfx::ShaderHandle _handle);
566
567 MCNAPI void $createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh);
568
569 MCNAPI void $destroyProgram(::bgfx::ProgramHandle _handle);
570
571 MCNAPI void* $createTexture(
572 ::bgfx::TextureHandle _handle,
573 ::bgfx::Memory const* _mem,
574 uint _flags,
575 uchar _skip,
576 ::bgfx::Memory const** _imageContainerData
577 );
578
579 MCNAPI void $updateTextureBegin(::bgfx::TextureHandle, uchar, uchar);
580
581 MCNAPI void $updateTexture(
582 ::bgfx::TextureHandle _handle,
583 uchar _side,
584 uchar _mip,
585 ::bgfx::Rect const& _rect,
586 ushort _z,
587 ushort _depth,
588 ushort _pitch,
589 ::bgfx::Memory const* _mem
590 );
591
592 MCNAPI void $updateTextureEnd();
593
594 MCNAPI void $readTexture(::bgfx::TextureHandle _handle, void* _data, uchar _mip);
595
596 MCNAPI void
597 $resizeTexture(::bgfx::TextureHandle _handle, ushort _width, ushort _height, uchar _numMips, ushort _numLayers);
598
600 ::bgfx::TextureHandle _handle,
601 ::bgfx::RendererType::Enum _type,
602 void* _texturePtr,
603 void* _deferredRef
604 );
605
606 MCNAPI void $overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint _flags);
607
608 MCNAPI uint64 $getInternal(::bgfx::TextureHandle _handle);
609
610 MCNAPI void $destroyTexture(::bgfx::TextureHandle _handle);
611
612 MCNAPI void $createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags);
613
614 MCNAPI void $updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem);
615
616 MCNAPI void $destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle);
617
619 ::bgfx::AccelerationStructureHandle _handle,
620 ::bgfx::VertexBufferHandle _vertexBufferHandle,
621 ::bgfx::VertexDeclHandle _vertexDeclHandle,
622 uint _vertexCount,
623 uint _vertexOffsetBytes,
624 ::bgfx::IndexBufferHandle _indexBufferHandle,
625 uint _indexCount,
626 uint _indexOffsetBytes,
627 ushort _indexSize,
628 ::bgfx::AccelerationStructureBuildFlags::Enum _flags
629 );
630
632
634 ::bgfx::AccelerationStructureHandle _handle,
635 uint _numInstances,
636 ::bgfx::TopLevelInstanceDesc* _instanceDescs
637 );
638
639 MCNAPI void
640 $createFrameBuffer(::bgfx::FrameBufferHandle _handle, uchar _num, ::bgfx::Attachment const* _attachment);
641
643 ::bgfx::FrameBufferHandle _handle,
644 void* _nwh,
645 uint _width,
646 uint _height,
647 ::bgfx::TextureFormat::Enum _depthFormat
648 );
649
650 MCNAPI void $destroyFrameBuffer(::bgfx::FrameBufferHandle _handle);
651
652 MCNAPI void
653 $createUniform(::bgfx::UniformHandle _handle, ::bgfx::UniformType::Enum _type, ushort _num, char const* _name);
654
655 MCNAPI void $destroyUniform(::bgfx::UniformHandle _handle);
656
657 MCNAPI void $requestScreenShot(::bgfx::FrameBufferHandle _handle, char const* _filePath);
658
659 MCNAPI void $updateViewName(ushort _id, char const* _name);
660
661 MCNAPI void $updateUniform(void* _uniformsTarget, ushort _loc, void const* _data, uint _size);
662
663 MCNAPI void $setMarker(void*, char const* _marker, uint);
664
666
667 MCNAPI void $setName(::bgfx::Handle _handle, char const* _name);
668
669 MCAPI void
670 $submit(::bgfx::Frame* _render, ::bgfx::ClearQuad& _clearQuad, ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter);
671
672 MCNAPI void $blitSetup(::bgfx::TextVideoMemBlitter& _blitter);
673
674 MCNAPI void $blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices);
675
676 MCNAPI bool $updateResolution(::bgfx::Resolution const& _resolution);
677
678 MCNAPI void $kick(bool _alloc);
679
680 MCNAPI void $finish();
681
682 MCNAPI void $doPreBlasSkinning(::bgfx::d3d12::CommandListD3D12& bgfxCommandList);
683
684 MCNAPI void $rayTrace(
685 ::bgfx::d3d12::CommandListD3D12& bgfxCommandList,
686 ::bgfx::RayTracingConfiguration const& rtConfig,
687 ::bgfx::RayTracingResources const& rtResources,
688 ::bgfx::RenderBind const& renderBind,
689 ::bgfx::Matrix4 const& viewMat,
690 ::bgfx::Matrix4 const& projMat
691 );
692 // NOLINTEND
693};
694
695} // namespace bgfx::d3d12
Definition BufferHeap.h:7
Definition StagingBufferD3D12.h:7
Definition AccelerationStructureHandle.h:7
Definition Attachment.h:7
Definition ClearQuad.h:7
Definition FrameBufferHandle.h:7
Definition Frame.h:7
Definition Handle.h:7
Definition IndexBufferHandle.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 Resolution.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 VertexBufferHandle.h:7
Definition VertexDeclHandle.h:7
Definition VertexDecl.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
MCAPI void $destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle)
MCAPI void $destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle)
MCAPI void $updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const *_mem)
MCAPI void * $createTexture(::bgfx::TextureHandle _handle, ::bgfx::Memory const *_mem, uint _flags, uchar _skip, ::bgfx::Memory const **_imageContainerData)
MCAPI void $createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags)
MCAPI void $updateTextureBegin(::bgfx::TextureHandle, uchar, uchar)
MCAPI void $createVertexBuffer(::bgfx::VertexBufferHandle _handle, ::bgfx::Memory const *_mem, ::bgfx::VertexDeclHandle _declHandle, ushort _flags)
MCAPI void $setName(::bgfx::Handle _handle, char const *_name)
MCAPI void $setMarker(void *, char const *_marker, uint)
MCAPI uint64 $getInternal(::bgfx::TextureHandle _handle)
MCAPI void $createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags)
MCAPI void $readTexture(::bgfx::TextureHandle _handle, void *_data, uchar _mip)
MCAPI void $createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const *_mem, ushort _flags)
MCAPI void $destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle)
MCAPI void $updateUniform(void *_uniformsTarget, ushort _loc, void const *_data, uint _size)
MCAPI void $destroyVertexDecl(::bgfx::VertexDeclHandle)
MCAPI::bgfx::d3d12::ResourceCreate allocateResource(wchar_t const *_name, ::bgfx::d3d12::HeapProperty::Enum _heapProperty, uint64 _size, ::D3D12_RESOURCE_STATES _initialState, ::D3D12_RESOURCE_FLAGS _flags)
MCAPI uint64 $getShaderVersion() const
MCAPI void $createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const *_mem)
MCAPI void $wrapExternalTexture(::bgfx::TextureHandle _handle, ::bgfx::RendererType::Enum _type, void *_texturePtr, void *_deferredRef)
MCAPI void $updateDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _offset, uint _size, ::bgfx::Memory const *_mem)
MCAPI void $updateDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _offset, uint _size, ::bgfx::Memory const *_mem)
MCAPI void $createFrameBuffer(::bgfx::FrameBufferHandle _handle, uchar _num, ::bgfx::Attachment const *_attachment)
MCAPI void $destroyTexture(::bgfx::TextureHandle _handle)
MCAPI void $destroyIndexBuffer(::bgfx::IndexBufferHandle _handle)
MCAPI void $blitSetup(::bgfx::TextVideoMemBlitter &_blitter)
MCAPI::bgfx::RendererType::Enum $getRendererType() const
MCAPI::D3D12_CPU_DESCRIPTOR_HANDLE getRtv(::bgfx::FrameBufferHandle _fbh)
MCAPI void $createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags)
MCAPI void $updateViewName(ushort _id, char const *_name)
MCAPI void $destroyShader(::bgfx::ShaderHandle _handle)
MCAPI void $createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh)
MCAPI void $kick(bool _alloc)
MCAPI void $destroyUniform(::bgfx::UniformHandle _handle)
MCAPI void $updateTexture(::bgfx::TextureHandle _handle, uchar _side, uchar _mip, ::bgfx::Rect const &_rect, ushort _z, ushort _depth, ushort _pitch, ::bgfx::Memory const *_mem)
MCAPI char const * $getRendererName() const
MCAPI void $requestScreenShot(::bgfx::FrameBufferHandle _handle, char const *_filePath)
MCAPI void $blitRender(::bgfx::TextVideoMemBlitter &_blitter, uint _numIndices)
MCAPI void $destroyVertexBuffer(::bgfx::VertexBufferHandle _handle)
MCAPI void updateMsaa(::DXGI_FORMAT _format)
MCAPI void $createUniform(::bgfx::UniformHandle _handle, ::bgfx::UniformType::Enum _type, ushort _num, char const *_name)
MCAPI void $destroyProgram(::bgfx::ProgramHandle _handle)
MCAPI void $createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const &_decl)
MCAPI void $createBottomLevelAccelerationStructure(::bgfx::AccelerationStructureHandle _handle, ::bgfx::VertexBufferHandle _vertexBufferHandle, ::bgfx::VertexDeclHandle _vertexDeclHandle, uint _vertexCount, uint _vertexOffsetBytes, ::bgfx::IndexBufferHandle _indexBufferHandle, uint _indexCount, uint _indexOffsetBytes, ushort _indexSize, ::bgfx::AccelerationStructureBuildFlags::Enum _flags)
MCAPI uint64 $getRendererVersion() const
MCAPI void $destroyAccelerationStructureBuffer(::bgfx::AccelerationStructureHandle _handle)
MCAPI void $createTopLevelAccelerationStructure(::bgfx::AccelerationStructureHandle _handle, uint _numInstances, ::bgfx::TopLevelInstanceDesc *_instanceDescs)
MCAPI void $overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint _flags)
MCAPI void $invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle)
MCAPI bool $updateResolution(::bgfx::Resolution const &_resolution)
MCAPI void $rayTrace(::bgfx::d3d12::CommandListD3D12 &bgfxCommandList, ::bgfx::RayTracingConfiguration const &rtConfig, ::bgfx::RayTracingResources const &rtResources, ::bgfx::RenderBind const &renderBind, ::bgfx::Matrix4 const &viewMat, ::bgfx::Matrix4 const &projMat)
MCAPI void $doPreBlasSkinning(::bgfx::d3d12::CommandListD3D12 &bgfxCommandList)
MCAPI void $resizeTexture(::bgfx::TextureHandle _handle, ushort _width, ushort _height, uchar _numMips, ushort _numLayers)
MCAPI void $destroyFrameBuffer(::bgfx::FrameBufferHandle _handle)
Definition ResourceCreate.h:7
Definition TextureD3D12.h:7