DaVinci Resolve/OpenCL woes with Vega 56

So I decided to try out DaVinci Resolve on Windows, and figured out how to do some basic editing. My next step was to try it out on Linux, which led me down a deep, dark rabbit hole. Resolve complains that I have no OpenCL compatible GPU installed. I’m running Fedora 28 with a nearly bleeding edge MESA amdgpu driver. Like Resolve, clinfo claims to only see my CPU (Ryzen 7) and has no idea that my GPU exists. But OpenGL and Vulkan are definitely working.

mesa-libOpenCL and ocl-icd packages are installed, and I’ve removed beignet to prevent any confusion (all AMD system, no Intel anywhere to be found.)

Any suggestions for getting OpenCL working?

Did you try /opt/resolve/bin/oclDeviceQuery in terminal? It’d say something.

My result Xubutu 18.04 & GTX 1660Ti

[oclDeviceQuery] starting…

./oclDeviceQuery Starting…

OpenCL SW Info:

CL_PLATFORM_NAME: NVIDIA CUDA
CL_PLATFORM_VERSION: OpenCL 1.2 CUDA 10.1.133
OpenCL SDK Revision: 7027912

OpenCL Device Info:

1 devices found supporting OpenCL:


Device GeForce GTX 1660 Ti

CL_DEVICE_NAME: GeForce GTX 1660 Ti
CL_DEVICE_VENDOR: NVIDIA Corporation
CL_DRIVER_VERSION: 418.56
CL_DEVICE_VERSION: OpenCL 1.2 CUDA
CL_DEVICE_OPENCL_C_VERSION: OpenCL C 1.2
CL_DEVICE_TYPE: CL_DEVICE_TYPE_GPU
CL_DEVICE_MAX_COMPUTE_UNITS: 24
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3
CL_DEVICE_MAX_WORK_ITEM_SIZES: 1024 / 1024 / 64
CL_DEVICE_MAX_WORK_GROUP_SIZE: 1024
CL_DEVICE_MAX_CLOCK_FREQUENCY: 1875 MHz
CL_DEVICE_ADDRESS_BITS: 64
CL_DEVICE_MAX_MEM_ALLOC_SIZE: 1478 MByte
CL_DEVICE_GLOBAL_MEM_SIZE: 5914 MByte
CL_DEVICE_ERROR_CORRECTION_SUPPORT: no
CL_DEVICE_LOCAL_MEM_TYPE: local
CL_DEVICE_LOCAL_MEM_SIZE: 48 KByte
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 64 KByte
CL_DEVICE_QUEUE_PROPERTIES: CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE
CL_DEVICE_QUEUE_PROPERTIES: CL_QUEUE_PROFILING_ENABLE
CL_DEVICE_IMAGE_SUPPORT: 1
CL_DEVICE_MAX_READ_IMAGE_ARGS: 256
CL_DEVICE_MAX_WRITE_IMAGE_ARGS: 32
CL_DEVICE_SINGLE_FP_CONFIG: denorms INF-quietNaNs round-to-nearest round-to-zero round-to-inf fma

CL_DEVICE_IMAGE 2D_MAX_WIDTH 32768
2D_MAX_HEIGHT 32768
3D_MAX_WIDTH 16384
3D_MAX_HEIGHT 16384
3D_MAX_DEPTH 16384

CL_DEVICE_EXTENSIONS: 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_fp64
cl_khr_byte_addressable_store
cl_khr_icd
cl_khr_gl_sharing
cl_nv_compiler_options
cl_nv_device_attribute_query
cl_nv_pragma_unroll
cl_nv_copy_opts

