I forgot to mention that the predecessor to this patch fixed around 70 BSW failures on Jenkins. Note that our current Jenkins baseline for BSW is probably not fully baked atm.
On Wed, May 27, 2015 at 10:16:04PM -0700, Ben Widawsky wrote: > AFAICT, there is no real way to make sure a send message with EOT is properly > ignored from compact, nor can I see a way to actually encode EOT while > compacting. Before the single send optimization we'd always bail because we > hit > the is_immediate && !is_compactable_immediate case. However, with single send, > is_immediate is not true, and so we end up trying to compact the > un-compactible. > > Without this, any compacting single send instruction will hang because the EOT > isn't there. I am not sure how I didn't hit this when I originally enabled the > optimization. I didn't check if some surrounding code changed. > > NOTE: This needs another piglit run or two before merge. > > I know Neil and Matt were both looking into this. I did a quick search and > didn't see any patches out there to handle this. Please ignore if this has > already been sent by someone. (Direct me to it and I will review it). > > Cc: Matt Turner <matts...@gmail.com> > Cc: Neil Roberts <n...@linux.intel.com> > Cc: Mark Janes <mark.a.ja...@intel.com> > Signed-off-by: Ben Widawsky <b...@bwidawsk.net> > --- > src/mesa/drivers/dri/i965/brw_eu_compact.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_eu_compact.c > b/src/mesa/drivers/dri/i965/brw_eu_compact.c > index 69cb114..67f0b45 100644 > --- a/src/mesa/drivers/dri/i965/brw_eu_compact.c > +++ b/src/mesa/drivers/dri/i965/brw_eu_compact.c > @@ -849,6 +849,12 @@ set_3src_source_index(const struct brw_device_info > *devinfo, > static bool > has_unmapped_bits(const struct brw_device_info *devinfo, brw_inst *src) > { > + /* EOT can only be mapped on a send if the src1 is an immediate */ > + if ((brw_inst_opcode(devinfo, src) == BRW_OPCODE_SENDC || > + brw_inst_opcode(devinfo, src) == BRW_OPCODE_SEND) && > + brw_inst_eot(devinfo, src)) > + return true; > + > /* Check for instruction bits that don't map to any of the fields of the > * compacted instruction. The instruction cannot be compacted if any of > * them are set. They overlap with: > -- > 2.4.1 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev