- Mesa «Terakan» Driver Aims To Provide Vulkan Support For Old Radeon HD 6000 Series
- Как я мучался, когда пытался завести Vulkan в Linux Manjaro на карте R9 280
- The Current State Of Older AMD Graphics Hardware On Linux: What Driver To Use And What To Expect
- The Old And The New Driver [ edit ]
- No-No Having Your Cake And Eating It Too [ edit ]
- Practical Results On Old Hardware [ edit ]
- AMD Athlon II x3 with Radeon 7850 2GB GPU [ edit ]
- AMD E1-6010 APU with AMD Radeon R2 Graphics [ edit ]
- AMD Athlon 5350 APU with Radeon R3 [ edit ]
- Conclusions [ edit ]
Mesa «Terakan» Driver Aims To Provide Vulkan Support For Old Radeon HD 6000 Series
There’s a new open-source Vulkan driver in development by an independent developer that is working on providing support for aging Radeon HD 6000 series «Northern Islands» graphics processors.
Open-source developer Vitaliy Kuzmin «Triang3l» who is known for his work on the Xenia Xbox 360 emulator in recent weeks has been working on Terakan as a Mesa Vulkan driver for the Radeon HD 6000 series, namely the Radeon HD 6900 series is where his testing has taken place.
The widely-used Mesa RADV Vulkan driver has only supported Radeon HD 7000 series GCN graphics cards and newer — for GCN 1.0/1.1 GPUs also means having to use the AMDGPU kernel Direct Rendering Manager (DRM) driver rather than the Radeon driver used by default for GCN 1.0/1.1 hardware. Now though for those still relying on pre-GCN graphics cards, the Terakan driver aims to work with the Radeon HD 6000 series on the Radeon DRM Linux kernel driver. Kuzmin has been tweeting about his adventures the past several weeks:
I was not, I became too addicted to just drop it!
Here’s the aftermath of a GPU hang after an EVENT_WRITE_EOP submission 😜 I couldn’t even open the terminal after that!#Terakan https://t.co/VAaM6ZiT8f pic.twitter.com/yfMLFGvjJP
— 🔺 TriΔng3l 🔺 (@Triang3l) May 19, 2023
The driver is still in the very early stages of development. Some of the early Terakan code is currently queued up in his Triang3l Mesa repository.
It will be interesting to see ultimately how well this works out and if only ends up supporting the Cayman GPUs of the HD 6000 series line-up or ultimately ends up working out well for additional pre-GCN GPUs. The usefulness though regardless is likely to be rather limited considering that these aging AMD Radeon GPUs simply aren’t powerful enough for running many modern games — regardless of native Vulkan API support or if going through DXVK, etc. But still this Vulkan API driver could be useful for running some more basic games, any compositors adding Vulkan API support, and other basic uses for this graphics API. Some Vulkan API functionality though also won’t be possible with these GPUs but in any case it will be interesting to see what comes of this open-source Terakan driver. To reiterate though, right now this driver is at the very earliest stages of development and isn’t yet close to being ready by end-users.
Как я мучался, когда пытался завести Vulkan в Linux Manjaro на карте R9 280
Я очень хочу поделиться с вами тем, что спустя пару дней и ночей я все-таки смог запустить Vulkan на R9 280 в Linux Manjaro. Решил по этому поводу написать пост, что бы может такие как и я сделали это намного быстрее. Так как я обыватель Windows, я очень мало знаю все внутренности Linux, а особенно Arch дистрибутив, на котором и построена Manjaro. Но решил перейти все-таки на Linux. По моей работе мне как-раз будет ближе Linux со своей быстротой , но правда за это нужно платить (лично для меня)
Вот одна из основных проблем была неработоспособность Vulkan драйвера на моей старенькой видеокарте. Так как она из разряда GCN 1.0, то обычный amdgpu драйвер не поддерживал ее, а Каталист в целом не поддерживается в новых версиях ядра (возможно я ошибаюсь, но вроде как так и есть). Как я только не пытался за все это время запустить vulkaninfo так, что бы наконец увидеть заветные строчки.
Спустя очень долгое время и копания на всевозможных форумах про amdgpu, amdgpu-pro, ati и тому подобное я нашел единственное упоминание об amdgpu-experimental в каком-то обсуждении на reddit, где и рассказали как завести Vulkan с GCN 1.0 видеокартой. (GCN 1.0 видеокарты официально поддерживает только radeon драйвер, в котором отсутствует Vulkan.)
Что же надо сделать-то?
1. Устанавливаем vulkan-tools что бы у нас был доступ к vulkaninfo
sudo pacman -S vulkan-tools
2. Устанавливаем amdgpu-experimental и vulkan-radeon (должен входить в пакет mesa)
sudo pacman -S amdgpu-experimental vulkan-radeon
Перезагружаемся и запускаем в терминале vulkaninfo
Если все поставилось правильно, то должно быть вот это:
После всего этого у меня наконец все, что требовало Vulkan заработало
Простите если в чем-то ошибся, что-то пропустил или не так выражаюсь в терминах, но я надеюсь тут будет более-менее понятно как можно попробовать запустить Vulkan особо без танцев с бубном на видеокартах GCN 1.0. (Пишу все это под большой эйфорией того, что все наконец заработало).
Поправляйте меня или спрашивайте о чем-нибудь, я обязательно отвечу и исправлю.
The Current State Of Older AMD Graphics Hardware On Linux: What Driver To Use And What To Expect
There is more than one graphics driver for AMD graphics card included in the Linux kernel. Those of you who use older AMD graphics hardware have two kernel drivers to choose from. The default driver is called radeon and tends to support everything except Vulkan. It is possible to enable Vulkan support on older AMD graphics cards by using the newer amdgpu instead of radeon . Doing so could be safe but it could also break your machine’s ability to return from hibernation.
written by 林慧 (Wai Lin) 2020-07-17 — last edited 2020-08-06. © CC BY
The AMD Radeon HD 7850 technology was a mid-range time when it was released more than a decade ago. It does support Vulkan if you use the right kernel driver but you won’t be able to do hardware video decoding; you can have one or the other. You can’t suspend to disk regardless of what kernel driver you go for.
Many people can simply not afford to buy the latest and greatest computer technology. There are also many people who can and that is why electronic waste is a huge problem. Both factors make a good argument for squeezing as much possible out of existing hardware you already own.
Supporting older already sold hardware is not at all profitable for big hardware companies like AMD and Intel. Older drivers, even those that are free software, are rarely updated beyond a few years after the device’s release date. This is specially true when it comes to the AMD graphics drivers.
The Old And The New Driver [ edit ]
The older «ATI Radeon» ( DRM_RADEON ) Linux kernel driver was actively maintained for years and years until a fancy new kernel driver called «AMD GPU» ( DRM_AMDGPU ) was introduced around the time the Polaris series (RX4xx) cards were released. The amdgpu driver is the default driver for Polaris series cards and newer. radeon remains the default kernel driver for older cards but is is not the only choice: Both drivers can be used with Polaris series cards and as well as earlier graphics chips based on the GCN architecture.
The amdgpu driver can be enabled on the «Southern Islands» family of cards and APUs (HD7750-HD7970, R9 270, R7 240, R7 250, R9-280, R9 370X and some more) by adding the kernel parameters radeon.si_support=0 amdgpu.si_support=1 . The parameters for «Sea Islands» family cards and APUs (HD7790, HD8180-HD8400, R7 260, R9 290) are nearly identical: radeon.cik_support=0 amdgpu.cik_support=1
See AMD graphics for a more detailed list of graphics chips. «Southern Islands» and «Sea Islands» are the only graphics chip families you can optionally enable using a _support= kernel parameter, support for other graphics chip families are not provided in drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c .
No-No Having Your Cake And Eating It Too [ edit ]
There are some trade-offs between the radeon and the amdgpu driver.
- Vulkan will only work if the amdgpu driver is used.
- Suspend-to-disk will more likely only work correctly with the radeon driver. There is a one in three chance that it will work with the amdgpu driver. You may lose the ability to suspend-to-disk if you opt to use the amdgpu driver and you may find that it works as expected.
- HDMI audio used to be a problem both when amdgpu was used on older hardware and when radeon was used on newer hardware. HDMI audio works just fine when the amdgpu driver in recent kernels is used with older AMD graphics hardware.
- Hardware accelerated video encoding and decoding used to only work with radeon on older hardware. This may or may not still be the case depending on what AMD graphics card you have. Older «Southern Islands» appear to only do hardware video decoding when the radeon driver is used; «Sea Island» cards appear capable hardware video decoding regardless of which driver is used.
Practical Results On Old Hardware [ edit ]
We are in procession of a variety of old AMD technology which puts us in a position when were we are able to waste huge amounts of time testing combinations of kernel drivers and hardware configurations.
The following tests were done using Linux kernel 5.7.9 and Mesa 20.1.3.
AMD Athlon II x3 with Radeon 7850 2GB GPU [ edit ]
The Gigabyte «Ultra Durable» branding has since been replaced with «RGB».
The rusty old AMD Athlon II x3 with Radeon 7850 2GB GPU technology from around 2010 has graphics driver related issues regardless of which of the two drivers are (ab)used. Notably, MPEG-AVC (x264) hardware video decoding will only work with the older radeon driver. Suspend to RAM worked fine with both. Suspend to disk did not, a very bad kernel panic ensued after resuming from disk every time when the amdgpu kernel driver was in use. Suspending to disk was troublesome with the radeon driver as well: MPEG-AVC (x264) hardware video decoding stops working when the machine resumes from suspend. The kernel ring buffer story about this unfortunate problem is:
[ 808.082857] [drm:radeon_uvd_send_upll_ctlreq] *ERROR* Timeout setting UVD clocks! [ 808.082859] [drm:uvd_v1_0_ib_test] *ERROR* radeon: failed to raise UVD clocks (-110). [ 808.082887] [drm:radeon_ib_ring_tests] *ERROR* radeon: failed testing IB on ring 5 (-110).
It is very unfortunate that this AMD technology still does not work as it should with either kernel driver after 10 years..
AMD E1-6010 APU with AMD Radeon R2 Graphics [ edit ]
The AMD E1-6010 APU is a laptop APU from 2015. It was a very weak and slow 1.4 GHz dual-core CPU with a weak APU when it was released. It is less powerful than a modern Android tablet. It is still quite capable of running a light GNU/Linux desktop environment like Xfce and LXQt. I can be made to run Vulkan software by using the amdgpu kernel driver instead of the default radeon driver but it is totally NOT worth it for one simple reason: It breaks suspend to disk. That is very unfortunate since the AMD E1-6010 is primarily found in old laptops and notebooks.
The AMD Mullins graphics technology AMD E1-6010 APU supports hardware video encoding regardless of which driver is used. Vulkan works fine with the amdgpu kernel driver is used. Suspending from disk when the amdgpu driver is used results in a very black screen and sad kernel ring buffer messages.
Kernel ring buffer story after returning from suspend to RAM on a AMD E1-6010 APU machine.
We do not know what AMD developers meant by:
[ 804.133022] amdgpu 0000:00:01.0: [drm:amdgpu_ring_test_helper] *ERROR* ring gfx test failed (-110) [ 804.133030] [drm:amdgpu_device_ip_resume_phase2] *ERROR* resume of IP block failed -110 [ 804.133034] [drm:amdgpu_device_resume] *ERROR* amdgpu_device_ip_resume failed (-110). [ 804.133042] PM: dpm_run_callback(): pci_pm_restore+0x0/0xd0 returns -110 [ 804.133059] PM: Device 0000:00:01.0 failed to restore async: error -110
[ 805.118487] BUG: kernel NULL pointer dereference, address: 0000000000000008 [ 805.118498] #PF: supervisor read access in kernel mode [ 805.118502] #PF: error_code(0x0000) - not-present page
The amdgpu is an alternative on this particular APU if you can live without the ability resume when the system has been suspended to disk.
AMD Athlon 5350 APU with Radeon R3 [ edit ]
AMD Athlon 5350 APU with Radeon R3 | ||||||
---|---|---|---|---|---|---|
radeon is used by default, force amdgpu with radeon.cik_support=0 amdgpu.cik_support=1 | ||||||
OpenGL | Vulkan | Hardware Video |
Conclusions [ edit ]
The amdgpu kernel driver is primarily made for newer AND graphics chips. It can be used with older GCN based cards and it may work flawlessly. That is the case with the AMD Athlon 5350 APU but it is not the case with other AMD technology like the AMD E1-6010 APU or the Radeon HD 7850 GPU. There is a reason why the radeon driver remains the default for those older graphics chips.
You have to use the amdgpu driver if you want to be able to use Vulkan applications. Forcefully enabling it on a machine with an older AMD graphics chip may be worth it if that is something you really want — just make sure you test that things like suspend to disk still works as expected once you enable it. You may find that you get a horrible kernel panic when an older system using amdgpu returns from hibernation. That is of course less relevant if you have an older system where it does not work regardless of which graphics driver you are using. It really is quite sad that it remains impossible to use certain functionality with AMD graphics cards a decade after they were released.