summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/src/renderer_d3d11.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/src/renderer_d3d11.h')
-rw-r--r--3rdparty/bgfx/src/renderer_d3d11.h80
1 files changed, 54 insertions, 26 deletions
diff --git a/3rdparty/bgfx/src/renderer_d3d11.h b/3rdparty/bgfx/src/renderer_d3d11.h
index 2e021c4aa2f..3fc0849ac87 100644
--- a/3rdparty/bgfx/src/renderer_d3d11.h
+++ b/3rdparty/bgfx/src/renderer_d3d11.h
@@ -1,26 +1,29 @@
/*
- * Copyright 2011-2018 Branimir Karadzic. All rights reserved.
- * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
+ * Copyright 2011-2022 Branimir Karadzic. All rights reserved.
+ * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE
*/
#ifndef BGFX_RENDERER_D3D11_H_HEADER_GUARD
#define BGFX_RENDERER_D3D11_H_HEADER_GUARD
-#define USE_D3D11_DYNAMIC_LIB BX_PLATFORM_WINDOWS
+#define USE_D3D11_DYNAMIC_LIB (BX_PLATFORM_LINUX || BX_PLATFORM_WINDOWS)
#define USE_D3D11_STAGING_BUFFER 0
#if !USE_D3D11_DYNAMIC_LIB
-# undef BGFX_CONFIG_DEBUG_PIX
-# define BGFX_CONFIG_DEBUG_PIX 0
+# undef BGFX_CONFIG_DEBUG_ANNOTATION
+# define BGFX_CONFIG_DEBUG_ANNOTATION 0
#endif // !USE_D3D11_DYNAMIC_LIB
BX_PRAGMA_DIAGNOSTIC_PUSH();
BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG("-Wunknown-pragmas" );
BX_PRAGMA_DIAGNOSTIC_IGNORED_GCC("-Wpragmas");
BX_PRAGMA_DIAGNOSTIC_IGNORED_MSVC(4005) // warning C4005: '' : macro redefinition
+
#include <sal.h>
+#include <unknwn.h>
+
#define D3D11_NO_HELPERS
-#if BX_PLATFORM_WINDOWS
+#if BX_PLATFORM_LINUX || BX_PLATFORM_WINDOWS
# include <d3d11_3.h>
#elif BX_PLATFORM_WINRT
# define __D3D10_1SHADER_H__ // BK - not used keep quiet!
@@ -40,19 +43,37 @@ BX_PRAGMA_DIAGNOSTIC_POP()
#include "nvapi.h"
#include "dxgi.h"
-#define BGFX_D3D11_BLEND_STATE_MASK (0 \
- | BGFX_STATE_BLEND_MASK \
- | BGFX_STATE_BLEND_EQUATION_MASK \
- | BGFX_STATE_BLEND_INDEPENDENT \
- | BGFX_STATE_BLEND_ALPHA_TO_COVERAGE \
- | BGFX_STATE_WRITE_A \
- | BGFX_STATE_WRITE_RGB \
- )
+#define BGFX_D3D11_BLEND_STATE_MASK (0 \
+ | BGFX_STATE_BLEND_MASK \
+ | BGFX_STATE_BLEND_EQUATION_MASK \
+ | BGFX_STATE_BLEND_INDEPENDENT \
+ | BGFX_STATE_BLEND_ALPHA_TO_COVERAGE \
+ | BGFX_STATE_WRITE_A \
+ | BGFX_STATE_WRITE_RGB \
+ )
#define BGFX_D3D11_DEPTH_STENCIL_MASK (0 \
- | BGFX_STATE_WRITE_Z \
- | BGFX_STATE_DEPTH_TEST_MASK \
- )
+ | BGFX_STATE_WRITE_Z \
+ | BGFX_STATE_DEPTH_TEST_MASK \
+ )
+
+#define BGFX_D3D11_PROFILER_BEGIN(_view, _abgr) \
+ BX_MACRO_BLOCK_BEGIN \
+ PIX_BEGINEVENT(_abgr, s_viewNameW[_view]); \
+ BGFX_PROFILER_BEGIN(s_viewName[view], _abgr); \
+ BX_MACRO_BLOCK_END
+
+#define BGFX_D3D11_PROFILER_BEGIN_LITERAL(_name, _abgr) \
+ BX_MACRO_BLOCK_BEGIN \
+ PIX_BEGINEVENT(_abgr, L"" _name); \
+ BGFX_PROFILER_BEGIN_LITERAL("" _name, _abgr); \
+ BX_MACRO_BLOCK_END
+
+#define BGFX_D3D11_PROFILER_END() \
+ BX_MACRO_BLOCK_BEGIN \
+ BGFX_PROFILER_END(); \
+ PIX_ENDEVENT(); \
+ BX_MACRO_BLOCK_END
namespace bgfx { namespace d3d11
{
@@ -109,9 +130,9 @@ namespace bgfx { namespace d3d11
{
}
- void create(uint32_t _size, void* _data, VertexDeclHandle _declHandle, uint16_t _flags);
+ void create(uint32_t _size, void* _data, VertexLayoutHandle _layoutHandle, uint16_t _flags);
- VertexDeclHandle m_decl;
+ VertexLayoutHandle m_layoutHandle;
};
struct ShaderD3D11
@@ -186,14 +207,14 @@ namespace bgfx { namespace d3d11
void create(const ShaderD3D11* _vsh, const ShaderD3D11* _fsh)
{
- BX_CHECK(NULL != _vsh->m_ptr, "Vertex shader doesn't exist.");
+ BX_ASSERT(NULL != _vsh->m_ptr, "Vertex shader doesn't exist.");
m_vsh = _vsh;
bx::memCopy(&m_predefined[0], _vsh->m_predefined, _vsh->m_numPredefined*sizeof(PredefinedUniform) );
m_numPredefined = _vsh->m_numPredefined;
if (NULL != _fsh)
{
- BX_CHECK(NULL != _fsh->m_ptr, "Fragment shader doesn't exist.");
+ BX_ASSERT(NULL != _fsh->m_ptr, "Fragment shader doesn't exist.");
m_fsh = _fsh;
bx::memCopy(&m_predefined[m_numPredefined], _fsh->m_predefined, _fsh->m_numPredefined*sizeof(PredefinedUniform) );
m_numPredefined += _fsh->m_numPredefined;
@@ -269,7 +290,7 @@ namespace bgfx { namespace d3d11
void overrideInternal(uintptr_t _ptr);
void update(uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, uint16_t _pitch, const Memory* _mem);
void commit(uint8_t _stage, uint32_t _flags, const float _palette[][4]);
- void resolve(uint8_t _resolve) const;
+ void resolve(uint8_t _resolve, uint32_t _layer, uint32_t _numLayers, uint32_t _mip) const;
TextureHandle getHandle() const;
DXGI_FORMAT getSrvFormat() const;
@@ -294,6 +315,7 @@ namespace bgfx { namespace d3d11
uint32_t m_width;
uint32_t m_height;
uint32_t m_depth;
+ uint32_t m_numLayers;
uint8_t m_type;
uint8_t m_requestedFormat;
uint8_t m_textureFormat;
@@ -311,6 +333,7 @@ namespace bgfx { namespace d3d11
, m_denseIdx(UINT16_MAX)
, m_num(0)
, m_numTh(0)
+ , m_numUav(0)
, m_needPresent(false)
{
}
@@ -325,9 +348,10 @@ namespace bgfx { namespace d3d11
void set();
HRESULT present(uint32_t _syncInterval);
- ID3D11RenderTargetView* m_rtv[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS-1];
- ID3D11ShaderResourceView* m_srv[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS-1];
- ID3D11DepthStencilView* m_dsv;
+ ID3D11RenderTargetView* m_rtv[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS-1];
+ ID3D11UnorderedAccessView* m_uav[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS-1];
+ ID3D11ShaderResourceView* m_srv[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS-1];
+ ID3D11DepthStencilView* m_dsv;
Dxgi::SwapChainI* m_swapChain;
void* m_nwh;
uint32_t m_width;
@@ -337,6 +361,7 @@ namespace bgfx { namespace d3d11
uint16_t m_denseIdx;
uint8_t m_num;
uint8_t m_numTh;
+ uint8_t m_numUav;
bool m_needPresent;
};
@@ -349,7 +374,7 @@ namespace bgfx { namespace d3d11
void postReset();
void preReset();
- uint32_t begin(uint32_t _resultIdx);
+ uint32_t begin(uint32_t _resultIdx, uint32_t _frameNum);
void end(uint32_t _idx);
bool update();
@@ -359,6 +384,7 @@ namespace bgfx { namespace d3d11
ID3D11Query* m_begin;
ID3D11Query* m_end;
uint32_t m_resultIdx;
+ uint32_t m_frameNum;
bool m_ready;
};
@@ -370,12 +396,14 @@ namespace bgfx { namespace d3d11
m_end = 0;
m_frequency = 1;
m_pending = 0;
+ m_frameNum = 0;
}
uint64_t m_begin;
uint64_t m_end;
uint64_t m_frequency;
uint32_t m_pending;
+ uint32_t m_frameNum;
};
Result m_result[BGFX_CONFIG_MAX_VIEWS+1];