diff options
| author | Chia-I Wu <olv@google.com> | 2016-05-16 07:48:14 +0800 |
|---|---|---|
| committer | Chia-I Wu <olv@google.com> | 2016-05-21 11:15:11 +0800 |
| commit | 8220573dae223c788681fb2fc5169cc366a5dffa (patch) | |
| tree | db35531f4043e9e66f870af7eb849870e70c6f98 /layers/parameter_validation.cpp | |
| parent | 5737c33da68b4f3ce0e0b968bcde210e0a520c5b (diff) | |
| download | usermoji-8220573dae223c788681fb2fc5169cc366a5dffa.tar.xz | |
parameter_validation: avoid invalid GIPA call in vkCreateDevice
Save VkInstance in layer_data so that we query vkCreateDevice with a valid
instance.
Diffstat (limited to 'layers/parameter_validation.cpp')
| -rw-r--r-- | layers/parameter_validation.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/layers/parameter_validation.cpp b/layers/parameter_validation.cpp index 87d1cbc3..e0e29c6d 100644 --- a/layers/parameter_validation.cpp +++ b/layers/parameter_validation.cpp @@ -52,6 +52,8 @@ namespace parameter_validation { struct layer_data { + VkInstance instance; + debug_report_data *report_data; std::vector<VkDebugReportCallbackEXT> logging_callback; @@ -1314,6 +1316,7 @@ CreateInstance(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationCallba VkLayerInstanceDispatchTable *pTable = initInstanceTable(*pInstance, fpGetInstanceProcAddr, pc_instance_table_map); + my_instance_data->instance = *pInstance; my_instance_data->report_data = debug_report_create_instance(pTable, *pInstance, pCreateInfo->enabledExtensionCount, pCreateInfo->ppEnabledExtensionNames); @@ -1618,7 +1621,7 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateDevice(VkPhysicalDevice physicalDevice, PFN_vkGetInstanceProcAddr fpGetInstanceProcAddr = chain_info->u.pLayerInfo->pfnNextGetInstanceProcAddr; PFN_vkGetDeviceProcAddr fpGetDeviceProcAddr = chain_info->u.pLayerInfo->pfnNextGetDeviceProcAddr; - PFN_vkCreateDevice fpCreateDevice = (PFN_vkCreateDevice)fpGetInstanceProcAddr(NULL, "vkCreateDevice"); + PFN_vkCreateDevice fpCreateDevice = (PFN_vkCreateDevice)fpGetInstanceProcAddr(my_instance_data->instance, "vkCreateDevice"); if (fpCreateDevice == NULL) { return VK_ERROR_INITIALIZATION_FAILED; } |
