Proton version: Proton-10.0-4 (Experimental has the same issue)
I confirm:
[X] that I haven't found an existing compatibility report for this game.
[X] that I have checked whether there are updates for my system available.
Symptoms
After entering the game and starting a new race, there is an occasional 5-6 second freeze in gameplay on certain devices with batteries. Both my Legion Go S and Legion Go 2 exhibit these freezes, while my Steam Deck OLED does not.
The game repeatedly calls two functions once you enter into gameplay:
Wine's implementation of this seems to have the game query /sys/class/power_supply every ~100ms or so. On Lenovo devices, these repeated calls can eventually lead to a call getting blocked for 5-6 seconds. When this read on the power information gets blocked, the game appears to freeze until that call is able to be unblocked. This can be reproduced with a python script that basically does the same exact thing that wine does:
deck@legion-go-s ~/Downloads> python repro-wine-battery-poll.py
Targets:
/sys/class/power_supply/ACAD type=Mains attrs=online
/sys/class/power_supply/BAT0 type=Battery attrs=status,voltage_now,charge_full,charge_now,current_now
Polling at 10.0 Hz for 300s; slow-iter threshold = 200 ms
[16:40:18] iter 136 read took 5435 ms
[16:41:41] iter 908 read took 5524 ms
Done. 951 iterations in 105.8s (effective 9.0 Hz, target 10.0 Hz)
slow iterations (>200 ms): 2
worst single read: 5524 ms
longest tick-to-tick gap: 99 ms
This blocked call appears to be caused by some sort of EC BIOS bug, which has been reported to Lenovo. However, the game shows no signs of freezing at all on Windows, which you would expect for an EC issue like this. It was theorized that Windows might be caching this power information and then games just call the cached copy, but I'm not sure the best way to prove this beyond what I already did (running the same game on Windows).
Since Windows powers through without any issues on the same hardware, it seems worth investigating further on the Proton side even if Lenovo fixes the EC issue.
Compatibility Report
System Information
I confirm:
Symptoms
After entering the game and starting a new race, there is an occasional 5-6 second freeze in gameplay on certain devices with batteries. Both my Legion Go S and Legion Go 2 exhibit these freezes, while my Steam Deck OLED does not.
The game repeatedly calls two functions once you enter into gameplay:
Wine's implementation of this seems to have the game query
/sys/class/power_supplyevery ~100ms or so. On Lenovo devices, these repeated calls can eventually lead to a call getting blocked for 5-6 seconds. When this read on the power information gets blocked, the game appears to freeze until that call is able to be unblocked. This can be reproduced with a python script that basically does the same exact thing that wine does:This blocked call appears to be caused by some sort of EC BIOS bug, which has been reported to Lenovo. However, the game shows no signs of freezing at all on Windows, which you would expect for an EC issue like this. It was theorized that Windows might be caching this power information and then games just call the cached copy, but I'm not sure the best way to prove this beyond what I already did (running the same game on Windows).
Since Windows powers through without any issues on the same hardware, it seems worth investigating further on the Proton side even if Lenovo fixes the EC issue.
steam-4790.log
repro-wine-battery-poll.py
Reproduction
Eventually, you should see the game appear to freeze up while audio continues to play.