Vulkan Building error - vulkan

I want to build a sample included in Vulkan SDK.
I downloaded the SDK from http://vulkan.lunarg.com and install it.
Then I opened the Visual Studio (I have a 2013 version), I open the solution from this path: (C:\VulkanSDK\1.0.13.0\Demos). I choose DEMOS.sln file. Then when I click on LocalWindowsDebugger this message pops up:
vkCreateInstance Failure:
vkEnumerateInstanceExtensionProperties failed to find the VK_KHR_surface extention.
Do you have a compatible Vulkan installable client driver (ICD) insatalled? Please look at the Getting Started guide for additional information.
I have never worked with vulkan, but as it named "Demo", I think that everything inside of it should be set in order to work.
I searched the web, but as it is new, there are few resources talked about it.
What is ICD? and how to install it? (is it different from installer of VulkanSDK?) OR this error is about completely different property? like setting properties of VisualStudio?

ICD is basically your GPU driver...
Both the SDK and driver install vulkaninfo app. Use it to determine what extensions you have and whatnot.
BTW Some time ago AMD drivers forgot to export the extensions like VK_KHR_surface. Make sure you are using the latest driver (16.5.2.1 on AMD and 365.19 on NVIDIA as of time of writing).
Also you need supported GPU. Consult:
NVIDIA supported GPUs
AMD supported GPUs
Khronos maintained list
BTW: All the demos work for me.

Do you have a compatible Vulkan installable client driver (ICD) installed?
This message tells you that Vulkan's loader wasn't able to find a Vulkan driver on your device. ICD is the installable client driver that comes with the driver of your graphics card.
What GPU are you using and do you have a driver installed that actually supports Vulkan? Note that while your card may support OpenGL it may not support Vulkan.

Check NVIDIA(performance mode) is selected at "Nvidia X Server Settings" application if you are using ubuntu.

Related

Vulkan support on Windows Sandbox / Hyper-V Windows 11

The latest Windows 11 has Vulkan support to Windows Sandbox and maybe Hyper-V so when the sandbox loads Windows, it has vulkaninfo available and running. and in device manager there is the actual GPU not just an emulated one.
So I tried running Vulkan application such as vkcube, and my own application. But it is missing VK_KHR_swapchain extention. Is there a way to make it work? If I try vkcube I get that VK_KHR_swapchain is missing vkCreateInstance:
failure vkEnumatedDeviceExtensionProperties failed to find the VK_KHR_swapchain extention
Do you have a compatible Vulkan installable client driver (ICD) installed?
So why does vulkaninfo show long list of available information but missing this? What is the meaning of Vulkan support if this basic part is missing?
Is there a workaround?
Tried configuring sandbox with vGpu enabled but this removed the vulkaninfo. Any suggestions?
Thanks
link to vulkan info output on the sandbox virtual machine

Vulkan driver api vs sdk api support

I have NVIDIA driver v 378.92 installed, and according to the nvidia website since driver version 377.14, driver supports vulkan api 1.0.42.1. My vulkan SDK api version is 1.0.42.2. However when I check for my device support info, using vkjson_info.exe in the vulkan SDK, there's stated that only apiVersion 1.0.37 is supported.
I'm a bit confused how this works, can anyone enlighten this?
The reported version could be limited by the Vulkan Loader/Runtime it finds. First is this Windows or Linux?
If you have the Vulkan SDK 1.0.42.2 installed, can you run the VIA tool? It should generate an HTML output. If you look at the "Runtimes" section, you should see which ones are available and which one it's using. For best results, try running it from the same folder as vkjson_info.exe. But, it should give you a good idea if you just run it anywhere.
"1.0.42.1" is not a Vulkan version. Vulkan only has three levels (i.e. major.minor.patch). So the "1.0.37" is likely correct and the "1.0.42.1" is likely the version of some LunarG Vulkan SDK or possibly Vulkan Runtime that comes with it.
There are usually several types of versions flying around:
The Vulkan driver version. It is of the major.minor.patch format and it is in VkPhysicalDeviceProperties::apiVersion or can be obtained by a tool such as VHCV.
Optionally SDK/Layers version on the runtime machine. LunarG Vulkan SDK versioning of the form vulkan_major.vulkan_minor.vulkan_patch.optionally_SDK_patch.
Vulkan Runtime of the runtime machine — It is basically The Vulkan Loader dll (if the application uses that). Both SDK and drivers install this (and coexist) and they use their own versioning scheme. The SDK version also installs the Validation Layers to the system.
SDK/Header on the application developer machine. Versioning as described above. The vulkan.h header is always 1.0 and so has only single number version — VK_HEADER_VERSION (which matches the Vulkan patch version — but does not have to in the future)
SDK/Header on the driver developer machine. Versioning as described above. Should really be the same as Vulkan driver version. And most likely the Vulkan RT installed by the driver will be the same version. But I think I have seen this to differ.
It should not matter, because all patch versions are supposed to be both-ways compatible (in reality not really — there were some changes, but driver makers seem to keep up so far providing updated drivers, so it is not an issue). And in fact that is the only thing I could find in the driver documentation: "Vulkan 1.0" support.
I hope you are so enlightened now that you reached the ultimate state of boredom.
377 is a beta version driver from https://developer.nvidia.com/vulkan-driver . There is no guarantee that beta feature will be carried over to the subsequent release version. And according to http://vulkan.gpuinfo.org/listreports.php it didn't (378 indeed have 1.0.37 and 377 have 1.0.42 and more importantly has the extensions you want to try). Continue to use the beta for now if you want the features within it. As for Layers and other SDK features you should not need newer drivers — in fact you should always use the latest to benefit from Validation Layer bugfixes and improvements.

Relation between application .dll files and system installed .dll/.sys files (specifically, FTDI drivers)

I'm working on a project which uses the D2XX drivers from FTDI chip.
We are delivering the ftd2xx.dll file as part of our application. As far as I understand, the other files (e.g. ftdibus.sys) are installed on the system (at least for Windows) where the application runs. Linux is also a target for us, but let's ignore that for simplicity now.
My question is regarding the relation between these files? If, for example, I upgrade the ftd2xx.dll file delivered with our application, will users have to install the newest drivers? What if they do not?
In addition to the specific FTDI drivers, any general source of information on this area is also very welcome.
I used to work on a project that made use of FTDI's D2XX library.
There is no tight coupling between the exact version of ftd2xx.dll and ftdibus.sys. I believe the interface between ftd2xx.dll and the kernel mode driver is version independent at the basic feature level (at least since version 2.04.06 or so). There is even functions in the DLL to query DLL and driver versions respectively.
Thus, it can happen that they are 'out of sync'. I.e. ftd2xx.dll could be one from a more recent release than ftdibys.sys or vice versa. That is not a problem as such.
You are of course in complete control of the ftd2xx.dll version, but how does the driver package get installed? Is it installed as part of your application, or do you rely on the user obtaining the driver from another source? If your application has an installer, it could be an option to include FTDI's driver package in the installation. Thereby you will know which driver version is available.
What can be really tricky (and what has caused me headaches) is if there are other devices on the PC that use FTDI's chip. If such a device is supplied with media containing an older version of the driver and the user chooses to install this driver, it will simply overwrite any existing version of the driver (e.g. the version that your installer provided). This is a potential cause of regression, because FTDI has resolved a lot of bugs in the driver over the years.
If I were you, I would check the driver version at runtime and compare it to a version that is known to work (the version that you tested your application with). If the driver is older, suggest the user to upgrade it. Otherwise I would assume it is compatible.

Vulkan SDK setup: vkEnumerateInstanceExtensionProperties failed to find the VK_KHR_surface extension

