Incompatible Driver for New Surface Pro 2017

Hey everyone! Forgive me if this post has been asked before. I tried looking and couldnt find what I needed.

Well I wanted to know if Vulkan is supported for the New Surface Pro 2017?
Specs are:
-Intel Core i7-7660U CPU
-Intel Iris Plus Graphics 640
-According to DirectX Diagnostic Tool I have driver version

I am using Visual Studio 2017. Ive looked around and Ive seen that Vulkan 1.0 only, then up to 1.0.50 and recently up to 1.0.60 version is supported. So I am a bit confused. I get an exception when trying to create the instance with vkCreateInstance. Even the samples are not working. Anyone have any ideas? Am I missing something or is it not supported?

Thanks again for the help.

Should be supported (unless MS did something to actively break it).
Try updated drivers from Intel.

Those versions are interchangeable. The last number is bugfix\clarifications of the Vulkan specification and can change weekly.
The drivers package updates that when it feels like it. It has little bearing on functionality, except it signalls the driver was recently updated and is (hopefully) bit more mature.

Thanks for the reply. Yeah I tried downloading those drivers but it says its unsupported for this system. Just thought that since im in version 22, it didnt like downgrading to 15 or something. Just not sure why it would fail.

That might be one of the “actively breaking things” I spoke of. I wonder if they made a custom driver with the purpose of disabling Vulkan (getting my tin foil cap on)…

Maybe try downloading driver package from MS: Download drivers and firmware for Surface - Microsoft Support
I mean if it is 2017 Vukan should work OOTB. Besides, this should be downloaded automagically from Windows Update. But worth a shot.

Maybe to satisfy my curiosity, try going to the Device Manger. Who is listed as the Vendor of the driver; MS or Intel? What is the driver date?

Also check if the Vulkan infrastructure is in place. There is a tool for that, but I prefer to do it manually:

  1. In regedit go to HKLM\SOFTWARE\Khronos\Vulkan\Driver. There should be one path to a json file. (Similarly also HKLM\SOFTWARE\WOW6432Node\Khronos\Vulkan\Driver).

  2. If you look up the json file (it should exist). It should contain “ICD” entry and a path to the Vulkan part of the driver (dll).

  3. That dll must also exist.

  4. There must also be vulkan-1.dll in C:\Windows\System32\ and C:\Windows\SysWow64\.

Hey krOoze. I already have downloaded that driver update from the link you mentioned if Surface Pro (newest) was the one Im suppose to be getting.

So under Device Manager the vendor is listed as Intel® Iris™ plus Graphics 640 and the date shown is 7/25/2017 with version

  1. I went into regedit and it didnt have the Driver folder in any of those two paths you mentioned. It only has ExplicitLayers and ImplicitLayers.

4)I do have that dll in both System32/SysWow64.

Im guessing the culprit would be not having that json file?!?

I got it to work!! I just uninstalled the graphics driver from Device Manager. Then went into the first link you sent me to download the driver. It actially worked this time which is weird. A bug maybe?!? Well now the driver date is 2/4/2018 which seems better.

Though now the only thing im getting is Access Violation when I call vkCreateGraphicsPipeline that im not getting in my desktop. It succeeds when I create it the first time but when I called it again to create a new one it gives me a violation. Its probably on my side. Will have to dig in deeper on it and see whats going on.


Unnecessarily obsolete; as expected.

Yes, without it the Vulkan loader would think there is no driver and return VK_ERROR_INCOMPATIBLE_DRIVER

I guess. Though awfully specific one.

Also the new driver is 23.X, so should not really complain about versions. Sometimes the notebook vendor makes some embellishments. Does everything work as before (especially function keys, overlays - e.g. volume meter if there was one, external display port works)?

Those happen. Try Validation Layers.
Sometimes the driver itself does not like some arguments, in which case report it for all our sakes.

Yeah everything seems to be working. Thanks for the help! No issues that I have seen.

Alright any specific validation layers I should include?

This is the error that the validation layer outputs: “Object: 0x0 | Push constant range covering variable starting at offset 0 not declared in layout”

Looking into what this means…

It means that your VkPipelineLayout for a pipeline needs to declare the push constant range that your shaders are using, but it didn’t.

Yup that was it! Its weird that my desktop doesnt catch it that error but on my surface pro it did. Well either way thanks for your replies! :slight_smile: