Bug 111217 - compilation of vdpau shaders crashes in handleCVT_CVT
Summary: compilation of vdpau shaders crashes in handleCVT_CVT
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/nouveau (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Nouveau Project
QA Contact: Nouveau Project
: 111280 (view as bug list)
Depends on:
Reported: 2019-07-25 14:24 UTC by Ilia Mirkin
Modified: 2019-08-01 22:33 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Description Ilia Mirkin 2019-07-25 14:24:09 UTC
Thread 1 "mplayer" received signal SIGSEGV, Segmentation fault.
nv50_ir::AlgebraicOpt::handleCVT_CVT(nv50_ir::Instruction*) ()
    at ../src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp:2085
2085       if (insn->saturate ||

I don't have the shader because someone decided that DEBUG setting and optimization level must be linked. And to turn it off by default. Sigh.
Comment 1 Ilia Mirkin 2019-07-26 01:36:55 UTC
OK, so ... the TGSI shader is semi-buggy. It takes an undefined value and uses it throughout. nouveau kind of assumes that it's a function parameter (I guess this is basically how TGSI functions were originally spec'd out). And I guess we have some bugs around handling function parameters.

Simple solution: fix the tgsi.

Longer solution: think about the correct thing to do here.
Comment 2 rcoe 2019-07-26 14:28:35 UTC
Is this a dup or a different issue?

Thread 25 "vlc" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffbc1a8700 (LWP 24784)]
0x00007fffaa6ccd4f in nv50_ir::AlgebraicOpt::handleCVT_CVT (this=<optimized out>, cvt=<optimized out>) at /usr/include/c++/9/bits/stl_deque.h:270
270           _M_set_node(_Map_pointer __new_node) _GLIBCXX_NOEXCEPT
(gdb) where
#0  0x00007fffaa6ccd4f in nv50_ir::AlgebraicOpt::handleCVT_CVT (this=<optimized out>, cvt=<optimized out>) at /usr/include/c++/9/bits/stl_deque.h:270
#1  nv50_ir::AlgebraicOpt::visit (this=0x7fffbc1a5370, bb=<optimized out>) at ../src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp:2351
#2  0x00007fffaa703b37 in nv50_ir::Pass::doRun (this=0x7fffbc1a5370, func=<optimized out>, ordered=<optimized out>, skipPhi=false) at ../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp:495
#3  0x00007fffaa539145 in nv50_ir::Pass::doRun (skipPhi=false, ordered=false, prog=0x0, this=0x7fffbc1a5370) at ../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp:466
#4  nv50_ir::Pass::run(nv50_ir::Program*, bool, bool) [clone .constprop.0] (this=this@entry=0x7fffbc1a5370, prog=prog@entry=0x7fffa00b09c0, skipPhi=skipPhi@entry=false, ordered=false) at ../src/gallium/drivers/nouveau/codegen/nv50_ir_bb.cpp:457
#5  0x00007fffaa6c341d in nv50_ir::Program::optimizeSSA (this=0x7fffa00b09c0, level=3) at ../src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp:4005
#6  0x00007fffaa7181f9 in nv50_ir_generate_code (info=0x7fffa0134220) at ../src/gallium/drivers/nouveau/codegen/nv50_ir.cpp:1267
#7  0x00007fffaa6a7369 in nvc0_program_translate (prog=0x7fffa0112ff0, chipset=<optimized out>, debug=0x7fffa00cebf8) at ../src/gallium/drivers/nouveau/nvc0/nvc0_program.c:638
#8  0x00007fffaa7647d2 in nvc0_cp_state_create (pipe=0x7fffa00ce830, cso=0x7fffbc1a6150) at ../src/gallium/drivers/nouveau/nvc0/nvc0_context.h:292
#9  0x00007fffaa92bf12 in vl_compositor_cs_create_shader (c=0x7fffa00a8098, compute_shader_text=<optimized out>) at ../src/gallium/auxiliary/vl/vl_compositor_cs.c:433
#10 0x00007fffaa941467 in init_shaders (c=0x7fffa00a8098) at ../src/gallium/auxiliary/vl/vl_compositor.c:74
#11 vl_compositor_init (pipe=<optimized out>, c=<optimized out>) at ../src/gallium/auxiliary/vl/vl_compositor.c:770
#12 __vaDriverInit_1_4 (ctx=0x7fffa0060240) at ../src/gallium/state_trackers/va/context.c:163
Comment 3 Ilia Mirkin 2019-07-26 14:38:01 UTC
Nope, this is the same issue.

Patch series at https://patchwork.freedesktop.org/series/64282/ should fix you right up.
Comment 4 Ilia Mirkin 2019-07-29 13:29:42 UTC
The various fixes should be pushed out to master now.


1. Codegen to handle CVT(non-insn-sourced-value)
2. TGSI to avoid having a CVT(undefined)
3. Codegen to not consider undefined sources as compute kernel inputs
Comment 5 Ilia Mirkin 2019-08-01 22:33:44 UTC
*** Bug 111280 has been marked as a duplicate of this bug. ***

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.