I'm having some difficulties using Swiftshader on macOS and I just want to check some of my assumptions. I have it configured so that the loader sees it as one of three available ICD's (the Intel and NVidia hardware being the other ones). When I select the Swiftshader ICD however I cannot get a valid surface. I'm hoping someone here has trod this path before and might have a pointer.
1. I'm using the Qt framework, but not using the Qt's built in Vulkan support (doing it myself - and it works fine against the hardware ICD's).
2. I am creating a QWindow for rendering, and have the surface type set to QSurface::MetalSurface (I have also tried QSurface::VulkanSurface). Do I actually need a Metal Surface since this is a software renderer... which leads me to...
3. I'm using VkMetalSurfaceCreateInfoEXT and vkCreateMetalSurfaceEXT to create the surface. The VkSurfaceCapabilitiesKHR structure comes back blank, but vkGetPhysicalDeviceSurfaceSupportKHR returns VK_SUCCESS.
Since the ICD can supposedly be used as a drop in replacement, I assumed all the original metal calls were fine, and that Swiftshader was using Metal for perhaps very fast blits. Assumptions get us into trouble do they not?
Am I going about this the right way at all?
Thanks in advance for any tips or pointers,