bugzilla-daemon at freedesktop.org
2014-May-30 18:44 UTC
[Nouveau] [Bug 79462] New: [NVC0/Codegen] Shader compilation falis in spill logic
https://bugs.freedesktop.org/show_bug.cgi?id=79462
Priority: medium
Bug ID: 79462
Assignee: nouveau at lists.freedesktop.org
Summary: [NVC0/Codegen] Shader compilation falis in spill logic
Severity: normal
Classification: Unclassified
OS: All
Reporter: imirkin at alum.mit.edu
Hardware: Other
Status: NEW
Version: unspecified
Component: Drivers/DRI/nouveau
Product: Mesa
Created attachment 100179
--> https://bugs.freedesktop.org/attachment.cgi?id=100179&action=edit
failing tgsi shader
The attached shader fails in the RA step, when inserting spill code:
nv50_ir::SpillCodeInserter::run (this=0x7ffffffec0c0, lst=std::list)
at codegen/nv50_ir_ra.cpp:1561
1561 while (!dval->uses.empty()) {
Easily reproduced with nouveau_compiler -a c0. Apparently this shader is
generated as part of the d3d9 st, with skyrimlauncher, when it's trying to
detect the graphics card.
dval is null, which means that something out there isn't an lvalue. Or, in
this
case, apparently a null value??
(gdb) p *defi
$4 = {_vptr.Instruction = 0x86e570, next = 0x0, prev = 0x0, id = -1, serial 27,
op = nv50_ir::OP_SPLIT,
dType = nv50_ir::TYPE_B128, sType = nv50_ir::TYPE_B128, cc = nv50_ir::CC_TR,
rnd = nv50_ir::ROUND_N,
cache = nv50_ir::CACHE_CA, subOp = 0, encSize = 0, saturate = 0, join = 0,
fixed = 0, terminator = 0,
ftz = 0, dnz = 0, ipa = 0, lanes = 15, perPatch = 0, exit = 0, mask = 0,
postFactor = 0 '\000',
predSrc = -1 '\377', flagsDef = -1 '\377', flagsSrc = -1
'\377', sched = 0,
bb = 0x0,
defs = std::deque with 4 elements = {{value = 0x0, origin = 0x0, insn 0x200},
{value = 0x85ce30,
origin = 0x7ffff71a0698 <main_arena+88>, insn = 0x9e5e40}, {value =
0x0,
origin = 0x0,
insn = 0x9e5e40}, {value = 0x0, origin = 0x0, insn = 0x9e5e40}},
srcs = std::deque with 1 elements = {{mod = {bits = 0 '\000'},
indirect "\377\377",
swizzle = 0 '\000', usedAsPtr = false, value = 0x0, insn =
0x200}}}
Note that the second def isn't null but the others are? Perhaps this happens
as
part of dead code elimination? Need to investigate more.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.freedesktop.org/archives/nouveau/attachments/20140530/cd1df88c/attachment-0001.html>
bugzilla-daemon at freedesktop.org
2014-Jul-31 18:35 UTC
[Nouveau] [Bug 79462] [NVC0/Codegen] Shader compilation falis in spill logic
https://bugs.freedesktop.org/show_bug.cgi?id=79462
--- Comment #1 from Ilia Mirkin <imirkin at alum.mit.edu> ---
The below patch helps avoid the crash, but it still still generate incorrect
code. I think there are a few issues here, and I'll have to think a little
harder about how to properly resolve them.
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp
b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp
index 5ab6570..89c83cb 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp
@@ -1576,7 +1576,8 @@ SpillCodeInserter::run(const
std::list<ValuePair>& lst)
assert(defi);
if (defi->isPseudo()) {
- d = lval->defs.erase(d);
+ while (d != lval->defs.end() && (*d)->getInsn() ==
defi)
+ d = lval->defs.erase(d);
--d;
if (slot->reg.file == FILE_MEMORY_LOCAL)
delete_Instruction(func->getProgram(), defi);
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.freedesktop.org/archives/nouveau/attachments/20140731/76cb474a/attachment.html>
bugzilla-daemon at freedesktop.org
2014-Sep-15 16:10 UTC
[Nouveau] [Bug 79462] [NVC0/Codegen] Shader compilation falis in spill logic
https://bugs.freedesktop.org/show_bug.cgi?id=79462 --- Comment #2 from Ilia Mirkin <imirkin at alum.mit.edu> --- I've spent a bunch of time looking at this issue. So *one* of the problems is that we delete the instruction too early. But I think there's more going on. Still debugging. The issue happens if we want to spill a value that is split. -- You are receiving this mail because: You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20140915/b8a8cf0f/attachment.html>
bugzilla-daemon at freedesktop.org
2014-Sep-25 01:48 UTC
[Nouveau] [Bug 79462] [NVC0/Codegen] Shader compilation falis in spill logic
https://bugs.freedesktop.org/show_bug.cgi?id=79462 --- Comment #3 from Ilia Mirkin <imirkin at alum.mit.edu> --- http://patchwork.freedesktop.org/patch/34098/ Please see if this helps. -- You are receiving this mail because: You are the assignee for the bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20140925/61a9c80e/attachment.html>
bugzilla-daemon at freedesktop.org
2014-Sep-26 06:04 UTC
[Nouveau] [Bug 79462] [NVC0/Codegen] Shader compilation falis in spill logic
https://bugs.freedesktop.org/show_bug.cgi?id=79462
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> ---
I've pushed out the fix, makes at least the attached shader compile. It also
fixed UE4 demos which appear to render fine. Should get backported to 10.3 and
probably 10.2 as well.
commit 0147c10c5f00b43696ba660aab604d674a75e83c
Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date: Wed Sep 24 21:45:07 2014 -0400
nv50/ir: avoid deleting pseudo instructions too early
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.freedesktop.org/archives/nouveau/attachments/20140926/cc39f384/attachment.html>
Apparently Analagous Threads
- [PATCH] nv50/ra: Only increment DefValue counter if we are going to spill
- [PATCH] nv50/ir: use unordered_set instead of list to keep track of var defs
- [PATCH] nv50/ir: use unordered_set instead of list to keep our instructions in uses
- [PATCH RESEND] nv50/ir: use unordered_set instead of list to keep track of var defs
- [PATCH] nv50/ir: avoid deleting pseudo instructions too early