Skip to content

Commit 4838660

Browse files
nrspruitbmyates
authored andcommitted
Enable support for Alternate drivers in windows with ZE_ENABLE_ALT_DRIVERS
Signed-off-by: Spruit, Neil R <[email protected]>
1 parent 0d30b1f commit 4838660

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

source/loader/windows/driver_discovery_win.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,34 @@
1414
#include <cfgmgr32.h>
1515
#include <devpkey.h>
1616
#include <devguid.h>
17+
#include <iostream>
18+
#include <sstream>
19+
#include <string>
1720

1821
namespace loader {
1922

2023
std::vector<DriverLibraryPath> discoverDriversBasedOnDisplayAdapters();
2124

2225
std::vector<DriverLibraryPath> discoverEnabledDrivers() {
23-
return discoverDriversBasedOnDisplayAdapters();
26+
DWORD envBufferSize = 65535;
27+
std::string altDrivers;
28+
altDrivers.resize(envBufferSize);
29+
30+
// ZE_ENABLE_ALT_DRIVERS is for development/debug only
31+
envBufferSize = GetEnvironmentVariable("ZE_ENABLE_ALT_DRIVERS", &altDrivers[0], envBufferSize);
32+
if (!envBufferSize) {
33+
return discoverDriversBasedOnDisplayAdapters();
34+
} else {
35+
std::vector<DriverLibraryPath> enabledDrivers;
36+
std::stringstream ss(altDrivers.c_str());
37+
while (ss.good()) {
38+
std::string substr;
39+
getline(ss, substr, ',');
40+
enabledDrivers.emplace_back(substr);
41+
}
42+
return enabledDrivers;
43+
}
44+
2445
}
2546

2647
bool isDeviceAvailable(DEVINST devnode) {

0 commit comments

Comments
 (0)