Blender Cycles Ryzen iGPU support (what am I missing?)

Hello. I don’t know what the issue is, here. I want to use Blender to render on the Ryzen GPU but it’s not an enable-able option in Blender’s settings (typically with Nvidia cards this meant you weren’t using drivers/didn’t have CUDA installed but I recently started using AMD graphics again with Linux)

I’m using open source video drivers at the moment. If this is the problem, I’m having a hard time finding out what drivers/collection of packages I need to install to be able to render with Cycles on the Ryzen iGPU. If it is at all possible to keep the open source video drivers and still do this, that would be preferred.

Hello @natethan :wink:

According to this section: #Blender_does_not_show_the_AMD_card_as_an_OpenCL_rendering_device

You have to install this here:

pamac build opencl-amd

However, it must be mentioned that starting with blender 3.0, opencl is deprecated and will be replaced by HIP, but it should still work.

Thanks so much.

I’m embarassed to say I’ve never used pamac before, but I’m installing opencl-amd now with it as you suggested. I’m assuming pamac is not going to cause conflicts with pacman (which I normally use).

I don’t really know what HIP is, and no links I’ve read thus far about it have actually changed that. Bearing that in mind, I have some follow-up questions:

Is HIP is going to be possible to use with the open-source drivers, or will that require proprietary ones? Or perhaps the better question is: how will I migrate to using HIP once that’s fully integrated/(I keep hearing HIP “will replace openCL”), but Blender 3.0 is out already. I’m confused. (I don’t have fun keeping up with all this stuff :frowning: )

edit: I have no idea what is going on. This is literally a fresh install and I keep getting issues with PGP signatures. It’s so frustrating, I follow the instructions and even though they’re the right instructions, I still get errors…

Warning: Building packages as dynamic user
Warning: Setting build directory to /var/cache/pamac
Preparing...
Checking opencl-amd dependencies...
Cloning ncurses5-compat-libs build files...
Running as unit: run-u104.service
fatal: not a git repository (or any parent up to mount point /var/cache/private)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Finished with result: exit-code
Main processes terminated with: code=exited/status=128
Service runtime: 7ms
CPU time consumed: 7ms
Running as unit: run-u105.service
Finished with result: success
Main processes terminated with: code=exited/status=0
Service runtime: 6ms
CPU time consumed: 6ms
Running as unit: run-u106.service
Finished with result: success
Main processes terminated with: code=exited/status=0
Service runtime: 1.629s
CPU time consumed: 50ms
Generating ncurses5-compat-libs information...
Running as unit: run-u107.service
Finished with result: success
Main processes terminated with: code=exited/status=0
Service runtime: 1.448s
CPU time consumed: 1.660s
Checking ncurses5-compat-libs dependencies...
The PGP key 19882D92DDA4C400C22C0D56CC2AF4472167BE03 is needed to verify ncurses5-compat-libs source files.
Trust Thomas E. Dickey (use for email) <dickey@his.com> and import the PGP key ? [y/N] y
gpg: key CC2AF4472167BE03: public key "Thomas E. Dickey (use for email) <dickey@his.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Resolving dependencies...
Checking inter-conflicts...

To build (2):
  ncurses5-compat-libs  6.3-1              AUR
  opencl-amd            22.10.1.50101-1    AUR


Edit build files : [e] 
Apply transaction ? [e/y/N] y


Building ncurses5-compat-libs...
Running as unit: run-u112.service
Press ^] three times within 1s to disconnect TTY.
==> Making package: ncurses5-compat-libs 6.3-1 (Sun 24 Apr 2022 05:04:05 PM EDT)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Downloading ncurses-6.3.tar.gz...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 3499k  100 3499k    0     0  75520      0  0:00:47  0:00:47 --:--:-- 70439
  -> Downloading ncurses-6.3.tar.gz.sig...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   438  100   438    0     0   2372      0 --:--:-- --:--:-- --:--:--  2367
==> Validating source files with sha256sums...
    ncurses-6.3.tar.gz ... Passed
    ncurses-6.3.tar.gz.sig ... Skipped
==> Verifying source file signatures with gpg...
    ncurses-6.3.tar.gz ... cat: write error: Broken pipe
FAILED
==> ERROR: One or more PGP signatures could not be verified!
Finished with result: exit-code
Main processes terminated with: code=exited/status=1
Service runtime: 48.995s
CPU time consumed: 1.753s
Error: Failed to build ncurses5-compat-libs