I tried to run the Vulkan cube example after downloading the Vulkan SDK but get the following
vkEnumerateInstanceExtensionProperties failed to find the VK_KHR_surface extension.
Do you have a compatible Vulkan installable client driver (ICD) installed?
I have a Nvidia GK107M [Geforce GT 755M] graphics card.
Regarding the graphics driver, the output of
lshw -c video | grep 'configuration' is
configuration: driver=nvidia latency=0
configuration: driver=i915 latency=0
And when I see through the driver manager it shows Nvidia-352 graphics driver. Earlier I was using Nouveau display driver which I disabled thinking that it might not support Vulkan and the Nvidia driver would. But still the same thing persists.
On running .\vulkaninfo I got a message saying that vulkan instance creation failed with VK_ERROR_INCOMPATIBLE_DRIVER.
P.S: I am using the latest Vulkan SDK releases today only. I am going to try the older SDK versions. Maybe they would work.
P.P.S: I have run into a black /blank screen issue after updating Nvidia driver to 370 and rebooting.
Optimus. Well, there you have it. To quote directly from the driver package documents:
Some designs incorporating supported GPUs may not be compatible with the NVIDIA Linux driver: in particular, notebook and all-in-one desktop designs with switchable (hybrid) or Optimus graphics will not work if means to disable the integrated graphics in hardware are not available. Hardware designs will vary from manufacturer to manufacturer, so please consult with a system's manufacturer to determine whether that particular system is compatible.
So, you need to disable it (in BIOS) if possible (as it says above).
Or get updated driver from the notebook manufacturer (Well, as much chance as seeing Android update on chinatablet. If they even bother with linux support.).
Or expect exactly the kind of problems and hackery with no guaranteed success you face.
The v352 driver you have wouldn't support Vulkan. It is older than Vulkan.
Nouveau to my knowledge doesn't support Vulkan (yet) either.
There's 3 places that the Vulkan loader looks to find a Linux driver's JSON definition file:
/etc/vulkan/icd.d
/usr/share/vulkan/icd.d
And wherever you define "VK_DRIVERS_PATH" to.
If you don't have a JSON in one of those locations for your Nvidia driver that would be a problem.
Secondly, if you do have the JSON file, but it's "library_path" entry doesn't point to a valid driver, that would also not work.
Try looking for those files.

Simple-OpenNI for Processing fatal errors with the Kinect

I have been using SimpleOpenNI, a wrapper for Processing, all summer now. I use it for the Kinect to make games and demos. Last week, I have been getting a fatal error in my processing window and none of the SimpleOpenNI projects will work. Here is the error:
SimpleOpenNI Version 0.20
A fatal error has been detected by the Java Runtime Environment:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x72e8f955, pid=4596, tid=4624
JRE version: 6.0_24-b07
Java VM: Java HotSpot(TM) Client VM (19.1-b02 mixed mode windows-x86 )
Problematic frame:
C [OpenNI.dll+0xf955]
An error report file with more information is saved as:
C:\Users\mss042\Desktop\processing-1.5.1\hs_err_pid4596.log
If you would like to submit a bug report, please visit:
http://java.sun.com/webapps/bugreport/crash.jsp
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.
It appears as if the new OpenNI/NITE/SensorKinect drivers do not work with the SimpleOpenNI wrapper. I have tried it with people using the old drivers and everything still works. Problem is, you cannot download the old drivers off of the websites so I cannot test if it's that or not. You can see everything I've downloaded from the simpleopenni site: http://code.google.com/p/simple-openni/
Any help with this error would be appreciated. Thanks.
Mike
It looks like there's a problem with OpenNI.dll. Make sure that:
You have the dll (It should be in Program Files where you've installed OpenNI)
Make sure you've got the Environment Variables for the Open NI paths and that the paths are correct, otherwise, you might have the .dll file, but the .jnilib wouldn't know where it is.
Had a Kinect Workshop in Uni, and my colleagues using Windows all had issues with the drivers,
so I'm just passing on what they did:
Even though they had 64-bit versions of Windows they used the 32-bit version, and used Brekel OpenNI Kinect Auto Installer - Developer Edition v1.3.2.3.exe(direct link via developkinect.com) after reading this message:
Comment 4 by tijmenva...#gmail.com, Oct 21, 2011 Hey all I have Solved
the unsatisfied link dll error on windows 7 64 bits by installing java
runtime (jre-7u1-windows-i586.exe)and (Brekel OpenNI Kinect Auto
Installer - Developer Edition v1.3.2.3.exe) I uninstalled everything
and than it worked :)
hope this helpes
in Issue#17 on the SimpleOpenNI project issues page.
Another colleague used Synapse and OSC in Processing instead of SimpleOpenNI, but she had loads of errors with the drivers (basically spent a few good hours uninstalling/installing different versions). In her case, uninstalling any previous partial or complete drivers from the machine and deleting any registry entries related to PrimeSense(Sensor, Nite) and OpenNI, then using the installers from the links on the Synapse page, worked for her.
HTH
This is a long shot, but that exact error is also given if the Kinect USB and/or power supply simply becomes unplugged. Thought it was worth mentioning as it is not obvious from the error message itself and it may help someone out if they kicked their power supply and started searching for the above exception :)