Trying to run 'Ancient Cities' Game, requires openGL extension

Lot’s of digging around on this one but long story short it’s a standing issue with this game:

Quote by an Uncasual Games developer:

AMD Open source drivers lacks an OpenGL Extension we use for the game.
You need to use the proprietary AMD drivers to be able to use the game in Linux under Proton. We use float16 extensions to maximize performance in the game cause we render thousands or instances.

Now from what I understand my install shipped with the opensource mesa package whose contributers have already been working on the problem:

This is where I get lost. AMD_gpu_shader_half_float support appears to have been added 2 years ago but the game still only launches when I force “MESA_EXTENSION_OVERRIDE=GL_AMD_gpu_shader_half_float %command%” in steam and then misses the extensions support (missing textures etc.).

So my first question is: What is missing from mesa to resolve the issue here?
I’d like to understand the situation.

As for working around it:
pamac doesn’t seem to find any amdgpu-pro-opgl or other AUR packages I found in older threads from 2021/2022. I was however able to clone the full installer from AUR (en) - amdgpu-pro-installer.

I think I can work my way through running that successfully but my question is what happens to the mesa package? From what I’ve read amd pro builds (partially) on open source drivers but from current descriptions these sound more like standalone install. Is there going to be a conflict? If so, do I have to uninstall the mesa package first?

Provided that everyone seems to agree mesa is generally much better for gaming and I’m currently comfy in recvieing regular updates for that I’d like to keep them as the default. Is there a way to switch between the drivers or use amd pro only for specific games like Ancient Cities?

