Currently, the loader only makes sure physical device functions aren't NULL before calling a drivers physical device function pointer. In some cases, the driver might return non-null for these functions but not actually support the function, causing crashes in the driver.
The loader should enumerate the list of device extensions that a physical device supports when vkEnumeratePhysicalDevices is called, then in each of the known device extension function terminator's make sure that the extension which provides the function is supported by the passed in physical device.
The text was updated successfully, but these errors were encountered:
No, because this is an invasive change that I didn't want to try to make happen before 1.3.
The challenge is that this will require storing the list of supported device extensions for each physical device, re querying them on each enumerate of physical devices. This is so that terminators for physical device functions can check that an extension is supported before calling into the driver.
The cause for this issue is the vkGetToolingProperties function which caused crashes in mesa because the mesa infrastructure would return non-null from vkGetInstanceProcAddr but would subsequently crash if called (as the extension may not be supported by the physical device being called on it)