[regression][bisected]piglit tests segfaulting with NIR validation failed before remapping on Iris
Full list of failing tests: http://198.175.88.100/mesa_master/builds/22384/group/63a9f0ea7bb98050796b649e85481845#fails
This affects all platforms that Iris supports.
Output from one of the tests:
$ /tmp/build_root/m64/lib/piglit/generated_tests/spec/glsl-1.10/execution/interpolation/interpolation-none-other-smooth-vertex.shader_test -auto -fbo NIR validation failed before remapping 1 errors: shader: MESA_SHADER_VERTEX name: GLSL3 inputs: 2 outputs: 4 uniforms: 8 ubos: 1 shared: 0 decl_var uniform INTERP_MODE_NONE mat4 gl_ModelViewProjectionMatrix (0, 16, 0) decl_var shader_in INTERP_MODE_NONE vec4 vertex (VERT_ATTRIB_GENERIC0.xyzw, 0, 0) decl_var shader_in INTERP_MODE_NONE vec4 input_data (VERT_ATTRIB_GENERIC1.xyzw, 1, 0) decl_var ubo INTERP_MODE_NONE vec4[8] uniform_0 (0, 0, 0) decl_var shader_out INTERP_MODE_NONE vec4 gl_Position (VARYING_SLOT_POS.xyzw, 0, 0) decl_var shader_out INTERP_MODE_NONE float other (VARYING_SLOT_VAR0.x, 2, 0) decl_var shader_out INTERP_MODE_NONE float other@0 (VARYING_SLOT_VAR0.y, 2, 0) decl_var shader_out INTERP_MODE_NONE float other@1 (VARYING_SLOT_VAR0.z, 2, 0) decl_var shader_out INTERP_MODE_NONE float other@2 (VARYING_SLOT_VAR0.w, 2, 0) decl_var shader_out INTERP_MODE_NONE vec4 other@3 (VARYING_SLOT_VAR0.xyzw, 2, 0) decl_var shader_out INTERP_MODE_NONE vec4 clipdist_3 (VARYING_SLOT_CLIP_DIST0.xyzw, 3, 0) decl_function main (0 params) impl main { decl_var INTERP_MODE_NONE vec4 gl_ClipVertex decl_var INTERP_MODE_NONE vec4 out@gl_Position-temp decl_var INTERP_MODE_NONE float out@other-temp decl_var INTERP_MODE_NONE float out@other-temp@4 decl_var INTERP_MODE_NONE float out@other-temp@5 decl_var INTERP_MODE_NONE float out@other-temp@6 decl_var INTERP_MODE_NONE vec4 out@other-temp@7 decl_var INTERP_MODE_NONE vec4 out@clipdist_3-temp block block_0: /* preds: */ vec1 32 ssa_91 = undefined vec1 32 ssa_87 = undefined vec1 32 ssa_85 = undefined vec1 32 ssa_83 = undefined vec1 32 ssa_81 = undefined vec1 32 ssa_0 = deref_var &vertex (shader_in vec4) vec4 32 ssa_1 = intrinsic load_deref (ssa_0) (0) /* access=0 */ vec1 32 ssa_2 = deref_var &input_data (shader_in vec4) vec4 32 ssa_3 = intrinsic load_deref (ssa_2) (0) /* access=0 */ vec1 32 ssa_4 = load_const (0x00000000 /* 0.000000 */) vec1 32 ssa_5 = load_const (0x00000040 /* 0.000000 */) vec4 32 ssa_6 = intrinsic load_ubo (ssa_4, ssa_5) (0, 4, 0, 64, 64) /* range_base=64 */ /* range=64 */ /* access=0 */ /* align_mul=4 */ /* align_offset=0 */ vec1 32 ssa_7 = fmul ssa_6.x, ssa_1.x vec1 32 ssa_8 = fmul ssa_6.y, ssa_1.x vec1 32 ssa_9 = fmul ssa_6.z, ssa_1.x vec1 32 ssa_10 = fmul ssa_6.w, ssa_1.x vec1 32 ssa_11 = load_const (0x00000050 /* 0.000000 */) vec4 32 ssa_12 = intrinsic load_ubo (ssa_4, ssa_11) (0, 4, 0, 64, 64) /* range_base=64 */ /* range=64 */ /* access=0 */ /* align_mul=4 */ /* align_offset=0 */ vec1 32 ssa_13 = fmul ssa_12.x, ssa_1.y vec1 32 ssa_14 = fmul ssa_12.y, ssa_1.y vec1 32 ssa_15 = fmul ssa_12.z, ssa_1.y vec1 32 ssa_16 = fmul ssa_12.w, ssa_1.y vec1 32 ssa_17 = fadd ssa_7, ssa_13 vec1 32 ssa_18 = fadd ssa_8, ssa_14 vec1 32 ssa_19 = fadd ssa_9, ssa_15 vec1 32 ssa_20 = fadd ssa_10, ssa_16 vec1 32 ssa_21 = load_const (0x00000060 /* 0.000000 */) vec4 32 ssa_22 = intrinsic load_ubo (ssa_4, ssa_21) (0, 4, 0, 64, 64) /* range_base=64 */ /* range=64 */ /* access=0 */ /* align_mul=4 */ /* align_offset=0 */ vec1 32 ssa_23 = fmul ssa_22.x, ssa_1.z vec1 32 ssa_24 = fmul ssa_22.y, ssa_1.z vec1 32 ssa_25 = fmul ssa_22.z, ssa_1.z vec1 32 ssa_26 = fmul ssa_22.w, ssa_1.z vec1 32 ssa_27 = fadd ssa_17, ssa_23 vec1 32 ssa_28 = fadd ssa_18, ssa_24 vec1 32 ssa_29 = fadd ssa_19, ssa_25 vec1 32 ssa_30 = fadd ssa_20, ssa_26 vec1 32 ssa_31 = load_const (0x00000070 /* 0.000000 */) vec4 32 ssa_32 = intrinsic load_ubo (ssa_4, ssa_31) (0, 4, 0, 64, 64) /* range_base=64 */ /* range=64 */ /* access=0 */ /* align_mul=4 */ /* align_offset=0 */ vec1 32 ssa_33 = fmul ssa_32.x, ssa_1.w vec1 32 ssa_34 = fmul ssa_32.y, ssa_1.w vec1 32 ssa_35 = fmul ssa_32.z, ssa_1.w vec1 32 ssa_36 = fmul ssa_32.w, ssa_1.w vec1 32 ssa_37 = fadd ssa_27, ssa_33 vec1 32 ssa_38 = fadd ssa_28, ssa_34 vec1 32 ssa_39 = fadd ssa_29, ssa_35 vec1 32 ssa_40 = fadd ssa_30, ssa_36 vec1 32 ssa_41 = deref_var &out@gl_Position-temp (function_temp vec4) vec4 32 ssa_42 = vec4 ssa_37, ssa_38, ssa_39, ssa_40 vec1 32 ssa_43 = deref_var &gl_ClipVertex (function_temp vec4) vec1 32 ssa_44 = deref_var &out@other-temp@7 (function_temp vec4) vec1 32 ssa_45 = deref_var &gl_ClipVertex (function_temp vec4) vec4 32 ssa_79 = mov ssa_1 vec1 32 ssa_92 = load_const (0x00000000 /* 0.000000 */) vec4 32 ssa_93 = intrinsic load_ubo (ssa_91, ssa_92) (0, 4, 0, 0, 0) /* range_base=0 */ /* range=0 */ /* access=0 */ /* align_mul=4 */ /* align_offset=0 */ error: nir_intrinsic_range(instr) != 0 (../src/compiler/nir/nir_validate.c:605) vec1 32 ssa_48 = fdot4 ssa_93, ssa_79 vec1 32 ssa_49 = load_const (0x00000000 /* 0.000000 */) vec1 32 ssa_50 = load_const (0x00000000 /* 0.000000 */) vec1 32 ssa_51 = load_const (0x00000000 /* 0.000000 */) vec1 32 ssa_52 = load_const (0x00000000 /* 0.000000 */) vec1 32 ssa_53 = load_const (0x00000000 /* 0.000000 */) vec1 32 ssa_54 = load_const (0x00000000 /* 0.000000 */) vec1 32 ssa_55 = load_const (0x00000000 /* 0.000000 */) vec4 32 ssa_56 = vec4 ssa_48, ssa_49, ssa_50, ssa_51 vec1 32 ssa_57 = deref_var &out@clipdist_3-temp (function_temp vec4) vec1 32 ssa_58 = deref_var &out@gl_Position-temp (function_temp vec4) vec1 32 ssa_59 = deref_var &gl_Position (shader_out vec4) vec4 32 ssa_80 = mov ssa_42 intrinsic store_deref (ssa_59, ssa_80) (15, 0) /* wrmask=xyzw */ /* access=0 */ vec1 32 ssa_60 = deref_var &out@other-temp (function_temp float) vec1 32 ssa_61 = deref_var &other (shader_out float) vec1 32 ssa_82 = mov ssa_81 intrinsic store_deref (ssa_61, ssa_82) (1, 0) /* wrmask=x */ /* access=0 */ vec1 32 ssa_62 = deref_var &out@other-temp@4 (function_temp float) vec1 32 ssa_63 = deref_var &other@0 (shader_out float) vec1 32 ssa_84 = mov ssa_83 intrinsic store_deref (ssa_63, ssa_84) (1, 0) /* wrmask=x */ /* access=0 */ vec1 32 ssa_64 = deref_var &out@other-temp@5 (function_temp float) vec1 32 ssa_65 = deref_var &other@1 (shader_out float) vec1 32 ssa_86 = mov ssa_85 intrinsic store_deref (ssa_65, ssa_86) (1, 0) /* wrmask=x */ /* access=0 */ vec1 32 ssa_66 = deref_var &out@other-temp@6 (function_temp float) vec1 32 ssa_67 = deref_var &other@2 (shader_out float) vec1 32 ssa_88 = mov ssa_87 intrinsic store_deref (ssa_67, ssa_88) (1, 0) /* wrmask=x */ /* access=0 */ vec1 32 ssa_68 = deref_var &out@other-temp@7 (function_temp vec4) vec1 32 ssa_69 = deref_var &other@3 (shader_out vec4) vec4 32 ssa_89 = mov ssa_3 intrinsic store_deref (ssa_69, ssa_89) (15, 0) /* wrmask=xyzw */ /* access=0 */ vec1 32 ssa_70 = deref_var &out@clipdist_3-temp (function_temp vec4) vec1 32 ssa_71 = deref_var &clipdist_3 (shader_out vec4) vec4 32 ssa_90 = mov ssa_56 intrinsic store_deref (ssa_71, ssa_90) (15, 0) /* wrmask=xyzw */ /* access=0 */ /* succs: block_1 */ block block_1: }
Backtrace:
(gdb) bt
#0 0x00007ffff76f4615 in raise () from /usr/lib/libc.so.6
#1 0x00007ffff76dd862 in abort () from /usr/lib/libc.so.6
#2 0x00007ffff61c86af in dump_errors (when=0x7ffff6d8ee27 "before remapping", state=0x7fffffffd010) at ../src/compiler/nir/nir_validate.c:1325
#3 nir_validate_shader (shader=shader@entry=0x555555ce4790, when=when@entry=0x7ffff6d8ee27 "before remapping") at ../src/compiler/nir/nir_validate.c:1363
#4 0x00007ffff679dbe6 in iris_setup_uniforms (mem_ctx=<optimized out>, nir=<optimized out>, kernel_input_size=<optimized out>, out_system_values=<optimized out>, out_num_system_values=<optimized out>,
out_num_cbufs=<optimized out>, prog_data=<optimized out>, compiler=<optimized out>, compiler=<optimized out>) at ../src/gallium/drivers/iris/iris_program.c:570
#5 0x00007ffff679f2b3 in iris_compile_vs (ice=ice@entry=0x5555555b1de0, ish=ish@entry=0x555555cfc380, key=key@entry=0x7fffffffd610) at ../src/gallium/drivers/iris/iris_program.c:1110
#6 0x00007ffff67a2355 in iris_update_compiled_vs (ice=0x5555555b1de0) at ../src/gallium/drivers/iris/iris_program.c:1180
#7 iris_update_compiled_shaders (ice=ice@entry=0x5555555b1de0) at ../src/gallium/drivers/iris/iris_program.c:1881
#8 0x00007ffff6c59dd3 in iris_draw_vbo (ctx=0x5555555b1de0, info=0x7fffffffd760) at ../src/gallium/drivers/iris/iris_draw.c:254
#9 0x00007ffff61fd93f in st_draw_vbo (ctx=0x7fffffffd760, prims=<optimized out>, nr_prims=<optimized out>, ib=0x0, index_bounds_valid=<optimized out>, min_index=<optimized out>, max_index=<optimized out>,
num_instances=1, base_instance=0, tfb_vertcount=0x0, stream=0) at ../src/mesa/state_tracker/st_draw.c:266
#10 0x00007ffff647907f in _mesa_draw_arrays (drawID=0, baseInstance=0, numInstances=1, count=3, start=0, mode=4, ctx=0x7ffff45e4010) at ../src/mesa/main/draw.c:367
#11 _mesa_draw_arrays (ctx=0x7ffff45e4010, mode=4, start=0, count=3, numInstances=1, baseInstance=0, drawID=0) at ../src/mesa/main/draw.c:348
#12 0x00007ffff7e79981 in stub_glDrawArrays (mode=4, first=0, count=3) at tests/util/piglit-dispatch-gen.c:12181
#13 0x0000555555567748 in piglit_display () at ../tests/shaders/shader_runner.c:4355
#14 0x00007ffff7f05bb2 in run_test (gl_fw=0x55555558e430, argc=2, argv=0x7fffffffde48) at ../tests/util/piglit-framework-gl/piglit_fbo_framework.c:52
#15 0x00007ffff7ef6203 in piglit_gl_test_run (argc=2, argv=0x7fffffffde48, config=0x7fffffffdcf0) at ../tests/util/piglit-framework-gl.c:229
#16 0x000055555555c882 in main (argc=2, argv=0x7fffffffde48) at ../tests/shaders/shader_runner.c:72