https://bugs.freedesktop.org/show_bug.cgi?id=98761
Bug ID: 98761 Summary: [regression][radeonsi][polaris]"radeonsi: set IF_THRESHOLD to 3" breaks Wither2's ground Product: Mesa Version: git Hardware: Other OS: All Status: NEW Severity: normal Priority: medium Component: Drivers/Gallium/radeonsi Assignee: dri-devel@lists.freedesktop.org Reporter: arek.rusi@gmail.com QA Contact: dri-devel@lists.freedesktop.org
Created attachment 128044 --> https://bugs.freedesktop.org/attachment.cgi?id=128044&action=edit ground looks weird
mesa/llvm git/trunk kernel 4.8.x & drm-next-4.10-wip
this is happend on polaris(rx470) verde works corectly (for radeon drv, amdgpu not tested yet)
bisected: 74e39de9324d2d2333cda6adca50ae2a3fc36de2 is the first bad commit commit 74e39de9324d2d2333cda6adca50ae2a3fc36de2 Author: Marek Olšák marek.olsak@amd.com Date: Fri Oct 28 23:08:50 2016 +0200
radeonsi: set IF_THRESHOLD to 3
Piglit regressions (radeonsi or LLVM bugs, they pass on softpipe): - glsl-1.10/execution/variable-indexing/vs-output-array-vec3-index-wr - glsl-1.10/execution/variable-indexing/vs-output-array-vec4-index-wr - glsl-110/execution/variable-indexing/vs-temp-array-mat2-index-col-row-wr - glsl-110/execution/variable-indexing/vs-temp-array-mat2-index-row-wr
Totals: SGPRS: 1132185 -> 1168801 (3.23 %) VGPRS: 907856 -> 906204 (-0.18 %) Spilled SGPRs: 2011 -> 2425 (20.59 %) Spilled VGPRs: 368 -> 96 (-73.91 %) Scratch VGPRs: 1344 -> 1060 (-21.13 %) dwords per thread Code Size: 35916164 -> 35705372 (-0.59 %) bytes LDS: 767 -> 767 (0.00 %) blocks Max Waves: 194010 -> 194921 (0.47 %) Wait states: 0 -> 0 (0.00 %)
Before: VGPR SPILLING APPS Shaders SpillVGPR ScratchVGPR alien_isolation 2938 38 40 bioshock-infinite 1769 245 732 dirt-showdown 548 85 72 f1-2015 776 0 320 ue4_lightroom_inter.. 74 0 180
After: VGPR SPILLING APPS Shaders SpillVGPR ScratchVGPR alien_isolation 2938 38 40 bioshock-infinite 1769 0 480 dirt-showdown 548 58 40 f1-2015 776 0 320 ue4_lightroom_inter.. 74 0 180
Bioshock and DiRT benefit.
If I set IF_THRESHOLD=4, tesseract starts spilling VGPRs
Reviewed-by: Nicolai Hähnle nicolai.haehnle@amd.com
:040000 040000 2c773601e2956578e8da4a6031cb02837255b953 7d5f7c3faebe4a11631e70bde258d78fa7357008 M src
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #1 from Arek Ruśniak arek.rusi@gmail.com --- Created attachment 128045 --> https://bugs.freedesktop.org/attachment.cgi?id=128045&action=edit ground looks good
https://bugs.freedesktop.org/show_bug.cgi?id=98761
Nicolai Hähnle nhaehnle@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|[regression][radeonsi][pola |[regression][radeonsi][pola |ris]"radeonsi: set |ris]"radeonsi: set |IF_THRESHOLD to 3" breaks |IF_THRESHOLD to 3" breaks |Wither2's ground |Witcher2's ground
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #2 from Nicolai Hähnle nhaehnle@gmail.com --- The patch at https://patchwork.freedesktop.org/patch/122101/ fixes a known regression from that commit -- does it help here?
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #3 from Arek Ruśniak arek.rusi@gmail.com --- Created attachment 128053 --> https://bugs.freedesktop.org/attachment.cgi?id=128053&action=edit problem in motion
unfortunately, doesn't help here. (mesa git-da2a511 + your patch/llvm 287325) this is how looks like in game before and after.
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #4 from Marek Olšák maraeo@gmail.com --- I can reproduce it, but I don't yet know how to find the bad shader.
apitrace doesn't work with this game and shaders aren't always loaded in the same order.
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #5 from Marek Olšák maraeo@gmail.com --- This is only reproducible on LLVM 4.0 trunk.
LLVM 3.9 renders doesn't have this issue.
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #6 from Nicolai Hähnle nhaehnle@gmail.com --- If Witcher 2 has scalar spills, I'd suggest trying LLVM trunk from before r286766 (or perhaps with that commit reverted), as there's another known bug: SGPR spills conflict with fragment shader input interpolation (because both use M0), and it's possible that the Mesa commit simply exposed the issue.
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #7 from Marek Olšák maraeo@gmail.com --- Found the bad shader.
The good one has before v_interp: s_mov_b32 m0, s11
The bad one has before v_interp: s_mov_b32 m0, s19
I don't see any store instructions though.
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #8 from Marek Olšák maraeo@gmail.com --- Scratch that. The bad one has this:
s_mov_b32 s19, s11 s_mov_b32 m0, s19
It looks like it's not an m0 issue.
https://bugs.freedesktop.org/show_bug.cgi?id=98761
Daniel Scharrer daniel@constexpr.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |daniel@constexpr.org
--- Comment #9 from Daniel Scharrer daniel@constexpr.org --- Found a possibly related bug in another game: #98776.
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #10 from Arek Ruśniak arek.rusi@gmail.com --- Nicolai, I don't want to bisect llvm I really hate it but i've tried r286757 & r286827 and problem is somewhere between. So you have right i believe.
And still can't reproduce this on hd7770 (verde).
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #11 from Marek Olšák maraeo@gmail.com --- First bad commit:
commit 4404d0d6e354e80dd7f8f0a0e12d8ad809cf007e Author: Matt Arsenault Matthew.Arsenault@amd.com Date: Sun Nov 13 18:20:54 2016 +0000
AMDGPU: Implement SGPR spilling with scalar stores
nThis avoids the nasty problems caused by using memory instructions that read the exec mask while spilling / restoring registers used for control flow masking, but only for VI when these were added.
This always uses the scalar stores when enabled currently, but it may be better to still try to spill to a VGPR and use this on the fallback memory path.
The cache also needs to be flushed before wave termination if a scalar store is used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286766 91177308-0d34-0410-b5e6-96231b3b80d8
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #12 from Marek Olšák maraeo@gmail.com --- Created attachment 128128 --> https://bugs.freedesktop.org/attachment.cgi?id=128128&action=edit affected shader (good asm)
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #13 from Marek Olšák maraeo@gmail.com --- Created attachment 128129 --> https://bugs.freedesktop.org/attachment.cgi?id=128129&action=edit affected shader (good->bad diff)
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #14 from Marek Olšák maraeo@gmail.com --- Created attachment 128130 --> https://bugs.freedesktop.org/attachment.cgi?id=128130&action=edit affected shader (bad asm)
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #15 from Marek Olšák maraeo@gmail.com --- It looks like m0 isn't restored for v_interp instructions.
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #16 from Grazvydas Ignotas notasas@gmail.com --- Possible duplicates: bug 98776 bug 98783 bug 98785 llvm bug: https://llvm.org/bugs/show_bug.cgi?id=31019
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #17 from Arek Ruśniak arek.rusi@gmail.com --- Marek, thanks for help with llvm. Grazvydas, with Talos I agree, even opengl is garbage now. Unigine-heaven has similar problem since r286766 Probably guilty is "AMDGPU: Implement SGPR spilling with scalar stores" for all scenario but i never ever had any problem with Life is Strange (I've just finished E01)
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #18 from Matt Arsenault arsenm2@gmail.com --- Try after llvm r287844
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #19 from Marek Olšák maraeo@gmail.com --- Created attachment 128178 --> https://bugs.freedesktop.org/attachment.cgi?id=128178&action=edit still bad
(In reply to Matt Arsenault from comment #18)
Try after llvm r287844
It's still pretty broken. See the attached asm. "s_mov vcc_hi, m0" looks suspicious.
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #20 from Matt Arsenault arsenm2@gmail.com --- (In reply to Marek Olšák from comment #19)
Created attachment 128178 [details] still bad
(In reply to Matt Arsenault from comment #18)
Try after llvm r287844
It's still pretty broken. See the attached asm. "s_mov vcc_hi, m0" looks suspicious.
s_mov vcc_hi, m0 is fine and expected. TableGen happens to sort VCC to the beginning of the SReg_64 register class list, so the scavenger tends to find VCC first if its available
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #21 from Matt Arsenault arsenm2@gmail.com --- This is more concerning: s_buffer_store_dword exec_lo, s[84:87], m0
exec should never be spilled
https://bugs.freedesktop.org/show_bug.cgi?id=98761
--- Comment #22 from Arek Ruśniak arek.rusi@gmail.com --- Created attachment 128180 --> https://bugs.freedesktop.org/attachment.cgi?id=128180&action=edit witcher2_r287854
so, it's resolved ground's problem for me, the movie is not looking perfect but this is not problem of this bug report i think.
Marek, Matt I don't know what do you talking about but maybe you are looking for: https://bugs.freedesktop.org/show_bug.cgi?id=98238 there is big visual differences between mesa 12.0.4 vs 13.0 ...work in progress:)
https://bugs.freedesktop.org/show_bug.cgi?id=98761
Arek Ruśniak arek.rusi@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|NEW |RESOLVED
--- Comment #23 from Arek Ruśniak arek.rusi@gmail.com --- Oops.. when Marek reverted "SGPR spilling..."-stuff, this one should be closed aswell.
dri-devel@lists.freedesktop.org