[SOLVED] Help: Fedora Linux 37 AMD eGPU drivers (Davinci Resolve OpenCL)

I’m trying to run Davinci Resolve (OpenCL) with my AMD Radeon RX 6700 XT via an EGPU on my Framework laptop

After weeks of trying every guide I could find, the furthest I got was with AMDGPU drivers, the kernel args “radeon.cik_support=0 amdgpu.cik_support=1”, and running mokutil --import /root/mok.der. I was able to open Resolve and it saw my GPU, but pictures and videos wouldn’t render. Minecraft used the GPU seemingly without issue. Minecraft no longer used and Resolve no longer detected my GPU after a reboot, and I had many DKMS problems.

My GPU currently isn’t detected by Resolve and isn’t used by Minecraft.

This is my current configuration:

My current configurations (specifically repositories) are based off of this fedoraproject thread.

OS: Fedora 37
Kernel: 6.0.12-300.fc37.x86_64
Kernel args: ro rootflags=subvol=root rd.luks.uuid=luks-x-x-x-x-x rhgb quiet module_blacklist=hid_sensor_hub nvme.noacpi=1
Display manager: Wayland

Device: Framework Laptop 12th gen (thunderbolt 4)
Secure boot: Enabled

EGPU: Akitio Node Titan (thunderbolt 3)
GPU: Gigabyte (AMD) Radeon RX 6700 XT

AMD Main repo: Index of /amdgpu/5.4.1/rhel/9.1/main/x86_64/
AMD Proprietary repo: Index of /amdgpu/5.4.1/rhel/9.1/proprietary/x86_64/
ROCM repo: Index of /rocm/rhel9/rpm/

All relevant packages (as far as I’m aware) (sudo dnf list installed '*amd-gpu*' '*amdgpu*' '*rocm*' '*roct*' '*hsa*' '*mesa*' '*vulkan*' | grep -v 'procmail|setproctitle'):

Installed Packages
amd-gpu-firmware.noarch             20221109-144.fc37                 @updates  
hsa-rocr.x86_64                     1.7.0.50400-72.el9                @rocm-copy
hsa-rocr-devel.x86_64               1.7.0.50400-72.el9                @rocm-copy
hsakmt.x86_64                       1.0.6-26.rocm5.3.0.fc37           @updates  
hsakmt-roct-devel.x86_64            20221020.0.2.50400-72.el9         @rocm-copy
mesa-dri-drivers.i686               22.2.3-1.fc37                     @updates  
mesa-dri-drivers.x86_64             22.2.3-1.fc37                     @updates  
mesa-filesystem.i686                22.2.3-1.fc37                     @updates  
mesa-filesystem.x86_64              22.2.3-1.fc37                     @updates  
mesa-libEGL.i686                    22.2.3-1.fc37                     @updates  
mesa-libEGL.x86_64                  22.2.3-1.fc37                     @updates  
mesa-libGL.i686                     22.2.3-1.fc37                     @updates  
mesa-libGL.x86_64                   22.2.3-1.fc37                     @updates  
mesa-libGLU.x86_64                  9.0.1-7.fc37                      @fedora   
mesa-libOSMesa.i686                 22.2.3-1.fc37                     @updates  
mesa-libOSMesa.x86_64               22.2.3-1.fc37                     @updates  
mesa-libgbm.i686                    22.2.3-1.fc37                     @updates  
mesa-libgbm.x86_64                  22.2.3-1.fc37                     @updates  
mesa-libglapi.i686                  22.2.3-1.fc37                     @updates  
mesa-libglapi.x86_64                22.2.3-1.fc37                     @updates  
mesa-libxatracker.x86_64            22.2.3-1.fc37                     @updates  
mesa-va-drivers.i686                22.2.3-1.fc37                     @updates  
mesa-vulkan-drivers.i686            22.2.3-1.fc37                     @updates  
mesa-vulkan-drivers.x86_64          22.2.3-1.fc37                     @updates  
rocm-comgr.x86_64                   5.3.0-1.fc37                      @updates  
rocm-core.x86_64                    5.4.0.50400-72.el9                @rocm-copy
rocm-device-libs.x86_64             1.0.0.50400-72.el9                @rocm-copy
rocm-language-runtime.x86_64        5.4.0.50400-72.el9                @rocm-copy
rocm-ocl-icd.x86_64                 2.0.0.50400-72.el9                @rocm-copy
rocm-opencl.x86_64                  2.0.0.50400-72.el9                @rocm-copy
rocm-opencl-runtime.x86_64          5.4.0.50400-72.el9                @rocm-copy
rocm-runtime.x86_64                 5.3.0-2.fc37                      @updates  
rocm-smi.noarch                     4.0.0-6.fc37                      @fedora   
rocminfo.x86_64                     1.0.0.50400-72.el9                @rocm-copy
vulkan-loader.i686                  1.3.216.0-3.fc37                  @fedora   
vulkan-loader.x86_64                1.3.216.0-3.fc37                  @fedora

GPU detection 1

This is the process I used to test GPU detection in this section:

  1. Shut down laptop
  2. Connect to EGPU
  3. Boot up laptop
  4. Login at Gnome lockscreen
  5. Open terminal and type in the respective command / test respective application

1a. Resolve: “Unsupported GPU Processing Mode. Please review the GPU drivers and GPU configuration under preferences.”

1b. Minecraft: F3 menu GPU name “Mesa Intel(R) Graphics (ADL GT2) - 4.6 (Core Profile) Mesa 22.2.4 (git-80df10f902)”

1c. lspci - GPU is detected whilst EGPU is connected via thunderbolt (sudo lspci -vnn | grep VGA -A 12)

00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P Integrated Graphics Controller [8086:4626] (rev 0c) (prog-if 00 [VGA controller])
	Subsystem: Device [f111:0002]
	Flags: bus master, fast devsel, latency 0, IRQ 149, IOMMU group 1
	Memory at 605c000000 (64-bit, non-prefetchable) [size=16M]
	Memory at 4000000000 (64-bit, prefetchable) [size=256M]
	I/O ports at 3000 [size=64]
	Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
	Capabilities: [40] Vendor Specific Information: Len=0c <?>
	Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
	Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable+ 64bit-
	Capabilities: [d0] Power Management version 2
	Capabilities: [100] Process Address Space ID (PASID)
	Capabilities: [200] Address Translation Service (ATS)
