P4 to Git Change 1364611 by asalmanp@asalmanp-opencl-stg on 2017/01/20 19:12:14

SWDEV-111478 - [Vega] Clinfo doesn't report the CPU as a CL device.

	amdocl12cl64.dll is not loaded in Windows 10 (RS1) because the driverstore path wasn't searched to load for this module. Added the path to fix this issue.

	ReviewBoardURL = http://ocltc.amd.com/reviews/r/12211/

Affected files ...

... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#563 edit
... //depot/stg/opencl/drivers/opencl/runtime/os/os.cpp#6 edit
This commit is contained in:
foreman
2017-01-20 19:20:32 -05:00
rodzic cd7b121d91
commit 8618ed31ca
2 zmienionych plików z 26 dodań i 2 usunięć
@@ -183,7 +183,6 @@ NullDevice::create(CALtarget target)
if (NULL == compiler_) {
#if !defined(ATI_OS_LINUX)
char CompilerLibrary[220] = "";
strcpy_s(CompilerLibrary, calAttr.driverStore);
strcat_s(CompilerLibrary, "amdocl12cl" LP64_SWITCH("", "64") ".dll");
#endif
const char *library = getenv("COMPILER_LIBRARY");
@@ -969,7 +968,6 @@ Device::create(CALuint ordinal, CALuint numOfDevices)
if (NULL == compiler_) {
#if !defined(ATI_OS_LINUX)
char CompilerLibrary[220] = "";
strcpy_s(CompilerLibrary, getAttribs().driverStore);
strcat_s(CompilerLibrary, "amdocl12cl" LP64_SWITCH("", "64") ".dll");
#endif
+26
Wyświetl plik
@@ -59,6 +59,32 @@ Os::loadLibrary(const char* libraryname)
return handle;
}
#if defined(ATI_OS_WIN)
// Try with the DriverStore path
HMODULE hm = NULL;
if (!GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
| GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
(LPCSTR)&loadLibrary, &hm)) return NULL;
char cszDllPath[1024] = { 0 };
if (!GetModuleFileNameA(hm, cszDllPath, sizeof(cszDllPath)))
return NULL;
LPSTR cszFileName;
char buffer[1024] = { 0 };
if (!GetFullPathNameA(cszDllPath, sizeof(buffer), buffer, &cszFileName))
return NULL;
std::string newPath;
newPath = cszDllPath;
newPath.replace(newPath.find(cszFileName), strlen(libraryname), libraryname);
handle = Os::loadLibrary_(newPath.c_str());
if (handle != NULL) {
return handle;
}
#endif
// Try to find the lib in the current directory.
return Os::loadLibrary((std::string(".") + fileSeparator()
+ std::string(libraryname)).c_str());