CL_DEVICE_COMPUTE_CAPABILITY_NV: 7.5
NUMBER OF MULTIPROCESSORS: 24
MapSMtoCores SM 7.5 is undefined (please update to the latest SDK)!
NUMBER OF CUDA CORES: 4294967272
CL_DEVICE_REGISTERS_PER_BLOCK_NV: 65536
CL_DEVICE_WARP_SIZE_NV: 32
CL_DEVICE_GPU_OVERLAP_NV: CL_TRUE
CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV: CL_TRUE
CL_DEVICE_INTEGRATED_MEMORY_NV: CL_FALSE
CL_DEVICE_PREFERRED_VECTOR_WIDTH_ CHAR 1, SHORT 1, INT 1, LONG 1, FLOAT 1, DOUBLE 1


2D Image Formats Supported (75)

Channel Order Channel Type

1 CL_R CL_FLOAT
2 CL_R CL_HALF_FLOAT
3 CL_R CL_UNORM_INT8
4 CL_R CL_UNORM_INT16
5 CL_R CL_SNORM_INT16
6 CL_R CL_SIGNED_INT8
7 CL_R CL_SIGNED_INT16
8 CL_R CL_SIGNED_INT32
9 CL_R CL_UNSIGNED_INT8
10 CL_R CL_UNSIGNED_INT16
11 CL_R CL_UNSIGNED_INT32
12 CL_A CL_FLOAT
13 CL_A CL_HALF_FLOAT
14 CL_A CL_UNORM_INT8
15 CL_A CL_UNORM_INT16
16 CL_A CL_SNORM_INT16
17 CL_A CL_SIGNED_INT8
18 CL_A CL_SIGNED_INT16
19 CL_A CL_SIGNED_INT32
20 CL_A CL_UNSIGNED_INT8
21 CL_A CL_UNSIGNED_INT16
22 CL_A CL_UNSIGNED_INT32
23 CL_RG CL_FLOAT
24 CL_RG CL_HALF_FLOAT
25 CL_RG CL_UNORM_INT8
26 CL_RG CL_UNORM_INT16
27 CL_RG CL_SNORM_INT16
28 CL_RG CL_SIGNED_INT8
29 CL_RG CL_SIGNED_INT16
30 CL_RG CL_SIGNED_INT32
31 CL_RG CL_UNSIGNED_INT8
32 CL_RG CL_UNSIGNED_INT16
33 CL_RG CL_UNSIGNED_INT32
34 CL_RA CL_FLOAT
35 CL_RA CL_HALF_FLOAT
36 CL_RA CL_UNORM_INT8
37 CL_RA CL_UNORM_INT16
38 CL_RA CL_SNORM_INT16
39 CL_RA CL_SIGNED_INT8
40 CL_RA CL_SIGNED_INT16
41 CL_RA CL_SIGNED_INT32
42 CL_RA CL_UNSIGNED_INT8
43 CL_RA CL_UNSIGNED_INT16
44 CL_RA CL_UNSIGNED_INT32
45 CL_RGBA CL_FLOAT
46 CL_RGBA CL_HALF_FLOAT
47 CL_RGBA CL_UNORM_INT8
48 CL_RGBA CL_UNORM_INT16
49 CL_RGBA CL_SNORM_INT16
50 CL_RGBA CL_SIGNED_INT8
51 CL_RGBA CL_SIGNED_INT16
52 CL_RGBA CL_SIGNED_INT32
53 CL_RGBA CL_UNSIGNED_INT8
54 CL_RGBA CL_UNSIGNED_INT16
55 CL_RGBA CL_UNSIGNED_INT32
56 CL_BGRA CL_UNORM_INT8
57 CL_BGRA CL_SIGNED_INT8
58 CL_BGRA CL_UNSIGNED_INT8
59 CL_ARGB CL_UNORM_INT8
60 CL_ARGB CL_SIGNED_INT8
61 CL_ARGB CL_UNSIGNED_INT8
62 CL_INTENSITY CL_FLOAT
63 CL_INTENSITY CL_HALF_FLOAT
64 CL_INTENSITY CL_UNORM_INT8
65 CL_INTENSITY CL_UNORM_INT16
66 CL_INTENSITY CL_SNORM_INT16
67 CL_LUMINANCE CL_FLOAT
68 CL_LUMINANCE CL_HALF_FLOAT
69 CL_LUMINANCE CL_UNORM_INT8
70 CL_LUMINANCE CL_UNORM_INT16
71 CL_LUMINANCE CL_SNORM_INT16
72 CL_BGRA CL_SNORM_INT8
73 CL_BGRA CL_SNORM_INT16
74 CL_ARGB CL_SNORM_INT8
75 CL_ARGB CL_SNORM_INT16


