aboutsummaryrefslogtreecommitdiff
path: root/layers/param_checker.cpp
diff options
context:
space:
mode:
authorCourtney Goeltzenleuchter <courtneygo@google.com>2016-02-10 14:00:52 -0700
committerIan Elliott <ianelliott@google.com>2016-02-11 09:41:54 -0700
commit7490b57472901e0ade746cea34c961b2481bbe23 (patch)
treeee8ac02f97585c53a317cf3e912bf5ee0f8fb38c /layers/param_checker.cpp
parent658a6c2b5cfaf951825326df2b52b8e805f502a2 (diff)
downloadusermoji-7490b57472901e0ade746cea34c961b2481bbe23.tar.xz
bug 134: param_checker using layer private data before it's been created
https://gitlab.khronos.org/vulkan/LoaderAndTools/issues/134
Diffstat (limited to 'layers/param_checker.cpp')
-rw-r--r--layers/param_checker.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index f3aaece4..3cbfd23e 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -1796,13 +1796,6 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
{
VkResult result = VK_ERROR_VALIDATION_FAILED_EXT;
VkBool32 skipCall = VK_FALSE;
- layer_data *my_device_data = get_my_data_ptr(get_dispatch_key(*pInstance), layer_data_map);
-
- skipCall |= validate_string(my_device_data, "vkCreateInstance()", "VkInstanceCreateInfo->VkApplicationInfo->pApplicationName",
- pCreateInfo->pApplicationInfo->pApplicationName);
-
- skipCall |= validate_string(my_device_data, "vkCreateInstance()", "VkInstanceCreateInfo->VkApplicationInfo->pEngineName",
- pCreateInfo->pApplicationInfo->pEngineName);
if (skipCall == VK_FALSE) {
VkLayerInstanceCreateInfo *chain_info = get_chain_info(pCreateInfo, VK_LAYER_LINK_INFO);
@@ -1832,6 +1825,17 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
InitParamChecker(my_data, pAllocator);
}
+ // Ordinarily we'd check these before calling down the chain, but none of the layer
+ // support is in place until now, if we survive we can report the issue now.
+ layer_data *my_device_data = get_my_data_ptr(get_dispatch_key(*pInstance), layer_data_map);
+ if (pCreateInfo->pApplicationInfo) {
+ skipCall |= validate_string(my_device_data, "vkCreateInstance()", "VkInstanceCreateInfo->VkApplicationInfo->pApplicationName",
+ pCreateInfo->pApplicationInfo->pApplicationName);
+
+ skipCall |= validate_string(my_device_data, "vkCreateInstance()", "VkInstanceCreateInfo->VkApplicationInfo->pEngineName",
+ pCreateInfo->pApplicationInfo->pEngineName);
+ }
+
return result;
}