Summary: | radeon buffer allocation failure during startup of Factorio | ||
---|---|---|---|
Product: | Mesa | Reporter: | tnmailinglists |
Component: | Drivers/Gallium/r600 | Assignee: | Default DRI bug account <dri-devel> |
Status: | RESOLVED FIXED | QA Contact: | Default DRI bug account <dri-devel> |
Severity: | normal | ||
Priority: | medium | CC: | nhaehnle |
Version: | git | ||
Hardware: | x86-64 (AMD64) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
terminal output when running the executable
strace gdb bt likely fix |
Description
tnmailinglists
2017-03-16 22:55:11 UTC
Created attachment 130278 [details]
strace
Created attachment 130279 [details]
gdb bt
I retested the game with mesa 12.0.6 and xserver-xorg-video-radeon 1:7.7.1 (the current versions for default Lubuntu 16.10) and noticed that while the game doesn't crash, it still produces buffer allocation failures during startup: 2.969 Initial atlas bitmap size is 8192 radeon: Failed to allocate a buffer: radeon: size : 268435456 bytes radeon: alignment : 16384 bytes radeon: domains : 4 radeon: flags : 20 radeon: Failed to allocate a buffer: radeon: size : 268435456 bytes radeon: alignment : 16384 bytes radeon: domains : 4 radeon: flags : 20 radeon: Failed to allocate a buffer: radeon: size : 268435456 bytes radeon: alignment : 16384 bytes radeon: domains : 4 radeon: flags : 20 radeon: Failed to allocate a buffer: radeon: size : 268435456 bytes radeon: alignment : 16384 bytes radeon: domains : 4 radeon: flags : 20 3.029 Couldn't create atlas bitmap (size 8192x8182), will try again 3.094 Created atlas bitmap 4096x4096 The maximum size for allocations in VRAM on radeon are usually 256MB minus pinned system resources like GART. The game tries to allocate something which is 256MB in size, so that won't fit. Either the driver tries to allocate a temporary buffer which is way to large or the game tries to allocate a texture which is way to large. (In reply to tnmailinglists from comment #3) > 3.029 Couldn't create atlas bitmap (size 8192x8182), will try again > 3.094 Created atlas bitmap 4096x4096 Looks like the game now gracefully handles the failure to allocate an 8192x8192 (= 256MB) atlas texture and falls back to a 4096x4096 one. The crash before was probably a game bug. (In reply to Michel Dänzer from comment #5) > (In reply to tnmailinglists from comment #3) > > 3.029 Couldn't create atlas bitmap (size 8192x8182), will try again > > 3.094 Created atlas bitmap 4096x4096 > > Looks like the game now gracefully handles the failure to allocate an > 8192x8192 (= 256MB) atlas texture and falls back to a 4096x4096 one. The > crash before was probably a game bug. I think you are misreading my comment, I was using an older stable version of mesa there to make sure that it still worked as described in the original post. I did not change the game version. It does not crash with mesa 12.0.6 and radeon 1:7.7.1, but it does crash on mesa 17.1 git with radeon 1:7.9.0. It could still be a game bug, but I'd guess something has changed in the way the driver does buffer allocation if it crashes in one case but not the other with the same game executable. I've reopened for now since the crash still happens on git mesa, feel free to close again if I misunderstood what you meant. I indeed misread your comment, sorry. Can you bisect Mesa? I managed to bisect mesa and got this result: https://cgit.freedesktop.org/mesa/mesa/commit/?id=fb827c055cb1bdd2b18d0687c06c56b537d805f3 is the first bad commit commit fb827c055cb1bdd2b18d0687c06c56b537d805f3 Author: Nicolai Hähnle <nicolai.haehnle@amd.com> Date: Mon Sep 12 12:19:47 2016 +0200 winsys/radeon: enable buffer allocation from slabs Only enable for chips with GPUVM, because older driver paths do not take the required offset into account. Reviewed-by: Marek Olšák <marek.olsak@amd.com> :040000 040000 4e1327d4b72890178a2057d2341971001f2de54d d162404a219307e5f6cda1009b864e66f23f4e63 M src I have also noticed that after a recent update the game now gives some more information, so when it does run like described in comment #3, it now also tells me that it detected an error by adding the following line right after the four driver error blocks: 2.321 glTexImage2D for format ARGB_8888, size 8192x8185 failed (GL_OUT_OF_MEMORY) Looks like Nicolai's change caused a regression for non-VM GPUs. Created attachment 132275 [details] [review] likely fix It is a silly bug. The attached patch should fix the crash you're seeing. Please let me know if the game runs fine with this or if there is any other crash you're running into. Thanks! The game starts up fine without a crash now and handles the out of memory error gracefully like before. Thanks! Thanks for testing again. The fix is in Mesa master, commit b0b4b5e8f7a25dd11c1662d339d68c9733e9b2dc. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.