Bug 34179

Summary: Nouveau 3D driver: nv50_pc_emit.c:863 assertion error kills Compiz
Product: Mesa Reporter: Sense Hofstede <sense>
Component: Drivers/DRI/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: henrik, om26er
Version: 7.10   
Hardware: Other   
OS: All   
See Also: https://launchpad.net/bugs/710588
i915 platform: i915 features:

Description Sense Hofstede 2011-02-11 07:06:23 UTC
When you use the experimental Gallium3D driver of Nouveau to enable DRI, Compiz will actually try to run, but it will be abort because of the following assertion error:
"compiz: nv50_pc_emit.c:863: emit_flop: Assertion `STYPE(i, 0) == 0x09' failed."

It seems that this only happens with PCI-E cards that have the NV50 chip.

There is an 'xorg.log' at <http://launchpadlibrarian.net/63209980/XorgLog.txt>. An unprocessed stacktrace can be found at <http://launchpadlibrarian.net/63209976/Stacktrace.txt>, the stacktrace processed by Apport at <http://launchpadlibrarian.net/63321404/Stacktrace.txt>.
 __kernel_vsyscall ()
 *__GI_raise (sig=6)
 *__GI_abort () at abort.c:59

This bug was originally reported by several people in Ubuntu on Launchpad, the master bug report can be found at <https://launchpad.net/bugs/710588>. You can find many more log files at this bug report, and attached to its duplicates.
If you need something specifically, please ask!
Comment 1 Omer Akram 2011-02-11 07:54:41 UTC
Also to add this is used to work with mesa 7.9 the update to 7.10 broke things.
Comment 2 Christopher James Halse Rogers 2011-02-14 18:32:17 UTC
This is fixed by the nv50 part of the commit:
commit 7401590dedf6f2abb1f0f0db988be90acb1fb84f
Author: Christoph Bumiller <e0425955@student.tuwien.ac.at>
Date:   Mon Feb 7 14:54:17 2011 +0100

    nv50,nvc0: do not forget to apply sign mode to saved TGSI inputs

diff --git a/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c b/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c
index d6b80c3..ce9300a 100644
--- a/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c
+++ b/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c
@@ -1130,7 +1130,7 @@ emit_fetch(struct bld_context *bld, const struct tgsi_full_instruction *insn,
       res = bld_saved_input(bld, idx, swz);
       if (res && (insn->Instruction.Opcode != TGSI_OPCODE_TXP))
-         return res;
+         break;
       res = new_value(bld->pc, bld->ti->input_file, type);
       res->reg.id = bld->ti->input_map[idx][swz];
Comment 3 Christopher James Halse Rogers 2011-02-14 18:39:20 UTC
I've done a piglit run on my NV98 system against the 7.10 branch; this shows no difference with or without the cherry-pick.  So this doesn't regress anything obvious, but there's also clearly a piglit test to be written :).