edit: I don’t know what any of this is, either. I live in the US. Why on earth is it connecting to mirrors in brazil, germany, hungary … ?? This looks so strange and sketchy.

[machine ~]# pamac update
Preparing...
Synchronizing package databases...
http://kibo.remi.lu/stable/core/x86_64/core.db: Error resolving “kibo.remi.lu”: Name or service not known
https://mirror.philpot.de/manjaro/stable/core/x86_64/core.db: Error resolving “mirror.philpot.de”: Name or service not known
http://mirror.infotronik.hu/mirrors/pub/manjaro/stable/core/x86_64/core.db: Error 404
http://pet.inf.ufsc.br/mirrors/manjarolinux/stable/core/x86_64/core.db: Could not connect: Socket I/O timed out
http://kibo.remi.lu/stable/extra/x86_64/extra.db: Error resolving “kibo.remi.lu”: Name or service not known
https://mirror.philpot.de/manjaro/stable/extra/x86_64/extra.db: Error resolving “mirror.philpot.de”: Name or service not known
http://mirror.infotronik.hu/mirrors/pub/manjaro/stable/extra/x86_64/extra.db: Error 404
http://pet.inf.ufsc.br/mirrors/manjarolinux/stable/extra/x86_64/extra.db: Could not connect: Socket I/O timed out
http://kibo.remi.lu/stable/community/x86_64/community.db: Error resolving “kibo.remi.lu”: Name or service not known
https://mirror.philpot.de/manjaro/stable/community/x86_64/community.db: Error resolving “mirror.philpot.de”: Name or service not known
http://mirror.infotronik.hu/mirrors/pub/manjaro/stable/community/x86_64/community.db: Error 404
http://pet.inf.ufsc.br/mirrors/manjarolinux/stable/community/x86_64/community.db: Could not connect: Socket I/O timed out
http://kibo.remi.lu/stable/multilib/x86_64/multilib.db: Error resolving “kibo.remi.lu”: Name or service not known
https://mirror.philpot.de/manjaro/stable/multilib/x86_64/multilib.db: Error resolving “mirror.philpot.de”: Name or service not known
http://mirror.infotronik.hu/mirrors/pub/manjaro/stable/multilib/x86_64/multilib.db: Error 404
http://pet.inf.ufsc.br/mirrors/manjarolinux/stable/multilib/x86_64/multilib.db: Could not connect: Socket I/O timed out
Warning: lib32-mesa: local (22.0.0-1) is newer than multilib (21.3.8-2)
Nothing to do.
Transaction successfully finished.

Amd have not added igpu to its hip codes.

I have tried many things but it all failed later i read on blender requirements that hardware rendering only works with dedicated gpu and not igpu.

looks like you use pamac as root what is especially bad because the build parameter means that it uses the AUR and therefore build that package.

Does your root account have a working gpg database?

Please use pamac always as user. It asks for the user password, if needed.

I’ve been using pacman as root as well, should I not be doing that, either? (I’m asking this in earnest, not sarcasm or to challenge your advice.) I don’t know anything about gpg databases. Call me crazy, but that sounds like some seriously unnecessary overhead to just update and install packages…

As far as why I’ve been using root and not sudo via my regular wheel-enabled user, I have problems with pacman not using my socks5 proxy whenever I invoke it with sudo, even if I export all_proxy=“socks5://address:port” to both my regular wheel-enabled user and root, but it works through socks5 when I invoke it from root. Due to the speed limitations, I can not -NOT- use socks5, so I’m weighing bad practice against even having a system, period, (as I see it). I’m trying to rectify those internet issues at their root cause (my surrounding infrastructure) so that I don’t need socks5 anymore, but for now I only have the internet that I have. proxychains worked great with apt on Ubuntu but it’s not available via pacman.

This next part is massively OT, (or perhaps as much as the rest of my comment here) but digress:

