Bug 93300 - Two Worlds 2 renders water incorrectly
Summary: Two Worlds 2 renders water incorrectly
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/nouveau (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Nouveau Project
QA Contact: Nouveau Project
URL:
Whiteboard:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2015-12-08 19:18 UTC by Béla Gyebrószki
Modified: 2015-12-09 04:29 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments
screenshot (377.49 KB, image/jpeg)
2015-12-08 19:18 UTC, Béla Gyebrószki
Details
potential patch (1.67 KB, patch)
2015-12-08 20:10 UTC, Ilia Mirkin
Details | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description Béla Gyebrószki 2015-12-08 19:18:22 UTC
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
Comment 1 Ilia Mirkin 2015-12-08 19:23:24 UTC
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.
Comment 2 Ilia Mirkin 2015-12-08 20:10:56 UTC
Created attachment 120418 [details] [review]
potential patch

Does the attached patch help? If so I'll put something a bit more generic together.
Comment 3 Béla Gyebrószki 2015-12-08 20:36:02 UTC
(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.
Comment 4 Ilia Mirkin 2015-12-09 04:29:06 UTC
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.