Fixed issue #1192.

This commit is contained in:
Branimir Karadžić
2017-07-04 13:10:27 -07:00
parent 3e772ffdac
commit 94f01a34bf
2 changed files with 20 additions and 10 deletions

View File

@@ -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) )
{
@@ -88,20 +94,24 @@ namespace bgfx
}
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);
}
}