xref: /aosp_15_r20/external/mesa3d/src/gallium/targets/d3d10umd/README.md (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1When compiled with `gallium-driver=llvmpipe` or `gallium-driver=softpipe` the resulting libgallium_d3d10.dll implements D3D10's software rendering interface, like WARP.
2
3
4It can be used directly from WLK 1.6 and WHCK 2.0 D3D10+ tests, via the -Src
5and -SWDLL options. For example:
6
7    wgf11blend.exe -Debug -DoNotCatchExceptions -DXGI:1.1 -FeatureLevel:10.0 -Src:SW -SWDLL:libgallium_d3d10.dll -LogClean -LogVerbose
8
9However, as of WHCK version 2.1 this mechanism no longer works reliably.
10Either you use WHCK 2.0 binaries, or you must use the alternative method
11described below (of copying libgallium_d3d10.dll into the executable directory and rename
12it such that it matches the D3D10 UMD of the test machine).
13
14
15Examples can be easily modified to load it too:
16
17    D3D10CreateDeviceAndSwapChain(NULL,
18                                  D3D10_DRIVER_TYPE_SOFTWARE,
19                                  LoadLibraryA("libgallium_d3d10"), /* Software */
20                                  Flags,
21                                  D3D10_SDK_VERSION,
22                                  &SwapChainDesc,
23                                  &g_pSwapChain,
24                                  &g_pDevice);
25
26    D3D11CreateDeviceAndSwapChain(NULL, /* pAdapter */
27                                  D3D_DRIVER_TYPE_SOFTWARE,
28                                  LoadLibraryA("libgallium_d3d10"), /* Software */
29                                  Flags,
30                                  FeatureLevels,
31                                  sizeof FeatureLevels / sizeof FeatureLevels[0],
32                                  D3D11_SDK_VERSION,
33                                  &SwapChainDesc,
34                                  &g_pSwapChain,
35                                  &g_pDevice,
36                                  NULL, /* pFeatureLevel */
37                                  &g_pDeviceContext); /* ppImmediateContext */
38
39
40Alternatively, it can be renamed into the system's D3D10 UMD driver (e.g.,
41vm3dum_10.dll for VMware vGPU, nvwgf2um.dll for NVIDIA GPU), and placed into
42the application directory, or system's directory, and used instead.
43
44For the DLL to be picked from the application directory you'll need to do the
45following once:
46
47    reg add "HKLM\System\CurrentControlSet\Control\Session Manager" /v "SafeDllSearchMode" /t REG_DWORD /d 0 /f
48
49See also https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
50