├── README.md └── install-opencl-amd.sh /README.md: -------------------------------------------------------------------------------- 1 | # AMD OpenCL PRO on Linux (DaVinci Resolve/Blender) 2 | 3 | This is a Shell Script to install AMD OpenCL PRO over Mesa Driver originally created by "Kytulendu" https://gist.github.com/kytulendu/3351b5d0b4f947e19df36b1ea3c95cbe 4 | 5 | I'm adding here some extra steps to unsure the users will have amdgpu-pro OpenCL working properly over Mesa Driver. 6 | 7 | * This was tested on Pop!_OS 20.04 (AMD/Intel ISO) with DaVinci Resolve 17 Beta, 8 | * Ryzen 7 2700X and RX580 8GB 9 | 10 | ## What you need? 11 | 12 | For better compatibility, install this packages and create a symbolic link: 13 | 14 | ```sudo apt install opencl-headers ocl-icd-libopencl1 clinfo``` 15 | 16 | ```sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/libOpenCL.so``` 17 | 18 | ## Next Step,installing only OpenCL coming from AMDGPU-PRO Driver 19 | 20 | 1. Download this Repository using git or your browser; ([Or Click Here](https://github.com/Diolinux/amd-opencl-pro-linux-resolve/blob/main/install-opencl-amd.sh)) 21 | 2. Ensure the file have permissions to "run as a program"(right click over the file, go into properties and check the box"; 22 | 3. Open the terminal on the folder were you have downloaded this shell script and run the following command with 'sudo': 23 | 24 | ```sudo ./install-opencl-amd.sh``` 25 | 26 | if you get `'sudo: ./install-opencl-amd.sh: command not found'` output, make sure the install script file has all permissions. 27 | To set all permissions via terminal run: `sudo chmod a+x ./install-opencl-amd.sh` 28 | 29 | You may receive some error messages because we are not installing the full AMDGPU-PRO, but it should work for DaVinci Resolve, Blender and other applications 30 | that need OpenCL. 31 | 32 | Credits to @rra_krr on Twitter. 33 | 34 | Hope it helps, thanks. 35 | -------------------------------------------------------------------------------- /install-opencl-amd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script will install AMDGPU-PRO OpenCL and Vulkan support. 4 | # 5 | # For Ubuntu and it's flavor, just install the package using this command 6 | # in extracted driver directory instread. 7 | # 8 | # ./amdgpu-pro-install --opencl=legacy,pal --headless --no-dkms 9 | # 10 | # For Arch Linux or Manjaro, use the opencl-amd on AUR instread. 11 | # 12 | # To use amdvlk driver, launch the program/game with this command : 13 | # 14 | # VK_ICD_FILENAMES="/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd64.json" game64 15 | # 16 | # If the program/game is 32bit, use this command : 17 | # 18 | # VK_ICD_FILENAMES="/opt/amdgpu-pro/etc/vulkan/icd.d/amd_icd32.json" game32 19 | # 20 | 21 | prefix='amdgpu-pro' 22 | # amdgpu-pro package version 23 | major='20' 24 | minor='40' 25 | build='1147286' 26 | system='ubuntu-20.04' 27 | # libdrm-amdgpu-amdgpu1 version 28 | libdrmver='2.4.100' 29 | libamd_comgrver='1.7.0' 30 | shared32="/opt/amdgpu-pro/lib/i386-linux-gnu" 31 | shared64="/opt/amdgpu-pro/lib/x86_64-linux-gnu" 32 | ids="/opt/amdgpu/share/libdrm" 33 | vk_icd="/opt/amdgpu-pro/etc/vulkan/icd.d" 34 | 35 | # make sure we’re running with root permissions. 36 | if [ `whoami` != root ]; then 37 | echo Please run this script using sudo 38 | exit 39 | fi 40 | 41 | # check for 64-bit arch 42 | if [ $(uname -m) != 'x86_64' ]; then 43 | echo This install script support only 64-bit linux. 44 | exit 45 | fi 46 | 47 | # download and extract drivers 48 | rm -r ${prefix}-${major}.${minor}-${build}-${system} &>/dev/null 49 | 50 | if [ ! -f ./${prefix}-${major}.${minor}-${build}-${system}.tar.xz ]; then 51 | wget --referer https://www.amd.com/en/support/kb/release-notes/rn-amdgpu-unified-linux-20-40 https://drivers.amd.com/drivers/linux/${prefix}-${major}.${minor}-${build}-${system}.tar.xz 52 | fi 53 | 54 | tar xJf ${prefix}-${major}.${minor}-${build}-${system}.tar.xz 55 | 56 | cd ${prefix}-${major}.${minor}-${build}-${system} 57 | 58 | echo Extracting AMDGPU-PRO OpenCL driver files... 59 | ar x "../${prefix}-${major}.${minor}-${build}-${system}/libdrm-amdgpu-amdgpu1_${libdrmver}-${build}_amd64.deb" 60 | tar xJf data.tar.xz 61 | ar x "../${prefix}-${major}.${minor}-${build}-${system}/libdrm-amdgpu-amdgpu1_${libdrmver}-${build}_i386.deb" 62 | tar xJf data.tar.xz 63 | ar x "../${prefix}-${major}.${minor}-${build}-${system}/libdrm-amdgpu-common_1.0.0-${build}_all.deb" 64 | tar xJf data.tar.xz 65 | ar x "../${prefix}-${major}.${minor}-${build}-${system}/vulkan-amdgpu-pro_${major}.${minor}-${build}_amd64.deb" 66 | tar xJf data.tar.xz 67 | ar x "../${prefix}-${major}.${minor}-${build}-${system}/vulkan-amdgpu-pro_${major}.${minor}-${build}_i386.deb" 68 | tar xJf data.tar.xz 69 | ar x "../${prefix}-${major}.${minor}-${build}-${system}/opencl-amdgpu-pro-comgr_${major}.${minor}-${build}_amd64.deb" 70 | tar xJf data.tar.xz 71 | #ar x "../${prefix}-${major}.${minor}-${build}-${system}/opencl-amdgpu-pro-dev_${major}.${minor}-${build}_amd64.deb" 72 | #tar xJf data.tar.xz 73 | ar x "../${prefix}-${major}.${minor}-${build}-${system}/opencl-amdgpu-pro-icd_${major}.${minor}-${build}_amd64.deb" 74 | tar xJf data.tar.xz 75 | ar x "../${prefix}-${major}.${minor}-${build}-${system}/opencl-orca-amdgpu-pro-icd_${major}.${minor}-${build}_amd64.deb" 76 | tar xJf data.tar.xz 77 | ar x "../${prefix}-${major}.${minor}-${build}-${system}/opencl-orca-amdgpu-pro-icd_${major}.${minor}-${build}_i386.deb" 78 | tar xJf data.tar.xz 79 | 80 | # Remove target directory 81 | echo Remove target directory. 82 | rm -r /opt/amdgpu &>/dev/null 83 | rm -r /opt/amdgpu-pro &>/dev/null 84 | 85 | # Create target directory 86 | echo Create target directory. 87 | mkdir -p ${ids} 88 | mkdir -p ${shared32} 89 | mkdir -p ${shared64} 90 | mkdir -p ${vk_icd} 91 | 92 | echo Patch and installing AMDGPU-PRO OpenCL driver... 93 | 94 | rm /etc/OpenCL/vendors/amdocl-orca64.icd 95 | rm /etc/OpenCL/vendors/amdocl-orca32.icd 96 | rm /etc/OpenCL/vendors/amdocl64.icd 97 | 98 | # For some reasons this directory is not exist on some system 99 | if [ ! -f /etc/OpenCL/vendors ]; then 100 | echo Directory /etc/OpenCL/vendors is not exist 101 | echo Creating it... 102 | mkdir -p /etc/OpenCL/vendors 103 | fi 104 | cp ./etc/OpenCL/vendors/*.icd /etc/OpenCL/vendors 105 | 106 | cp ./opt/amdgpu-pro/etc/vulkan/icd.d/*.json ${vk_icd} 107 | cp ./opt/amdgpu/share/libdrm/amdgpu.ids /opt/amdgpu/share/libdrm 108 | 109 | pushd ./opt/amdgpu/lib/i386-linux-gnu &>/dev/null 110 | rm "libdrm_amdgpu.so.1" 111 | mv "libdrm_amdgpu.so.1.0.0" "libdrm_amdpro.so.1.0.0" 112 | ln -s "libdrm_amdpro.so.1.0.0" "libdrm_amdpro.so.1" 113 | mv "libdrm_amdpro.so.1.0.0" "${shared32}" 114 | mv "libdrm_amdpro.so.1" "${shared32}" 115 | popd &>/dev/null 116 | 117 | pushd ./opt/amdgpu/lib/x86_64-linux-gnu &>/dev/null 118 | rm "libdrm_amdgpu.so.1" 119 | mv "libdrm_amdgpu.so.1.0.0" "libdrm_amdpro.so.1.0.0" 120 | ln -s "libdrm_amdpro.so.1.0.0" "libdrm_amdpro.so.1" 121 | mv "libdrm_amdpro.so.1.0.0" "${shared64}" 122 | mv "libdrm_amdpro.so.1" "${shared64}" 123 | popd &>/dev/null 124 | 125 | pushd ./opt/amdgpu-pro/lib/i386-linux-gnu &>/dev/null 126 | sed -i "s|libdrm_amdgpu|libdrm_amdpro|g" libamdocl-orca32.so 127 | mv "libamdocl-orca32.so" "${shared32}" 128 | mv "libamdocl12cl32.so" "${shared32}" 129 | mv "amdvlk32.so" "${shared32}" 130 | popd &>/dev/null 131 | 132 | pushd ./opt/amdgpu-pro/lib/x86_64-linux-gnu &>/dev/null 133 | rm "libamd_comgr.so" 134 | sed -i "s|libdrm_amdgpu|libdrm_amdpro|g" libamdocl-orca64.so 135 | mv "libamdocl-orca64.so" "${shared64}" 136 | mv "libamdocl12cl64.so" "${shared64}" 137 | mv "libamd_comgr.so.${libamd_comgrver}" "${shared64}" 138 | ln -s "libamd_comgr.so.${libamd_comgrver}" "libamd_comgr.so" 139 | mv "libamd_comgr.so" "${shared64}" 140 | mv "libamdocl64.so" "${shared64}" 141 | #mv "libcltrace.so" "${shared64}" 142 | mv "amdvlk64.so" "${shared64}" 143 | popd &>/dev/null 144 | 145 | echo "# AMDGPU-PRO OpenCL support" > zz_amdgpu-pro_x86_64.conf 146 | echo "/opt/amdgpu-pro/lib/x86_64-linux-gnu" >> zz_amdgpu-pro_x86_64.conf 147 | cp zz_amdgpu-pro_x86_64.conf /etc/ld.so.conf.d/ 148 | echo "# AMDGPU-PRO OpenCL support" > zz_amdgpu-pro_x86.conf 149 | echo "/opt/amdgpu-pro/lib/i386-linux-gnu" >> zz_amdgpu-pro_x86.conf 150 | cp zz_amdgpu-pro_x86.conf /etc/ld.so.conf.d/ 151 | ldconfig 152 | 153 | echo "Finished!" 154 | 155 | cd .. 156 | echo "Cleaning up" 157 | rm -r ${prefix}-${major}.${minor}-${build}-${system} 158 | 159 | #just in case 160 | rm /opt/amdgpu-pro/lib/i386-linux-gnu/libdrm_amdgpu.so.1 &>/dev/null 161 | rm /opt/amdgpu-pro/lib/i386-linux-gnu/libdrm_amdgpu.so.1.0.0 &>/dev/null 162 | rm /opt/amdgpu-pro/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1 &>/dev/null 163 | rm /opt/amdgpu-pro/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1.0.0 &>/dev/null 164 | 165 | echo Done. --------------------------------------------------------------------------------