--
06:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M] [1002:73df] (rev c5) (prog-if 00 [VGA controller])
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:2331]
	Flags: fast devsel, IRQ 207, IOMMU group 24
	Memory at 6000000000 (64-bit, prefetchable) [disabled] [size=256M]
	Memory at 6010000000 (64-bit, prefetchable) [disabled] [size=2M]
	I/O ports at 4000 [disabled] [size=256]
	Memory at 7c000000 (32-bit, non-prefetchable) [virtual] [size=1M]
	Expansion ROM at 7c100000 [virtual] [disabled] [size=128K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
	Capabilities: [64] Express Legacy Endpoint, MSI 00
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>

1d. clinfo - no OpenCL devices detected:

Number of platforms                               1
  Platform Name                                   AMD Accelerated Parallel Processing
  Platform Vendor                                 Advanced Micro Devices, Inc.
  Platform Version                                OpenCL 2.1 AMD-APP (3513.0)
  Platform Profile                                FULL_PROFILE
  Platform Extensions                             cl_khr_icd cl_amd_event_callback 
  Platform Extensions function suffix             AMD
  Platform Host timer resolution                  1ns

  Platform Name                                   AMD Accelerated Parallel Processing
Number of devices                                 0

NULL platform behavior
  clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...)  No platform
  clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...)   No platform
  clCreateContext(NULL, ...) [default]            No platform
  clCreateContext(NULL, ...) [other]              
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_DEFAULT)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL)  No devices found in platform

1e. glxinfo - CPU is being used rather than the GPU (glxinfo | grep "OpenGL renderer"):

OpenGL renderer string: Mesa Intel(R) Graphics (ADL GT2)

GPU Detection 2

The difference here (compared to GPU Dection 1) is I plug in the EGPU at the Gnome lockscreen instead of pre-boot. Doing this allows clinfo to see my GPU.

This is the process I used to test GPU detection in this section:

  1. Shut down laptop
  2. Disconnect EGPU
  3. Boot up laptop
  4. Connect EGPU at Gnome lockscreen
  5. Login at Gnome lockscreen
  6. Open terminal and type in the respective command

2a. Resolve: “Unsupported GPU Processing Mode. Please review the GPU drivers and GPU configuration under preferences.”

2b. Minecraft: F3 menu GPU name “Mesa Intel(R) Graphics (ADL GT2) - 4.6 (Core Profile) Mesa 22.2.4 (git-80df10f902)”

2c. lspci - GPU is detected whilst EGPU is connected via thunderbolt (sudo lspci -vnn | grep VGA -A 12)

00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P Integrated Graphics Controller [8086:4626] (rev 0c) (prog-if 00 [VGA controller])
	Subsystem: Device [f111:0002]
	Flags: bus master, fast devsel, latency 0, IRQ 149, IOMMU group 1
	Memory at 606c000000 (64-bit, non-prefetchable) [size=16M]
	Memory at 4000000000 (64-bit, prefetchable) [size=256M]
	I/O ports at 4000 [size=64]
	Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
	Capabilities: [40] Vendor Specific Information: Len=0c <?>
	Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
	Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable+ 64bit-
	Capabilities: [d0] Power Management version 2
	Capabilities: [100] Process Address Space ID (PASID)
	Capabilities: [200] Address Translation Service (ATS)