Kernel: 6.8.2-zen2-1-zen arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
clocksource: tsc avail: hpet,acpi_pm
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=009286cb-0285-4127-a549-89672838992b rw rootflags=subvol=@
quiet resume=UUID=58b306a5-086f-46bd-affd-6a1e60fb5244 loglevel=3
Desktop: KDE Plasma v: 6.0.2 tk: Qt v: N/A info: frameworks v: 6.0.0
wm: kwin_wayland vt: 1 dm: SDDM Distro: Garuda base: Arch Linux
Type: Desktop System: ASUS product: N/A v: N/A
serial: <superuser required>
Mobo: ASUSTeK model: ROG STRIX B650E-E GAMING WIFI v: Rev 1.xx
serial: <superuser required> part-nu: SKU uuid: <superuser required>
UEFI: American Megatrends v: 1654 date: 08/25/2023
Info: model: AMD Ryzen 7 7700X bits: 64 type: MT MCP arch: Zen 4 gen: 5
level: v4 note: check built: 2022+ process: TSMC n5 (5nm)
family: 0x19 (25) model-id: 0x61 (97) stepping: 2
microcode: 0xA601203
Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
L1: 512 KiB desc: d-8x32 KiB; i-8x32 KiB L2: 8 MiB desc: 8x1024 KiB
L3: 32 MiB desc: 1x32 MiB
Speed (MHz): avg: 2104 high: 4795 min/max: 400/5573 scaling:
driver: amd-pstate-epp governor: powersave cores: 1: 3512 2: 400 3: 400
4: 400 5: 400 6: 3449 7: 400 8: 3612 9: 3845 10: 400 11: 3198
12: 3273 13: 400 14: 4795 15: 400 16: 4794 bogomips: 144006
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3
Vulnerabilities: <filter>
Device-1: AMD Navi 21 [Radeon RX 6800/6800 XT / 6900 XT]
vendor: Micro-Star MSI driver: amdgpu v: kernel arch: RDNA-2
code: Navi-2x process: TSMC n7 (7nm) built: 2020-22 pcie: gen: 4
speed: 16 GT/s lanes: 16 ports: active: DP-3 off: HDMI-A-1
empty: DP-1,DP-2,Writeback-1 bus-ID: 03:00.0 chip-ID: 1002:73bf
class-ID: 0300
Display: wayland server: v: with: Xwayland v: 23.2.4
compositor: kwin_wayland driver: X: loaded: amdgpu
unloaded: modesetting,radeon alternate: fbdev,vesa dri: radeonsi
gpu: amdgpu display-ID: 0
Monitor-1: DP-3 res: 2560x1440 size: N/A modes: N/A
API: EGL v: 1.5 hw: drv: amd radeonsi platforms: device: 0
drv: radeonsi device: 1 drv: swrast surfaceless: drv: radeonsi wayland:
drv: radeonsi x11: drv: radeonsi inactive: gbm
API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 24.0.3-arch1.2
glx-v: 1.4 direct-render: yes renderer: AMD Radeon RX 6800 (radeonsi
navi21 LLVM 17.0.6 DRM 3.57 6.8.2-zen2-1-zen) device-ID: 1002:73bf
memory: 15.62 GiB unified: no display-ID: :1.0
API: Vulkan v: 1.3.279 layers: 13 device: 0 type: discrete-gpu
name: AMD Radeon RX 6800 (RADV NAVI21) driver: mesa radv
v: 24.0.3-arch1.2 device-ID: 1002:73bf surfaces: xcb,xlib,wayland
device: 1 type: cpu name: llvmpipe (LLVM 17.0.6 256 bits)
driver: mesa llvmpipe v: 24.0.3-arch1.2 (LLVM 17.0.6)
device-ID: 10005:0000 surfaces: xcb,xlib,wayland
Device-1: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel v: kernel
pcie: gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 03:00.1
chip-ID: 1002:ab28 class-ID: 0403
Device-2: ASUSTek USB Audio driver: hid-generic,snd-usb-audio,usbhid
type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-6:2
chip-ID: 0b05:1a52 class-ID: 0300
API: ALSA v: k6.8.2-zen2-1-zen status: kernel-api with: aoss
type: oss-emulator tools: N/A
Server-1: PipeWire v: 1.0.4 status: active with: 1: pipewire-pulse
status: active 2: wireplumber status: active 3: pipewire-alsa
type: plugin 4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Device-1: Intel Ethernet I225-V vendor: ASUSTeK driver: igc v: kernel
pcie: gen: 2 speed: 5 GT/s lanes: 1 port: N/A bus-ID: 08:00.0
chip-ID: 8086:15f3 class-ID: 0200
IF: eno1 state: down mac: <filter>
Device-2: MEDIATEK MT7922 802.11ax PCI Express Wireless Network
Adapter vendor: Foxconn driver: mt7921e v: kernel pcie: gen: 2
speed: 5 GT/s lanes: 1 bus-ID: 09:00.0 chip-ID: 14c3:0616
class-ID: 0280
IF: wlp9s0 state: up mac: <filter>
Info: services: NetworkManager, smbd, systemd-timesyncd,
Device-1: Foxconn / Hon Hai Wireless_Device driver: btusb v: 0.8
type: USB rev: 2.1 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-11:5
chip-ID: 0489:e0e2 class-ID: e001 serial: <filter>
Report: btmgmt ID: hci0 rfk-id: 1 state: up address: <filter>
bt-v: 5.2 lmp-v: 11 status: discoverable: no pairing: no
class-ID: 6c0104
System Temperatures: cpu: 39.0 C mobo: N/A gpu: amdgpu temp: 59.0 C
mem: 60.0 C
Fan Speeds (rpm): N/A gpu: amdgpu fan: 0
Memory: total: 32 GiB note: est. available: 31.08 GiB
used: 7.92 GiB (25.5%)
Processes: 410 Power: uptime: 4h 33m states: freeze,mem,disk
suspend: deep avail: s2idle wakeups: 0 hibernate: platform
avail: shutdown, reboot, suspend, test_resume image: 12.42 GiB
services: org_kde_powerdevil, power-profiles-daemon, upowerd
Init: systemd v: 255 default: graphical tool: systemctl
Packages: pm: pacman pkgs: 2084 libs: 591 tools: octopi,pamac,paru
Compilers: clang: 17.0.6 gcc: 13.2.1 Shell: garuda-inxi default: fish
v: 3.7.0 running-in: konsole inxi: 3.3.33
Garuda (2.6.23-1):
System install date:     2024-03-21
Last full system update: 2024-03-29
Is partially upgraded:   No
Relevant software:       snapper NetworkManager dracut
Windows dual boot:       Probably (Run as root to verify)
Failed units:

You probably already have most of these by default from the installation, but take a look and see if you are missing anything:

sudo pacman -S --needed lib32-mesa lib32-vulkan-radeon libva-mesa-driver mesa mesa-utils mesa-vdpau vulkan radeon xf86-video-amdgpu
1 Like

Thank you, but I don’t think anything is missing from the mesa drivers.

I was able to solve it for now.
The work-around suggested in links above is still valid. After doing some more research I felt confident to try it and the game launches without issues.

All I needed to do was install amd pro openGL (nothing else from the proprietary package). It runs on top of the pre-installed mesa packages or installs what it absolutely needs. I was able to get build it with yay amd. That lists all available packages for amd. The AUR package (amdgpu-pro-oglp) was good enough.
Don’t forget to set launch options for the game in steam so it launches with the pro openGL library rather than the default mesa one:
LD_LIBRARY_PATH="/usr/lib/amdgpu-pro/" %command%

The game has only Bronze rating on ProtonDB, not the best compatibility:

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.