Created attachment 120416 [details] screenshot In Two Worlds 2 (running in Wine 1.8-rc3) water is not rendered properly: it looks as if textures are "split up" into several pieces, as it can be seen in the attached screenshot. The problem doesn't occur with the software renderer (LIBGL_ALWAYS_SOFTWARE=1). Disabling optimizations doesn't help (NV50_PROG_OPTIMIZE=0). According to my testing the problem was introduced by commit abd326e81b06f58797be94bd655ee06b17a34f0c Author: Ilia Mirkin <imirkin@alum.mit.edu> Date: Fri Dec 4 15:21:11 2015 -0500 nv50/ir: propagate indirect loads into instructions This way $r1 = $r0 + 4; c1[$r1] becomes c1[$r0+4]. On SM35: total instructions in shared programs : 6206257 -> 6185058 (-0.34%) total gprs used in shared programs : 911045 -> 910722 (-0.04%) total local used in shared programs : 39072 -> 39072 (0.00%) local gpr inst bytes helped 0 417 4195 4195 hurt 0 280 0 0 Reverting the commit on current Mesa git resolves the problem here. Apitrace log (uncompressed 150 MB): https://drive.google.com/open?id=0B-tTbLKBl-tOQ0xNMFJlSS00S1E The trace replays correctly on Nvidia binary drivers 340.96. Fedora 23 32-bit Kernel 4.4.0-rc4 X Server 1.18.0 OpenGL vendor string: nouveau OpenGL renderer string: Gallium 0.4 on NV92 OpenGL core profile version string: 3.3 (Core Profile) Mesa 11.2.0-devel (git-f61ceeb) OpenGL core profile shading language version string: 3.30
Thanks for testing :) I find it difficult to believe that NV50_PROG_OPTIMIZE=0 wouldn't fix the issue -- probably you just don't have a debug mesa build. However I find it easy to believe that this commit breaks something, esp on nv50, as that (a) has a lot more restrictions and (b) has separate address registers. Will investigate the trace to see what's up.
Created attachment 120418 [details] [review] potential patch Does the attached patch help? If so I'll put something a bit more generic together.
(In reply to Ilia Mirkin from comment #1) > Thanks for testing :) I find it difficult to believe that NV50_PROG_OPTIMIZE=0 > wouldn't fix the issue -- probably you just don't have a debug mesa build. Yes indeed, disabling optimizations works around the problem with a debug build (originally I tested with a non-debug Mesa build). (In reply to Ilia Mirkin from comment #2) > Created attachment 120418 [details] [review] [review] > potential patch > > Does the attached patch help? If so I'll put something a bit more generic > together. The patch fixes the problem, thank you.
Fix pushed: commit 0f647bd65bae16c7a2dc7a960c96593ad6ab729c Author: Ilia Mirkin <imirkin@alum.mit.edu> Date: Tue Dec 8 16:48:06 2015 -0500 nv50/ir: check if the target supports the new offset before inlining Fixes: abd326e81b (nv50/ir: propagate indirect loads into instructions) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93300 Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Double-checked that this updated version actually fixed your trace as well.
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.