--
06:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M] [1002:73df] (rev c5) (prog-if 00 [VGA controller])
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:2331]
	Flags: fast devsel, IRQ 207, IOMMU group 24
	Memory at 6000000000 (64-bit, prefetchable) [disabled] [size=256M]
	Memory at 6010000000 (64-bit, prefetchable) [disabled] [size=2M]
	I/O ports at 3000 [disabled] [size=256]
	Memory at 52000000 (32-bit, non-prefetchable) [virtual] [size=1M]
	Expansion ROM at 52100000 [virtual] [disabled] [size=128K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
	Capabilities: [64] Express Legacy Endpoint, MSI 00
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>

2d. clinfo - AMD GPU is now detected:

Number of platforms                               1
  Platform Name                                   AMD Accelerated Parallel Processing
  Platform Vendor                                 Advanced Micro Devices, Inc.
  Platform Version                                OpenCL 2.1 AMD-APP (3513.0)
  Platform Profile                                FULL_PROFILE
  Platform Extensions                             cl_khr_icd cl_amd_event_callback 
  Platform Extensions function suffix             AMD
  Platform Host timer resolution                  1ns

  Platform Name                                   AMD Accelerated Parallel Processing
Number of devices                                 1
  Device Name                                     gfx1031
  Device Vendor                                   Advanced Micro Devices, Inc.
  Device Vendor ID                                0x1002
  Device Version                                  OpenCL 2.0 
  Driver Version                                  3513.0 (HSA1.1,LC)
  Device OpenCL C Version                         OpenCL C 2.0 
  Device Type                                     GPU
  Device Board Name (AMD)                         AMD Radeon RX 6700 XT
  Device PCI-e ID (AMD)                           0x73df
  Device Topology (AMD)                           PCI-E, 0000:06:00.0
  Device Profile                                  FULL_PROFILE
  Device Available                                Yes
  Compiler Available                              Yes
  Linker Available                                Yes
  Max compute units                               20
  SIMD per compute unit (AMD)                     4
  SIMD width (AMD)                                32
  SIMD instruction width (AMD)                    1
  Max clock frequency                             2725MHz
  Graphics IP (AMD)                               10.3
  Device Partition                                (core)
    Max number of sub-devices                     20
    Supported partition types                     None
    Supported affinity domains                    (n/a)
  Max work item dimensions                        3
  Max work item sizes                             1024x1024x1024
  Max work group size                             256
  Preferred work group size (AMD)                 256
  Max work group size (AMD)                       1024
  Preferred work group size multiple (kernel)     32
  Wavefront width (AMD)                           32
  Preferred / native vector sizes                 
    char                                                 4 / 4       
    short                                                2 / 2       
    int                                                  1 / 1       
    long                                                 1 / 1       
    half                                                 1 / 1        (cl_khr_fp16)
    float                                                1 / 1       
    double                                               1 / 1        (cl_khr_fp64)
  Half-precision Floating-point support           (cl_khr_fp16)
    Denormals                                     No
    Infinity and NANs                             No
    Round to nearest                              No
    Round to zero                                 No
    Round to infinity                             No
    IEEE754-2008 fused multiply-add               No
    Support is emulated in software               No
  Single-precision Floating-point support         (core)
    Denormals                                     Yes
    Infinity and NANs                             Yes
    Round to nearest                              Yes
    Round to zero                                 Yes
    Round to infinity                             Yes
    IEEE754-2008 fused multiply-add               Yes
    Support is emulated in software               No
    Correctly-rounded divide and sqrt operations  Yes
  Double-precision Floating-point support         (cl_khr_fp64)
    Denormals                                     Yes
    Infinity and NANs                             Yes
    Round to nearest                              Yes
    Round to zero                                 Yes
    Round to infinity                             Yes
    IEEE754-2008 fused multiply-add               Yes
    Support is emulated in software               No
  Address bits                                    64, Little-Endian
  Global memory size                              12868124672 (11.98GiB)
  Global free memory (AMD)                        12566528 (11.98GiB) 12566528 (11.98GiB)
  Global memory channels (AMD)                    6
  Global memory banks per channel (AMD)           4
  Global memory bank width (AMD)                  256 bytes
  Error Correction support                        No
  Max memory allocation                           10937905968 (10.19GiB)
  Unified memory for Host and Device              No
  Shared Virtual Memory (SVM) capabilities        (core)
    Coarse-grained buffer sharing                 Yes
    Fine-grained buffer sharing                   Yes
    Fine-grained system sharing                   No
    Atomics                                       No
  Minimum alignment for any data type             128 bytes
  Alignment of base address                       1024 bits (128 bytes)
  Preferred alignment for atomics                 
    SVM                                           0 bytes
    Global                                        0 bytes
    Local                                         0 bytes
  Max size for global variable                    10937905968 (10.19GiB)
  Preferred total size of global vars             12868124672 (11.98GiB)
  Global Memory cache type                        Read/Write
  Global Memory cache size                        16384 (16KiB)
  Global Memory cache line size                   64 bytes
  Image support                                   Yes
    Max number of samplers per kernel             29663
    Max size for 1D images from buffer            134217728 pixels
    Max 1D or 2D image array size                 8192 images
    Base address alignment for 2D image buffers   256 bytes
    Pitch alignment for 2D image buffers          256 pixels
    Max 2D image size                             16384x16384 pixels
    Max 3D image size                             16384x16384x8192 pixels
    Max number of read image args                 128
    Max number of write image args                8
    Max number of read/write image args           64
  Max number of pipe args                         16
  Max active pipe reservations                    16
  Max pipe packet size                            2347971376 (2.187GiB)
  Local memory type                               Local
  Local memory size                               65536 (64KiB)
  Local memory size per CU (AMD)                  65536 (64KiB)
  Local memory banks (AMD)                        32
  Max number of constant args                     8
  Max constant buffer size                        10937905968 (10.19GiB)
  Preferred constant buffer size (AMD)            16384 (16KiB)
  Max size of kernel argument                     1024
  Queue properties (on host)                      
    Out-of-order execution                        No
    Profiling                                     Yes
  Queue properties (on device)                    
    Out-of-order execution                        Yes
    Profiling                                     Yes
    Preferred size                                262144 (256KiB)
    Max size                                      8388608 (8MiB)
  Max queues on device                            1
  Max events on device                            1024
  Prefer user sync for interop                    Yes
  Number of P2P devices (AMD)                     0
  Profiling timer resolution                      1ns
  Profiling timer offset since Epoch (AMD)        0ns (Thu Jan  1 01:00:00 1970)
  Execution capabilities                          
    Run OpenCL kernels                            Yes
    Run native kernels                            No
    Thread trace supported (AMD)                  No
    Number of async queues (AMD)                  8
    Max real-time compute queues (AMD)            8
    Max real-time compute units (AMD)             20
  printf() buffer size                            4194304 (4MiB)
  Built-in kernels                                (n/a)
  Device Extensions                               cl_khr_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_fp16 cl_khr_gl_sharing cl_amd_device_attribute_query cl_amd_media_ops cl_amd_media_ops2 cl_khr_image2d_from_buffer cl_khr_subgroups cl_khr_depth_images cl_amd_copy_buffer_p2p cl_amd_assembly_program 

NULL platform behavior
  clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...)  No platform
  clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...)   No platform
  clCreateContext(NULL, ...) [default]            No platform
  clCreateContext(NULL, ...) [other]              Success [AMD]
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_DEFAULT)  Success (1)
    Platform Name                                 AMD Accelerated Parallel Processing
    Device Name                                   gfx1031
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU)  Success (1)
    Platform Name                                 AMD Accelerated Parallel Processing
    Device Name                                   gfx1031
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL)  Success (1)
    Platform Name                                 AMD Accelerated Parallel Processing
    Device Name                                   gfx1031

1e. glxinfo - CPU is being used rather than the GPU (glxinfo | grep "OpenGL renderer"):

OpenGL renderer string: Mesa Intel(R) Graphics (ADL GT2)

I’ve tried every guide I could find over the past few weeks, but to no avail. Any ideas or suggestions would be really appreciated.

I think you need to get the mesa-va-drivers-freeworld from the RPM Fusion repo and replace the default mesa drivers. Rocm also doesn’t work I think, I heard you need GitHub - sukhmeetbawa/OpenCL-AMD-Fedora: AMD OpenCL userspace drivers for Fedora..

I usually run in my Ubuntu Desktop but Intel and AMD for me was difficult to get running if at all, thus I am still on my NVIDIA GPU.

I run the free version not Pro/Studio though.

Hopefully Intel’s OneAPI can change it.

I also kinda wished Davinci Resolve recognised the Iris XE GPU on Linux like how it is on Windows :frowning:

I also run the free version of Resolve. I have documented the results of trying the packages you suggested in “configuration b” below. I do realise now that I forgot to remove

I want to clarify that my main goal is to get Resolve to run using my GPU, and I’m using Minecraft as a test application to see if the GPU is functioning at all. If the GPU is working, I expect Minecraft to use it instead of my Intel CPU’s internal graphics. Perhaps I need to do additional setup to get applications such as Minecraft to use the GPU over the CPU?

I’m finding it interesting that in GPU detection test 1’s where the eGPU is connected before booting, clinfo does not see my GPU, but on GPU detection test 2’s clinfo does see my GPU. As lspci always sees my GPU regardless of when I plug it in, it seems like OpenCL drivers don’t kick in unless the GPU is plugged in after the system has booted, just before Wayland starts up as I enter my password into the Gnome lockscreen.

Another point of interest is glxinfo always reports that my Intel CPU’s internal graphics is driving the display rather than my GPU. At the beginning of my first post I mention that time Minecraft was using the GPU and Resolve was able to launch. During that time glxinfo was reporting my GPU being used to drive the display. I believe this was down to the kernel arguments I was using. Perhaps if we make my AMD GPU the primary GPU rather than Intel internal graphics, things may work?

