Bug 90629 - [i965] SIMD16 dual_source_blend assertion `src[i].file != GRF || src[i].width == dst.width' failed
Summary: [i965] SIMD16 dual_source_blend assertion `src[i].file != GRF || src[i].width...
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Ian Romanick
QA Contact: Intel 3D Bugs Mailing List
Depends on:
Reported: 2015-05-25 12:41 UTC by Markus Wick
Modified: 2015-05-28 21:41 UTC (History)
0 users

See Also:
i915 platform:
i915 features:

apitrace dump to reproduce this issue (74.88 KB, application/octet-stream)
2015-05-25 12:41 UTC, Markus Wick

Description Markus Wick 2015-05-25 12:41:13 UTC
Created attachment 116025 [details]
apitrace dump to reproduce this issue


I get an assert on my IVB with mesa-master since this commit:
i965/fs: Implement integer multiply without mul/mach.

The assert is:
brw_fs.cpp:346: fs_inst* fs_visitor::LOAD_PAYLOAD(const fs_reg&, fs_reg*, int, int): Assertion `src[i].file != GRF || src[i].width == dst.width' failed.

mattst88> I'm thinking that enabling SIMD16 in this shader allows us to see a bug in a different area of the code we couldn't hit before :)
mattst88> it's related to dual-source blending, which I guess isn't a very common feature

To reproduce this issue, I've attached an apitrace dump here at this report.

gdb bt:
#0  0x00007ffff6865528 in raise () from /usr/lib/libc.so.6
#1  0x00007ffff686693a in abort () from /usr/lib/libc.so.6
#2  0x00007ffff685e3a7 in __assert_fail_base () from /usr/lib/libc.so.6
#3  0x00007ffff685e452 in __assert_fail () from /usr/lib/libc.so.6
#4  0x00007ffff314d603 in fs_visitor::LOAD_PAYLOAD (this=this@entry=0x7fffffffd020, dst=..., src=src@entry=0x1af8c10, sources=sources@entry=11, 
    header_size=header_size@entry=2) at brw_fs.cpp:346
#5  0x00007ffff319b732 in fs_visitor::emit_single_fb_write (this=this@entry=0x7fffffffd020, color0=..., color1=..., src0_alpha=..., components=components@entry=4, 
    exec_size=exec_size@entry=8, use_2nd_half=use_2nd_half@entry=false) at brw_fs_visitor.cpp:3730
#6  0x00007ffff319c14a in fs_visitor::emit_fb_writes (this=this@entry=0x7fffffffd020) at brw_fs_visitor.cpp:3772
#7  0x00007ffff315ba98 in fs_visitor::run_fs (this=this@entry=0x7fffffffd020) at brw_fs.cpp:4344
#8  0x00007ffff315c34c in brw_wm_fs_emit (brw=brw@entry=0x7ffff7fd2040, mem_ctx=mem_ctx@entry=0x1ad15d0, key=key@entry=0x7fffffffe1d0, 
    prog_data=prog_data@entry=0x7fffffffe040, fp=fp@entry=0x1aaaf90, prog=prog@entry=0x1abde90, final_assembly_size=0x7fffffffe03c) at brw_fs.cpp:4473
#9  0x00007ffff31de4bf in brw_codegen_wm_prog (brw=0x7ffff7fd2040, prog=0x1abde90, fp=0x1aaaf90, key=0x7fffffffe1d0) at brw_wm.c:213
#10 0x00007ffff315ab8f in brw_fs_precompile (ctx=0x7ffff7fd2040, shader_prog=0x1abde90, prog=0x1aaaf90) at brw_fs.cpp:4579
#11 0x00007ffff31b6210 in brw_shader_precompile (sh_prog=0x1abde90, ctx=0x7ffff7fd2040) at brw_shader.cpp:78
#12 brw_link_shader (ctx=0x7ffff7fd2040, shProg=0x1abde90) at brw_shader.cpp:320
#13 0x00007ffff2ff6552 in _mesa_glsl_link_shader (ctx=0x7ffff7fd2040, prog=0x1abde90) at program/ir_to_mesa.cpp:2964
#14 0x00007ffff2f0217a in link_program (ctx=0x7ffff7fd2040, program=<optimized out>) at main/shaderapi.c:946
Comment 1 Markus Wick 2015-05-26 06:20:01 UTC
It's fixed by http://lists.freedesktop.org/archives/mesa-dev/2015-May/085032.html
Comment 2 Matt Turner 2015-05-28 21:41:38 UTC
Fixed by

commit 8bbe7fa7a853d8ebf69e5d2d0fdc4343a20b638f
Author: Jason Ekstrand <jason.ekstrand@intel.com>
Date:   Mon May 25 09:31:55 2015 -0700

    i965/fs: Properly handle explicit depth in SIMD16 with dual-source blend

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.