diff --git a/common/vk-api.c b/common/vk-api.c index 2797291..d99ee37 100644 --- a/common/vk-api.c +++ b/common/vk-api.c @@ -17,7 +17,12 @@ void vk_api_load_from_icd (struct vk_api* vk) { /* load API entry points from ICD */ - GET_ICD_PROC_ADDR (*vk, GetInstanceProcAddr); + + /* if program is linked against a Vulkan loader */ + vk->GetInstanceProcAddr = vkGetInstanceProcAddr; + /* otherwise, */ + /* GET_ICD_PROC_ADDR (vk, GetInstanceProcAddr); */ + GET_PROC_ADDR (*vk, EnumerateInstanceLayerProperties); GET_PROC_ADDR (*vk, EnumerateInstanceExtensionProperties); GET_PROC_ADDR (*vk, CreateInstance); diff --git a/common/vk-api.h b/common/vk-api.h index 1848d4d..fd33fd9 100644 --- a/common/vk-api.h +++ b/common/vk-api.h @@ -14,11 +14,14 @@ #include +/* This is only necessary if program is linked to a Vulkan vendor driver\ + * directly + */ PFN_vkVoidFunction vk_icdGetInstanceProcAddr (VkInstance instance, const char* pName); - #define GET_ICD_PROC_ADDR(api, symbol) \ - (api).symbol = (PFN_vk ##symbol) vk_icdGetInstanceProcAddr(NULL, "vk" #symbol); + api.symbol = (PFN_vk ##symbol) vk_icdGetInstanceProcAddr(NULL, "vk" #symbol); + #define GET_PROC_ADDR(api, symbol) \ (api).symbol = (PFN_vk ##symbol) (api).GetInstanceProcAddr(NULL, "vk" #symbol);