Merge pull request #38939 from hbina/vk_error_handling

Better error handling of vkEnumerateInstanceExtensionProperties
This commit is contained in:
Rémi Verschelde 2020-11-29 13:03:01 +01:00 committed by GitHub
commit d1943f6a77
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -216,7 +216,6 @@ Error VulkanContext::_create_validation_layers() {
} }
Error VulkanContext::_initialize_extensions() { Error VulkanContext::_initialize_extensions() {
VkResult err;
uint32_t instance_extension_count = 0; uint32_t instance_extension_count = 0;
enabled_extension_count = 0; enabled_extension_count = 0;
@ -226,13 +225,13 @@ Error VulkanContext::_initialize_extensions() {
VkBool32 platformSurfaceExtFound = 0; VkBool32 platformSurfaceExtFound = 0;
memset(extension_names, 0, sizeof(extension_names)); memset(extension_names, 0, sizeof(extension_names));
err = vkEnumerateInstanceExtensionProperties(nullptr, &instance_extension_count, nullptr); VkResult err = vkEnumerateInstanceExtensionProperties(nullptr, &instance_extension_count, nullptr);
ERR_FAIL_COND_V(err, ERR_CANT_CREATE); ERR_FAIL_COND_V(err != VK_SUCCESS && err != VK_INCOMPLETE, ERR_CANT_CREATE);
if (instance_extension_count > 0) { if (instance_extension_count > 0) {
VkExtensionProperties *instance_extensions = (VkExtensionProperties *)malloc(sizeof(VkExtensionProperties) * instance_extension_count); VkExtensionProperties *instance_extensions = (VkExtensionProperties *)malloc(sizeof(VkExtensionProperties) * instance_extension_count);
err = vkEnumerateInstanceExtensionProperties(nullptr, &instance_extension_count, instance_extensions); err = vkEnumerateInstanceExtensionProperties(nullptr, &instance_extension_count, instance_extensions);
if (err) { if (err != VK_SUCCESS && err != VK_INCOMPLETE) {
free(instance_extensions); free(instance_extensions);
ERR_FAIL_V(ERR_CANT_CREATE); ERR_FAIL_V(ERR_CANT_CREATE);
} }