[Mesa-dev] [PATCH] r600: shader CF_OP_VTX also doesn't use the EOP bit.

Gert Wollny gw.fossdev at gmail.com
Wed Nov 15 09:04:56 UTC 2017


Am Mittwoch, den 15.11.2017, 11:28 +1000 schrieb Dave Airlie:
> 
> I'll likely apply this as well at some point, that test however hangs
> my cayman with or without my patch (and your patch doesn't do
> anything on cayman).

BTW: valgrind showed that there was some problem in sb in the parser
(branch based on un-unitialized value), and by changing 

r600_shader.c:3121; r600_shader_from_tgsi  

  } else if (ctx.type == PIPE_SHADER_TESS_EVAL) {
		ctx.tess_input_info = 0;
		ctx.tess_output_info = ctx.bc->ar_reg + 3;
-		ctx.temp_reg = ctx.bc->ar_reg + 4;
+		ctx.temp_reg = ctx.bc->ar_reg + 5;
 } else if (ctx.type == PIPE_SHADER_GEOMETRY) {
		ctx.gs_export_gpr_tregs[0] = ctx.bc->ar_reg + 3;
		ctx.gs_export_gpr_tregs[1] = ctx.bc->ar_reg + 4;
		ctx.gs_export_gpr_tregs[2] = ctx.bc->ar_reg + 5;

the GPU lockup what triggered reliably for me on BARTS.  
	
Running this with R600_DUMP_SHADERS=1 also crashed, because sb accessed
unallocated memory trying to decode non-existing instructions. 

maybe that helps to locate the problem on cayman. 

Best, 
Gert 








More information about the mesa-dev mailing list