The logs sizes are getting very verbose with each configuration change so I’ll place a :exclamation: when I notice a new result in any given test.

Configuration b

In this configuration I keep all of the packages from the original configuration (a) and run a script which was recommended by the Framework forum.

Added/Changed repositories:
AMD GPU Proprietary: Index of /amdgpu/22.20.5/rhel/9.0/proprietary/x86_64/
AMD GPU Main: Index of /amdgpu/22.20.5/rhel/9.0/main/x86_64/
Copr AMD GPU Pro shims: https://download.copr.fedorainfracloud.org/results/rmnscnce/amdgpu-pro-shims/fedora-$releasever-$basearch/
Copr AMD GPU Core shims: https://download.copr.fedorainfracloud.org/results/sukhmeet/amdgpu-core-shim/fedora-$releasever-$basearch/

Ran script https://github.com/sukhmeetbawa/OpenCL-AMD-Fedora/opencl-amd.sh with options “1. Install-OpenCL-Latest” and “5. Patch-Davinci-Resolve”

These options installed the following packages:

amdgpu-install.noarch
amdgpu-core-shim-0-1.fc37.x86_64  (repo: copr:copr.fedorainfracloud.org:sukhmeet:amdgpu-core-shim)
rocm-opencl-2.0.0.50400-72.el9.x86_64 is already installed.
rocm-runtime-5.3.0-2.fc37.x86_64 is already installed.
libdrm-pro

That script also installed these packages, however I removed them as Gnome would only display a blank screen and flashing cursor on boot. I added them back in a fresh configuration, but clinfo only saw a platform with no devices.

libegl-amdgpu-pro
libgl-amdgpu-pro
libgl-amdgpu-pro-dri
libgl-amdgpu-pro-ext
libglapi-amdgpu-pro
libgles-amdgpu-pro
amdgpu-pro-core
libgl-amdgpu-pro-appprofiles

I also installed rpmfusion freeworld mesa packages as recommended: sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld --allowerasing && sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld --allowerasing

All relevant packages (as far as I’m aware) (sudo dnf list installed '*amd-gpu*' '*amdgpu*' '*rocm*' '*roct*' '*hsa*' '*mesa*' '*vulkan*' | grep -v 'procmail|setproctitle'):

Installed Packages
amd-gpu-firmware.noarch             20221109-144.fc37         @updates                                                 
amdgpu-core-shim.x86_64             0-1.fc37                  @copr:copr.fedorainfracloud.org:sukhmeet:amdgpu-core-shim
amdgpu-install.noarch               5.4.50400-1510348.el9     @@commandline                                            
hsa-rocr.x86_64                     1.7.0.50400-72.el9        @rocm-copy                                               
hsa-rocr-devel.x86_64               1.7.0.50400-72.el9        @rocm-copy                                               
hsakmt.x86_64                       1.0.6-26.rocm5.3.0.fc37   @updates                                                 
hsakmt-roct-devel.x86_64            20221020.0.2.50400-72.el9 @rocm-copy                                               
mesa-dri-drivers.i686               22.2.3-1.fc37             @updates                                                 
mesa-dri-drivers.x86_64             22.2.3-1.fc37             @updates                                                 
mesa-filesystem.i686                22.2.3-1.fc37             @updates                                                 
mesa-filesystem.x86_64              22.2.3-1.fc37             @updates                                                 
mesa-libEGL.i686                    22.2.3-1.fc37             @updates                                                 
mesa-libEGL.x86_64                  22.2.3-1.fc37             @updates                                                 
mesa-libGL.i686                     22.2.3-1.fc37             @updates                                                 
mesa-libGL.x86_64                   22.2.3-1.fc37             @updates                                                 
mesa-libGLU.x86_64                  9.0.1-7.fc37              @fedora                                                  
mesa-libOSMesa.i686                 22.2.3-1.fc37             @updates                                                 
mesa-libOSMesa.x86_64               22.2.3-1.fc37             @updates                                                 
mesa-libgbm.i686                    22.2.3-1.fc37             @updates                                                 
mesa-libgbm.x86_64                  22.2.3-1.fc37             @updates                                                 
mesa-libglapi.i686                  22.2.3-1.fc37             @updates                                                 
mesa-libglapi.x86_64                22.2.3-1.fc37             @updates                                                 
mesa-libxatracker.x86_64            22.2.3-1.fc37             @updates                                                 
mesa-va-drivers-freeworld.x86_64    22.2.3-1.fc37             @rpmfusion-free-updates                                  
mesa-vdpau-drivers-freeworld.x86_64 22.2.3-1.fc37             @rpmfusion-free-updates                                  
mesa-vulkan-drivers.i686            22.2.3-1.fc37             @updates                                                 
mesa-vulkan-drivers.x86_64          22.2.3-1.fc37             @updates                                                 
rocm-comgr.x86_64                   5.3.0-1.fc37              @updates                                                 
rocm-core.x86_64                    5.4.0.50400-72.el9        @rocm-copy                                               
rocm-device-libs.x86_64             1.0.0.50400-72.el9        @rocm-copy                                               
rocm-language-runtime.x86_64        5.4.0.50400-72.el9        @rocm-copy                                               
rocm-ocl-icd.x86_64                 2.0.0.50400-72.el9        @rocm-copy                                               
rocm-opencl.x86_64                  2.0.0.50400-72.el9        @rocm-copy                                               
rocm-opencl-runtime.x86_64          5.4.0.50400-72.el9        @rocm-copy                                               
rocm-runtime.x86_64                 5.3.0-2.fc37              @updates                                                 
rocm-smi.noarch                     4.0.0-6.fc37              @fedora                                                  
rocminfo.x86_64                     1.0.0.50400-72.el9        @rocm-copy                                               
vulkan-loader.i686                  1.3.216.0-3.fc37          @fedora                                                  
vulkan-loader.x86_64                1.3.216.0-3.fc37          @fedora

GPU detection test b1

This is the process I used to test GPU detection in this section:

  1. Shut down laptop
  2. Connect to EGPU
  3. Boot up laptop
  4. Login at Gnome lockscreen
  5. Open terminal and type in the respective command / test respective application

b1a. :exclamation: Resolve: “Unsupported GPU Processing Mode. Please review the GPU drivers and GPU configuration under preferences.” “CRITICAL_QUIT: GPU Initialization Failed. DaVinci Resolve could not initialize OpenGL. Please ensure that the latest graphics drivers are installed.” These are both individual popups that appear about a second apart.

