VK_ERROR_INCOMPATIBLE_DRIVER on Shield tablet and Shield console

I’ve been working with Vulkan across a variety of platforms and hardware:
-Windows 8/AMD R9 280
-Ubuntu Linux/NVidia GTX 660
-NVidia Shield Tablet with developer version of Android that is supposed to support Vulkan
-NVidia Shield Console with latest Android TV that that is supposed to support Vulkan

My application initializes correctly on Windows and Linux, but on Android fails with a call to vkCreateInstance(), which returns VK_ERROR_INCOMPATIBLE_DRIVER. The setup I perform before this call is pretty minimal:
VkApplicationInfo appInfo = {};
appInfo.pApplicationName = settings.applicationName.c_str();
appInfo.applicationVersion = 1;
appInfo.pEngineName = settings.applicationName.c_str();
appInfo.engineVersion = 1;
appInfo.apiVersion = VK_API_VERSION;

VkInstanceCreateInfo instanceInfo = {};
instanceInfo.pApplicationInfo = &appInfo;
instanceInfo.enabledLayerCount = 0;
instanceInfo.ppEnabledLayerNames = nullptr;
instanceInfo.enabledExtensionCount = 0;
instanceInfo.ppEnabledExtensionNames = nullptr;

This code works fine with the other platforms but not NVidia/Android. Is this a known issue with the latest Nvidia/Android firmware or is there something special that needs to be done for this platform?

I should also mention that I am dynamically loading libvulkan.so on Android (as I am on Windows and Linux) and dynamically obtaining vkGetInstanceProcAddr() on initialization. This part works fine.

This is likely due to a mismatch between the API version (patch level) of the SDK and the drivers.

There were some related recent spec changes regarding how strict to compare the patch level that have yet to make it into all of our Android OS images.

As a work around you could use VK_MAKE_VERSION (1,0,2) instead of VK_API_VERSION for appInfo.apiVersion.


That appears to have been the problem. Thanks.