Choosing the right vkCreate*SurfaceKHR at compile/runtime


I’m trying to port an engine that has been designed for OpenGLES to Vulkan. The current test scenario is to create a VkSurfaceKHR from a QWidget.

With GLES I could create an EGLSurface by getting a native window id from QWidget::winId() then cast this to EGLNativeWindowType and feed it to the third parameter of eglCreateWindowSurface. I don’t know why this works, I suspect EGLNativeWindowType is internally the same Qt uses.

Now my question is: Is there a way to detect the WSI qt uses at compile time, then choose vkCreate*SurfaceKHR accordingly?