Skip to content

Commit f8d2e23

Browse files
authored
Major refactoring with fast scan and full PATH scan
1 parent 5533a47 commit f8d2e23

File tree

1 file changed

+115
-19
lines changed

1 file changed

+115
-19
lines changed

amdocl.bat

Lines changed: 115 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
@echo off
2-
echo OpenCL fix for AMD GPU's
2+
cls
3+
echo OpenCL Driver (ICD) Fix for AMD GPU's
34
echo By Patrick Trumpis (https://github.com/ptrumpis/OpenCL-AMD-GPU)
45
echo Inspired by https://stackoverflow.com/a/28407851
56
echo:
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-
2424
SETLOCAL 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+
)
2734
echo:
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
49107
echo:
50108
echo Done.
51109
echo:
52110
pause
111+
112+
:exit
53113
exit /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

Comments
 (0)