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"
36namespace bgfx {
struct Clear; }
38namespace bgfx {
struct Frame; }
39namespace bgfx {
struct Handle; }
41namespace bgfx {
struct Init; }
42namespace bgfx {
struct Memory; }
45namespace bgfx {
struct Rect; }
57namespace bgfx::d3d11 {
63 ::ll::TypedStorage<8, 8, void*> m_d3d9dll;
64 ::ll::TypedStorage<8, 8, void*> m_d3d11dll;
65 ::ll::TypedStorage<8, 8, void*> m_renderdocdll;
66 ::ll::TypedStorage<8, 8, void*> m_agsdll;
67 ::ll::TypedStorage<8, 448, ::bgfx::Dxgi> m_dxgi;
68 ::ll::TypedStorage<8, 8, ::bgfx::d3d11::AGSContext*> m_ags;
69 ::ll::TypedStorage<8, 48, ::bgfx::NvApi> m_nvapi;
70 ::ll::TypedStorage<4, 4, ::D3D_FEATURE_LEVEL> m_featureLevel;
71 ::ll::TypedStorage<8, 8, ::IDXGISwapChain3*> m_swapChain;
72 ::ll::TypedStorage<8, 8, ::ID3D11Texture2D*> m_msaaRenderTarget;
73 ::ll::TypedStorage<1, 1, bool> m_needPresent;
74 ::ll::TypedStorage<1, 1, bool> m_fatal;
75 ::ll::TypedStorage<4, 8, ::bgfx::FatalError> m_fatalError;
76 ::ll::TypedStorage<2, 2, ushort> m_numWindows;
77 ::ll::TypedStorage<2, 256, ::bgfx::FrameBufferHandle[128]> m_windows;
78 ::ll::TypedStorage<8, 8, ::ID3D11Device*> m_device;
79 ::ll::TypedStorage<8, 8, ::ID3D11DeviceContext*> m_deviceCtx;
80 ::ll::TypedStorage<8, 8, ::ID3DUserDefinedAnnotation*> m_annotation;
81 ::ll::TypedStorage<8, 8, ::ID3D11InfoQueue*> m_infoQueue;
82 ::ll::TypedStorage<8, 49200, ::bgfx::d3d11::TimerQueryD3D11> m_gpuTimer;
83 ::ll::TypedStorage<8, 4112, ::bgfx::d3d11::OcclusionQueryD3D11> m_occlusionQuery;
84 ::ll::TypedStorage<4, 4, uint> m_deviceInterfaceVersion;
85 ::ll::TypedStorage<8, 8, ::ID3D11RenderTargetView*> m_backBufferColor;
86 ::ll::TypedStorage<8, 8, ::ID3D11DepthStencilView*> m_backBufferDepthStencil;
87 ::ll::TypedStorage<8, 8, ::ID3D11RenderTargetView*> m_currentColor;
88 ::ll::TypedStorage<8, 8, ::ID3D11DepthStencilView*> m_currentDepthStencil;
89 ::ll::TypedStorage<8, 8, ::ID3D11Texture2D*> m_captureTexture;
90 ::ll::TypedStorage<8, 8, ::ID3D11Texture2D*> m_captureResolve;
91 ::ll::TypedStorage<4, 12, ::bgfx::Resolution> m_resolution;
92 ::ll::TypedStorage<8, 72, ::bgfx::SwapChainDesc> m_scd;
93 ::ll::TypedStorage<4, 4, ::DXGI_SWAP_EFFECT> m_swapEffect;
94 ::ll::TypedStorage<4, 4, uint> m_swapBufferCount;
95 ::ll::TypedStorage<4, 4, uint> m_maxAnisotropy;
96 ::ll::TypedStorage<1, 1, bool> m_depthClamp;
97 ::ll::TypedStorage<1, 1, bool> m_wireframe;
98 ::ll::TypedStorage<8, 131072, ::bgfx::d3d11::BufferD3D11[4096]> m_indexBuffers;
99 ::ll::TypedStorage<8, 163840, ::bgfx::d3d11::VertexBufferD3D11[4096]> m_vertexBuffers;
100 ::ll::TypedStorage<8, 131072, ::bgfx::d3d11::BufferD3D11[4096]> m_shaderBuffers;
101 ::ll::TypedStorage<8, 786432, ::bgfx::d3d11::ShaderD3D11[4096]> m_shaders;
102 ::ll::TypedStorage<8, 507904, ::bgfx::d3d11::ProgramD3D11[2048]> m_program;
103 ::ll::TypedStorage<8, 294944, ::bgfx::GuardedPagedHeapBackedArray<::bgfx::d3d11::TextureD3D11, 4096>> m_textures;
104 ::ll::TypedStorage<4, 5376, ::bgfx::VertexDecl[64]> m_vertexDecls;
105 ::ll::TypedStorage<8, 24576, ::bgfx::d3d11::FrameBufferD3D11[128]> m_frameBuffers;
106 ::ll::TypedStorage<8, 4096, void* [512]> m_uniforms;
107 ::ll::TypedStorage<4, 7176, ::bgfx::UniformRegistry> m_uniformReg;
108 ::ll::TypedStorage<8, 32, ::bgfx::StateCacheT<::ID3D11BlendState>> m_blendStateCache;
109 ::ll::TypedStorage<8, 32, ::bgfx::StateCacheT<::ID3D11DepthStencilState>> m_depthStencilStateCache;
110 ::ll::TypedStorage<8, 32, ::bgfx::StateCacheT<::ID3D11InputLayout>> m_inputLayoutCache;
111 ::ll::TypedStorage<8, 32, ::bgfx::StateCacheT<::ID3D11RasterizerState>> m_rasterizerStateCache;
112 ::ll::TypedStorage<8, 32, ::bgfx::StateCacheT<::ID3D11SamplerState>> m_samplerStateCache;
113 ::ll::TypedStorage<8, 32808, ::bgfx::StateCacheLru<::IUnknown*, 1024>> m_srvUavLru;
114 ::ll::TypedStorage<8, 24, ::bgfx::TextVideoMem> m_textVideoMem;
115 ::ll::TypedStorage<8, 1040, ::bgfx::d3d11::TextureStage> m_textureStage;
116 ::ll::TypedStorage<8, 8, ::bgfx::d3d11::ProgramD3D11*> m_currentProgram;
117 ::ll::TypedStorage<1, 65536, uchar[65536]> m_vsScratch;
118 ::ll::TypedStorage<1, 65536, uchar[65536]> m_fsScratch;
119 ::ll::TypedStorage<4, 4, uint> m_vsChanges;
120 ::ll::TypedStorage<4, 4, uint> m_fsChanges;
121 ::ll::TypedStorage<2, 2, ::bgfx::FrameBufferHandle> m_fbh;
122 ::ll::TypedStorage<1, 1, bool> m_rtMsaa;
123 ::ll::TypedStorage<1, 1, bool> m_directAccessSupport;
129 virtual ~RendererContextD3D11() ;
131 virtual ::bgfx::RendererType::Enum getRendererType() const ;
133 virtual uint64 getRendererVersion() const ;
135 virtual uint64 getShaderVersion() const ;
137 virtual
char const* getRendererName() const ;
140 createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags) ;
142 virtual
void destroyIndexBuffer(::bgfx::IndexBufferHandle _handle) ;
144 virtual
void createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl) ;
146 virtual
void destroyVertexDecl(::bgfx::VertexDeclHandle) ;
148 virtual
void createVertexBuffer(
149 ::bgfx::VertexBufferHandle _handle,
150 ::bgfx::Memory const* _mem,
151 ::bgfx::VertexDeclHandle _declHandle,
155 virtual
void destroyVertexBuffer(::bgfx::VertexBufferHandle _handle) ;
157 virtual
void createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags) ;
159 virtual
void updateDynamicIndexBuffer(
160 ::bgfx::IndexBufferHandle _handle,
163 ::bgfx::Memory const* _mem
166 virtual
void destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle) ;
168 virtual
void createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags) ;
170 virtual
void updateDynamicVertexBuffer(
171 ::bgfx::VertexBufferHandle _handle,
174 ::bgfx::Memory const* _mem
177 virtual
void destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle) ;
179 virtual
void createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem) ;
181 virtual
void destroyShader(::bgfx::ShaderHandle _handle) ;
184 createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh) ;
186 virtual
void destroyProgram(::bgfx::ProgramHandle _handle) ;
188 virtual
void* createTexture(
189 ::bgfx::TextureHandle _handle,
190 ::bgfx::Memory const* _mem,
193 ::bgfx::Memory const**
196 virtual
void wrapExternalTexture(
197 ::bgfx::TextureHandle _handle,
198 ::bgfx::RendererType::Enum _type,
203 virtual
void updateTextureBegin(::bgfx::TextureHandle, uchar, uchar) ;
205 virtual
void updateTexture(
206 ::bgfx::TextureHandle _handle,
209 ::bgfx::Rect const& _rect,
213 ::bgfx::Memory const* _mem
216 virtual
void updateTextureEnd() ;
218 virtual
void readTexture(::bgfx::TextureHandle _handle,
void* _data, uchar _mip) ;
220 virtual
void resizeTexture(
221 ::bgfx::TextureHandle _handle,
228 virtual
void overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint _flags) ;
230 virtual uint64 getInternal(::bgfx::TextureHandle _handle) ;
232 virtual
void destroyTexture(::bgfx::TextureHandle _handle) ;
235 createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags) ;
238 updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem) ;
240 virtual
void destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle) ;
242 virtual
void createFrameBuffer(
243 ::bgfx::FrameBufferHandle _handle,
245 ::bgfx::Attachment const* _attachment
248 virtual
void createFrameBuffer(
249 ::bgfx::FrameBufferHandle _handle,
253 ::bgfx::TextureFormat::Enum _depthFormat
256 virtual
void destroyFrameBuffer(::bgfx::FrameBufferHandle _handle) ;
258 virtual
void createUniform(
259 ::bgfx::UniformHandle _handle,
260 ::bgfx::UniformType::Enum _type,
265 virtual
void destroyUniform(::bgfx::UniformHandle _handle) ;
267 virtual
void requestScreenShot(::bgfx::FrameBufferHandle _handle,
char const* _filePath) ;
269 virtual
void updateViewName(ushort _id,
char const* _name) ;
271 virtual
void updateUniform(
void*, ushort _loc,
void const* _data, uint _size) ;
273 virtual
void setMarker(
void*,
char const* _marker, uint _size) ;
275 virtual
void invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle) ;
277 virtual
void setName(::bgfx::Handle _handle,
char const* _name) ;
280 ::bgfx::Frame* _render,
281 ::bgfx::ClearQuad& _clearQuad,
282 ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter
285 virtual
void blitSetup(::bgfx::TextVideoMemBlitter& _blitter) ;
287 virtual
void blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices) ;
289 virtual
bool isDeviceRemoved() ;
291 virtual
void suspend() ;
293 virtual
void resume() ;
295 virtual
void advanceToNextFrame() ;
297 virtual
void flip() ;
299 virtual
void waitForFlipQueue() ;
305 MCAPI RendererContextD3D11();
307 MCAPI
void capture();
309 MCAPI
void capturePostReset();
311 MCAPI
void clear(::bgfx::Clear const& _clear,
float (*const _palette)[4]);
313 MCAPI
void clearQuad(
314 ::bgfx::ClearQuad& _clearQuad,
315 ::bgfx::Rect const& _rect,
316 ::bgfx::Clear const& _clear,
317 float (*const _palette)[4]
320 MCAPI
void commit(::bgfx::UniformBuffer& _uniformBuffer);
322 MCAPI ::ID3D11ShaderResourceView* getCachedSrv(::bgfx::TextureHandle _handle, uchar _mip,
bool _compute);
324 MCAPI ::ID3D11UnorderedAccessView* getCachedUav(::bgfx::TextureHandle _handle, uchar _mip);
326 MCAPI ::ID3D11SamplerState* getSamplerState(uint _flags,
float const* const _rgba);
328 MCAPI
bool init(::bgfx::Init const& _init);
330 MCAPI
void postReset();
332 MCAPI
void preReset();
334 MCAPI
void setBlendState(uint64 _state, uint _rgba);
336 MCAPI
void setDepthStencilState(uint64 _state, uint64 _stencil);
338 MCAPI
void setFrameBuffer(::bgfx::FrameBufferHandle _fbh,
bool _msaa,
bool _needPresent);
340 MCAPI
void setInputLayout(
342 ::bgfx::VertexDecl const** _vertexDecls,
343 ::bgfx::d3d11::ProgramD3D11 const& _program,
344 ushort _numInstanceData
347 MCAPI
void setRasterizerState(
356 MCAPI
void shutdown();
358 MCAPI
void submitBlit(::bgfx::BlitState& _bs, ushort _view);
360 MCAPI
void updateMsaa(::DXGI_FORMAT _format) const;
362 MCAPI
bool updateResolution(::bgfx::Resolution const& _resolution);
380 MCFOLD ::bgfx::RendererType::Enum $getRendererType() const;
382 MCAPI uint64 $getRendererVersion() const;
384 MCFOLD uint64 $getShaderVersion() const;
386 MCAPI
char const* $getRendererName() const;
388 MCAPI
void $createIndexBuffer(::bgfx::IndexBufferHandle _handle, ::bgfx::Memory const* _mem, ushort _flags);
390 MCFOLD
void $destroyIndexBuffer(::bgfx::IndexBufferHandle _handle);
392 MCAPI
void $createVertexDecl(::bgfx::VertexDeclHandle _handle, ::bgfx::VertexDecl const& _decl);
394 MCFOLD
void $destroyVertexDecl(::bgfx::VertexDeclHandle);
396 MCAPI
void $createVertexBuffer(
397 ::bgfx::VertexBufferHandle _handle,
398 ::bgfx::Memory const* _mem,
399 ::bgfx::VertexDeclHandle _declHandle,
403 MCFOLD
void $destroyVertexBuffer(::bgfx::VertexBufferHandle _handle);
405 MCAPI
void $createDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _size, ushort _flags);
408 $updateDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle, uint _offset, uint _size, ::bgfx::Memory const* _mem);
410 MCFOLD
void $destroyDynamicIndexBuffer(::bgfx::IndexBufferHandle _handle);
412 MCAPI
void $createDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle, uint _size, ushort _flags);
414 MCAPI
void $updateDynamicVertexBuffer(
415 ::bgfx::VertexBufferHandle _handle,
418 ::bgfx::Memory const* _mem
421 MCFOLD
void $destroyDynamicVertexBuffer(::bgfx::VertexBufferHandle _handle);
423 MCAPI
void $createShader(::bgfx::ShaderHandle _handle, ::bgfx::Memory const* _mem);
425 MCAPI
void $destroyShader(::bgfx::ShaderHandle _handle);
427 MCAPI
void $createProgram(::bgfx::ProgramHandle _handle, ::bgfx::ShaderHandle _vsh, ::bgfx::ShaderHandle _fsh);
429 MCAPI
void $destroyProgram(::bgfx::ProgramHandle _handle);
431 MCAPI
void* $createTexture(
432 ::bgfx::TextureHandle _handle,
433 ::bgfx::Memory const* _mem,
436 ::bgfx::Memory const**
439 MCAPI
void $wrapExternalTexture(
440 ::bgfx::TextureHandle _handle,
441 ::bgfx::RendererType::Enum _type,
446 MCFOLD
void $updateTextureBegin(::bgfx::TextureHandle, uchar, uchar);
448 MCAPI
void $updateTexture(
449 ::bgfx::TextureHandle _handle,
452 ::bgfx::Rect const& _rect,
456 ::bgfx::Memory const* _mem
459 MCFOLD
void $updateTextureEnd();
461 MCAPI
void $readTexture(::bgfx::TextureHandle _handle,
void* _data, uchar _mip);
464 $resizeTexture(::bgfx::TextureHandle _handle, ushort _width, ushort _height, uchar _numMips, ushort _numLayers);
466 MCAPI
void $overrideInternal(::bgfx::TextureHandle _handle, uint64 _ptr, uint _flags);
468 MCAPI uint64 $getInternal(::bgfx::TextureHandle _handle);
470 MCAPI
void $destroyTexture(::bgfx::TextureHandle _handle);
472 MCAPI
void $createShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _size, uint _stride, ushort _flags);
474 MCAPI
void $updateShaderBuffer(::bgfx::ShaderBufferHandle _handle, uint _offset, ::bgfx::Memory const* _mem);
476 MCAPI
void $destroyShaderBuffer(::bgfx::ShaderBufferHandle _handle);
478 MCAPI
void $createFrameBuffer(::bgfx::FrameBufferHandle _handle, uchar _num, ::bgfx::Attachment const* _attachment);
480 MCAPI
void $createFrameBuffer(
481 ::bgfx::FrameBufferHandle _handle,
485 ::bgfx::TextureFormat::Enum _depthFormat
488 MCAPI
void $destroyFrameBuffer(::bgfx::FrameBufferHandle _handle);
491 $createUniform(::bgfx::UniformHandle _handle, ::bgfx::UniformType::Enum _type, ushort _num,
char const* _name);
493 MCAPI
void $destroyUniform(::bgfx::UniformHandle _handle);
495 MCAPI
void $requestScreenShot(::bgfx::FrameBufferHandle _handle,
char const* _filePath);
497 MCAPI
void $updateViewName(ushort _id,
char const* _name);
499 MCAPI
void $updateUniform(
void*, ushort _loc,
void const* _data, uint _size);
501 MCFOLD
void $setMarker(
void*,
char const* _marker, uint _size);
503 MCAPI
void $invalidateOcclusionQuery(::bgfx::OcclusionQueryHandle _handle);
505 MCAPI
void $setName(::bgfx::Handle _handle,
char const* _name);
508 $submit(::bgfx::Frame* _render, ::bgfx::ClearQuad& _clearQuad, ::bgfx::TextVideoMemBlitter& _textVideoMemBlitter);
510 MCAPI
void $blitSetup(::bgfx::TextVideoMemBlitter& _blitter);
512 MCAPI
void $blitRender(::bgfx::TextVideoMemBlitter& _blitter, uint _numIndices);
514 MCAPI
bool $isDeviceRemoved();
516 MCAPI
void $suspend();
518 MCFOLD
void $resume();
520 MCAPI
void $advanceToNextFrame();
524 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
static MCAPI void ** $vftable()
Definition TextureD3D11.h:7