vkr: minor cleanup to vkCreateInstance dispatch
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
diff --git a/src/vkr_renderer.c b/src/vkr_renderer.c
index 6a7bd2c..a064dfe 100644
--- a/src/vkr_renderer.c
+++ b/src/vkr_renderer.c
@@ -687,18 +687,10 @@
return;
}
- struct vkr_instance *instance = calloc(1, sizeof(*instance));
- if (!instance) {
- args->ret = VK_ERROR_OUT_OF_HOST_MEMORY;
- return;
- }
-
uint32_t instance_version;
args->ret = vkEnumerateInstanceVersion(&instance_version);
- if (args->ret != VK_SUCCESS) {
- free(instance);
+ if (args->ret != VK_SUCCESS)
return;
- }
/* require Vulkan 1.1 */
if (instance_version < VK_API_VERSION_1_1) {
@@ -706,16 +698,25 @@
return;
}
+ VkInstanceCreateInfo *create_info = (VkInstanceCreateInfo *)args->pCreateInfo;
+
+ /* patch apiVersion */
VkApplicationInfo app_info = {
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
.apiVersion = VK_API_VERSION_1_1,
};
- if (args->pCreateInfo->pApplicationInfo) {
- app_info = *args->pCreateInfo->pApplicationInfo;
+ if (create_info->pApplicationInfo) {
+ app_info = *create_info->pApplicationInfo;
if (app_info.apiVersion < VK_API_VERSION_1_1)
app_info.apiVersion = VK_API_VERSION_1_1;
}
- ((VkInstanceCreateInfo *)args->pCreateInfo)->pApplicationInfo = &app_info;
+ create_info->pApplicationInfo = &app_info;
+
+ struct vkr_instance *instance = calloc(1, sizeof(*instance));
+ if (!instance) {
+ args->ret = VK_ERROR_OUT_OF_HOST_MEMORY;
+ return;
+ }
instance->base.type = VK_OBJECT_TYPE_INSTANCE;
instance->base.id =
@@ -723,7 +724,7 @@
instance->api_version = app_info.apiVersion;
vn_replace_vkCreateInstance_args_handle(args);
- args->ret = vkCreateInstance(args->pCreateInfo, NULL, &instance->base.handle.instance);
+ args->ret = vkCreateInstance(create_info, NULL, &instance->base.handle.instance);
if (args->ret != VK_SUCCESS) {
free(instance);
return;