From f6d70abd04795d49cc68927492eeb0d867847f13 Mon Sep 17 00:00:00 2001 From: Matt Borgerson Date: Sun, 28 Jul 2024 23:59:32 -0700 Subject: [PATCH] nv2a: Fix nv2a_dbg_renderdoc_init on Windows --- hw/xbox/nv2a/pgraph/debug_renderdoc.c | 43 +++++++++++++++++---------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/hw/xbox/nv2a/pgraph/debug_renderdoc.c b/hw/xbox/nv2a/pgraph/debug_renderdoc.c index ded339e23f..273e307973 100644 --- a/hw/xbox/nv2a/pgraph/debug_renderdoc.c +++ b/hw/xbox/nv2a/pgraph/debug_renderdoc.c @@ -45,26 +45,37 @@ void nv2a_dbg_renderdoc_init(void) #ifdef _WIN32 HMODULE renderdoc = GetModuleHandleA("renderdoc.dll"); - if (renderdoc) { - pRENDERDOC_GetAPI RENDERDOC_GetAPI = - (pRENDERDOC_GetAPI)GetProcAddress(renderdoc, "RENDERDOC_GetAPI"); -#else - void *renderdoc = dlopen( + if (!renderdoc) { + fprintf(stderr, "Error: Failed to open renderdoc library: 0x%lx\n", + GetLastError()); + return; + } + pRENDERDOC_GetAPI RENDERDOC_GetAPI = + (pRENDERDOC_GetAPI)GetProcAddress(renderdoc, "RENDERDOC_GetAPI"); +#else // _WIN32 #ifdef __APPLE__ - "librenderdoc.dylib", + void *renderdoc = dlopen("librenderdoc.dylib", RTLD_LAZY); #else - "librenderdoc.so", + void *renderdoc = dlopen("librenderdoc.so", RTLD_LAZY); #endif - RTLD_LAZY); - if (renderdoc) { - pRENDERDOC_GetAPI RENDERDOC_GetAPI = - (pRENDERDOC_GetAPI)dlsym(renderdoc, "RENDERDOC_GetAPI"); + if (!renderdoc) { + fprintf(stderr, "Error: Failed to open renderdoc library: %s\n", + dlerror()); + return; + } + pRENDERDOC_GetAPI RENDERDOC_GetAPI = + (pRENDERDOC_GetAPI)dlsym(renderdoc, "RENDERDOC_GetAPI"); #endif // _WIN32 - int ret = - RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_6_0, (void **)&rdoc_api); - assert(ret == 1 && "Failed to retrieve RenderDoc API."); - } else { - fprintf(stderr, "Error: Failed to open renderdoc library: %s\n", dlerror()); + + if (!RENDERDOC_GetAPI) { + fprintf(stderr, "Error: Could not get RENDERDOC_GetAPI address\n"); + return; + } + + int ret = + RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_6_0, (void **)&rdoc_api); + if (ret != 1) { + fprintf(stderr, "Error: Failed to retrieve RenderDoc API.\n"); } }