Use vulkan as gpu fallback on all platforms

This commit is contained in:
Linus Dierheimer 2022-09-09 20:43:24 +02:00
parent 60c735d1a4
commit a926c9cf7e
No known key found for this signature in database
GPG Key ID: 74FA57726CDD7B61
2 changed files with 18 additions and 17 deletions

View File

@ -1,5 +1,6 @@
#include "gpu.h"
#include "detection/internal.h"
#include "detection/vulkan.h"
void ffDetectGPUImpl(FFlist* gpus, const FFinstance* instance);
@ -8,5 +9,11 @@ const FFlist* ffDetectGPU(const FFinstance* instance)
FF_DETECTION_INTERNAL_GUARD(FFlist,
ffListInit(&result, sizeof(FFGPUResult));
ffDetectGPUImpl(&result, instance);
if(result.length == 0)
{
const FFVulkanResult* vulkan = ffDetectVulkan(instance);
result = vulkan->gpus;
}
);
}

View File

@ -172,20 +172,20 @@ static void pciHandleDevice(FFlist* results, PCIData* pci, struct pci_dev* devic
pciDetectTemperatur(gpu, device);
}
static bool pciDetectGPUs(const FFinstance* instance, FFlist* gpus)
static void pciDetectGPUs(const FFinstance* instance, FFlist* gpus)
{
PCIData pci;
FF_LIBRARY_LOAD(libpci, instance->config.libPCI, false, "libpci.so", 4)
FF_LIBRARY_LOAD_SYMBOL(libpci, pci_alloc, false)
FF_LIBRARY_LOAD_SYMBOL(libpci, pci_init, false)
FF_LIBRARY_LOAD_SYMBOL(libpci, pci_scan_bus, false)
FF_LIBRARY_LOAD_SYMBOL(libpci, pci_cleanup, false)
FF_LIBRARY_LOAD(libpci, instance->config.libPCI, , "libpci.so", 4)
FF_LIBRARY_LOAD_SYMBOL(libpci, pci_alloc, )
FF_LIBRARY_LOAD_SYMBOL(libpci, pci_init, )
FF_LIBRARY_LOAD_SYMBOL(libpci, pci_scan_bus, )
FF_LIBRARY_LOAD_SYMBOL(libpci, pci_cleanup, )
FF_LIBRARY_LOAD_SYMBOL_ADRESS(libpci, pci.ffpci_read_byte, pci_read_byte, false)
FF_LIBRARY_LOAD_SYMBOL_ADRESS(libpci, pci.ffpci_read_word, pci_read_word, false)
FF_LIBRARY_LOAD_SYMBOL_ADRESS(libpci, pci.ffpci_lookup_name, pci_lookup_name, false)
FF_LIBRARY_LOAD_SYMBOL_ADRESS(libpci, pci.ffpci_get_param, pci_get_param, false)
FF_LIBRARY_LOAD_SYMBOL_ADRESS(libpci, pci.ffpci_read_byte, pci_read_byte, )
FF_LIBRARY_LOAD_SYMBOL_ADRESS(libpci, pci.ffpci_read_word, pci_read_word, )
FF_LIBRARY_LOAD_SYMBOL_ADRESS(libpci, pci.ffpci_lookup_name, pci_lookup_name, )
FF_LIBRARY_LOAD_SYMBOL_ADRESS(libpci, pci.ffpci_get_param, pci_get_param, )
pci.access = ffpci_alloc();
ffpci_init(pci.access);
@ -200,8 +200,6 @@ static bool pciDetectGPUs(const FFinstance* instance, FFlist* gpus)
ffpci_cleanup(pci.access);
dlclose(libpci);
return gpus->length > 0;
}
#endif
@ -209,10 +207,6 @@ static bool pciDetectGPUs(const FFinstance* instance, FFlist* gpus)
void ffDetectGPUImpl(FFlist* gpus, const FFinstance* instance)
{
#ifdef FF_HAVE_LIBPCI
if(pciDetectGPUs(instance, gpus))
return;
pciDetectGPUs(instance, gpus);
#endif
const FFVulkanResult* vulkan = ffDetectVulkan(instance);
*gpus = vulkan->gpus;
}