Windows 7 64 bit service pack 1
AMD HD 7950 videocard.
Befor i use Vulkan spec. 1.0.5
And all work fine.
vkCreateWin32SurfaceKHR get me surface = address.
Then i install Vulkan spec. 1.0.17\Crimson Amd driver 16.6.1 and vkCreateWin32SurfaceKHR get me surface = NULL !
And vkCreateWin32SurfaceKHR get me error VK_ERROR_EXTENSION_NOT_PRESENT
Strange !
When i create instance with extension “VK_KHR_win32_surface”
Then vkCreateWin32SurfaceKHR create surface, and surface = address !
But if i create instance with extension “VK_KHR_surface”
vkCreateWin32SurfaceKHR get me error and surface = NULL
But Device create only with extension “VK_KHR_surface” !
in system vulkaninfo.exe
Get me three extensions:
“VK_KHR_surface”
“VK_KHR_win32_surface”
“VK_EXT_debug_report”
Usually: Link to vulkan-1.lib (no function loading for WSI extension commands should be necessary then)
Define VK_USE_PLATFORM_X (in your case VK_USE_PLATFORM_WIN32_KHR) before first include of vulkan.h
On instance creation enable "VK_KHR_surface"and “platform” surface (in your case "VK_KHR_win32_surface"). Better to use the macros (VK_KHR_SURFACE_EXTENSION_NAME and VK_KHR_WIN32_SURFACE_EXTENSION_NAME) to avoid typing errors.
On device creation enable "VK_KHR_swapchain" (best by VK_KHR_SWAPCHAIN_EXTENSION_NAME)
PS: I would guess 0 is a valid (albeit bit inappropriate) value for a surface handle. Just try to use it.
For comparison, my platform gave me surface==1