b1b. Minecraft: Untested

b1c. `lspci` - GPU is detected whilst EGPU is connected via thunderbolt (`sudo lspci -vnn | grep VGA -A 12`)
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P Integrated Graphics [ Redacted to save on character limit ]
--
06:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M] [1002:73df] (rev c5) (prog-if 00 [VGA controller])
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:2331]
	Flags: fast devsel, IRQ 17, IOMMU group 23
	Memory at 6000000000 (64-bit, prefetchable) [size=256M]
	Memory at 6010000000 (64-bit, prefetchable) [size=2M]
	I/O ports at 3000 [size=256]
	Memory at 5e100000 (32-bit, non-prefetchable) [size=1M]
	Expansion ROM at 5e220000 [disabled] [size=128K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
	Capabilities: [64] Express Legacy Endpoint, MSI 00
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
b1d. `clinfo` - no OpenCL devices detected:
Number of platforms                               1
  Platform Name                                   AMD Accelerated Parallel Processing
  Platform Vendor                                 Advanced Micro Devices, Inc.
  Platform Version                                OpenCL 2.1 AMD-APP (3513.0)
  Platform Profile                                FULL_PROFILE
  Platform Extensions                             cl_khr_icd cl_amd_event_callback 
  Platform Extensions function suffix             AMD
  Platform Host timer resolution                  1ns

  Platform Name                                   AMD Accelerated Parallel Processing
Number of devices                                 0

NULL platform behavior
  clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...)  No platform
  clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...)   No platform
  clCreateContext(NULL, ...) [default]            No platform
  clCreateContext(NULL, ...) [other]              
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_DEFAULT)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL)  No devices found in platform

b1e. glxinfo - CPU is being used rather than the GPU (glxinfo | grep "OpenGL renderer"):

OpenGL renderer string: Mesa Intel(R) Graphics (ADL GT2)

GPU Detection test b2

This is the process I used to test GPU detection in this section:

  1. Shut down laptop
  2. Disconnect EGPU
  3. Boot up laptop
  4. Connect EGPU at Gnome lockscreen
  5. Login at Gnome lockscreen
  6. Open terminal and type in the respective command

b2a. Resolve: “Unsupported GPU Processing Mode. Please review the GPU drivers and GPU configuration under preferences.”

b2b. Minecraft Untested

b2c. `lspci` - GPU is detected whilst EGPU is connected via thunderbolt (`sudo lspci -vnn | grep VGA -A 12`)
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P Integrated Graphics [ Redacted to save on character limit ]
--
06:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M] [1002:73df] (rev c5) (prog-if 00 [VGA controller])
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:2331]
	Flags: bus master, fast devsel, latency 0, IRQ 134, IOMMU group 23
	Memory at 6000000000 (64-bit, prefetchable) [size=256M]
	Memory at 6010000000 (64-bit, prefetchable) [size=2M]
	I/O ports at 3000 [size=256]
	Memory at 52000000 (32-bit, non-prefetchable) [size=1M]
	Expansion ROM at 52100000 [virtual] [disabled] [size=128K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
	Capabilities: [64] Express Legacy Endpoint, MSI 00
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
b2d. `clinfo` - Device found:
Number of platforms                               1
  Platform Name                                   AMD Accelerated Parallel Processing
  Platform Vendor                                 Advanced Micro Devices, Inc.
  Platform Version                                OpenCL 2.1 AMD-APP (3513.0)
  Platform Profile                                FULL_PROFILE
  Platform Extensions                             cl_khr_icd cl_amd_event_callback 
  Platform Extensions function suffix             AMD
  Platform Host timer resolution                  1ns

  Platform Name                                   AMD Accelerated Parallel Processing
Number of devices                                 1
  Device Name                                     gfx1031
  Device Vendor                                   Advanced Micro Devices, Inc.
  Device Vendor ID                                0x1002
  Device Version                                  OpenCL 2.0 
  Driver Version                                  3513.0 (HSA1.1,LC)
  Device OpenCL C Version                         OpenCL C 2.0 
  Device Type                                     GPU
  Device Board Name (AMD)                         AMD Radeon RX 6700 XT
  Device PCI-e ID (AMD)                           0x73df
  Device Topology (AMD)                           PCI-E, 0000:06:00.0
  Device Profile                                  FULL_PROFILE
  Device Available                                Yes
  Compiler Available                              Yes
  Linker Available                                Yes
  Max compute units                               20
  SIMD per compute unit (AMD)                     4
  SIMD width (AMD)                                32
  SIMD instruction width (AMD)                    1
  Max clock frequency                             2725MHz
  Graphics IP (AMD)                               10.3
  Device Partition                                (core)
    Max number of sub-devices                     20
    Supported partition types                     None
    Supported affinity domains                    (n/a)
  Max work item dimensions                        3
  Max work item sizes                             1024x1024x1024
  Max work group size                             256
  Preferred work group size (AMD)                 256
  Max work group size (AMD)                       1024
  Preferred work group size multiple (kernel)     32
  Wavefront width (AMD)                           32
  Preferred / native vector sizes                 
    char                                                 4 / 4       
    short                                                2 / 2       
    int                                                  1 / 1       
    long                                                 1 / 1       
    half                                                 1 / 1        (cl_khr_fp16)
    float                                                1 / 1       
    double                                               1 / 1        (cl_khr_fp64)
  Half-precision Floating-point support           (cl_khr_fp16)
    Denormals                                     No
    Infinity and NANs                             No
    Round to nearest                              No
    Round to zero                                 No
    Round to infinity                             No
    IEEE754-2008 fused multiply-add               No
    Support is emulated in software               No
  Single-precision Floating-point support         (core)
    Denormals                                     Yes
    Infinity and NANs                             Yes
    Round to nearest                              Yes
    Round to zero                                 Yes
    Round to infinity                             Yes
    IEEE754-2008 fused multiply-add               Yes
    Support is emulated in software               No
    Correctly-rounded divide and sqrt operations  Yes
  Double-precision Floating-point support         (cl_khr_fp64)
    Denormals                                     Yes
    Infinity and NANs                             Yes
    Round to nearest                              Yes
    Round to zero                                 Yes
    Round to infinity                             Yes
    IEEE754-2008 fused multiply-add               Yes
    Support is emulated in software               No
  Address bits                                    64, Little-Endian
  Global memory size                              12868124672 (11.98GiB)
  Global free memory (AMD)                        12566528 (11.98GiB) 12566528 (11.98GiB)
  Global memory channels (AMD)                    6
  Global memory banks per channel (AMD)           4
  Global memory bank width (AMD)                  256 bytes
  Error Correction support                        No
  Max memory allocation                           10937905968 (10.19GiB)
  Unified memory for Host and Device              No
  Shared Virtual Memory (SVM) capabilities        (core)
    Coarse-grained buffer sharing                 Yes
    Fine-grained buffer sharing                   Yes
    Fine-grained system sharing                   No
    Atomics                                       No
  Minimum alignment for any data type             128 bytes
  Alignment of base address                       1024 bits (128 bytes)
  Preferred alignment for atomics                 
    SVM                                           0 bytes
    Global                                        0 bytes
    Local                                         0 bytes
  Max size for global variable                    10937905968 (10.19GiB)
  Preferred total size of global vars             12868124672 (11.98GiB)
  Global Memory cache type                        Read/Write
  Global Memory cache size                        16384 (16KiB)
  Global Memory cache line size                   64 bytes
  Image support                                   Yes
    Max number of samplers per kernel             29663
    Max size for 1D images from buffer            134217728 pixels
    Max 1D or 2D image array size                 8192 images
    Base address alignment for 2D image buffers   256 bytes
    Pitch alignment for 2D image buffers          256 pixels
    Max 2D image size                             16384x16384 pixels
    Max 3D image size                             16384x16384x8192 pixels
    Max number of read image args                 128
    Max number of write image args                8
    Max number of read/write image args           64
  Max number of pipe args                         16
  Max active pipe reservations                    16
  Max pipe packet size                            2347971376 (2.187GiB)
  Local memory type                               Local
  Local memory size                               65536 (64KiB)
  Local memory size per CU (AMD)                  65536 (64KiB)
  Local memory banks (AMD)                        32
  Max number of constant args                     8
  Max constant buffer size                        10937905968 (10.19GiB)
  Preferred constant buffer size (AMD)            16384 (16KiB)
  Max size of kernel argument                     1024
  Queue properties (on host)                      
    Out-of-order execution                        No
    Profiling                                     Yes
  Queue properties (on device)                    
    Out-of-order execution                        Yes
    Profiling                                     Yes
    Preferred size                                262144 (256KiB)
    Max size                                      8388608 (8MiB)
  Max queues on device                            1
  Max events on device                            1024
  Prefer user sync for interop                    Yes
  Number of P2P devices (AMD)                     0
  Profiling timer resolution                      1ns
  Profiling timer offset since Epoch (AMD)        0ns (Thu Jan  1 01:00:00 1970)
  Execution capabilities                          
    Run OpenCL kernels                            Yes
    Run native kernels                            No
    Thread trace supported (AMD)                  No
    Number of async queues (AMD)                  8
    Max real-time compute queues (AMD)            8
    Max real-time compute units (AMD)             20
  printf() buffer size                            4194304 (4MiB)
  Built-in kernels                                (n/a)
  Device Extensions                               cl_khr_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_fp16 cl_khr_gl_sharing cl_amd_device_attribute_query cl_amd_media_ops cl_amd_media_ops2 cl_khr_image2d_from_buffer cl_khr_subgroups cl_khr_depth_images cl_amd_copy_buffer_p2p cl_amd_assembly_program 

NULL platform behavior
  clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...)  No platform
  clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...)   No platform
  clCreateContext(NULL, ...) [default]            No platform
  clCreateContext(NULL, ...) [other]              Success [AMD]
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_DEFAULT)  Success (1)
    Platform Name                                 AMD Accelerated Parallel Processing
    Device Name                                   gfx1031
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU)  Success (1)
    Platform Name                                 AMD Accelerated Parallel Processing
    Device Name                                   gfx1031
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL)  Success (1)
    Platform Name                                 AMD Accelerated Parallel Processing
    Device Name                                   gfx1031

