From f3cab4d2d81034f7252483f314f925a20eaf6b3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Thu, 23 Oct 2025 10:06:24 -0700 Subject: [PATCH] Detect nVidia Nsight debugger presence. --- src/debug_renderdoc.h | 1 + src/renderer_d3d11.cpp | 5 +++++ src/renderer_d3d12.cpp | 6 +++++- src/renderer_gl.cpp | 5 ++++- src/renderer_vk.cpp | 5 ++++- 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/debug_renderdoc.h b/src/debug_renderdoc.h index 025d72bcf..522bba034 100644 --- a/src/debug_renderdoc.h +++ b/src/debug_renderdoc.h @@ -8,6 +8,7 @@ namespace bgfx { + void* findModule(const char* _name); void* loadRenderDoc(); void unloadRenderDoc(void*); void renderDocTriggerCapture(); diff --git a/src/renderer_d3d11.cpp b/src/renderer_d3d11.cpp index 66e5eb73c..c0db38e0a 100644 --- a/src/renderer_d3d11.cpp +++ b/src/renderer_d3d11.cpp @@ -1009,6 +1009,11 @@ namespace bgfx { namespace d3d11 } } + if (NULL != findModule("Nvda.Graphics.Interception.dll") ) + { + setGraphicsDebuggerPresent(true); + } + if (BGFX_PCI_ID_NVIDIA != m_dxgi.m_adapterDesc.VendorId) { m_nvapi.shutdown(); diff --git a/src/renderer_d3d12.cpp b/src/renderer_d3d12.cpp index 6e6848764..3876bd801 100644 --- a/src/renderer_d3d12.cpp +++ b/src/renderer_d3d12.cpp @@ -733,7 +733,11 @@ namespace bgfx { namespace d3d12 m_renderDocDll = loadRenderDoc(); } - setGraphicsDebuggerPresent(NULL != m_renderDocDll || NULL != m_winPixEvent); + setGraphicsDebuggerPresent(false + || NULL != m_renderDocDll + || NULL != m_winPixEvent + || NULL != findModule("Nvda.Graphics.Interception.dll") + ); m_fbh.idx = kInvalidHandle; bx::memSet(m_uniforms, 0, sizeof(m_uniforms) ); diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 89b1038f6..27c354b2e 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -3168,7 +3168,10 @@ namespace bgfx { namespace gl m_maxLabelLen = BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 32) || BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL >= 43) || s_extension[Extension::KHR_debug].m_supported ? uint16_t(glGet(GL_MAX_LABEL_LENGTH) ) : 0; - setGraphicsDebuggerPresent(s_extension[Extension::EXT_debug_tool].m_supported); + setGraphicsDebuggerPresent(false + || s_extension[Extension::EXT_debug_tool].m_supported + || NULL != findModule("Nvda.Graphics.Interception.dll") + ); if (NULL == glObjectLabel) { diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index 59120b8cb..1626f2545 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -1194,7 +1194,10 @@ VK_IMPORT_DEVICE m_renderDocDll = loadRenderDoc(); } - setGraphicsDebuggerPresent(NULL != m_renderDocDll); + setGraphicsDebuggerPresent(false + || NULL != m_renderDocDll + || NULL != findModule("Nvda.Graphics.Interception.dll") + ); m_vulkan1Dll = bx::dlopen( #if BX_PLATFORM_WINDOWS