summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/src/debug_renderdoc.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/src/debug_renderdoc.cpp')
-rw-r--r--3rdparty/bgfx/src/debug_renderdoc.cpp32
1 files changed, 22 insertions, 10 deletions
diff --git a/3rdparty/bgfx/src/debug_renderdoc.cpp b/3rdparty/bgfx/src/debug_renderdoc.cpp
index a51206b8122..938af6ead14 100644
--- a/3rdparty/bgfx/src/debug_renderdoc.cpp
+++ b/3rdparty/bgfx/src/debug_renderdoc.cpp
@@ -43,7 +43,7 @@ namespace bgfx
, BX_COUNTOF(moduleName)
);
if (0 != result
- && 0 == bx::strincmp(_name, moduleName) )
+ && 0 == bx::strCmpI(_name, moduleName) )
{
return true;
}
@@ -56,21 +56,27 @@ namespace bgfx
}
pRENDERDOC_GetAPI RENDERDOC_GetAPI;
- static RENDERDOC_API_1_1_0* s_renderDoc;
+ static RENDERDOC_API_1_1_0* s_renderDoc = NULL;
+ static void* s_renderDocDll = NULL;
void* loadRenderDoc()
{
+ if (NULL != s_renderDoc)
+ {
+ return s_renderDocDll;
+ }
+
// Skip loading RenderDoc when IntelGPA is present to avoid RenderDoc crash.
if (findModule(BX_ARCH_32BIT ? "shimloader32.dll" : "shimloader64.dll") )
{
return NULL;
}
- void* renderdocdll = bx::dlopen("renderdoc.dll");
+ void* renderDocDll = bx::dlopen("renderdoc.dll");
- if (NULL != renderdocdll)
+ if (NULL != renderDocDll)
{
- RENDERDOC_GetAPI = (pRENDERDOC_GetAPI)bx::dlsym(renderdocdll, "RENDERDOC_GetAPI");
+ RENDERDOC_GetAPI = (pRENDERDOC_GetAPI)bx::dlsym(renderDocDll, "RENDERDOC_GetAPI");
if (NULL != RENDERDOC_GetAPI
&& 1 == RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_1_0, (void**)&s_renderDoc) )
{
@@ -85,23 +91,29 @@ namespace bgfx
s_renderDoc->SetCaptureOptionU32(eRENDERDOC_Option_SaveAllInitials, 1);
s_renderDoc->MaskOverlayBits(eRENDERDOC_Overlay_None, eRENDERDOC_Overlay_None);
+
+ s_renderDocDll = renderDocDll;
}
else
{
- bx::dlclose(renderdocdll);
- renderdocdll = NULL;
+ bx::dlclose(renderDocDll);
+ renderDocDll = NULL;
}
}
- return renderdocdll;
+ return renderDocDll;
}
void unloadRenderDoc(void* _renderdocdll)
{
if (NULL != _renderdocdll)
{
- s_renderDoc->Shutdown();
- bx::dlclose(_renderdocdll);
+ // BK - Once RenderDoc is loaded there shouldn't be calls
+ // to Shutdown or unload RenderDoc DLL.
+ // https://github.com/bkaradzic/bgfx/issues/1192
+ //
+ // s_renderDoc->Shutdown();
+ // bx::dlclose(_renderdocdll);
}
}