aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobin@lunarg.com>2015-09-15 09:55:54 -0600
committerTobin Ehlis <tobin@lunarg.com>2015-09-16 08:10:21 -0600
commit14ae26d06b54f19f5367755ef4db0f86c03482a4 (patch)
treed114cf1b612e595322e40addd4fffd9742c1e2a5
parent967ce521d87b3e9a90114119dc816c4eb55f5a43 (diff)
downloadusermoji-14ae26d06b54f19f5367755ef4db0f86c03482a4.tar.xz
layers: Fix layer STDOUT logging
-rw-r--r--layers/device_limits.cpp8
-rw-r--r--layers/draw_state.cpp11
-rw-r--r--layers/image.cpp10
-rw-r--r--layers/mem_tracker.cpp10
-rw-r--r--layers/object_track.h8
-rw-r--r--layers/param_checker.cpp11
-rw-r--r--layers/shader_checker.cpp11
-rw-r--r--layers/vk_layer_config.cpp18
-rw-r--r--layers/vk_layer_config.h1
-rwxr-xr-xvk-layer-generate.py7
10 files changed, 27 insertions, 68 deletions
diff --git a/layers/device_limits.cpp b/layers/device_limits.cpp
index c8ff7fc1..9489eb62 100644
--- a/layers/device_limits.cpp
+++ b/layers/device_limits.cpp
@@ -117,13 +117,7 @@ static void init_device_limits(layer_data *my_data)
if (debug_action & VK_DBG_LAYER_ACTION_LOG_MSG)
{
option_str = getLayerOption("DeviceLimitsLogFilename");
- if (option_str)
- {
- log_output = fopen(option_str, "w");
- }
- if (log_output == NULL)
- log_output = stdout;
-
+ log_output = getLayerLogOutput(option_str, "DeviceLimits");
layer_create_msg_callback(my_data->report_data, report_flags, log_callback, (void *) log_output, &my_data->logging_callback);
}
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index cbf96c1f..8a51043e 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -1321,16 +1321,7 @@ static void init_draw_state(layer_data *my_data)
if (debug_action & VK_DBG_LAYER_ACTION_LOG_MSG)
{
option_str = getLayerOption("DrawStateLogFilename");
- if (option_str)
- {
- log_output = fopen(option_str, "w");
- }
- if (log_output == NULL) {
- if (option_str)
- cout << endl << "DrawState ERROR: Bad output filename specified: " << option_str << ". Writing to STDOUT instead" << endl << endl;
- log_output = stdout;
- }
-
+ log_output = getLayerLogOutput(option_str, "DrawState");
layer_create_msg_callback(my_data->report_data, report_flags, log_callback, (void *) log_output, &my_data->logging_callback);
}
diff --git a/layers/image.cpp b/layers/image.cpp
index 7fc5f7c8..f41a0e0d 100644
--- a/layers/image.cpp
+++ b/layers/image.cpp
@@ -86,15 +86,7 @@ static void InitImage(layer_data *data)
{
FILE *log_output = NULL;
const char* option_str = getLayerOption("ImageLogFilename");
- if(option_str)
- {
- log_output = fopen(option_str, "w");
- }
- if(log_output == NULL)
- {
- log_output = stdout;
- }
-
+ log_output = getLayerLogOutput(option_str, "Image");
layer_create_msg_callback(data->report_data, report_flags, log_callback, (void*)log_output, &data->logging_callback);
}
}
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index 0c96e40a..6042f8e6 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -1307,15 +1307,7 @@ static void init_mem_tracker(
if (debug_action & VK_DBG_LAYER_ACTION_LOG_MSG)
{
option_str = getLayerOption("MemTrackerLogFilename");
- if (option_str) {
- log_output = fopen(option_str, "w");
- }
- if (log_output == NULL) {
- if (option_str)
- cout << endl << "MemTracker ERROR: Bad output filename specified: " << option_str << ". Writing to STDOUT instead" << endl << endl;
- log_output = stdout;
- }
-
+ log_output = getLayerLogOutput(option_str, "MemTracker");
layer_create_msg_callback(my_data->report_data, report_flags, log_callback, (void *) log_output, &my_data->logging_callback);
}
diff --git a/layers/object_track.h b/layers/object_track.h
index 63febb2a..141d0d9f 100644
--- a/layers/object_track.h
+++ b/layers/object_track.h
@@ -368,13 +368,7 @@ initObjectTracker(
if (debug_action & VK_DBG_LAYER_ACTION_LOG_MSG)
{
option_str = getLayerOption("ObjectTrackerLogFilename");
- if (option_str) {
- log_output = fopen(option_str, "w");
- }
- if (log_output == NULL) {
- log_output = stdout;
- }
-
+ log_output = getLayerLogOutput(option_str, "ObjectTracker");
layer_create_msg_callback(my_data->report_data, report_flags, log_callback, (void *) log_output, &my_data->logging_callback);
}
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 40712077..9fcf1192 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -89,16 +89,7 @@ static void InitParamChecker(layer_data *data)
{
FILE *log_output = NULL;
const char* option_str = getLayerOption("ParamCheckerLogFilename");
- if(option_str)
- {
- log_output = fopen(option_str, "w");
- }
- if (log_output == NULL) {
- if (option_str)
- std::cout << std::endl << "ParamChecker ERROR: Bad output filename specified: " << option_str << ". Writing to STDOUT instead" << std::endl << std::endl;
- log_output = stdout;
- }
-
+ log_output = getLayerLogOutput(option_str, "ParamChecker");
layer_create_msg_callback(data->report_data, report_flags, log_callback, (void*)log_output, &data->logging_callback);
}
}
diff --git a/layers/shader_checker.cpp b/layers/shader_checker.cpp
index 7e3602c6..fbaf0a4e 100644
--- a/layers/shader_checker.cpp
+++ b/layers/shader_checker.cpp
@@ -215,16 +215,7 @@ init_shader_checker(layer_data *my_data)
if (debug_action & VK_DBG_LAYER_ACTION_LOG_MSG)
{
option_str = getLayerOption("ShaderCheckerLogFilename");
- if (option_str)
- {
- log_output = fopen(option_str, "w");
- }
- if (log_output == NULL) {
- if (option_str)
- std::cout << std::endl << "ShaderChecker ERROR: Bad output filename specified: " << option_str << ". Writing to STDOUT instead" << std::endl << std::endl;
- log_output = stdout;
- }
-
+ log_output = getLayerLogOutput(option_str, "ShaderChecker");
layer_create_msg_callback(my_data->report_data, report_flags, log_callback, (void *) log_output, &my_data->logging_callback);
}
diff --git a/layers/vk_layer_config.cpp b/layers/vk_layer_config.cpp
index a9cf5d75..d5ee78b2 100644
--- a/layers/vk_layer_config.cpp
+++ b/layers/vk_layer_config.cpp
@@ -27,6 +27,7 @@
#include <map>
#include <string.h>
#include <vk_layer.h>
+#include <iostream>
#include "vk_loader_platform.h"
#include "vk_layer_config.h"
// The following is #included again to catch certain OS-specific functions
@@ -97,6 +98,23 @@ const char *getLayerOption(const char *_option)
return g_configFileObj.getOption(_option);
}
+// If option is NULL or stdout, return stdout, otherwise try to open option
+// as a filename. If successful, return file handle, otherwise stdout
+FILE* getLayerLogOutput(const char *_option, const char *layerName)
+{
+ FILE* log_output = NULL;
+ if (!_option || !strcmp("stdout", _option))
+ log_output = stdout;
+ else {
+ log_output = fopen(_option, "w");
+ if (log_output == NULL) {
+ if (_option)
+ std::cout << std::endl << layerName << " ERROR: Bad output filename specified: " << _option << ". Writing to STDOUT instead" << std::endl << std::endl;
+ log_output = stdout;
+ }
+ }
+}
+
uint32_t getLayerOptionFlags(const char *_option, uint32_t optionDefault)
{
uint32_t flags = optionDefault;
diff --git a/layers/vk_layer_config.h b/layers/vk_layer_config.h
index 0fe3dc42..724e343f 100644
--- a/layers/vk_layer_config.h
+++ b/layers/vk_layer_config.h
@@ -30,6 +30,7 @@ extern "C" {
#endif
const char *getLayerOption(const char *_option);
+FILE* getLayerLogOutput(const char *_option, const char *layerName);
uint32_t getLayerOptionFlags(const char *_option, uint32_t optionDefault);
bool getLayerOptionEnum(const char *_option, uint32_t *optionDefault);
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index 2f4662f5..0720de0b 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -535,12 +535,7 @@ class Subcommand(object):
func_body.append(' if (debug_action & VK_DBG_LAYER_ACTION_LOG_MSG)')
func_body.append(' {')
func_body.append(' strOpt = getLayerOption("%sLogFilename");' % self.layer_name)
- func_body.append(' if (strOpt)')
- func_body.append(' {')
- func_body.append(' log_output = fopen(strOpt, "w");')
- func_body.append(' }')
- func_body.append(' if (log_output == NULL)')
- func_body.append(' log_output = stdout;')
+ func_body.append(' log_output = getLayerLogOutput(strOpt, "%s");' % self.layer_name)
func_body.append(' layer_create_msg_callback(my_data->report_data, report_flags, log_callback, (void *) log_output, &my_data->logging_callback);')
func_body.append(' }')
func_body.append('')