Add option to save validation messages to a text file

This commit is contained in:
Sascha Willems 2025-05-29 19:32:50 +02:00
parent 82a4cdcdc5
commit 746fb337bd
3 changed files with 20 additions and 2 deletions

View file

@ -1,7 +1,7 @@
/*
* Vulkan examples debug wrapper
*
* Copyright (C) 2016-2023 by Sascha Willems - www.saschawillems.de
* Copyright (C) 2016-2025 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
@ -13,6 +13,8 @@ namespace vks
{
namespace debug
{
bool logToFile{ false };
PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT;
PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT;
VkDebugUtilsMessengerEXT debugUtilsMessenger;
@ -73,6 +75,12 @@ namespace vks
} else {
std::cout << debugMessage.str() << "\n\n";
}
if (logToFile) {
std::ofstream logfile;
logfile.open("validation.txt", std::ios_base::app);
logfile << debugMessage.str() << std::endl;
logfile.close();
}
fflush(stdout);
#endif

View file

@ -1,7 +1,7 @@
/*
* Vulkan examples debug wrapper
*
* Copyright (C) 2016-2023 by Sascha Willems - www.saschawillems.de
* Copyright (C) 2016-2025 by Sascha Willems - www.saschawillems.de
*
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
*/
@ -34,6 +34,8 @@ namespace vks
{
namespace debug
{
extern bool logToFile;
// Default debug callback
VKAPI_ATTR VkBool32 VKAPI_CALL debugUtilsMessageCallback(
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,

View file

@ -793,6 +793,7 @@ VulkanExampleBase::VulkanExampleBase()
// Command line arguments
commandLineParser.add("help", { "--help" }, 0, "Show help");
commandLineParser.add("validation", { "-v", "--validation" }, 0, "Enable validation layers");
commandLineParser.add("validationlog", { "-vl", "--validationlog" }, 0, "Log validation messages to a textfile (validation.txt)");
commandLineParser.add("vsync", { "-vs", "--vsync" }, 0, "Enable V-Sync");
commandLineParser.add("fullscreen", { "-f", "--fullscreen" }, 0, "Start in fullscreen mode");
commandLineParser.add("width", { "-w", "--width" }, 1, "Set window width");
@ -821,6 +822,13 @@ VulkanExampleBase::VulkanExampleBase()
if (commandLineParser.isSet("validation")) {
settings.validation = true;
}
if (commandLineParser.isSet("validationlog")) {
vks::debug::logToFile = true;
std::ofstream logfile;
logfile.open("validation.txt", std::ios_base::app);
logfile << std::endl << "Sample: " << name << std::endl;
logfile.close();
}
if (commandLineParser.isSet("vsync")) {
settings.vsync = true;
}