3D Image Formats Supported (75)

Channel Order Channel Type

1 CL_R CL_FLOAT
2 CL_R CL_HALF_FLOAT
3 CL_R CL_UNORM_INT8
4 CL_R CL_UNORM_INT16
5 CL_R CL_SNORM_INT16
6 CL_R CL_SIGNED_INT8
7 CL_R CL_SIGNED_INT16
8 CL_R CL_SIGNED_INT32
9 CL_R CL_UNSIGNED_INT8
10 CL_R CL_UNSIGNED_INT16
11 CL_R CL_UNSIGNED_INT32
12 CL_A CL_FLOAT
13 CL_A CL_HALF_FLOAT
14 CL_A CL_UNORM_INT8
15 CL_A CL_UNORM_INT16
16 CL_A CL_SNORM_INT16
17 CL_A CL_SIGNED_INT8
18 CL_A CL_SIGNED_INT16
19 CL_A CL_SIGNED_INT32
20 CL_A CL_UNSIGNED_INT8
21 CL_A CL_UNSIGNED_INT16
22 CL_A CL_UNSIGNED_INT32
23 CL_RG CL_FLOAT
24 CL_RG CL_HALF_FLOAT
25 CL_RG CL_UNORM_INT8
26 CL_RG CL_UNORM_INT16
27 CL_RG CL_SNORM_INT16
28 CL_RG CL_SIGNED_INT8
29 CL_RG CL_SIGNED_INT16
30 CL_RG CL_SIGNED_INT32
31 CL_RG CL_UNSIGNED_INT8
32 CL_RG CL_UNSIGNED_INT16
33 CL_RG CL_UNSIGNED_INT32
34 CL_RA CL_FLOAT
35 CL_RA CL_HALF_FLOAT
36 CL_RA CL_UNORM_INT8
37 CL_RA CL_UNORM_INT16
38 CL_RA CL_SNORM_INT16
39 CL_RA CL_SIGNED_INT8
40 CL_RA CL_SIGNED_INT16
41 CL_RA CL_SIGNED_INT32
42 CL_RA CL_UNSIGNED_INT8
43 CL_RA CL_UNSIGNED_INT16
44 CL_RA CL_UNSIGNED_INT32
45 CL_RGBA CL_FLOAT
46 CL_RGBA CL_HALF_FLOAT
47 CL_RGBA CL_UNORM_INT8
48 CL_RGBA CL_UNORM_INT16
49 CL_RGBA CL_SNORM_INT16
50 CL_RGBA CL_SIGNED_INT8
51 CL_RGBA CL_SIGNED_INT16
52 CL_RGBA CL_SIGNED_INT32
53 CL_RGBA CL_UNSIGNED_INT8
54 CL_RGBA CL_UNSIGNED_INT16
55 CL_RGBA CL_UNSIGNED_INT32
56 CL_BGRA CL_UNORM_INT8
57 CL_BGRA CL_SIGNED_INT8
58 CL_BGRA CL_UNSIGNED_INT8
59 CL_ARGB CL_UNORM_INT8
60 CL_ARGB CL_SIGNED_INT8
61 CL_ARGB CL_UNSIGNED_INT8
62 CL_INTENSITY CL_FLOAT
63 CL_INTENSITY CL_HALF_FLOAT
64 CL_INTENSITY CL_UNORM_INT8
65 CL_INTENSITY CL_UNORM_INT16
66 CL_INTENSITY CL_SNORM_INT16
67 CL_LUMINANCE CL_FLOAT
68 CL_LUMINANCE CL_HALF_FLOAT
69 CL_LUMINANCE CL_UNORM_INT8
70 CL_LUMINANCE CL_UNORM_INT16
71 CL_LUMINANCE CL_SNORM_INT16
72 CL_BGRA CL_SNORM_INT8
73 CL_BGRA CL_SNORM_INT16
74 CL_ARGB CL_SNORM_INT8
75 CL_ARGB CL_SNORM_INT16

