3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/external/bgfx/BufferD3D11.h"
7#include "mc/external/bgfx/Dxgi.h"
8#include "mc/external/bgfx/FatalError.h"
9#include "mc/external/bgfx/FrameBufferD3D11.h"
10#include "mc/external/bgfx/FrameBufferHandle.h"
11#include "mc/external/bgfx/GuardedPagedHeapBackedArray.h"
12#include "mc/external/bgfx/NvApi.h"
13#include "mc/external/bgfx/OcclusionQueryD3D11.h"
14#include "mc/external/bgfx/ProgramD3D11.h"
15#include "mc/external/bgfx/RendererContextI.h"
16#include "mc/external/bgfx/Resolution.h"
17#include "mc/external/bgfx/ShaderD3D11.h"
18#include "mc/external/bgfx/StateCacheLru.h"
19#include "mc/external/bgfx/StateCacheT.h"
20#include "mc/external/bgfx/SwapChainDesc.h"
21#include "mc/external/bgfx/TextVideoMem.h"
22#include "mc/external/bgfx/TextureStage.h"
23#include "mc/external/bgfx/TimerQueryD3D11.h"
24#include "mc/external/bgfx/UniformRegistry.h"
25#include "mc/external/bgfx/VertexBufferD3D11.h"
26#include "mc/external/bgfx/VertexDecl.h"
27#include "mc/external/bgfx/renderer_type/Enum.h"
28#include "mc/external/bgfx/texture_format/Enum.h"
29#include "mc/external/bgfx/uniform_type/Enum.h"
37namespace bgfx {
struct Frame; }
38namespace bgfx {
struct Handle; }
40namespace bgfx {
struct Memory; }
43namespace bgfx {
struct Rect; }
55namespace bgfx::d3d11 {
61 ::ll::TypedStorage<8, 8, void*> m_d3d9dll;
62 ::ll::TypedStorage<8, 8, void*> m_d3d11dll;
63 ::ll::TypedStorage<8, 8, void*> m_renderdocdll;
64 ::ll::TypedStorage<8, 8, void*> m_agsdll;
65 ::ll::TypedStorage<8, 448, ::bgfx::Dxgi> m_dxgi;
66 ::ll::TypedStorage<8, 8, ::bgfx::d3d11::AGSContext*> m_ags;
67 ::ll::TypedStorage<8, 48, ::bgfx::NvApi> m_nvapi;
68 ::ll::TypedStorage<4, 4, ::D3D_FEATURE_LEVEL> m_featureLevel;
69 ::ll::TypedStorage<8, 8, ::IDXGISwapChain3*> m_swapChain;
70 ::ll::TypedStorage<8, 8, ::ID3D11Texture2D*> m_msaaRenderTarget;
71 ::ll::TypedStorage<1, 1, bool> m_needPresent;
72 ::ll::TypedStorage<1, 1, bool> m_fatal;
73 ::ll::TypedStorage<4, 8, ::bgfx::FatalError> m_fatalError;
74 ::ll::TypedStorage<2, 2, ushort> m_numWindows;
75 ::ll::TypedStorage<2, 256, ::bgfx::FrameBufferHandle[128]> m_windows;
76 ::ll::TypedStorage<8, 8, ::ID3D11Device*> m_device;
77 ::ll::TypedStorage<8, 8, ::ID3D11DeviceContext*> m_deviceCtx;
78 ::ll::TypedStorage<8, 8, ::ID3DUserDefinedAnnotation*> m_annotation;
79 ::ll::TypedStorage<8, 8, ::ID3D11InfoQueue*> m_infoQueue;
80 ::ll::TypedStorage<8, 49200, ::bgfx::d3d11::TimerQueryD3D11> m_gpuTimer;
81 ::ll::TypedStorage<8, 4112, ::bgfx::d3d11::OcclusionQueryD3D11> m_occlusionQuery;
82 ::ll::TypedStorage<4, 4, uint> m_deviceInterfaceVersion;
83 ::ll::TypedStorage<8, 8, ::ID3D11RenderTargetView*> m_backBufferColor;
84 ::ll::TypedStorage<8, 8, ::ID3D11DepthStencilView*> m_backBufferDepthStencil;
85 ::ll::TypedStorage<8, 8, ::ID3D11RenderTargetView*> m_currentColor;
86 ::ll::TypedStorage<8, 8, ::ID3D11DepthStencilView*> m_currentDepthStencil;
87 ::ll::TypedStorage<8, 8, ::ID3D11Texture2D*> m_captureTexture;
88 ::ll::TypedStorage<8, 8, ::ID3D11Texture2D*> m_captureResolve;
89 ::ll::TypedStorage<4, 12, ::bgfx::Resolution> m_resolution;
90 ::ll::TypedStorage<8, 72, ::bgfx::SwapChainDesc> m_scd;
91 ::ll::TypedStorage<4, 4, ::DXGI_SWAP_EFFECT> m_swapEffect;
92 ::ll::TypedStorage<4, 4, uint> m_swapBufferCount;
93 ::ll::TypedStorage<4, 4, uint> m_maxAnisotropy;
94 ::ll::TypedStorage<1, 1, bool> m_depthClamp;
95 ::ll::TypedStorage<1, 1, bool> m_wireframe;
96 ::ll::TypedStorage<8, 131072, ::bgfx::d3d11::BufferD3D11[4096]> m_indexBuffers;
97 ::ll::TypedStorage<8, 163840, ::bgfx::d3d11::VertexBufferD3D11[4096]> m_vertexBuffers;
98 ::ll::TypedStorage<8, 131072, ::bgfx::d3d11::BufferD3D11[4096]> m_shaderBuffers;
99 ::ll::TypedStorage<8, 786432, ::bgfx::d3d11::ShaderD3D11[4096]> m_shaders;
100 ::ll::TypedStorage<8, 507904, ::bgfx::d3d11::ProgramD3D11[2048]> m_program;
101 ::ll::TypedStorage<8, 294944, ::bgfx::GuardedPagedHeapBackedArray<::bgfx::d3d11::TextureD3D11, 4096>> m_textures;
102 ::ll::TypedStorage<4, 5376, ::bgfx::VertexDecl[64]> m_vertexDecls;
103 ::ll::TypedStorage<8, 24576, ::bgfx::d3d11::FrameBufferD3D11[128]> m_frameBuffers;
104 ::ll::TypedStorage<8, 4096, void* [512]> m_uniforms;
105 ::ll::TypedStorage<4, 7176, ::bgfx::UniformRegistry> m_uniformReg;
106 ::ll::TypedStorage<8, 32, ::bgfx::StateCacheT<::ID3D11BlendState>> m_blendStateCache;
107 ::ll::TypedStorage<8, 32, ::bgfx::StateCacheT<::ID3D11DepthStencilState>> m_depthStencilStateCache;
108 ::ll::TypedStorage<8, 32, ::bgfx::StateCacheT<::ID3D11InputLayout>> m_inputLayoutCache;
109 ::ll::TypedStorage<8, 32, ::bgfx::StateCacheT<::ID3D11RasterizerState>> m_rasterizerStateCache;
110 ::ll::TypedStorage<8, 32, ::bgfx::StateCacheT<::ID3D11SamplerState>> m_samplerStateCache;
111 ::ll::TypedStorage<8, 32808, ::bgfx::StateCacheLru<::IUnknown*, 1024>> m_srvUavLru;
112 ::ll::TypedStorage<8, 24, ::bgfx::TextVideoMem> m_textVideoMem;
113 ::ll::TypedStorage<8, 1040, ::bgfx::d3d11::TextureStage> m_textureStage;
114 ::ll::TypedStorage<8, 8, ::bgfx::d3d11::ProgramD3D11*> m_currentProgram;
115 ::ll::TypedStorage<1, 65536, uchar[65536]> m_vsScratch;
116 ::ll::TypedStorage<1, 65536, uchar[65536]> m_fsScratch;
117 ::ll::TypedStorage<4, 4, uint> m_vsChanges;
118 ::ll::TypedStorage<4, 4, uint> m_fsChanges;
119 ::ll::TypedStorage<2, 2, ::bgfx::FrameBufferHandle> m_fbh;
120 ::ll::TypedStorage<1, 1, bool> m_rtMsaa;
121 ::ll::TypedStorage<1, 1, bool> m_directAccessSupport;
127 virtual ~RendererContextD3D11() =
default;
129 virtual ::bgfx::RendererType::Enum getRendererType() const ;
131 virtual uint64 getRendererVersion() const ;
133 virtual uint64 getShaderVersion() const ;
135 virtual
char const* getRendererName() const ;
138 createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags) ;
140 virtual
void destroyIndexBuffer(::bgfx::IndexBufferHandle _handle) ;
142 virtual
void createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl) ;
144 virtual
void destroyVertexDecl(::bgfx::VertexDeclHandle) ;
146 virtual
void createVertexBuffer(
147 ::bgfx::VertexBufferHandle _handle,
148 ::bgfx::Memory const* _mem,
149 ::bgfx::VertexDeclHandle _declHandle,
153 virtual
void destroyVertexBuffer(::bgfx::VertexBufferHandle _handle) ;
155 virtual
void createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags) ;
157 virtual
void updateDynamicIndexBuffer(
158 ::bgfx::IndexBufferHandle _handle,
161 ::bgfx::Memory const* _mem
164 virtual
void destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle) ;
166 virtual
void createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags) ;
168 virtual
void updateDynamicVertexBuffer(
169 ::bgfx::VertexBufferHandle _handle,
172 ::bgfx::Memory const* _mem
175 virtual
void destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle) ;
177 virtual
void createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem) ;
179 virtual
void destroyShader(::bgfx::ShaderHandle _handle) ;
182 createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh) ;
184 virtual
void destroyProgram(::bgfx::ProgramHandle _handle) ;
186 virtual
void* createTexture(
187 ::bgfx::TextureHandle _handle,
188 ::bgfx::Memory const* _mem,
191 ::bgfx::Memory const**
194 virtual
void wrapExternalTexture(
195 ::bgfx::TextureHandle _handle,
196 ::bgfx::RendererType::Enum _type,
201 virtual
void updateTextureBegin(::bgfx::TextureHandle, uchar, uchar) ;
203 virtual
void updateTexture(
204 ::bgfx::TextureHandle _handle,
207 ::bgfx::Rect const& _rect,
211 ::bgfx::Memory const* _mem
214 virtual
void updateTextureEnd() ;
216 virtual
void readTexture(::bgfx::TextureHandle _handle,
void* _data, uchar _mip) ;
218 virtual
void resizeTexture(
219 ::bgfx::TextureHandle _handle,
226 virtual
void overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint _flags) ;
228 virtual uint64 getInternal(::bgfx::TextureHandle _handle) ;
230 virtual
void destroyTexture(::bgfx::TextureHandle _handle) ;
233 createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags) ;
236 updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem) ;
238 virtual
void destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle) ;
240 virtual
void createFrameBuffer(
241 ::bgfx::FrameBufferHandle _handle,
243 ::bgfx::Attachment const* _attachment
246 virtual
void createFrameBuffer(
247 ::bgfx::FrameBufferHandle _handle,
251 ::bgfx::TextureFormat::Enum _depthFormat
254 virtual
void destroyFrameBuffer(::bgfx::FrameBufferHandle _handle) ;
256 virtual
void createUniform(
257 ::bgfx::UniformHandle _handle,
258 ::bgfx::UniformType::Enum _type,
263 virtual
void destroyUniform(::bgfx::UniformHandle _handle) ;
265 virtual
void requestScreenShot(::bgfx::FrameBufferHandle _handle,
char const* _filePath) ;
267 virtual
void updateViewName(ushort _id,
char const* _name) ;
269 virtual
void updateUniform(
void*, ushort _loc,
void const* _data, uint _size) ;
271 virtual
void setMarker(
void*,
char const* _marker, uint _size) ;
273 virtual
void invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle) ;
275 virtual
void setName(::bgfx::Handle _handle,
char const* _name) ;
278 ::bgfx::Frame* _render,
279 ::bgfx::ClearQuad& _clearQuad,
280 ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter
283 virtual
void blitSetup(::bgfx::TextVideoMemBlitter& _blitter) ;
285 virtual
void blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices) ;
287 virtual
bool isDeviceRemoved() ;
289 virtual
void suspend() ;
291 virtual
void resume() ;
293 virtual
void advanceToNextFrame() ;
295 virtual
void flip() ;
297 virtual
void waitForFlipQueue() ;
303 MCAPI
void commit(::bgfx::UniformBuffer& _uniformBuffer);
305 MCAPI ::ID3D11SamplerState* getSamplerState(uint _flags,
float const* _rgba);
307 MCAPI
void postReset();
309 MCAPI
void preReset();
311 MCAPI
void setBlendState(uint64 _state, uint _rgba);
313 MCAPI
void setDepthStencilState(uint64 _state, uint64 _stencil);
315 MCAPI
void setFrameBuffer(::bgfx::FrameBufferHandle _fbh,
bool _msaa,
bool _needPresent);
317 MCAPI
void setInputLayout(
319 ::bgfx::VertexDecl const** _vertexDecls,
320 ::bgfx::d3d11::ProgramD3D11 const& _program,
321 ushort _numInstanceData
324 MCAPI
void setRasterizerState(
333 MCAPI
void submitBlit(::bgfx::BlitState& _bs, ushort _view);
335 MCAPI
void updateMsaa(::DXGI_FORMAT _format) const;
341 MCFOLD ::bgfx::RendererType::Enum $getRendererType() const;
343 MCAPI uint64 $getRendererVersion() const;
345 MCFOLD uint64 $getShaderVersion() const;
347 MCAPI
char const* $getRendererName() const;
349 MCAPI
void $createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags);
351 MCAPI
void $destroyIndexBuffer(::bgfx::IndexBufferHandle _handle);
353 MCAPI
void $createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl);
355 MCFOLD
void $destroyVertexDecl(::bgfx::VertexDeclHandle);
357 MCAPI
void $createVertexBuffer(
358 ::bgfx::VertexBufferHandle _handle,
359 ::bgfx::Memory const* _mem,
360 ::bgfx::VertexDeclHandle _declHandle,
364 MCAPI
void $destroyVertexBuffer(::bgfx::VertexBufferHandle _handle);
366 MCAPI
void $createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags);
369 $updateDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _offset, uint _size, ::bgfx::Memory const* _mem);
371 MCAPI
void $destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle);
373 MCAPI
void $createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags);
375 MCAPI
void $updateDynamicVertexBuffer(
376 ::bgfx::VertexBufferHandle _handle,
379 ::bgfx::Memory const* _mem
382 MCAPI
void $destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle);
384 MCAPI
void $createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem);
386 MCAPI
void $destroyShader(::bgfx::ShaderHandle _handle);
388 MCAPI
void $createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh);
390 MCAPI
void $destroyProgram(::bgfx::ProgramHandle _handle);
392 MCAPI
void* $createTexture(
393 ::bgfx::TextureHandle _handle,
394 ::bgfx::Memory const* _mem,
397 ::bgfx::Memory const**
400 MCAPI
void $wrapExternalTexture(
401 ::bgfx::TextureHandle _handle,
402 ::bgfx::RendererType::Enum _type,
407 MCFOLD
void $updateTextureBegin(::bgfx::TextureHandle, uchar, uchar);
409 MCAPI
void $updateTexture(
410 ::bgfx::TextureHandle _handle,
413 ::bgfx::Rect const& _rect,
417 ::bgfx::Memory const* _mem
420 MCFOLD
void $updateTextureEnd();
422 MCAPI
void $readTexture(::bgfx::TextureHandle _handle,
void* _data, uchar _mip);
425 $resizeTexture(::bgfx::TextureHandle _handle, ushort _width, ushort _height, uchar _numMips, ushort _numLayers);
427 MCAPI
void $overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint _flags);
429 MCAPI uint64 $getInternal(::bgfx::TextureHandle _handle);
431 MCAPI
void $destroyTexture(::bgfx::TextureHandle _handle);
433 MCAPI
void $createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags);
435 MCAPI
void $updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem);
437 MCAPI
void $destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle);
439 MCAPI
void $createFrameBuffer(::bgfx::FrameBufferHandle _handle, uchar _num, ::bgfx::Attachment const* _attachment);
441 MCAPI
void $createFrameBuffer(
442 ::bgfx::FrameBufferHandle _handle,
446 ::bgfx::TextureFormat::Enum _depthFormat
449 MCAPI
void $destroyFrameBuffer(::bgfx::FrameBufferHandle _handle);
452 $createUniform(::bgfx::UniformHandle _handle, ::bgfx::UniformType::Enum _type, ushort _num,
char const* _name);
454 MCAPI
void $destroyUniform(::bgfx::UniformHandle _handle);
456 MCAPI
void $requestScreenShot(::bgfx::FrameBufferHandle _handle,
char const* _filePath);
458 MCAPI
void $updateViewName(ushort _id,
char const* _name);
460 MCAPI
void $updateUniform(
void*, ushort _loc,
void const* _data, uint _size);
462 MCFOLD
void $setMarker(
void*,
char const* _marker, uint _size);
464 MCAPI
void $invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle);
466 MCAPI
void $setName(::bgfx::Handle _handle,
char const* _name);
469 $submit(::bgfx::Frame* _render, ::bgfx::ClearQuad& _clearQuad, ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter);
471 MCAPI
void $blitSetup(::bgfx::TextVideoMemBlitter& _blitter);
473 MCAPI
void $blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices);
475 MCAPI
bool $isDeviceRemoved();
477 MCAPI
void $suspend();
479 MCFOLD
void $resume();
481 MCAPI
void $advanceToNextFrame();
485 MCFOLD
void $waitForFlipQueue();
Definition Attachment.h:7
Definition IndexBufferHandle.h:7
Definition OcclusionQueryHandle.h:7
Definition ProgramHandle.h:7
Definition ShaderBufferHandle.h:7
Definition ShaderHandle.h:7
Definition TextVideoMemBlitter.h:7
Definition TextureHandle.h:7
Definition VertexBufferHandle.h:7
Definition VertexDeclHandle.h:7
Definition AGSContext.h:7
Definition RendererContextD3D11.h:7
Definition TextureD3D11.h:7