I still use Linux as I first used it years ago (~'08/09), and these old practices don’t just disappear overnight. I didn’t get all the memos over the years about “suddenly this is no longer recommended, do this instead” – I guess that’s what I get for not sticking to the forums, IRC, and mailing lists all day. I gave up extensive configuration years ago in the erroneous and naive hopes that sticking to programs provided by whatever distro’s default package manager and default installation configuration would yield a low-stress experience. Still beats the alternatives, but my God does one have to be tenacious to stick with this… it’s a blessing and a curse

No, the simple point is just that pamac asks for root privileges itself by using pkexec when needed. pacman just doesn’t have that, so you can use sudo or pkexec or run it as root.

Nowadays GUI Applications uses pkexec. It has a GUI, but can be also run on the terminal. However sudo is still very popular.

polkit - ArchWiki

gpg checks of the package you retrieve is really from the manjaro team and has the same fingerprint. Since you use mirrors, it can always be possible that packages can be manipulated. Without gpg you cannot check that here.

$ pamac search proxychains
lib32-proxychains-ng                                                                   4.14-1               AUR 
    A hook preloader that allows to redirect TCP traffic of existing dynamically
    linked programs through one or more SOCKS or HTTP proxies (32-bit version)
proxychains-ng-git                                                                     4.13.r10.g1198857-1  AUR 
    A hook preloader that allows to redirect TCP traffic of existing dynamically
    linked programs through one or more SOCKS or HTTP proxies
proxychains-ng                                                                         4.16-1               community 
    A hook preloader that allows to redirect TCP traffic of existing dynamically
    linked programs through one or more SOCKS or HTTP proxies
pamac install proxychains-ng

This does work :question:

Also you can write a simple PAC file which can be included at the NetworkManager:

IT is constantly changing. Most the time you can just follow and eat what you get. Yeah sometimes frustrating, cause man I liked “shutter” a screenshot program, but its getting out of date and difficult to run on modern Distros. All of those replacements since then just don’t have what shutter had.

OK back to the topic:

$ pamac build opencl-amd 
Preparing...
Checking opencl-amd dependencies...
Checking ncurses5-compat-libs dependencies...
Resolving dependencies...
Checking inter-conflicts...

To build (2):
  ncurses5-compat-libs  6.3-1              AUR
  opencl-amd            22.10.1.50101-1    AUR


Edit build files : [e] 
Apply transaction ? [e/y/N] y

Cloning ncurses5-compat-libs build files...
Generating ncurses5-compat-libs information...

Building ncurses5-compat-libs...
==> Making package: ncurses5-compat-libs 6.3-1 (Mon Apr 25 20:19:54 2022)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Downloading ncurses-6.3.tar.gz...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 3499k  100 3499k    0     0  2365k      0  0:00:01  0:00:01 --:--:-- 2366k
  -> Downloading ncurses-6.3.tar.gz.sig...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   438  100   438    0     0   1189      0 --:--:-- --:--:-- --:--:--  1186
==> Validating source files with sha256sums...
    ncurses-6.3.tar.gz ... Passed
    ncurses-6.3.tar.gz.sig ... Skipped
==> Verifying source file signatures with gpg...
    ncurses-6.3.tar.gz ... FAILED (unknown public key CC2AF4472167BE03)
==> ERROR: One or more PGP signatures could not be verified!
Error: Failed to build ncurses5-compat-libs
$ gpg --recv-keys CC2AF4472167BE03 
gpg: key CC2AF4472167BE03: public key "Thomas E. Dickey (use for email) <dickey@his.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

And it starts working:

$ pamac build opencl-amd 
Preparing...
Checking opencl-amd dependencies...
Cloning ncurses5-compat-libs build files...
Generating ncurses5-compat-libs information...
Checking ncurses5-compat-libs dependencies...
Resolving dependencies...
Checking inter-conflicts...

To build (2):
  ncurses5-compat-libs  6.3-1              AUR
  opencl-amd            22.10.1.50101-1    AUR


Edit build files : [e] 
Apply transaction ? [e/y/N] y


Building ncurses5-compat-libs...
==> Making package: ncurses5-compat-libs 6.3-1 (Mon Apr 25 20:21:06 2022)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Found ncurses-6.3.tar.gz
  -> Found ncurses-6.3.tar.gz.sig
==> Validating source files with sha256sums...
    ncurses-6.3.tar.gz ... Passed
    ncurses-6.3.tar.gz.sig ... Skipped
==> Verifying source file signatures with gpg...
    ncurses-6.3.tar.gz ... Passed
==> Removing existing $srcdir/ directory...
==> Extracting sources...
  -> Extracting ncurses-6.3.tar.gz with bsdtar
==> Starting build()...
checking for ggrep... no
checking for grep... grep
checking for egrep... grep -E
Configuring NCURSES 6.3 ABI 6 (Mon Apr 25 20:21:06 CEST 2022)
checking for package version... 6.3
checking for package patch date... 20211021
configure: WARNING: overriding ABI version 6 to 5
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
Configuring for linux-gnu
checking for fgrep... grep -F