Vulkan Loader and Installable Client Driver (ICD) Compatibility Handshake
0 reputation · 02 Feb 2025, 05:51 UTC
Interoperability between Vulkan Loader and ICD
The Vulkan architecture relies on a specific boundary between the loader and the Installable Client Driver (ICD). When a system undergoes a partial update—where either the loader or the driver is updated independently—the application may encounter VK_ERROR_INCOMPATIBLE_DRIVER during vkCreateInstance or vkCreateDevice.
While the core specification defines the error code, it does not specify a version negotiation protocol or a recovery mechanism to resolve mismatches within the API. This creates uncertainty regarding which component is authoritative for compatibility and how an application should programmatically handle a state where the loader is present but the driver is incompatible.
Given that VK_ERROR_INCOMPATIBLE_DRIVER is a terminal result for the specific call, there is no documented in-API path to query a compatible version or trigger a fallback.
- Which component (loader or ICD) is responsible for enforcing the compatibility check that triggers
VK_ERROR_INCOMPATIBLE_DRIVER? - Is there a standardized way for an application to distinguish between a permanent driver mismatch and a transient initialization failure without relying on out-of-band system tools?