Bug 34179 - Nouveau 3D driver: nv50_pc_emit.c:863 assertion error kills Compiz
Nouveau 3D driver: nv50_pc_emit.c:863 assertion error kills Compiz
Status: RESOLVED FIXED
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/nouveau
7.10
Other All
: medium normal
Assigned To: Nouveau Project
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2011-02-11 07:06 UTC by Sense Hofstede
Modified: 2012-11-01 22:07 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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>.
StacktraceTop:
 __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,
    case TGSI_FILE_INPUT:
       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 :).