b2e. glxinfo - CPU is being used rather than the GPU (glxinfo | grep "OpenGL renderer"):

OpenGL renderer string: Mesa Intel(R) Graphics (ADL GT2)

Configuration c

In this configuration I remove all packages related to my attempts to get OpenCL to work to see the capabilities of my GPU with only the kernel driver as recommended by the Fedoraproject forum.

All relevant packages (as far as I’m aware) (sudo dnf list installed '*amd-gpu*' '*amdgpu*' '*rocm*' '*roct*' '*hsa*' '*mesa*' '*vulkan*' | grep -v 'procmail|setproctitle'):

Installed Packages
mesa-dri-drivers.i686                    22.2.3-1.fc37                  @updates
mesa-dri-drivers.x86_64                  22.2.3-1.fc37                  @updates
mesa-filesystem.i686                     22.2.3-1.fc37                  @updates
mesa-filesystem.x86_64                   22.2.3-1.fc37                  @updates
mesa-libEGL.i686                         22.2.3-1.fc37                  @updates
mesa-libEGL.x86_64                       22.2.3-1.fc37                  @updates
mesa-libGL.i686                          22.2.3-1.fc37                  @updates
mesa-libGL.x86_64                        22.2.3-1.fc37                  @updates
mesa-libGLU.x86_64                       9.0.1-7.fc37                   @fedora 
mesa-libOSMesa.i686                      22.2.3-1.fc37                  @updates
mesa-libOSMesa.x86_64                    22.2.3-1.fc37                  @updates
mesa-libgbm.i686                         22.2.3-1.fc37                  @updates
mesa-libgbm.x86_64                       22.2.3-1.fc37                  @updates
mesa-libglapi.i686                       22.2.3-1.fc37                  @updates
mesa-libglapi.x86_64                     22.2.3-1.fc37                  @updates
mesa-libxatracker.x86_64                 22.2.3-1.fc37                  @updates
mesa-va-drivers.i686                     22.2.3-1.fc37                  @updates
mesa-vulkan-drivers.i686                 22.2.3-1.fc37                  @updates
mesa-vulkan-drivers.x86_64               22.2.3-1.fc37                  @updates
vulkan-loader.i686                       1.3.216.0-3.fc37               @fedora 
vulkan-loader.x86_64                     1.3.216.0-3.fc37               @fedora

GPU detection test c1

This is the process I used to test GPU detection in this section:

  1. Shut down laptop
  2. Connect to EGPU
  3. Boot up laptop
  4. Login at Gnome lockscreen
  5. Open terminal and type in the respective command / test respective application

