Bug 109782

Summary: [CTS] dEQP-VK.graphicsfuzz.while-inside-switch hangs
Product: Mesa Reporter: Samuel Pitoiset <samuel.pitoiset>
Component: Drivers/Vulkan/radeonAssignee: mesa-dev
Status: RESOLVED MOVED QA Contact: mesa-dev
Severity: critical    
Priority: medium    
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Samuel Pitoiset 2019-02-25 17:29:45 UTC
Writing test log into TestResults.qpa
dEQP Core git-65ebf85d4b32fc62201aedbef5b69d7c00298bee (0x65ebf85d) starting..
  target implementation = 'Default'

Test case 'dEQP-VK.graphicsfuzz.while-inside-switch'..
shader: MESA_SHADER_VERTEX
inputs: 0
outputs: 0
uniforms: 0
shared: 0
decl_var shader_in INTERP_MODE_NONE vec4 @0 (VERT_ATTRIB_GENERIC0, 0, 0)
decl_var shader_out INTERP_MODE_NONE vec4 @1 (VARYING_SLOT_POS, 0, 0)
decl_function main (0 params)

impl main {
	decl_var  INTERP_MODE_NONE vec4 out@(null)-temp
	decl_var  INTERP_MODE_NONE vec4 in@(null)-temp
	block block_0:
	/* preds: */
	vec1 32 ssa_0 = deref_var &@0 (shader_in vec4) 
	vec4 32 ssa_1 = intrinsic load_deref (ssa_0) (0) /* access=0 */
	vec1 32 ssa_2 = deref_var &@1 (shader_out vec4) 
	intrinsic store_deref (ssa_2, ssa_1) (15, 0) /* wrmask=xyzw */ /* access=0 */
	/* succs: block_1 */
	block block_1:
}

shader: MESA_SHADER_FRAGMENT
inputs: 0
outputs: 0
uniforms: 0
shared: 0
decl_var shader_in INTERP_MODE_NONE vec4 gl_FragCoord (VARYING_SLOT_POS, 0, 0)
decl_var shader_out INTERP_MODE_NONE vec4 _GLF_color (FRAG_RESULT_DATA0, 0, 0)
decl_function main (0 params)

impl main {
	decl_var  INTERP_MODE_NONE vec4 out@_GLF_color-temp
	block block_0:
	/* preds: */
	vec1 32 ssa_0 = load_const (0x00000000 /* 0.000000 */)
	vec1 32 ssa_1 = load_const (0x41200000 /* 10.000000 */)
	/* succs: block_1 */
	loop {
		block block_1:
		/* preds: block_0 */
		vec1 32 ssa_2 = deref_var &gl_FragCoord (shader_in vec4) 
		vec4 32 ssa_3 = intrinsic load_deref (ssa_2) (0) /* access=0 */
		vec1 32 ssa_4 = flt32 ssa_3.x, ssa_1
		/* succs: block_2 block_3 */
		if ssa_4 {
			block block_2:
			/* preds: block_1 */
			break
			/* succs: block_10 */
		} else {
			block block_3:
			/* preds: block_1 */
			/* succs: block_4 */
		}
		block block_4:
		/* preds: block_3 */
		vec1 32 ssa_5 = intrinsic vulkan_resource_index (ssa_0) (0, 0, 6) /* desc-set=0 */ /* binding=0 */ /* desc_type=UBO */
		vec1 32 ssa_6 = intrinsic load_ubo (ssa_5, ssa_0) (4, 0) /* align_mul=4 */ /* align_offset=0 */
		vec1 32 ssa_7 = f2i32 ssa_6
		vec1 32 ssa_8 = ieq32 ssa_7, ssa_0
		/* succs: block_5 block_8 */
		if ssa_8 {
			block block_5:
			/* preds: block_4 */
			/* succs: block_6 */
			loop {
				block block_6:
				/* preds: block_5 block_6 */
				intrinsic discard () ()
				/* succs: block_6 */
			}
			block block_7:
			/* preds: */
			/* succs: block_9 */
		} else {
			block block_8:
			/* preds: block_4 */
			/* succs: block_9 */
		}
		block block_9:
		/* preds: block_7 block_8 */
		break
		/* succs: block_10 */
	}
	block block_10:
	/* preds: block_2 block_9 */
	vec1 32 ssa_9 = deref_var &_GLF_color (shader_out vec4) 
	vec4 32 ssa_10 = load_const (0x3f800000 /* 1.000000 */, 0x00000000 /* 0.000000 */, 0x00000000 /* 0.000000 */, 0x3f800000 /* 1.000000 */)
	intrinsic store_deref (ssa_9, ssa_10) (15, 0) /* wrmask=xyzw */ /* access=0 */
	/* succs: block_11 */
	block block_11:
}

1) The NIR compiler should be able to kill the outer loop
2) The inner (infinite) loop should probably be killed as well (or the discard should be moved outside)
Comment 1 GitLab Migration User 2019-09-18 19:55:32 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/856.

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.