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