oclDeviceQuery, Platform Name = NVIDIA CUDA, Platform Version = OpenCL 1.2 CUDA 10.1.133, SDK Revision = 7027912, NumDevs = 1, Device = GeForce GTX 1660 Ti

System Info:

Local Time/Date = 13:10:11, 04/14/2019
CPU Name: AMD Ryzen Threadripper 1950X 16-Core Processor

of CPU processors: 32

Linux version 4.19.20-customo (root@xub184) (gcc version 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04)) #1 SMP Sat Feb 9 10:29:17 CET 2019

[oclDeviceQuery] test results…
PASSED

exiting in 3 seconds: 3…2…1…done!

Which distro?

I’m running on Fedora 28. See oclDeviceQuery output below. OpenCL sees my CPU, but there’s no mention of my Vega 56.

oclDeviceQuery output

./oclDeviceQuery
[oclDeviceQuery] starting…

./oclDeviceQuery Starting…

OpenCL SW Info:

WARNING: NVIDIA OpenCL platform not found - defaulting to first platform!

CL_PLATFORM_NAME: Portable Computing Language
CL_PLATFORM_VERSION: OpenCL 1.2 pocl 1.1 RelWithDebInfo, LLVM 6.0.1, SPIR, SLEEF, DISTRO, POCL_DEBUG
OpenCL SDK Revision: 7027912

OpenCL Device Info:

1 devices found supporting OpenCL:


Device pthread-AMD Ryzen 7 1700 Eight-Core Processor

CL_DEVICE_NAME: pthread-AMD Ryzen 7 1700 Eight-Core Processor
CL_DEVICE_VENDOR: AuthenticAMD
CL_DRIVER_VERSION: 1.1
CL_DEVICE_VERSION: OpenCL 1.2 pocl HSTR: pthread-x86_64-unknown-linux-gnu-znver1
CL_DEVICE_OPENCL_C_VERSION: OpenCL C 1.2 pocl
CL_DEVICE_TYPE: CL_DEVICE_TYPE_CPU
CL_DEVICE_MAX_COMPUTE_UNITS: 16
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3
CL_DEVICE_MAX_WORK_ITEM_SIZES: 4096 / 4096 / 4096
CL_DEVICE_MAX_WORK_GROUP_SIZE: 4096
CL_DEVICE_MAX_CLOCK_FREQUENCY: 3000 MHz
CL_DEVICE_ADDRESS_BITS: 64
CL_DEVICE_MAX_MEM_ALLOC_SIZE: 8192 MByte
CL_DEVICE_GLOBAL_MEM_SIZE: 30066 MByte
CL_DEVICE_ERROR_CORRECTION_SUPPORT: no
CL_DEVICE_LOCAL_MEM_TYPE: global
CL_DEVICE_LOCAL_MEM_SIZE: 4096 KByte
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 4096 KByte
CL_DEVICE_QUEUE_PROPERTIES: CL_QUEUE_PROFILING_ENABLE
CL_DEVICE_IMAGE_SUPPORT: 1
CL_DEVICE_MAX_READ_IMAGE_ARGS: 128
CL_DEVICE_MAX_WRITE_IMAGE_ARGS: 128
CL_DEVICE_SINGLE_FP_CONFIG: denorms INF-quietNaNs round-to-nearest round-to-zero round-to-inf fma

