aboutsummaryrefslogtreecommitdiff
path: root/layers/layers_config.cpp
diff options
context:
space:
mode:
authorCourtney Goeltzenleuchter <courtney@LunarG.com>2015-06-14 11:34:49 -0600
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-06-18 10:22:56 -0600
commita76a21104174017894f5673babbaa8d26f041466 (patch)
tree5977ce6174cbfea2855c8e8bb0941827bfd30396 /layers/layers_config.cpp
parentccddfe96f5c6f30879bf05e4cef0ab49b4bd39de (diff)
downloadusermoji-a76a21104174017894f5673babbaa8d26f041466.tar.xz
layers: Add config parser to compute debug flags
Diffstat (limited to 'layers/layers_config.cpp')
-rw-r--r--layers/layers_config.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/layers/layers_config.cpp b/layers/layers_config.cpp
index 845389c8..81ddd5d4 100644
--- a/layers/layers_config.cpp
+++ b/layers/layers_config.cpp
@@ -78,6 +78,8 @@ static VkFlags stringToDbgReportFlags(const char *_enum)
return VK_DBG_REPORT_PERF_WARN_BIT;
else if (!strcmp(_enum, "VK_DBG_REPORT_ERROR"))
return VK_DBG_REPORT_ERROR_BIT;
+ else if (!strcmp(_enum, "VK_DBG_REPORT_DEBUG"))
+ return VK_DBG_REPORT_DEBUG_BIT;
return (VkFlags) 0;
}
@@ -97,6 +99,43 @@ const char *getLayerOption(const char *_option)
return g_configFileObj.getOption(_option);
}
+uint32_t getLayerOptionFlags(const char *_option, uint32_t optionDefault)
+{
+ uint32_t flags = optionDefault;
+ const char *option = (g_configFileObj.getOption(_option));
+
+ /* parse comma-separated options */
+ while (option) {
+ const char *p = strchr(option, ',');
+ size_t len;
+
+ if (p)
+ len = p - option;
+ else
+ len = strlen(option);
+
+ if (len > 0) {
+ if (strncmp(option, "warn", len) == 0) {
+ flags |= VK_DBG_REPORT_WARN_BIT;
+ } else if (strncmp(option, "info", len) == 0) {
+ flags |= VK_DBG_REPORT_INFO_BIT;
+ } else if (strncmp(option, "perf", len) == 0) {
+ flags |= VK_DBG_REPORT_PERF_WARN_BIT;
+ } else if (strncmp(option, "error", len) == 0) {
+ flags |= VK_DBG_REPORT_ERROR_BIT;
+ } else if (strncmp(option, "debug", len) == 0) {
+ flags |= VK_DBG_REPORT_DEBUG_BIT;
+ }
+ }
+
+ if (!p)
+ break;
+
+ option = p + 1;
+ }
+ return flags;
+}
+
bool getLayerOptionEnum(const char *_option, uint32_t *optionDefault)
{
bool res;