Re: [Mesa-dev] [PATCH v2 2/4] i965/gen10: Implement WaForceRCPFEHangWorkaround
On Thu, Nov 2, 2017 at 11:18 AM, Nanley Cherywrote: > On Wed, Nov 01, 2017 at 03:49:52PM -0700, Anuj Phogat wrote: >> V2: Add the check for Post Sync Operation. >> Update the workaround comment. >> > > Did you mean to put the V2 hunk after the messsage? > >> This workaround doesn't fix any of the piglit hangs we've seen >> on CNL. But it might be fixing something we haven't tested yet. >> >> Cc: Nanley Chery >> Signed-off-by: Anuj Phogat >> Reviewed-by: Rafael Antognolli >> --- >> src/mesa/drivers/dri/i965/brw_pipe_control.c | 21 + >> 1 file changed, 21 insertions(+) >> >> diff --git a/src/mesa/drivers/dri/i965/brw_pipe_control.c >> b/src/mesa/drivers/dri/i965/brw_pipe_control.c >> index 6ebe1443d5..b1975ce533 100644 >> --- a/src/mesa/drivers/dri/i965/brw_pipe_control.c >> +++ b/src/mesa/drivers/dri/i965/brw_pipe_control.c >> @@ -89,6 +89,24 @@ gen7_cs_stall_every_four_pipe_controls(struct brw_context >> *brw, uint32_t flags) >> return 0; >> } >> >> +/* #1130 from gen10 workarounds page in h/w specs: >> + * "Enable Depth Stall on every Post Sync Op if Render target Cache Flush is >> + * not enabled in same PIPE CONTROL and Enable Pixel score board stall if >> + * Render target cache flush is enabled." >> + * >> + * Applicable to CNL B0 and C0 steppings only. >> + */ >> +static void >> +gen10_add_rcpfe_workaround_bits(uint32_t *flags) >> +{ >> + if (*flags & PIPE_CONTROL_RENDER_TARGET_FLUSH) >> + *flags = *flags | PIPE_CONTROL_STALL_AT_SCOREBOARD; >> + else if ((*flags & PIPE_CONTROL_WRITE_IMMEDIATE) || >> +(*flags & PIPE_CONTROL_WRITE_DEPTH_COUNT) || >> +(*flags & PIPE_CONTROL_WRITE_TIMESTAMP)) >> + *flags = *flags | PIPE_CONTROL_DEPTH_STALL; > > I think we usually use braces in multi-line if-statements. > > How about: >} else if (*flags & (PIPE_CONTROL_WRITE_IMMEDIATE | > PIPE_CONTROL_WRITE_DEPTH_COUNT | > PIPE_CONTROL_WRITE_TIMESTAMP)) { > > > > With the commit message fixed and braces included, this patch is > Reviewed-by: Nanley Chery > All suggestions fixed locally. >> +} >> + >> static void >> brw_emit_pipe_control(struct brw_context *brw, uint32_t flags, >>struct brw_bo *bo, uint32_t offset, uint64_t imm) >> @@ -109,6 +127,9 @@ brw_emit_pipe_control(struct brw_context *brw, uint32_t >> flags, >> brw_emit_pipe_control_flush(brw, 0); >>} >> >> + if (devinfo->gen == 10) >> + gen10_add_rcpfe_workaround_bits(); >> + >>BEGIN_BATCH(6); >>OUT_BATCH(_3DSTATE_PIPE_CONTROL | (6 - 2)); >>OUT_BATCH(flags); >> -- >> 2.13.5 >> >> ___ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH v2 2/4] i965/gen10: Implement WaForceRCPFEHangWorkaround
On Wed, Nov 01, 2017 at 03:49:52PM -0700, Anuj Phogat wrote: > V2: Add the check for Post Sync Operation. > Update the workaround comment. > Did you mean to put the V2 hunk after the messsage? > This workaround doesn't fix any of the piglit hangs we've seen > on CNL. But it might be fixing something we haven't tested yet. > > Cc: Nanley Chery> Signed-off-by: Anuj Phogat > Reviewed-by: Rafael Antognolli > --- > src/mesa/drivers/dri/i965/brw_pipe_control.c | 21 + > 1 file changed, 21 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_pipe_control.c > b/src/mesa/drivers/dri/i965/brw_pipe_control.c > index 6ebe1443d5..b1975ce533 100644 > --- a/src/mesa/drivers/dri/i965/brw_pipe_control.c > +++ b/src/mesa/drivers/dri/i965/brw_pipe_control.c > @@ -89,6 +89,24 @@ gen7_cs_stall_every_four_pipe_controls(struct brw_context > *brw, uint32_t flags) > return 0; > } > > +/* #1130 from gen10 workarounds page in h/w specs: > + * "Enable Depth Stall on every Post Sync Op if Render target Cache Flush is > + * not enabled in same PIPE CONTROL and Enable Pixel score board stall if > + * Render target cache flush is enabled." > + * > + * Applicable to CNL B0 and C0 steppings only. > + */ > +static void > +gen10_add_rcpfe_workaround_bits(uint32_t *flags) > +{ > + if (*flags & PIPE_CONTROL_RENDER_TARGET_FLUSH) > + *flags = *flags | PIPE_CONTROL_STALL_AT_SCOREBOARD; > + else if ((*flags & PIPE_CONTROL_WRITE_IMMEDIATE) || > +(*flags & PIPE_CONTROL_WRITE_DEPTH_COUNT) || > +(*flags & PIPE_CONTROL_WRITE_TIMESTAMP)) > + *flags = *flags | PIPE_CONTROL_DEPTH_STALL; I think we usually use braces in multi-line if-statements. How about: } else if (*flags & (PIPE_CONTROL_WRITE_IMMEDIATE | PIPE_CONTROL_WRITE_DEPTH_COUNT | PIPE_CONTROL_WRITE_TIMESTAMP)) { With the commit message fixed and braces included, this patch is Reviewed-by: Nanley Chery > +} > + > static void > brw_emit_pipe_control(struct brw_context *brw, uint32_t flags, >struct brw_bo *bo, uint32_t offset, uint64_t imm) > @@ -109,6 +127,9 @@ brw_emit_pipe_control(struct brw_context *brw, uint32_t > flags, > brw_emit_pipe_control_flush(brw, 0); >} > > + if (devinfo->gen == 10) > + gen10_add_rcpfe_workaround_bits(); > + >BEGIN_BATCH(6); >OUT_BATCH(_3DSTATE_PIPE_CONTROL | (6 - 2)); >OUT_BATCH(flags); > -- > 2.13.5 > > ___ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH v2 2/4] i965/gen10: Implement WaForceRCPFEHangWorkaround
V2: Add the check for Post Sync Operation. Update the workaround comment. This workaround doesn't fix any of the piglit hangs we've seen on CNL. But it might be fixing something we haven't tested yet. Cc: Nanley CherySigned-off-by: Anuj Phogat Reviewed-by: Rafael Antognolli --- src/mesa/drivers/dri/i965/brw_pipe_control.c | 21 + 1 file changed, 21 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_pipe_control.c b/src/mesa/drivers/dri/i965/brw_pipe_control.c index 6ebe1443d5..b1975ce533 100644 --- a/src/mesa/drivers/dri/i965/brw_pipe_control.c +++ b/src/mesa/drivers/dri/i965/brw_pipe_control.c @@ -89,6 +89,24 @@ gen7_cs_stall_every_four_pipe_controls(struct brw_context *brw, uint32_t flags) return 0; } +/* #1130 from gen10 workarounds page in h/w specs: + * "Enable Depth Stall on every Post Sync Op if Render target Cache Flush is + * not enabled in same PIPE CONTROL and Enable Pixel score board stall if + * Render target cache flush is enabled." + * + * Applicable to CNL B0 and C0 steppings only. + */ +static void +gen10_add_rcpfe_workaround_bits(uint32_t *flags) +{ + if (*flags & PIPE_CONTROL_RENDER_TARGET_FLUSH) + *flags = *flags | PIPE_CONTROL_STALL_AT_SCOREBOARD; + else if ((*flags & PIPE_CONTROL_WRITE_IMMEDIATE) || +(*flags & PIPE_CONTROL_WRITE_DEPTH_COUNT) || +(*flags & PIPE_CONTROL_WRITE_TIMESTAMP)) + *flags = *flags | PIPE_CONTROL_DEPTH_STALL; +} + static void brw_emit_pipe_control(struct brw_context *brw, uint32_t flags, struct brw_bo *bo, uint32_t offset, uint64_t imm) @@ -109,6 +127,9 @@ brw_emit_pipe_control(struct brw_context *brw, uint32_t flags, brw_emit_pipe_control_flush(brw, 0); } + if (devinfo->gen == 10) + gen10_add_rcpfe_workaround_bits(); + BEGIN_BATCH(6); OUT_BATCH(_3DSTATE_PIPE_CONTROL | (6 - 2)); OUT_BATCH(flags); -- 2.13.5 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev