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 <boris.brezillon@collabora.com> Acked-by: Jesse Natalie <jenatali@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16640>
This commit is contained in:

committed by
Marge Bot

parent
9f3a5b4313
commit
8901df12ab
@@ -43,6 +43,7 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <windows.h>
|
||||
#include <shlobj.h>
|
||||
|
||||
#include <directx/d3d12sdklayers.h>
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
@@ -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 {
|
||||
|
Reference in New Issue
Block a user