@@ -33,14 +33,14 @@ static void applyDriverName(VkPhysicalDeviceDriverProperties* properties, FFstrb
3333 ffStrbufAppendC (result , ']' );
3434}
3535
36- static void detectVulkan (const FFinstance * instance , FFVulkanResult * result )
36+ static const char * detectVulkan (const FFinstance * instance , FFVulkanResult * result )
3737{
38- FF_LIBRARY_LOAD (vulkan , instance -> config .libVulkan , , "libvulkan" FF_LIBRARY_EXTENSION , 2 )
39- FF_LIBRARY_LOAD_SYMBOL (vulkan , vkGetInstanceProcAddr , )
40- FF_LIBRARY_LOAD_SYMBOL (vulkan , vkCreateInstance , )
41- FF_LIBRARY_LOAD_SYMBOL (vulkan , vkDestroyInstance , )
42- FF_LIBRARY_LOAD_SYMBOL (vulkan , vkEnumeratePhysicalDevices , )
43- FF_LIBRARY_LOAD_SYMBOL (vulkan , vkGetPhysicalDeviceProperties , )
38+ FF_LIBRARY_LOAD (vulkan , instance -> config .libVulkan , "dlopen libvulkan" FF_LIBRARY_EXTENSION " failed" , "libvulkan" FF_LIBRARY_EXTENSION , 2 )
39+ FF_LIBRARY_LOAD_SYMBOL_MESSAGE (vulkan , vkGetInstanceProcAddr )
40+ FF_LIBRARY_LOAD_SYMBOL_MESSAGE (vulkan , vkCreateInstance )
41+ FF_LIBRARY_LOAD_SYMBOL_MESSAGE (vulkan , vkDestroyInstance )
42+ FF_LIBRARY_LOAD_SYMBOL_MESSAGE (vulkan , vkEnumeratePhysicalDevices )
43+ FF_LIBRARY_LOAD_SYMBOL_MESSAGE (vulkan , vkGetPhysicalDeviceProperties )
4444
4545 //Some drivers (nvdc) print messages to stdout
4646 //and thats the best way i found to disable that
@@ -102,7 +102,7 @@ static void detectVulkan(const FFinstance* instance, FFVulkanResult* result)
102102 {
103103 dlclose (vulkan );
104104 ffSuppressIO (false);
105- return ;
105+ return "ffvkCreateInstance() failed" ;
106106 }
107107
108108
@@ -117,7 +117,7 @@ static void detectVulkan(const FFinstance* instance, FFVulkanResult* result)
117117 ffvkDestroyInstance (vkInstance , NULL );
118118 dlclose (vulkan );
119119 ffSuppressIO (false);
120- return ;
120+ return "ffvkEnumeratePhysicalDevices() failed" ;
121121 }
122122
123123 VkPhysicalDevice * physicalDevices = malloc (sizeof (VkPhysicalDevice ) * physicalDeviceCount );
@@ -127,7 +127,7 @@ static void detectVulkan(const FFinstance* instance, FFVulkanResult* result)
127127 ffvkDestroyInstance (vkInstance , NULL );
128128 dlclose (vulkan );
129129 ffSuppressIO (false);
130- return ;
130+ return "ffvkEnumeratePhysicalDevices() failed" ;
131131 }
132132
133133 PFN_vkGetPhysicalDeviceProperties2 ffvkGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2 ) ffvkGetInstanceProcAddr (vkInstance , "vkGetPhysicalDeviceProperties2" );
@@ -208,6 +208,7 @@ static void detectVulkan(const FFinstance* instance, FFVulkanResult* result)
208208 ffvkDestroyInstance (vkInstance , NULL );
209209 dlclose (vulkan );
210210 ffSuppressIO (false);
211+ return NULL ;
211212}
212213
213214#endif
@@ -232,9 +233,10 @@ const FFVulkanResult* ffDetectVulkan(const FFinstance* instance)
232233 ffListInit (& result .gpus , sizeof (FFGPUResult ));
233234
234235 #ifdef FF_HAVE_VULKAN
235- detectVulkan (instance , & result );
236+ result . error = detectVulkan (instance , & result );
236237 #else
237238 FF_UNUSED (instance );
239+ result .error = "fastfetch was compiled without vulkan support" ;
238240 #endif
239241
240242 pthread_mutex_unlock (& mutex );
0 commit comments