Bug 91725

Summary: R600 asserts in sb_shed.c:251 during Shader Backend optimization pass.
Product: Mesa Reporter: iive <ikalvachev>
Component: Drivers/Gallium/r600Assignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact: Default DRI bug account <dri-devel>
Severity: major    
Priority: medium CC: glenn.kennard
Version: git   
Hardware: x86 (IA32)   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: The shader causing the problem as TGSI and R600 bytecode. Created by Nine.
The shader causing the problem as TGSI and R600 bytecode. Created by OpenGL
The shader causing the problem as original D3D code and TGSI created by Nine.

Description iive 2015-08-22 13:53:12 UTC
Created attachment 117861 [details]
The shader causing the problem as TGSI and R600 bytecode. Created by Nine.

The exact error message is:
sb/sb_sched.cpp:251:unreserve: Assertion `rp[cycle][chan] == sel && uc[cycle][chan]' failed.

It doesn't trigger if I replay with "R600_DEBUG=nobs".
My hardware is Radeon HD5670 (Redwood).

I have attached part of the log created by "R600_DEBUG=vs,ps" containing the TGSI code and the unoptimized R600 bytecode.

The bug is reproduced by replaying d3d9 trace of the game "The Forest". The trace file has been uploaded to ixit ftp server. You need d3dretrace.exe (from apitrace compiled for windows) and wine. It is preferable is wine have ixit Nine patch and mesa-git with Nine enabled.

The bug is reproduced by both Nine state tracker and  by the OpenGL one (when using vanilla wined3d opengl wrapper). Since the the OpenGL TGSI code is different, I'm attaching it too.

If you need more info, feel free to ask me.
Comment 1 iive 2015-08-22 13:55:03 UTC
Created attachment 117862 [details]
The shader causing the problem as TGSI and R600 bytecode. Created by OpenGL
Comment 2 Vadim Girlin 2015-08-23 01:13:04 UTC
Adding Glenn, hopefully he can solve this... Looks like he already knows more about that stuff than I remember about it.
Comment 3 iive 2015-08-23 12:55:37 UTC
Created attachment 117875 [details]
The shader causing the problem as original D3D code and TGSI created by Nine.

Since the shader is having some undefined values, there is a chance the original D3D shader is not entirely correct. That's why I've extracted it (NINE_DEBUG=shader NINE_TGSI_DUMP=1).
Comment 4 Glenn Kennard 2015-08-28 23:44:13 UTC
Commits 608c7b a83022 36f199 should fix the crashes in this trace
Comment 5 iive 2015-08-29 08:25:48 UTC
Yes, these commits fix all r600 issues in the sample.
Don't forget to backport them to the stable branches.

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.