|
@@ -674,6 +674,9 @@ namespace bgfx { namespace d3d11
|
|
|
void amdAgsMultiDrawInstancedIndirect(uint32_t _numDrawIndirect, ID3D11Buffer* _ptr, uint32_t _offset, uint32_t _stride);
|
|
void amdAgsMultiDrawInstancedIndirect(uint32_t _numDrawIndirect, ID3D11Buffer* _ptr, uint32_t _offset, uint32_t _stride);
|
|
|
void amdAgsMultiDrawIndexedInstancedIndirect(uint32_t _numDrawIndirect, ID3D11Buffer* _ptr, uint32_t _offset, uint32_t _stride);
|
|
void amdAgsMultiDrawIndexedInstancedIndirect(uint32_t _numDrawIndirect, ID3D11Buffer* _ptr, uint32_t _offset, uint32_t _stride);
|
|
|
|
|
|
|
|
|
|
+ void nvapiMultiDrawInstancedIndirect(uint32_t _numDrawIndirect, ID3D11Buffer* _ptr, uint32_t _offset, uint32_t _stride);
|
|
|
|
|
+ void nvapiMultiDrawIndexedInstancedIndirect(uint32_t _numDrawIndirect, ID3D11Buffer* _ptr, uint32_t _offset, uint32_t _stride);
|
|
|
|
|
+
|
|
|
static MultiDrawIndirectFn multiDrawInstancedIndirect;
|
|
static MultiDrawIndirectFn multiDrawInstancedIndirect;
|
|
|
static MultiDrawIndirectFn multiDrawIndexedInstancedIndirect;
|
|
static MultiDrawIndirectFn multiDrawIndexedInstancedIndirect;
|
|
|
|
|
|
|
@@ -1242,6 +1245,11 @@ BX_PRAGMA_DIAGNOSTIC_POP();
|
|
|
;
|
|
;
|
|
|
g_caps.deviceId = (uint16_t)m_adapterDesc.DeviceId;
|
|
g_caps.deviceId = (uint16_t)m_adapterDesc.DeviceId;
|
|
|
|
|
|
|
|
|
|
+ if (BGFX_PCI_ID_NVIDIA != m_adapterDesc.VendorId)
|
|
|
|
|
+ {
|
|
|
|
|
+ m_nvapi.shutdown();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (NULL == g_platformData.backBuffer)
|
|
if (NULL == g_platformData.backBuffer)
|
|
|
{
|
|
{
|
|
|
#if !BX_PLATFORM_WINDOWS
|
|
#if !BX_PLATFORM_WINDOWS
|
|
@@ -1836,6 +1844,13 @@ BX_PRAGMA_DIAGNOSTIC_POP();
|
|
|
m_ags = NULL;
|
|
m_ags = NULL;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ else if (m_nvapi.isInitialized()
|
|
|
|
|
+ && NULL != m_nvapi.nvApiD3D11MultiDrawInstancedIndirect
|
|
|
|
|
+ && NULL != m_nvapi.nvApiD3D11MultiDrawIndexedInstancedIndirect)
|
|
|
|
|
+ {
|
|
|
|
|
+ multiDrawInstancedIndirect = nvapiMultiDrawInstancedIndirect;
|
|
|
|
|
+ multiDrawIndexedInstancedIndirect = nvapiMultiDrawIndexedInstancedIndirect;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//
|
|
//
|
|
@@ -3993,6 +4008,16 @@ BX_PRAGMA_DIAGNOSTIC_POP();
|
|
|
agsDriverExtensions_MultiDrawIndexedInstancedIndirect(s_renderD3D11->m_ags, _numDrawIndirect, _ptr, _offset, _stride);
|
|
agsDriverExtensions_MultiDrawIndexedInstancedIndirect(s_renderD3D11->m_ags, _numDrawIndirect, _ptr, _offset, _stride);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ void nvapiMultiDrawInstancedIndirect(uint32_t _numDrawIndirect, ID3D11Buffer* _ptr, uint32_t _offset, uint32_t _stride)
|
|
|
|
|
+ {
|
|
|
|
|
+ s_renderD3D11->m_nvapi.nvApiD3D11MultiDrawInstancedIndirect(s_renderD3D11->m_deviceCtx, _numDrawIndirect, _ptr, _offset, _stride);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void nvapiMultiDrawIndexedInstancedIndirect(uint32_t _numDrawIndirect, ID3D11Buffer* _ptr, uint32_t _offset, uint32_t _stride)
|
|
|
|
|
+ {
|
|
|
|
|
+ s_renderD3D11->m_nvapi.nvApiD3D11MultiDrawIndexedInstancedIndirect(s_renderD3D11->m_deviceCtx, _numDrawIndirect, _ptr, _offset, _stride);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
int WINAPI d3d11Annotation_BeginEvent(DWORD _color, LPCWSTR _name)
|
|
int WINAPI d3d11Annotation_BeginEvent(DWORD _color, LPCWSTR _name)
|
|
|
{
|
|
{
|
|
|
BX_UNUSED(_color);
|
|
BX_UNUSED(_color);
|
|
@@ -6609,7 +6634,8 @@ BX_PRAGMA_DIAGNOSTIC_POP();
|
|
|
: draw.m_numIndirect
|
|
: draw.m_numIndirect
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
- multiDrawIndexedInstancedIndirect(numDrawIndirect
|
|
|
|
|
|
|
+ multiDrawIndexedInstancedIndirect(
|
|
|
|
|
+ numDrawIndirect
|
|
|
, ptr
|
|
, ptr
|
|
|
, draw.m_startIndirect * BGFX_CONFIG_DRAW_INDIRECT_STRIDE
|
|
, draw.m_startIndirect * BGFX_CONFIG_DRAW_INDIRECT_STRIDE
|
|
|
, BGFX_CONFIG_DRAW_INDIRECT_STRIDE
|
|
, BGFX_CONFIG_DRAW_INDIRECT_STRIDE
|
|
@@ -6622,7 +6648,8 @@ BX_PRAGMA_DIAGNOSTIC_POP();
|
|
|
: draw.m_numIndirect
|
|
: draw.m_numIndirect
|
|
|
;
|
|
;
|
|
|
|
|
|
|
|
- multiDrawInstancedIndirect(numDrawIndirect
|
|
|
|
|
|
|
+ multiDrawInstancedIndirect(
|
|
|
|
|
+ numDrawIndirect
|
|
|
, ptr
|
|
, ptr
|
|
|
, draw.m_startIndirect * BGFX_CONFIG_DRAW_INDIRECT_STRIDE
|
|
, draw.m_startIndirect * BGFX_CONFIG_DRAW_INDIRECT_STRIDE
|
|
|
, BGFX_CONFIG_DRAW_INDIRECT_STRIDE
|
|
, BGFX_CONFIG_DRAW_INDIRECT_STRIDE
|