CL_DEVICE_IMAGE 2D_MAX_WIDTH 16384
2D_MAX_HEIGHT 16384
3D_MAX_WIDTH 2048
3D_MAX_HEIGHT 2048
3D_MAX_DEPTH 2048

CL_DEVICE_EXTENSIONS: cl_khr_byte_addressable_store
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_3d_image_writes
cl_khr_spir
cl_khr_fp64
cl_khr_int64_base_atomics
cl_khr_int64_extended_atomics

CL_DEVICE_PREFERRED_VECTOR_WIDTH_ CHAR 16, SHORT 16, INT 8, LONG 4, FLOAT 8, DOUBLE 4


2D Image Formats Supported (31)

Channel Order Channel Type

1 CL_A CL_SNORM_INT8
2 CL_A CL_SNORM_INT16
3 CL_A CL_UNORM_INT8
4 CL_A CL_UNORM_INT16
5 CL_A CL_SIGNED_INT8
6 CL_A CL_SIGNED_INT16
7 CL_A CL_SIGNED_INT32
8 CL_A CL_UNSIGNED_INT8
9 CL_A CL_UNSIGNED_INT16
10 CL_A CL_UNSIGNED_INT32
11 CL_A CL_FLOAT
12 CL_RGBA CL_SNORM_INT8
13 CL_RGBA CL_SNORM_INT16
14 CL_RGBA CL_UNORM_INT8
15 CL_RGBA CL_UNORM_INT16
16 CL_RGBA CL_SIGNED_INT8
17 CL_RGBA CL_SIGNED_INT16
18 CL_RGBA CL_SIGNED_INT32
19 CL_RGBA CL_UNSIGNED_INT8
20 CL_RGBA CL_UNSIGNED_INT16
21 CL_RGBA CL_UNSIGNED_INT32
22 CL_RGBA CL_HALF_FLOAT
23 CL_RGBA CL_FLOAT
24 CL_ARGB CL_SNORM_INT8
25 CL_ARGB CL_UNORM_INT8
26 CL_ARGB CL_SIGNED_INT8
27 CL_ARGB CL_UNSIGNED_INT8
28 CL_BGRA CL_SNORM_INT8
29 CL_BGRA CL_UNORM_INT8
30 CL_BGRA CL_SIGNED_INT8
31 CL_BGRA CL_UNSIGNED_INT8


3D Image Formats Supported (31)

Channel Order Channel Type

1 CL_A CL_SNORM_INT8
2 CL_A CL_SNORM_INT16
3 CL_A CL_UNORM_INT8
4 CL_A CL_UNORM_INT16
5 CL_A CL_SIGNED_INT8
6 CL_A CL_SIGNED_INT16
7 CL_A CL_SIGNED_INT32
8 CL_A CL_UNSIGNED_INT8
9 CL_A CL_UNSIGNED_INT16
10 CL_A CL_UNSIGNED_INT32
11 CL_A CL_FLOAT
12 CL_RGBA CL_SNORM_INT8
13 CL_RGBA CL_SNORM_INT16
14 CL_RGBA CL_UNORM_INT8
15 CL_RGBA CL_UNORM_INT16
16 CL_RGBA CL_SIGNED_INT8
17 CL_RGBA CL_SIGNED_INT16
18 CL_RGBA CL_SIGNED_INT32
19 CL_RGBA CL_UNSIGNED_INT8
20 CL_RGBA CL_UNSIGNED_INT16
21 CL_RGBA CL_UNSIGNED_INT32
22 CL_RGBA CL_HALF_FLOAT
23 CL_RGBA CL_FLOAT
24 CL_ARGB CL_SNORM_INT8
25 CL_ARGB CL_UNORM_INT8
26 CL_ARGB CL_SIGNED_INT8
27 CL_ARGB CL_UNSIGNED_INT8
28 CL_BGRA CL_SNORM_INT8
29 CL_BGRA CL_UNORM_INT8
30 CL_BGRA CL_SIGNED_INT8
31 CL_BGRA CL_UNSIGNED_INT8

