From 64a28415a8f8f7be5104540d81e34c83f69b263a Mon Sep 17 00:00:00 2001 From: Cedric Guillemet <1312968+CedricGuillemet@users.noreply.github.com> Date: Wed, 1 Dec 2021 20:19:47 +0100 Subject: [PATCH] Disable Batch indirect mode for Microsoft WARP (#2672) * Disable Batch indirect mode for Microsoft WARP * idl Co-authored-by: Cedric Guillemet --- bindings/bf/bgfx.bf | 5 +++++ bindings/cs/bgfx.cs | 5 +++++ bindings/d/types.d | 1 + include/bgfx/defines.h | 1 + scripts/bgfx.idl | 1 + src/renderer_d3d12.cpp | 2 +- 6 files changed, 14 insertions(+), 1 deletion(-) diff --git a/bindings/bf/bgfx.bf b/bindings/bf/bgfx.bf index 89dfa303b..0e9e2e2a3 100644 --- a/bindings/bf/bgfx.bf +++ b/bindings/bf/bgfx.bf @@ -1278,6 +1278,11 @@ public static class bgfx /// nVidia adapter. /// Nvidia = 0x10de, + + /// + /// Microsoft adapter. + /// + Microsoft = 0x1414, } [AllowDuplicates] diff --git a/bindings/cs/bgfx.cs b/bindings/cs/bgfx.cs index c445bece4..3c7aed2ca 100644 --- a/bindings/cs/bgfx.cs +++ b/bindings/cs/bgfx.cs @@ -1277,6 +1277,11 @@ public static partial class bgfx /// nVidia adapter. /// Nvidia = 0x10de, + + /// + /// Microsoft adapter. + /// + Microsoft = 0x1414, } [Flags] diff --git a/bindings/d/types.d b/bindings/d/types.d index c3c92790e..69d07616a 100644 --- a/bindings/d/types.d +++ b/bindings/d/types.d @@ -403,6 +403,7 @@ enum ushort BGFX_PCI_ID_SOFTWARE_RASTERIZER = 0x0001; /// Software rasterizer. enum ushort BGFX_PCI_ID_AMD = 0x1002; /// AMD adapter. enum ushort BGFX_PCI_ID_INTEL = 0x8086; /// Intel adapter. enum ushort BGFX_PCI_ID_NVIDIA = 0x10de; /// nVidia adapter. +enum ushort BGFX_PCI_ID_MICROSOFT = 0x1414; /// Microsoft adapter. enum ubyte BGFX_CUBE_MAP_POSITIVE_X = 0x00; /// Cubemap +x. enum ubyte BGFX_CUBE_MAP_NEGATIVE_X = 0x01; /// Cubemap -x. diff --git a/include/bgfx/defines.h b/include/bgfx/defines.h index 45a9c61de..2737f7c34 100644 --- a/include/bgfx/defines.h +++ b/include/bgfx/defines.h @@ -522,6 +522,7 @@ #define BGFX_PCI_ID_AMD UINT16_C(0x1002) //!< AMD adapter. #define BGFX_PCI_ID_INTEL UINT16_C(0x8086) //!< Intel adapter. #define BGFX_PCI_ID_NVIDIA UINT16_C(0x10de) //!< nVidia adapter. +#define BGFX_PCI_ID_MICROSOFT UINT16_C(0x1414) //!< Microsoft adapter. #define BGFX_CUBE_MAP_POSITIVE_X UINT8_C(0x00) //!< Cubemap +x. #define BGFX_CUBE_MAP_NEGATIVE_X UINT8_C(0x01) //!< Cubemap -x. diff --git a/scripts/bgfx.idl b/scripts/bgfx.idl index 54647f6a6..6daf57370 100644 --- a/scripts/bgfx.idl +++ b/scripts/bgfx.idl @@ -427,6 +427,7 @@ flag.PciId { bits = 16 , const } .Amd (0x1002) --- AMD adapter. .Intel (0x8086) --- Intel adapter. .Nvidia (0x10de) --- nVidia adapter. + .Microsoft (0x1414) --- Microsoft adapter. () flag.CubeMap { bits = 8, const } diff --git a/src/renderer_d3d12.cpp b/src/renderer_d3d12.cpp index ac11f172d..1086bb314 100644 --- a/src/renderer_d3d12.cpp +++ b/src/renderer_d3d12.cpp @@ -1331,7 +1331,7 @@ namespace bgfx { namespace d3d12 postReset(); m_batch.create(4<<10); - m_batch.setIndirectMode(BGFX_PCI_ID_NVIDIA != m_dxgi.m_adapterDesc.VendorId); + m_batch.setIndirectMode(BGFX_PCI_ID_NVIDIA != m_dxgi.m_adapterDesc.VendorId && BGFX_PCI_ID_MICROSOFT != m_dxgi.m_adapterDesc.VendorId); m_gpuTimer.init(); m_occlusionQuery.init();