c1a. :exclamation: Resolve: “Unsupported GPU Processing Mode. Please review the GPU drivers and GPU configuration under preferences.” “CRITICAL_QUIT: GPU Initialization Failed. DaVinci Resolve could not initialize OpenGL. Please ensure that the latest graphics drivers are installed.” These are both individual popups that appear about a second apart. I didn’t expect this as I uninstalled all packages, however the script I ran in configuration b claimed to “patch” Resolve. It seems like it is making it try to use OpenGL instead of OpenCL. The script does have the option to reverse its modifications, but I think it would be a good idea to keep them until I get another application such as Minecraft working, as the modifications to Resolve may be necessary for it to work with AMD GPUs on Fedora.

c1b. Minecraft: F3 menu GPU name “Mesa Intel(R) Graphics (ADL GT2) - 4.6 (Core Profile) Mesa 22.2.4 (git-80df10f902)”

c1c. `lspci` - GPU is detected whilst EGPU is connected via thunderbolt (`sudo lspci -vnn | grep VGA -A 12`)
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P Integrated Graphics Controller [8086:4626] (rev 0c) (prog-if 00 [VGA controller])
	Subsystem: Device [f111:0002]
	Flags: bus master, fast devsel, latency 0, IRQ 154, IOMMU group 1
	Memory at 606c000000 (64-bit, non-prefetchable) [size=16M]
	Memory at 4000000000 (64-bit, prefetchable) [size=256M]
	I/O ports at 4000 [size=64]
	Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
	Capabilities: [40] Vendor Specific Information: Len=0c <?>
	Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
	Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable+ 64bit-
	Capabilities: [d0] Power Management version 2
	Capabilities: [100] Process Address Space ID (PASID)
	Capabilities: [200] Address Translation Service (ATS)
