bugzilla-daemon at freedesktop.org
2015-Jun-27  07:53 UTC
[Nouveau] [Bug 91124] New: Civilization V (in Wine) has rendering issues: text missing, menu bar corrupted
https://bugs.freedesktop.org/show_bug.cgi?id=91124
            Bug ID: 91124
           Summary: Civilization V (in Wine) has rendering issues: text
                    missing, menu bar corrupted
           Product: Mesa
           Version: git
          Hardware: Other
               URL: http://store.steampowered.com/app/8930/
                OS: All
            Status: NEW
          Severity: normal
          Priority: medium
         Component: Drivers/DRI/nouveau
          Assignee: nouveau at lists.freedesktop.org
          Reporter: gyebro69 at gmail.com
        QA Contact: nouveau at lists.freedesktop.org
Civilization V when running in Wine has the following issues on my system with
nouveau:
all text is missing from game (in the menus, on the loading screens and in
mid-game)
when starting a game from the menu the upper menu bar that contains menu
options and icons is corrupted (terrain and units are rendered properly though)
The problem is not present:
- with the Nvidia binary drivers (340.76)
- when using the software renderer (LIBGL_ALWAYS_SOFTWARE=1)
- when starting the game with NV50_PROG_OPTIMIZE=0 or NV50_PROG_OPTIMIZE=1
See this screenshot for comparison:
http://imgur.com/pzpPgNL
I created a trace with apitrace and the problem is reproducible with that on my
system (uncompressed 366 MB):
https://drive.google.com/open?id=0B-tTbLKBl-tON09yaE14eEkwb28&authuser=0
Demo version is available on Steam (~4 GB download size):
http://store.steampowered.com/app/8930/
Fedora 22 32-bit
Mesa 10.6-branchpoint-684-g556dd4a
VGA compatible controller: NVIDIA Corporation G92 [GeForce GTS 250] (rev a2)
(prog-if 00 [VGA controller])
Kernel 4.0.5-300.fc22.i686+PAE
xorg-x11-server-Xorg-1.17.2-1.fc22.i686
libdrm-2.4.61-3.fc22.i686
-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.freedesktop.org/archives/nouveau/attachments/20150627/5fff1e83/attachment.html>
bugzilla-daemon at freedesktop.org
2015-Jun-30  08:19 UTC
[Nouveau] [Bug 91124] Civilization V (in Wine) has rendering issues: text missing, menu bar corrupted
https://bugs.freedesktop.org/show_bug.cgi?id=91124
--- Comment #1 from Ilia Mirkin <imirkin at alum.mit.edu> ---
Created attachment 116817
  --> https://bugs.freedesktop.org/attachment.cgi?id=116817&action=edit
shader that triggers bug
The attached shader appears to trigger an issue in the FlatteningPass.
Specifically the resulting code looks like
00000198: a0036003 00000000     joinat 0x1b0
000001a0: b00005fd 600187c8     set $c0 # ge f32 $r2 $r0
000001a8: 1000020d 0403c100     (e $c0) mov b32 $r3 $r1
000001b0: 10000801 2400c780   B ld $r0 b32 c0[0x10]
That joinat shouldn't be there at all. This is a bit tricky, since pre-RA,
the
code looks like
 60: joinat BB:5 (0)
 61: set u8 %c259 ge f32 %r215 %r255 (0)
 62: eq %c259 bra BB:4 (0)
BB:3 (1 instructions) - idom = BB:12, df = { BB:5 }
 -> BB:5 (forward)
 63: bra BB:5 (0)
BB:4 (1 instructions) - idom = BB:12, df = { BB:5 }
 -> BB:5 (forward)
 64: bra BB:5 (0)
BB:5 (14 instructions) - idom = BB:12, df = { BB:10 }
 -> BB:7 (tree)
 -> BB:6 (tree)
 65: phi u32 %r261 %r254 %r252 (0)
 66: join (0)
and the (e $c0) mov ... is actually generated from the phi node (since it
creates constraint moves into BB:3/4. Post-RA but pre-FlatteningPass, this
looks like
 64: joinat BB:5 (0)
 65: set u8 $c0 ge f32 $r2 $r0 (0)
 66: eq $c0 bra BB:4 (0)
BB:3 (1 instructions) - idom = BB:12, df = { BB:5 }
 -> BB:5 (forward)
 67: bra BB:5 (0)
BB:4 (2 instructions) - idom = BB:12, df = { BB:5 }
 -> BB:5 (forward)
 68: mov u32 $r3 $r1 (0)
 69: bra BB:5 (0)
BB:5 (13 instructions) - idom = BB:12, df = { BB:10 }
 -> BB:7 (tree)
 -> BB:6 (tree)
 70: join (0)
Will have to understand the FlatteningPass better before I can figure out
what's wrong though.
-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.freedesktop.org/archives/nouveau/attachments/20150630/9180ffa4/attachment.html>
bugzilla-daemon at freedesktop.org
2015-Jul-01  06:10 UTC
[Nouveau] [Bug 91124] Civilization V (in Wine) has rendering issues: text missing, menu bar corrupted
https://bugs.freedesktop.org/show_bug.cgi?id=91124
--- Comment #2 from Ilia Mirkin <imirkin at alum.mit.edu> ---
I believe the following patch resolves the issue:
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp
b/src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp
index 51b9225..fa8ee07 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp
@@ -332,6 +332,9 @@ BasicBlock::splitBefore(Instruction *insn, bool attach)
    BasicBlock *bb = new BasicBlock(func);
    assert(!insn || insn->op != OP_PHI);
+   bb->joinAt = joinAt;
+   joinAt = NULL;
+
    splitCommon(insn, bb, attach);
    return bb;
 }
-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.freedesktop.org/archives/nouveau/attachments/20150701/2929c4be/attachment-0001.html>
bugzilla-daemon at freedesktop.org
2015-Jul-01  06:47 UTC
[Nouveau] [Bug 91124] Civilization V (in Wine) has rendering issues: text missing, menu bar corrupted
https://bugs.freedesktop.org/show_bug.cgi?id=91124 --- Comment #3 from Béla Gyebrószki <gyebro69 at gmail.com> --- (In reply to Ilia Mirkin from comment #2)> I believe the following patch resolves the issue: > > diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp > b/src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp > index 51b9225..fa8ee07 100644 > --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp > +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp > @@ -332,6 +332,9 @@ BasicBlock::splitBefore(Instruction *insn, bool attach) > BasicBlock *bb = new BasicBlock(func); > assert(!insn || insn->op != OP_PHI); > > + bb->joinAt = joinAt; > + joinAt = NULL; > + > splitCommon(insn, bb, attach); > return bb; > }The patch works very well, it fixes the reported issues in the game, thank you. -- You are receiving this mail because: You are the QA Contact for the bug. You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20150701/5cae5481/attachment.html>
bugzilla-daemon at freedesktop.org
2015-Jul-01  07:18 UTC
[Nouveau] [Bug 91124] Civilization V (in Wine) has rendering issues: text missing, menu bar corrupted
https://bugs.freedesktop.org/show_bug.cgi?id=91124
Ilia Mirkin <imirkin at alum.mit.edu> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED
--- Comment #4 from Ilia Mirkin <imirkin at alum.mit.edu> ---
Pushed out as
commit 5dcb28c3d26828ed1b0e2bd5a0589c5baab04b85
Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date:   Wed Jul 1 02:11:39 2015 -0400
    nv50/ir: copy joinAt when splitting both before and after
-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.freedesktop.org/archives/nouveau/attachments/20150701/cb6632aa/attachment.html>