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