Bug 110216 - radv: Segfault when compiling compute shaders from Assassin's Creed Odyssey (regression, bisected)
Summary: radv: Segfault when compiling compute shaders from Assassin's Creed Odyssey (...
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/Vulkan/radeon (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: mesa-dev
QA Contact: mesa-dev
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-03-21 09:05 UTC by Philip Rebohle
Modified: 2019-03-21 10:52 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
Compute shader that triggers the crash (37.88 KB, application/octet-stream)
2019-03-21 09:05 UTC, Philip Rebohle
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Philip Rebohle 2019-03-21 09:05:44 UTC
Created attachment 143744 [details]
Compute shader that triggers the crash

Hello,

trying to compile the attached compute shader (among others) causes the driver to segfault. The commit which introduced the issue is:


commit 3235a942c16b61849bc16a710c53f0a7a5566f0d (HEAD, refs/bisect/bad)
Author: Timothy Arceri <tarceri@itsqueeze.com>
Date:   Thu Dec 6 16:00:40 2018 +1100

    nir: find induction/limit vars in iand instruction


Please let me know if you need more info.
Comment 1 Timothy Arceri 2019-03-21 10:41:33 UTC
Sorry, it's been fixed I'm waiting on someone to review the patch.

https://patchwork.freedesktop.org/patch/292850/
Comment 2 Timothy Arceri 2019-03-21 10:52:45 UTC
Fixed by:

commit 427a6fee439b2df96edc813c56572169385772a6
Author: Timothy Arceri <tarceri@itsqueeze.com>
Date:   Tue Mar 19 12:09:36 2019 +1100

    nir: only override previous alu during loop analysis if supported
    
    Users of this function expect alu to be a supported comparision
    if the induction variable is not NULL. Since we attempt to
    override the return values if the first limit is not a const, we
    must make sure we are dealing with a valid comparision before
    overriding the alu instruction.
    
    Fixes an unreachable in inverse_comparison() with the game
    Assasins Creed Odyssey.
    
    Fixes: 3235a942c16b ("nir: find induction/limit vars in iand instructions")
    
    Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110216


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.