<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - Geometry Shaders output wrong vertices on Sandy Bridge"
href="https://bugs.freedesktop.org/show_bug.cgi?id=93418#c2">Comment # 2</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - Geometry Shaders output wrong vertices on Sandy Bridge"
href="https://bugs.freedesktop.org/show_bug.cgi?id=93418">bug 93418</a>
from <span class="vcard"><a class="email" href="mailto:imirkin@alum.mit.edu" title="Ilia Mirkin <imirkin@alum.mit.edu>"> <span class="fn">Ilia Mirkin</span></a>
</span></b>
<pre>And with master I'm getting:
brw_vec4.cpp:1797: void brw::vec4_visitor::convert_to_hw_regs(): Assertion
`brw_is_single_value_swizzle(inst->src[i].swizzle)' failed.
Program received signal SIGABRT, Aborted.
0x00007ffff607f167 in raise () from /lib64/libc.so.6
(gdb) bt
#0 0x00007ffff607f167 in raise () from /lib64/libc.so.6
#1 0x00007ffff60804ca in abort () from /lib64/libc.so.6
#2 0x00007ffff6078296 in __assert_fail_base () from /lib64/libc.so.6
#3 0x00007ffff6078342 in __assert_fail () from /lib64/libc.so.6
#4 0x00007ffff286d630 in brw::vec4_visitor::convert_to_hw_regs
(this=this@entry=0x4b59490) at brw_vec4.cpp:1797
#5 0x00007ffff286d991 in brw::vec4_visitor::run (this=this@entry=0x4b59490) at
brw_vec4.cpp:1960
#6 0x00007ffff287b2d4 in brw::brw_compile_gs (compiler=0x9185d0,
log_data=log_data@entry=0x7ffff7fd0040,
mem_ctx=mem_ctx@entry=0x4bc6510, key=key@entry=0x7fffffffd910,
prog_data=prog_data@entry=0x7fffffffd6e0,
src_shader=<optimized out>, shader_prog=shader_prog@entry=0x4b4cac0,
shader_time_index=shader_time_index@entry=-1,
final_assembly_size=final_assembly_size@entry=0x7fffffffd6d4,
error_str=error_str@entry=0x7fffffffd6d8) at brw_vec4_gs_visitor.cpp:914
#7 0x00007ffff27a308c in brw_codegen_gs_prog (brw=brw@entry=0x7ffff7fd0040,
prog=prog@entry=0x4b4cac0,
gp=gp@entry=0x4b1d940, key=key@entry=0x7fffffffd910) at brw_gs.c:160
#8 0x00007ffff27a3604 in brw_gs_precompile (ctx=0x7ffff7fd0040,
shader_prog=0x4b4cac0, prog=0x4b1d940)
at brw_gs.c:288
#9 0x00007ffff27a3dc9 in brw_shader_precompile (sh_prog=0x4b4cac0,
ctx=0x7ffff7fd0040) at brw_link.cpp:53
#10 brw_link_shader (ctx=0x7ffff7fd0040, shProg=<optimized out>) at
brw_link.cpp:282
#11 0x00007ffff266833e in _mesa_glsl_link_shader (ctx=0x7ffff7fd0040,
prog=0x4b4cac0)
at program/ir_to_mesa.cpp:2962
#12 0x00007ffff256f35a in link_program (ctx=0x7ffff7fd0040, program=<optimized
out>) at main/shaderapi.c:1048
The shader in question is, I believe, the same one as the one used in draw call
813290. Here are some debug prints from INTEL_DEBUG=gs (I skipped the GLSL IR
bits):
NIR (SSA form) for geometry shader:
shader: MESA_SHADER_GEOMETRY
name: GLSL214
inputs: 0
outputs: 0
uniforms: 0
decl_var uniform INTERP_QUALIFIER_NONE ivec4 ctexoffset (2, 0)
decl_var uniform INTERP_QUALIFIER_NONE vec4 clinept (1, 0)
decl_var uniform INTERP_QUALIFIER_NONE vec4 cstereo (0, 0)
decl_var shader_in INTERP_QUALIFIER_FLAT vec4[1] colors_0 (VARYING_SLOT_VAR0,
26)
decl_var shader_in INTERP_QUALIFIER_FLAT vec4[1] pos (VARYING_SLOT_VAR1, 27)
decl_var shader_out INTERP_QUALIFIER_NONE vec4 gl_Position (VARYING_SLOT_POS,
0)
decl_var shader_out INTERP_QUALIFIER_NONE vec4 colors_0@0 (VARYING_SLOT_VAR0,
26)
decl_function main returning void
impl main {
block block_0:
/* preds: */
vec1 ssa_0 = load_const (0x00000000 /* 0.000000 */)
vec2 ssa_1 = load_const (0xbf800000 /* -1.000000 */, 0x3f800000 /*
1.000000 */)
vec2 ssa_2 = load_const (0x3f800000 /* 1.000000 */, 0xbf800000 /*
-1.000000 */)
vec1 ssa_3 = load_const (0x00000010 /* 0.000000 */)
vec4 ssa_4 = intrinsic load_ubo (ssa_0, ssa_3) () ()
vec1 ssa_5 = frcp ssa_4
vec1 ssa_6 = fmul ssa_4.w, ssa_5
vec1 ssa_7 = frcp ssa_4.y
vec1 ssa_8 = fmul -ssa_4.w, ssa_7
vec2 ssa_9 = vec2 ssa_6, ssa_8
vec4 ssa_10 = intrinsic load_per_vertex_input (ssa_0, ssa_0) () (27)
/* pos */
vec2 ssa_11 = fmul ssa_9, ssa_10.ww
vec4 ssa_12 = intrinsic load_per_vertex_input (ssa_0, ssa_0) () (26)
/* colors_0 */
vec2 ssa_13 = fadd ssa_10, -ssa_11
vec4 ssa_14 = vec4 ssa_13, ssa_13.y, ssa_10.z, ssa_10.w
vec2 ssa_15 = ffma ssa_2, ssa_11, ssa_10
vec4 ssa_16 = vec4 ssa_15, ssa_15.y, ssa_10.z, ssa_10.w
vec2 ssa_17 = ffma ssa_1, ssa_11, ssa_10
vec4 ssa_18 = vec4 ssa_17, ssa_17.y, ssa_10.z, ssa_10.w
vec2 ssa_19 = fadd ssa_10, ssa_11
vec4 ssa_20 = vec4 ssa_19, ssa_19.y, ssa_10.z, ssa_10.w
intrinsic store_output (ssa_14, ssa_0) () (0, 15) /* gl_Position
*/
intrinsic store_output (ssa_12, ssa_0) () (26, 15) /* colors_0 */
intrinsic emit_vertex_with_counter (ssa_0) () (0)
vec1 ssa_21 = load_const (0x00000001 /* 0.000000 */)
intrinsic store_output (ssa_16, ssa_0) () (0, 15) /* gl_Position
*/
intrinsic store_output (ssa_12, ssa_0) () (26, 15) /* colors_0 */
intrinsic emit_vertex_with_counter (ssa_21) () (0)
vec1 ssa_22 = load_const (0x00000002 /* 0.000000 */)
intrinsic store_output (ssa_18, ssa_0) () (0, 15) /* gl_Position
*/
intrinsic store_output (ssa_12, ssa_0) () (26, 15) /* colors_0 */
intrinsic emit_vertex_with_counter (ssa_22) () (0)
vec1 ssa_23 = load_const (0x00000003 /* 0.000000 */)
intrinsic store_output (ssa_20, ssa_0) () (0, 15) /* gl_Position
*/
intrinsic store_output (ssa_12, ssa_0) () (26, 15) /* colors_0 */
intrinsic emit_vertex_with_counter (ssa_23) () (0)
vec1 ssa_24 = load_const (0x00000004 /* 0.000000 */)
intrinsic end_primitive_with_counter (ssa_24) () (0)
intrinsic set_vertex_count (ssa_24) () ()
/* succs: block_1 */
block block_1:
}
NIR (final form) for geometry shader:
shader: MESA_SHADER_GEOMETRY
name: GLSL214
inputs: 0
outputs: 0
uniforms: 0
decl_var uniform INTERP_QUALIFIER_NONE ivec4 ctexoffset (2, 0)
decl_var uniform INTERP_QUALIFIER_NONE vec4 clinept (1, 0)
decl_var uniform INTERP_QUALIFIER_NONE vec4 cstereo (0, 0)
decl_var shader_in INTERP_QUALIFIER_FLAT vec4[1] colors_0 (VARYING_SLOT_VAR0,
26)
decl_var shader_in INTERP_QUALIFIER_FLAT vec4[1] pos (VARYING_SLOT_VAR1, 27)
decl_var shader_out INTERP_QUALIFIER_NONE vec4 gl_Position (VARYING_SLOT_POS,
0)
decl_var shader_out INTERP_QUALIFIER_NONE vec4 colors_0@0 (VARYING_SLOT_VAR0,
26)
decl_function main returning void
impl main {
decl_reg vec2 r0
decl_reg vec4 r1
decl_reg vec4 r2
decl_reg vec4 r3
decl_reg vec4 r4
block block_0:
/* preds: */
vec1 ssa_0 = load_const (0x00000000 /* 0.000000 */)
vec2 ssa_1 = load_const (0xbf800000 /* -1.000000 */, 0x3f800000 /*
1.000000 */)
vec2 ssa_2 = load_const (0x3f800000 /* 1.000000 */, 0xbf800000 /*
-1.000000 */)
vec1 ssa_3 = load_const (0x00000010 /* 0.000000 */)
vec4 ssa_4 = intrinsic load_ubo (ssa_0, ssa_3) () ()
vec1 ssa_5 = frcp ssa_4
r0.x = fmul ssa_4.w, ssa_5
vec1 ssa_7 = frcp ssa_4.y
r0.y = fmul -ssa_4.w, ssa_7.x
vec4 ssa_10 = intrinsic load_per_vertex_input (ssa_0, ssa_0) () (27)
/* pos */
vec2 ssa_11 = fmul r0, ssa_10.ww
vec4 ssa_12 = intrinsic load_per_vertex_input (ssa_0, ssa_0) () (26)
/* colors_0 */
r1.xy = fadd ssa_10, -ssa_11
r1.zw = imov ssa_10
r2.xy = ffma ssa_2, ssa_11, ssa_10
r2.zw = imov r1
r3.xy = ffma ssa_1, ssa_11, ssa_10
r3.zw = imov r2
r4.xy = fadd ssa_10, ssa_11
r4.zw = imov r3
intrinsic store_output (r1, ssa_0) () (0, 15) /* gl_Position */
intrinsic store_output (ssa_12, ssa_0) () (26, 15) /* colors_0 */
intrinsic emit_vertex_with_counter (ssa_0) () (0)
vec1 ssa_21 = load_const (0x00000001 /* 0.000000 */)
intrinsic store_output (r2, ssa_0) () (0, 15) /* gl_Position */
intrinsic store_output (ssa_12, ssa_0) () (26, 15) /* colors_0 */
intrinsic emit_vertex_with_counter (ssa_21) () (0)
vec1 ssa_22 = load_const (0x00000002 /* 0.000000 */)
intrinsic store_output (r3, ssa_0) () (0, 15) /* gl_Position */
intrinsic store_output (ssa_12, ssa_0) () (26, 15) /* colors_0 */
intrinsic emit_vertex_with_counter (ssa_22) () (0)
vec1 ssa_23 = load_const (0x00000003 /* 0.000000 */)
intrinsic store_output (r4, ssa_0) () (0, 15) /* gl_Position */
intrinsic store_output (ssa_12, ssa_0) () (26, 15) /* colors_0 */
intrinsic emit_vertex_with_counter (ssa_23) () (0)
vec1 ssa_24 = load_const (0x00000004 /* 0.000000 */)
intrinsic end_primitive_with_counter (ssa_24) () (0)
intrinsic set_vertex_count (ssa_24) () ()
/* succs: block_1 */
block block_1:
}
GS Input VUE map (4 slots, non-SSO)
[0] VARYING_SLOT_PSIZ
[1] VARYING_SLOT_POS
[2] VARYING_SLOT_VAR0
[3] VARYING_SLOT_VAR1
GS Output VUE map (3 slots, non-SSO)
[0] VARYING_SLOT_PSIZ
[1] VARYING_SLOT_POS
[2] VARYING_SLOT_VAR0
GS estimated execution time: 138 cycles</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
</ul>
</body>
</html>