序
LinuxでのAMFの利用は基本的に、Vulkan AMFを使う。 これは、Vulkan経由でAMFにアクセスするもので、amdgpu proドライバーに含まれている。
amdgpu proドライバーは、LinuxのRadeon用ドライバーのプロプライエタリ実装だ。 amdgpuはLinuxカーネルに含まれるオープンソースドライバーだが、amdgpu proはamdgpuの実装の一部にプロプライエタリの実装を使う。
これは、特殊な用途・目的のために提供されているものだと言う。特に性能が向上したりはしないそうだ。
だが、Vulkan AMFはamdgpuに含まれていないため、amdgpu
proの実装が必要になる。
archlinuxだと、AURのvulkan-amdgpu-pro
とamf-amdgpu-pro
パッケージが必要だ。
今回の更新
Vulkan AMF自体はRadeonに実装されているエンコーダー、つまりH.264, HEVC, AV1が使えるのだが、Linuxの実装はH.264に限られていた。
また、RX7000シリーズには対応していなかった。
今回の更新でRX7000シリーズへの対応に加え、H.264, HEVC,
AV1のいずれも対応した。 ffmpegではh264_amf
,
hevc_amf
, av1_amf
となる。
RX7900XTXだとh264_amf
,
hevc_amf
ともに4kソースに対して400fps程度が出る超高速エンコードが可能。
ただ、av1_amf
に関しては、実行してもエンコードが進まず、システム全体がフリーズしてしまう。
こんな感じだ。
7月 22 22:34:21 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000028 SMN_C2PMSG_82:0x00000000
7月 22 22:34:21 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: Failed to enable gfxoff!
7月 22 22:34:26 carnation kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring vcn_unified_1 timeout, signaled seq=30269, emitted seq=30271
7月 22 22:34:26 carnation kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* Process information: process ffmpeg pid 158223 thread ffmpeg pid 158223
7月 22 22:34:26 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: GPU reset begin!
7月 22 22:34:30 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: failed to suspend display audio
7月 22 22:34:31 carnation kernel: amdgpu 0000:0c:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]] *ERROR* IB test failed on vcn_unified_0 (-110).
7月 22 22:34:32 carnation kernel: amdgpu 0000:0c:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]] *ERROR* IB test failed on vcn_unified_1 (-110).
7月 22 22:34:37 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000028 SMN_C2PMSG_82:0x00000000
7月 22 22:34:37 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: Failed to power ungate JPEG!
7月 22 22:34:37 carnation kernel: [drm:jpeg_v4_0_set_powergating_state [amdgpu]] *ERROR* Dpm enable jpeg failed, ret = -62.
7月 22 22:34:38 carnation kernel: amdgpu 0000:0c:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]] *ERROR* IB test failed on jpeg_dec (-110).
7月 22 22:34:38 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: ib ring test failed (-110).
7月 22 22:34:39 carnation kernel: [drm] Register(0) [regUVD_POWER_STATUS] failed to reach value 0x00000001 != 0x00000002
7月 22 22:34:39 carnation kernel: [drm] Register(0) [regUVD_RB_RPTR] failed to reach value 0x00000080 != 0x00000000
7月 22 22:34:39 carnation kernel: [drm] Register(0) [regUVD_POWER_STATUS] failed to reach value 0x00000001 != 0x00000002
あるいは、こう
7月 22 22:51:16 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000028 SMN_C2PMSG_82:0x00000000
7月 22 22:51:16 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: Failed to enable gfxoff!
7月 22 22:51:22 carnation kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring vcn_unified_1 timeout, signaled seq=7625, emitted seq=7627
7月 22 22:51:22 carnation kernel: [drm:amdgpu_job_timedout [amdgpu]] *ERROR* Process information: process ffmpeg pid 4331 thread ffmpeg pid 4331
7月 22 22:51:22 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: GPU reset begin!
7月 22 22:51:26 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: failed to suspend display audio
7月 22 22:51:27 carnation kernel: amdgpu 0000:0c:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]] *ERROR* IB test failed on vcn_unified_0 (-110).
7月 22 22:51:32 carnation kernel: amdgpu 0000:0c:00.0: amdgpu: SMU: I'm not done with your previous command: SMN_C2PMSG_66:0x00000028 SMN_C2PMSG_82:0x00000000