iris: Don't enable push constants just because there are system values

System values are built-in uniforms.  We set them up as UBO values, and
might pull or push them.  UBO push analysis will take care of that.  We
only want to enable push constants if there's an actual range being
pushed.  Otherwise, we might get into a scenario where 3DSTATE_PS
enables push constants but 3DSTATE_CONSTANT_PS isn't pushing anything.

This fixes GPU hangs in Broadwell image load store tests which have
unused image param system values but no other uniforms.  (We shouldn't
be making those anyway, but that's a separate fix...)
This commit is contained in:
Kenneth Graunke 2018-12-27 00:49:56 -08:00
parent 2ca0d913ea
commit bc3bb28645
1 changed files with 1 additions and 2 deletions

View File

@ -3295,8 +3295,7 @@ iris_store_fs_state(struct iris_context *ice,
ps.FloatingPointMode = prog_data->use_alt_mode;
ps.MaximumNumberofThreadsPerPSD = 64 - (GEN_GEN == 8 ? 2 : 1);
ps.PushConstantEnable = shader->num_system_values > 0 ||
prog_data->ubo_ranges[0].length > 0;
ps.PushConstantEnable = prog_data->ubo_ranges[0].length > 0;
/* From the documentation for this packet:
* "If the PS kernel does not need the Position XY Offsets to