# Vulkan: VkInstance's apiVersion mismatchs with VkDevice's apiVersion

**URL:** <https://forums.imgtec.com/t/vulkan-vkinstances-apiversion-mismatchs-with-vkdevices-apiversion/3377>\
**Category:** PowerVR Insider\
**Created:** [March 25, 2021, 8:04pm UTC](https://forums.imgtec.com/t/vulkan-vkinstances-apiversion-mismatchs-with-vkdevices-apiversion/3377 "2021-03-25T20:04:43Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![andreyogld3d](https://sea1.discourse-cdn.com/flex015/user_avatar/forums.imgtec.com/andreyogld3d/32/255_2.png) [@andreyogld3d](https://forums.imgtec.com/u/andreyogld3d)\
**Post date:** [March 25, 2021, 8:04pm UTC](https://forums.imgtec.com/t/vulkan-vkinstances-apiversion-mismatchs-with-vkdevices-apiversion/3377/1 "2021-03-25T20:04:43Z")

</div>

Hi! PowerVR GE8300, Android 9, Huawei Y6 2019

vkEnumerateInstanceVersion returns 1.1, but vkGetPhysicalDeviceProperties returns VkPhysicalDeviceProperties::apiVersion == 1.0.76

Also I have Validation Layers’s Warnings :

D/androidvulkan.androidvulkan.d: Thu Mar 25 22:53:05 2021 Vulkan Debug Ouput: WARNING: [Validation] Code 0 : Validation Warning: [UNASSIGNED-BestPractices-vkCreateDevice-API-version-mismatch] Object 0: VK\_NULL\_HANDLE, type = VK\_OBJECT\_TYPE\_DEVICE; | MessageID = 0x594a8f91 | vkCreateDevice(): API Version of current instance, 1.1.0 (0x00401000) is higher than API Version on device, 1.0.76 (0x0040004c)  
D/androidvulkan.androidvulkan.d: Thu Mar 25 22:53:05 2021 Vulkan Debug Ouput: WARNING: [Validation] Code 0 : Validation Warning: [UNASSIGNED-BestPractices-vkCreateDevice-deprecated-extension] Object 0: VK\_NULL\_HANDLE, type = VK\_OBJECT\_TYPE\_INSTANCE; | MessageID = 0xad32db6 | CreateDevice(): Attempting to enable deprecated extension VK\_KHR\_shader\_draw\_parameters, but this extension has been promoted to VK\_VERSION\_1\_1.  
2021-03-25 22:53:05.181 15250-16229/androidvulkan.androidvulkan.d D/androidvulkan.androidvulkan.d: Thu Mar 25 22:53:05 2021 Vulkan Debug Ouput: WARNING: [Validation] Code 0 : Validation Warning: [UNASSIGNED-BestPractices-vkCreateDevice-deprecated-extension] Object 0: VK\_NULL\_HANDLE, type = VK\_OBJECT\_TYPE\_INSTANCE; | MessageID = 0xad32db6 | CreateDevice(): Attempting to enable deprecated extension VK\_KHR\_get\_memory\_requirements2, but this extension has been promoted to VK\_VERSION\_1\_1.  
2021-03-25 22:53:05.182 15250-16229/androidvulkan.androidvulkan.d D/androidvulkan.androidvulkan.d: Thu Mar 25 22:53:05 2021 Vulkan Debug Ouput: WARNING: [Validation] Code 0 : Validation Warning: [UNASSIGNED-BestPractices-vkCreateDevice-deprecated-extension] Object 0: VK\_NULL\_HANDLE, type = VK\_OBJECT\_TYPE\_INSTANCE; | MessageID = 0xad32db6 | CreateDevice(): Attempting to enable deprecated extension VK\_KHR\_dedicated\_allocation, but this extension has been promoted to VK\_VERSION\_1\_1.  
2021-03-25 22:53:05.182 15250-16229/androidvulkan.androidvulkan.d D/androidvulkan.androidvulkan.d: Thu Mar 25 22:53:05 2021 Vulkan Debug Ouput: WARNING: [Validation] Code 0 : Validation Warning: [UNASSIGNED-BestPractices-vkCreateDevice-deprecated-extension] Object 0: VK\_NULL\_HANDLE, type = VK\_OBJECT\_TYPE\_INSTANCE; | MessageID = 0xad32db6 | CreateDevice(): Attempting to enable deprecated extension VK\_KHR\_relaxed\_block\_layout, but this extension has been promoted to VK\_VERSION\_1\_1.

Also I have crash during vkCreateDevice.

How to get a correct Vulkan Instance Version ?

It works on other Mobile GPU: Mali G71, Mali G76, Adreno 506, Adreno 610.  
It works ob Desktop GPU.

---

<div class="post-metadata">

**Author:** ![AlejandroC](https://avatars.discourse-cdn.com/v4/letter/a/97f17d/32.png) [@AlejandroC](https://forums.imgtec.com/u/AlejandroC)\
**Post date:** [March 26, 2021, 12:37pm UTC](https://forums.imgtec.com/t/vulkan-vkinstances-apiversion-mismatchs-with-vkdevices-apiversion/3377/2 "2021-03-26T12:37:42Z")

</div>

Hi andreyogld3d,

Thanks for your message, we’ll look into it and come back to you.

Best regards,  
Alejandro

---

<div class="post-metadata">

**Author:** ![AlejandroC](https://avatars.discourse-cdn.com/v4/letter/a/97f17d/32.png) [@AlejandroC](https://forums.imgtec.com/u/AlejandroC)\
**Post date:** [March 26, 2021, 5:57pm UTC](https://forums.imgtec.com/t/vulkan-vkinstances-apiversion-mismatchs-with-vkdevices-apiversion/3377/3 "2021-03-26T17:57:15Z")

</div>

Hi andreyogld3d,

After reviewing the Vulkan specification, on a note about VkPhysicalDeviceProperties::apiVersion ([Vulkan® 1.2.162 - A Specification (with all registered extensions)](https://vulkan.lunarg.com/doc/view/1.2.162.0/mac/chunked_spec/chap6.html#devsandqueues-physical-device-enumeration)), turns out Vulkan can have different API versions for instance and device. The application should not be using functionality that is beyond the max supported corresponding version: The API version returned by vkEnumerateInstanceVersion is associated to the instance, and the one by VkPhysicalDeviceProperties::apiVersion, to the physical device:

_The value of apiVersion may be different than the version returned by vkEnumerateInstanceVersion; either higher or lower. In such cases, the application must not use functionality that exceeds the version of Vulkan associated with a given object. The pApiVersion parameter returned by vkEnumerateInstanceVersion is the version associated with a VkInstance and its children, except for a VkPhysicalDevice and its children. VkPhysicalDeviceProperties::apiVersion is the version associated with a VkPhysicalDevice and its children._

There are notes on this regard also in the usage of extensions ([Vulkan® 1.2.162 - A Specification (with all registered extensions)](https://vulkan.lunarg.com/doc/view/1.2.162.1/mac/chunked_spec/chap4.html#fundamentals-validusage-extensions)):

_Instance-level functionality or behavior added by an instance extension to the API must not be used unless that extension is supported by the instance as determined by vkEnumerateInstanceExtensionProperties, and that extension is enabled in VkInstanceCreateInfo._

_Device functionality or behavior added by a device extension to the API must not be used unless that extension is supported by the device as determined by vkEnumerateDeviceExtensionProperties, and that extension is enabled in VkDeviceCreateInfo._

So the validation errors you’re getting with vkCreateDevice seem to be following the official Vulkan spec I’m afraid:

- vkCreateDevice is trying the be created with version 1.1 when it supports up to 1.0.76.
- The extensions VK\_KHR\_shader\_draw\_parameters, VK\_KHR\_get\_memory\_requirements2, VK\_KHR\_dedicated\_allocation and VK\_KHR\_relaxed\_block\_layout require Device API version 1.1, but your Device API version is 1.0.76.

Best regards,  
Alejandro

---

<div class="post-metadata">

**Author:** ![andreyogld3d](https://sea1.discourse-cdn.com/flex015/user_avatar/forums.imgtec.com/andreyogld3d/32/255_2.png) [@andreyogld3d](https://forums.imgtec.com/u/andreyogld3d)\
**Post date:** [March 27, 2021, 7:29am UTC](https://forums.imgtec.com/t/vulkan-vkinstances-apiversion-mismatchs-with-vkdevices-apiversion/3377/4 "2021-03-27T07:29:37Z")

</div>

Hi

> [@](#):
>
> - vkCreateDevice is trying the be created with version 1.1 when it suports up to 1.0.76.

So, sould I recreate VkInstance with 1.0.76 ? Because in this case I will not get any validation errors.

> [@AlejandroC](#):
>
> The extensions VK\_KHR\_shader\_draw\_parameters, VK\_KHR\_get\_memory\_requirements2, VK\_KHR\_dedicated\_allocation and VK\_KHR\_relaxed\_block\_layout require Device API version 1.1, but your Device API version is 1.0.76.

Any way, this device supports these extensions for 1.0.76, so I could add them for extension list for VkDevice creation, but what about validation’s error message in this case?

---

<div class="post-metadata">

**Author:** ![AlejandroC](https://avatars.discourse-cdn.com/v4/letter/a/97f17d/32.png) [@AlejandroC](https://forums.imgtec.com/u/AlejandroC)\
**Post date:** [March 29, 2021, 9:28am UTC](https://forums.imgtec.com/t/vulkan-vkinstances-apiversion-mismatchs-with-vkdevices-apiversion/3377/5 "2021-03-29T09:28:24Z")

</div>

Hi andreyogld3d,

You are right, you should create the instance with API version 1.0.76.

In that case, you should not get the best practices layer validation warnings, since in 1.0.76 it makes sense to use those extensions (it is from v1.1 onwards when you should use for each extension its promoted core functionality).

Best regards,  
Alejandro

---

<div class="post-metadata">

**Author:** ![andreyogld3d](https://sea1.discourse-cdn.com/flex015/user_avatar/forums.imgtec.com/andreyogld3d/32/255_2.png) [@andreyogld3d](https://forums.imgtec.com/u/andreyogld3d)\
**Post date:** [March 29, 2021, 5:22pm UTC](https://forums.imgtec.com/t/vulkan-vkinstances-apiversion-mismatchs-with-vkdevices-apiversion/3377/6 "2021-03-29T17:22:45Z")

</div>

Hi @AlejandroC Thank youi for your answer!

---

<div class="post-metadata">

**Author:** ![AlejandroC](https://avatars.discourse-cdn.com/v4/letter/a/97f17d/32.png) [@AlejandroC](https://forums.imgtec.com/u/AlejandroC)\
**Post date:** [March 30, 2021, 1:32pm UTC](https://forums.imgtec.com/t/vulkan-vkinstances-apiversion-mismatchs-with-vkdevices-apiversion/3377/7 "2021-03-30T13:32:02Z")

</div>

Hi andreyogld3d,

You are welcome, please let us know if you have any other issues we could help you with.

Best regards,  
Alejandro