--
06:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M] [1002:73df] (rev c5) (prog-if 00 [VGA controller])
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:2331]
	Flags: fast devsel, IRQ 17, IOMMU group 23
	Memory at 6000000000 (64-bit, prefetchable) [size=256M]
	Memory at 6010000000 (64-bit, prefetchable) [size=2M]
	I/O ports at 3000 [size=256]
	Memory at 5e100000 (32-bit, non-prefetchable) [size=1M]
	Expansion ROM at 5e220000 [disabled] [size=128K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
	Capabilities: [64] Express Legacy Endpoint, MSI 00
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>

c1d. :exclamation: clinfo - no OpenCL devices or platforms detected:

Number of platforms                               0

c1e. glxinfo - CPU is being used rather than the GPU (glxinfo | grep "OpenGL renderer"):

OpenGL renderer string: Mesa Intel(R) Graphics (ADL GT2)

GPU Detection test c2

This is the process I used to test GPU detection in this section:

  1. Shut down laptop
  2. Disconnect EGPU
  3. Boot up laptop
  4. Connect EGPU at Gnome lockscreen
  5. Login at Gnome lockscreen
  6. Open terminal and type in the respective command

c2a. Resolve: “Unsupported GPU Processing Mode. Please review the GPU drivers and GPU configuration under preferences.” “CRITICAL_QUIT: GPU Initialization Failed. DaVinci Resolve could not initialize OpenGL. Please ensure that the latest graphics drivers are installed.” These are both individual popups that appear about a second apart.

c2b. Minecraft: F3 menu GPU name “Mesa Intel(R) Graphics (ADL GT2) - 4.6 (Core Profile) Mesa 22.2.4 (git-80df10f902)”

c2c. `lspci` - GPU is detected whilst EGPU is connected via thunderbolt (`sudo lspci -vnn | grep VGA -A 12`)
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P Integrated Graphics Controller [8086:4626] (rev 0c) (prog-if 00 [VGA controller])
	Subsystem: Device [f111:0002]
	Flags: bus master, fast devsel, latency 0, IRQ 149, IOMMU group 1
	Memory at 605c000000 (64-bit, non-prefetchable) [size=16M]
	Memory at 4000000000 (64-bit, prefetchable) [size=256M]
	I/O ports at 3000 [size=64]
	Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
	Capabilities: [40] Vendor Specific Information: Len=0c <?>
	Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
	Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable+ 64bit-
	Capabilities: [d0] Power Management version 2
	Capabilities: [100] Process Address Space ID (PASID)
	Capabilities: [200] Address Translation Service (ATS)
--
06:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M] [1002:73df] (rev c5) (prog-if 00 [VGA controller])
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:2331]
	Flags: fast devsel, IRQ 17, IOMMU group 24
	Memory at 6000000000 (64-bit, prefetchable) [size=256M]
	Memory at 6010000000 (64-bit, prefetchable) [size=2M]
	I/O ports at 4000 [size=256]
	Memory at 7c000000 (32-bit, non-prefetchable) [size=1M]
	Expansion ROM at 7c100000 [disabled] [size=128K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
	Capabilities: [64] Express Legacy Endpoint, MSI 00
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>

c2d. clinfo - no OpenCL devices or platforms detected:

Number of platforms                               0

c2e. glxinfo - CPU is being used rather than the GPU (glxinfo | grep "OpenGL renderer"):

OpenGL renderer string: Mesa Intel(R) Graphics (ADL GT2)

Have we tried using boltctl to authorize the device?

Yes, my eGPU is authorized according to boltctl.

My troubleshooting continued at the Fedora forum. However, I would still appreciate any further suggestions anyone from the Framework forum may have.

I plan to update this post if a solution is found.

I’ve begun (be it slowly and initially on Ubuntu) some internal eGPU testing.

My rationale for this approach is here.

I have some community members who are willing to test things on the AMD side of the fence and contribute once I get this public.

So TLTR, relief is coming. :slight_smile:

1 Like

Exciting! Thank you for letting me know. I’m hopeful this may resolve my issue.

Upon logging in Gnome with my eGPU connected, I experience a lag spike when the desktop is first being displayed, suggesting something related to graphics could be happening.

$ rocminfo

ROCk module is loaded
hsa api call failure at: /long_pathname_so_that_rpms_can_package_the_debug_info/src/rocminfo/rocminfo.cc:1148
Call returned HSA_STATUS_ERROR_OUT_OF_RESOURCES: The runtime failed to allocate the necessary resources. This error may also occur when the core runtime library needs to spawn threads or create internal OS-specific events.

$ clinfo

Number of platforms                               0

My installed packages hasn’t changed, but updates have taken place.

View package list

sudo dnf list installed '*amd-gpu*' '*amdgpu*' '*rocm*' '*roct*' '*hsa*' '*mesa*' '*vulkan*' 'kernel' | grep -v 'procmail|setproctitle'

Installed Packages
amd-gpu-firmware.noarch              20230210-147.fc37                @updates  
hsa-rocr.x86_64                      1.7.0.50400-72.el9               @rocm-copy
hsa-rocr-devel.x86_64                1.7.0.50400-72.el9               @rocm-copy
hsakmt.x86_64                        1.0.6-27.rocm5.4.1.fc37          @updates  
hsakmt-roct-devel.x86_64             20221020.0.2.50400-72.el9        @rocm-copy
kernel.x86_64                        6.1.11-200.fc37                  @updates  
kernel.x86_64                        6.1.13-200.fc37                  @updates  
kernel.x86_64                        6.1.14-200.fc37                  @updates  
mesa-dri-drivers.i686                22.3.6-1.fc37                    @updates  
mesa-dri-drivers.x86_64              22.3.6-1.fc37                    @updates  
mesa-filesystem.i686                 22.3.6-1.fc37                    @updates  
mesa-filesystem.x86_64               22.3.6-1.fc37                    @updates  
mesa-libEGL.i686                     22.3.6-1.fc37                    @updates  
mesa-libEGL.x86_64                   22.3.6-1.fc37                    @updates  
mesa-libGL.i686                      22.3.6-1.fc37                    @updates  
mesa-libGL.x86_64                    22.3.6-1.fc37                    @updates  
mesa-libGLU.x86_64                   9.0.1-7.fc37                     @fedora   
mesa-libOSMesa.i686                  22.3.6-1.fc37                    @updates  
mesa-libOSMesa.x86_64                22.3.6-1.fc37                    @updates  
mesa-libgbm.i686                     22.3.6-1.fc37                    @updates  
mesa-libgbm.x86_64                   22.3.6-1.fc37                    @updates  
mesa-libglapi.i686                   22.3.6-1.fc37                    @updates  
mesa-libglapi.x86_64                 22.3.6-1.fc37                    @updates  
mesa-libxatracker.x86_64             22.3.6-1.fc37                    @updates  
mesa-va-drivers.i686                 22.3.6-1.fc37                    @updates  
mesa-vulkan-drivers.i686             22.3.6-1.fc37                    @updates  
mesa-vulkan-drivers.x86_64           22.3.6-1.fc37                    @updates  
rocm-cmake.x86_64                    0.8.0.50400-72.el9               @rocm-copy
rocm-comgr.x86_64                    5.4.1-2.fc37                     @updates  
rocm-core.x86_64                     5.4.0.50400-72.el9               @rocm-copy
rocm-device-libs.x86_64              1.0.0.50400-72.el9               @rocm-copy
rocm-hip-libraries.x86_64            5.4.0.50400-72.el9               @rocm-copy
rocm-hip-runtime.x86_64              5.4.0.50400-72.el9               @rocm-copy
rocm-hip-runtime-devel.x86_64        5.4.0.50400-72.el9               @rocm-copy
rocm-hip-sdk.x86_64                  5.4.0.50400-72.el9               @rocm-copy
rocm-language-runtime.x86_64         5.4.0.50400-72.el9               @rocm-copy
rocm-llvm.x86_64                     15.0.0.22465.50400-72.el9        @rocm-copy
rocm-ocl-icd.x86_64                  2.0.0.50400-72.el9               @rocm-copy
rocm-opencl.x86_64                   2.0.0.50400-72.el9               @rocm-copy
rocm-opencl-runtime.x86_64           5.4.0.50400-72.el9               @rocm-copy
rocm-runtime.x86_64                  5.4.1-1.fc37                     @updates  
rocm-smi.noarch                      4.0.0-6.fc37                     @fedora   
rocm-smi-lib.x86_64                  5.0.0.50400-72.el9               @rocm-copy
rocminfo.x86_64                      1.0.0.50400-72.el9               @rocm-copy
rocthrust-devel.x86_64               2.10.9.50400-72.el9              @rocm-copy
vulkan-loader.i686                   1.3.216.0-3.fc37                 @fedora   
vulkan-loader.x86_64                 1.3.216.0-3.fc37                 @fedora   
vulkan-tools.x86_64                  1.3.216.0-2.fc37                 @fedora   
xorg-x11-drv-amdgpu.x86_64           23.0.0-1.fc37                    @updates

The rocminfo HSA_STATUS_ERROR_OUT_OF_RESOURCES error may be of interest, but I couldn’t find much about it.

A solution! :tada:

The reproducible solution for making my eGPU work is to plug an external monitor into the GPU.

Setup

  1. Plug in eGPU and boot system.
  2. Install hertg/egpu-switcher.
  3. Execute sudo egpu-switcher enable and select the eGPU. The egpu-switcher daemon will now start on boot and know which device is the eGPU.
  4. Execute sudo egpu-switcher switch --override.

How to use eGPU

  1. Connect eGPU to laptop.
  2. Connect GPU to a monitor and turn the monitor on, using the GPU input as its source.
  3. Boot laptop

rocminfo, clinfo, radontop and lspci all show what I want to see and applications are using the GPU.

The external monitor can be turned off or unplugged at this stage, but if the laptop goes into suspend, when it wakes up the eGPU will no longer be working and the above commands will fail or show errors.

I plan to buy a HDMI emulator plug so I can do away with the monitor.

The only application which isn’t working with my eGPU at the moment is DaVinci Resolve. It detects the GPU and claims to use it via OpenCL, but the timeline won’t display/play any audio or video (even DNxHD). I’ll likely create a new thread dedicated to this.

Thank you all for your help over the months.

3 Likes

I realised that egpu-switcher claims to only work on Xorg desktops. I use Wayland, so I’ve disabled and removed egpu-switcher from my system and I’m still able to use my eGPU when a monitor is connected to my GPU.

The new, more accurate instructions are as follows:

Setup
Non required in my environment (Gnome Wayland) other than the correct AMD/ROCm packages. If you have already followed the above instructions, run sudo egpu-switcher disable to undo the setup.

How to use the eGPU

  1. Connect GPU to an external monitor via a display cable (HDMI, DisplayPort etc). Ensure the monitor is powered on and is communicating with the GPU by selecting the GPU display cable as its input source.
  2. Connect eGPU to laptop via thunderbolt.
  3. If already in a Gnome session, log out and log back in. If the eGPU disconnects, you will need to restart the laptop for it to work again.
2 Likes