I’m learning Vulkan by developing simple game engine and i have problem after updating drivers.
My application crashes almost every time when call function vkEnumerateInstanceExtensionProperties
I did everything what was wrote here: https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/302
Reinstalling Drivers Vulkan SDK, VulkanRT, Installing Vulkan SDK without installing VulkanRT, Installing everything, Installing as administrator… nothing helps.
Please help.
My specification:
Windows 10
Visual Studio 2017
VulkanSDK 1.1.101.0
Graphics Cards:
GeForce 1060 Max-q Driver 419.35
and
Intel HD Graphics 630
ERROR FRAGMENT:
‘YasEngine.exe’ (Win32): Unloaded ‘C:\Windows\System32\DriverStore\FileRepository\nvdmi.inf_amd64_29a377e944363297\nvoglv64.dll’
‘YasEngine.exe’ (Win32): Unloaded ‘C:\Windows\System32\dxgi.dll’
Exception thrown at 0x0000000070722DC3 in YasEngine.exe: 0xC0000005: Access violation executing location 0x0000000070722DC3.
Whenever i launch application there is about 10% chance that it will crash at start on vk::enumerateInstanceExtensionProperties.
After some debugging, I noticed that crash happens in some side-thread spawned in nvoglv64.dll.
If I freeze this crashed thread in debugger and continue the program, everything works perfectly.
So pretty sure it is drivers fault.
Just for info, I only link to glfw3.lib and vulkan-1.lib
Even tried to put vk::enumerate at first line in main before everything, still crashes.
@GPSoofy thank you for your answare because I checked code with vkEnumerateInstanceExtensionProperties from book Learning Vulkan and there is not that error.
@Neithy like I said above it is problem in our code.
And this is code, (it’s working) from: Learning Vulkan Author: Parminder Singh
VkResult VulkanLayerAndExtension::getExtensionProperties(LayerProperties &layerProps, VkPhysicalDevice* gpu)
{
uint32_t extensionCount; // Stores number of extension per layer
VkResult result; // Variable to check Vulkan API result status
char* layerName = layerProps.properties.layerName; // Name of the layer
do {
// Get the total number of extension in this layer
if(gpu)
result = vkEnumerateDeviceExtensionProperties(*gpu, layerName, &extensionCount, NULL);
else
result = vkEnumerateInstanceExtensionProperties(layerName, &extensionCount, NULL);
if (result || extensionCount == 0)
continue;
layerProps.extensions.resize(extensionCount);
// Gather all extension properties
if (gpu)
result = vkEnumerateDeviceExtensionProperties(*gpu, layerName, &extensionCount, layerProps.extensions.data());
else
result = vkEnumerateInstanceExtensionProperties(layerName, &extensionCount, layerProps.extensions.data());
} while (result == VK_INCOMPLETE);
return result;
}
You know bug could be earlier in the code, something not initilized or something.
I dont want to argue but example from book about which i was writing never (literaly never) throws that error so… I’m sure we are doing something wrong. @NVIDIA#NVIDIA maybe you say something?