1 #include "gpu_tests.h"
2 #include "d3d11/gpu.h"
3 #include <dxgi1_2.h>
4 
main()5 int main()
6 {
7     pl_log log = pl_test_logger();
8     IDXGIFactory1 *factory = NULL;
9     IDXGIAdapter1 *adapter1 = NULL;
10     HRESULT hr;
11 
12     HMODULE dxgi = LoadLibraryW(L"dxgi.dll");
13     if (!dxgi)
14         return SKIP;
15 
16     PFN_CREATE_DXGI_FACTORY pCreateDXGIFactory1 =
17         (void *) GetProcAddress(dxgi, "CreateDXGIFactory1");
18     if (!pCreateDXGIFactory1)
19         return SKIP;
20 
21     pCreateDXGIFactory1(&IID_IDXGIFactory1, (void **) &factory);
22 
23     // Test all attached devices
24     for (int i = 0;; i++) {
25         hr = IDXGIFactory1_EnumAdapters1(factory, i, &adapter1);
26         if (hr == DXGI_ERROR_NOT_FOUND)
27             break;
28         if (FAILED(hr)) {
29             printf("Failed to enumerate adapters\n");
30             return SKIP;
31         }
32 
33         DXGI_ADAPTER_DESC1 desc;
34         hr = IDXGIAdapter1_GetDesc1(adapter1, &desc);
35         if (FAILED(hr)) {
36             printf("Failed to enumerate adapters\n");
37             return SKIP;
38         }
39         SAFE_RELEASE(adapter1);
40 
41         const struct pl_d3d11 *d3d11;
42         struct pl_d3d11_params params = pl_d3d11_default_params;
43         params.debug = true;
44         params.adapter_luid = desc.AdapterLuid;
45         d3d11 = pl_d3d11_create(log, &params);
46         REQUIRE(d3d11);
47 
48         gpu_shader_tests(d3d11->gpu);
49 
50         pl_d3d11_destroy(&d3d11);
51     }
52 
53     SAFE_RELEASE(factory);
54 }
55