From: Erik Faye-Lund Date: Thu, 19 May 2022 12:47:31 +0000 (+0200) Subject: dzn: add debug option to redirect stdout/stderr X-Git-Tag: upstream/22.3.5~8159 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8901df12ab0379ec30bc5ce12cf049ff11ceb3de;p=platform%2Fupstream%2Fmesa.git dzn: add debug option to redirect stdout/stderr For applications that doesn't have a terminal, it's useful to get output like nir_log etc output somewhere. This outputs these to stderr.txt and stdout.txt in the current user's home directory, typically in C:\Users\my-user\. Acked-by: Boris Brezillon Acked-by: Jesse Natalie Part-of: --- diff --git a/src/microsoft/vulkan/dzn_device.c b/src/microsoft/vulkan/dzn_device.c index 941d0dd..34f5607 100644 --- a/src/microsoft/vulkan/dzn_device.c +++ b/src/microsoft/vulkan/dzn_device.c @@ -43,6 +43,7 @@ #include #include +#include #include @@ -111,6 +112,7 @@ static const struct debug_control dzn_debug_options[] = { { "gbv", DZN_DEBUG_GBV }, { "d3d12", DZN_DEBUG_D3D12 }, { "debugger", DZN_DEBUG_DEBUGGER }, + { "redirects", DZN_DEBUG_REDIRECTS }, { NULL, 0 } }; @@ -187,6 +189,16 @@ dzn_instance_create(const VkInstanceCreateInfo *pCreateInfo, } } + if (instance->debug_flags & DZN_DEBUG_REDIRECTS) { + char home[MAX_PATH], path[MAX_PATH]; + if (SUCCEEDED(SHGetFolderPathA(NULL, CSIDL_PROFILE, NULL, 0, home))) { + snprintf(path, sizeof(path), "%s\\stderr.txt", home); + freopen(path, "w", stderr); + snprintf(path, sizeof(path), "%s\\stdout.txt", home); + freopen(path, "w", stdout); + } + } + instance->dxil_validator = dxil_create_validator(NULL); instance->d3d12.serialize_root_sig = d3d12_get_serialize_root_sig(); diff --git a/src/microsoft/vulkan/dzn_private.h b/src/microsoft/vulkan/dzn_private.h index f9142fe..1d09e0a 100644 --- a/src/microsoft/vulkan/dzn_private.h +++ b/src/microsoft/vulkan/dzn_private.h @@ -921,6 +921,7 @@ enum dzn_debug_flags { DZN_DEBUG_GBV = 1 << 6, DZN_DEBUG_D3D12 = 1 << 7, DZN_DEBUG_DEBUGGER = 1 << 8, + DZN_DEBUG_REDIRECTS = 1 << 9, }; struct dzn_instance {