11@ echo off
2- echo OpenCL fix for AMD GPU's
2+ cls
3+ echo OpenCL Driver (ICD) Fix for AMD GPU's
34echo By Patrick Trumpis (https://github.com/ptrumpis/OpenCL-AMD-GPU)
45echo Inspired by https://stackoverflow.com/a/28407851
56echo :
7+ echo :
68
79> nul 2 >& 1 " %SYSTEMROOT% \System32\cacls.exe" " %SYSTEMROOT% \System32\config\system" && (
810 goto :run
911) || (
1012 echo Execution stopped
11- echo ==================
13+ echo =================
1214 echo This script requires administrator rights.
1315 echo Please run it again as administrator.
1416 echo You can right click the file and select 'Run as administrator'
@@ -19,35 +21,129 @@ echo:
1921)
2022
2123:run
22- SET ROOTKEY = HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors
23-
2424SETLOCAL EnableDelayedExpansion
2525
26- echo Now scanning your PATH for amdocl.dll files, please wait...
26+ SET ROOTKEY64 = HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors
27+ SET ROOTKEY32 = HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\OpenCL\Vendors
28+
29+ echo Currently installed OpenCL Client Driver's - 64bit
30+ echo ==================================================
31+ for /f " tokens=1,*" %%A in ('reg query %ROOTKEY64% ') do (
32+ echo %%A - %%B
33+ )
2734echo :
2835
29- for %%a in ( " %path: ; = ";" % " ) do (
30- if " %%~a " neq " " (
31- cd /D %%a
32- for /r %%f in (*amdocl*dll) do (
33- set FILE = " %%~dpnxf "
34- echo Found: !FILE!
36+ echo Currently installed OpenCL Client Driver's - 32bit
37+ echo ==================================================
38+ for /f " tokens=1,* " %%A in ('reg query %ROOTKEY32% ') do (
39+ echo %%A - %%B
40+ )
41+ echo :
3542
36- reg query %ROOTKEY% /v !FILE! > nul 2 >& 1
43+ echo :
44+ echo This script will now attempt to find and install unregistered OpenCL AMD drivers from Windows (Fast Scan).
3745
38- if not !ERRORLEVEL! == 0 (
39- reg add %ROOTKEY% /v !FILE! /t REG_DWORD /d 0 /f
46+ :askUserFastScan
47+ set " INPUT = "
48+ set /P " INPUT = Do you want to continue? (Y/N): "
49+ if /I " !INPUT! " == " Y" (
50+ echo :
51+ echo :
52+ goto :scanFilesFast
53+ ) else if /I " !INPUT! " == " N" (
54+ goto :exit
55+ ) else (
56+ goto :askUserFastScan
57+ )
4058
41- IF !ERRORLEVEL! == 0 (
42- echo Added: !FILE!
43- )
44- )
45- )
59+ :scanFilesFast
60+ echo Running AMD OpenCL Driver Auto Detection
61+ echo ========================================
62+ echo :
63+
64+ echo Scanning '%SYSTEMROOT% \system32' for 'amdocl*.dll' files, please wait...
65+ echo :
66+
67+ cd /d %SYSTEMROOT% \system32
68+ call :registerMissingClientDriver
69+
70+ echo :
71+ echo Fast Scan complete.
72+ echo :
73+
74+ echo :
75+ echo This script will now attempt to find and install any unregistered OpenCL AMD drivers found on your computer (Full Scan).
76+
77+ :askUserFullScan
78+ set " INPUT = "
79+ set /P " INPUT = Do you want to continue? (Y/N): "
80+ if /I " !INPUT! " == " Y" (
81+ echo :
82+ echo :
83+ goto :scanFilesFull
84+ ) else if /I " !INPUT! " == " N" (
85+ goto :complete
86+ ) else (
87+ goto :askUserFullScan
88+ )
89+
90+
91+ :scanFilesFull
92+ echo Now scanning your PATH for 'amdocl*.dll' files, please wait...
93+ echo :
94+
95+ for %%A in (" %path:; =";" % " ) do (
96+ if " %%~A " neq " " (
97+ cd /d %%A
98+ call :registerMissingClientDriver
4699 )
47100)
48101
102+ echo :
103+ echo Full Scan complete.
104+ echo :
105+
106+ :complete
49107echo :
50108echo Done.
51109echo :
52110pause
111+
112+ :exit
53113exit /b 0
114+
115+ :registerMissingClientDriver
116+ for /r %%f in (amdocl*dll) do (
117+ set FILE = " %%~dpnxf "
118+
119+ for %%A in (amdocl.dll amdocl12cl.dll amdocl12cl64.dll amdocl32.dll amdocl64.dll) do (
120+ if " %%~nxf " == " %%A " (
121+ echo Found: !FILE!
122+
123+ set FILE_BIT = !FILE:~-7 ,-5 !
124+
125+ if !FILE_BIT! == 64 (
126+ set " ROOTKEY = !ROOTKEY64! "
127+ ) else (
128+ set " ROOTKEY = !ROOTKEY32! "
129+ )
130+
131+ reg query !ROOTKEY! > nul 2 >& 1
132+ if !ERRORLEVEL! neq 0 (
133+ reg add !ROOTKEY! /f
134+ echo Added Key: !ROOTKEY!
135+ )
136+
137+ reg query !ROOTKEY! /v !FILE! > nul 2 >& 1
138+
139+ if !ERRORLEVEL! neq 0 (
140+ reg add !ROOTKEY! /v !FILE! /t REG_DWORD /d 0 /f > nul 2 >& 1
141+
142+ if !ERRORLEVEL! == 0 (
143+ echo Installed: !FILE!
144+ )
145+ )
146+ )
147+ )
148+ )
149+ goto :eof
0 commit comments