i965: properly initialize brw->cs.base.stage to MESA_SHADER_COMPUTE
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 31 Oct 2017 07:56:24 +0000 (00:56 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 8 Nov 2017 23:26:18 +0000 (15:26 -0800)
commita16dc04ad51c32e5c7d136e4dd6273d983385d3f
treed2036dada314c756e0189b1ce6b1597dd6115fc6
parent3e63cf893f096a7263eb1856d58417dd2d170d4b
i965: properly initialize brw->cs.base.stage to MESA_SHADER_COMPUTE

This has a bit of a surprising effect:

For the render pipeline, the upload_sampler_state_table atom emits
3DSTATE_BINDING_TABLE_POINTERS_XS.  It tries to avoid this for compute:

   if (GEN_GEN >= 7 && stage_state->stage != MESA_SHADER_COMPUTE) {
      /* Emit a 3DSTATE_SAMPLER_STATE_POINTERS_XS packet. */
      genX(emit_sampler_state_pointers_xs)(brw, stage_state);
   } ...

However, we were failing to initialize brw->cs.base.stage, so it was
left as 0 (MESA_SHADER_VERTEX), causing this condition to break.  We
then emitted 3DSTATE_SAMPLER_STATE_POINTERS_VS in GPGPU mode, when
trying to upload CS samplers.  Nothing good can come of this.

Found by inspection while debugging a GPU hang.  Jordan believes this
helps the Deus Ex: Mankind Divided benchmark mode's stability when
running with shader cache.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/mesa/drivers/dri/i965/brw_context.c