oclDeviceQuery, Platform Name = Portable Computing Language, Platform Version = OpenCL 1.2 pocl 1.1 RelWithDebInfo, LLVM 6.0.1, SPIR, SLEEF, DISTRO, POCL_DEBUG, SDK Revision = 7027912, NumDevs = 1, Device = pthread-AMD Ryzen 7 1700 Eight-Core Processor

System Info:

Local Time/Date = 10:45:02, 04/14/2019
CPU Name: AMD Ryzen 7 1700 Eight-Core Processor

of CPU processors: 16

Linux version 5.0.6-100.fc28.x86_64 ([email protected]) (gcc version 8.3.1 20190223 (Red Hat 8.3.1-2) (GCC)) #1 SMP Wed Apr 3 16:14:34 UTC 2019

[oclDeviceQuery] test results…
PASSED

exiting in 3 seconds: 3…2…1…done!

I’m not sure, that open driver support OpenCL. Did you try proprietary drivers?


Maybe is possible add OpenCL support to open drivers (last comment on first page).

I tried installing the amdgpu-pro OpenCL libraries alongside the amdgpu OSS driver, but ran into a Catch-22. While amdgpu provides some basic OpenCL functionality, Resolve apparently needs more advanced features. Installing the amdgpu-pro OpenCL libraries in /opt/amdgpu works, but with a caveat. It breaks OpenGL. And of course, when Resolve tries to create its GUI windows with OpenGL, it crashes.

I guess I could uninstall the open source driver and install AMDGPU-PRO. The problem with that is I’m not sure how to completely root out the open source driver. This is made even more difficult because I’ve installed the OSS driver from repo with bleeding edge MESA drivers. And then of course, installing the proprietary driver isn’t supported on Fedora 29 (I upgraded successfully.) And even if the install was successful (which seems very unlikely), I could well run into perfomance, stability and compatibility problems.

I seem to be stuck between a rock and a hard place. I could install a different distro (I think CentOS and Ubuntu LTS are supported) or get an Nvidia card. Blech.

:frowning:

I’m using Davinci Resolve with two cards Geforce GTX1660Ti and second GTX 1080Ti (when that is not used for Win10-passthrough). GPU decoding RAW is not working (Error 77).

CentOS 7.6 + DR works fine (probably primary development Linux platform of BMD). For me, CentOS is for daily use too “restrictive” (old).

Buying an Nvidia card doesn’t make sense for me unless it’s a significant upgrade from the Vega 56. And the only GPUs that meet that criteria would be a 1080Ti/2080/2080Ti. Spending $700 or $800 on a video card just is not viable for me right now.

I think what I’m going to do is get another SSD, install Ubuntu LTS (18.04?) on it, then try to match the level of functionality I have with Fedora. That may be a significant investment of time…

I thing Vega 56 will be fine. I’m OK with xubuntu and too lazy for Arch. :wink:

Got Ubuntu 18.04 + AMDGPU-PRO drivers and every thing works…sort of. DaVinci Resolve will now start, so that’s a step in the right direction. However, all the footage I load into it appears as a black screen. This appears to be a codec issue. It looks like I’ll have to use ffmpeg to convert every MP4 file I have to something Resolve considers acceptable.

Another gotcha is the poorer game performance. Some very informal testing shows framerates 15% - 20% less than the open source drivers.

My goal was to capture, record and edit Linux gameplay all on the same box. It looks like that may not be possible. I might be able to do that if I get an Nvidia card, but I really don’t want to drop >$350 on a new video card that won’t outperform my Vega.

I do have a 1050 Ti and a GTX 670 that I could perhaps setup for CUDA, but using AMDGPU-PRO and NVidia proprietary drivers side-by-side could be problematic.