<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jun 5, 2017 at 10:50 AM, Anuj Phogat <span dir="ltr"><<a href="mailto:anuj.phogat@gmail.com" target="_blank">anuj.phogat@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Sun, Jun 4, 2017 at 9:53 PM, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
> Without this stall, the test group ES3-CTS.functional.fbo.msaa.\* hangs<br>
> about 1 out of every 2 or 3 times on my Sky Lake GT3 laptop.  With the<br>
> flush and stall, I can run it 6 times in a row without a hang.<br>
><br>
> Cc: "17.1" <<a href="mailto:mesa-stable@lists.freedesktop.org">mesa-stable@lists.<wbr>freedesktop.org</a>><br>
> ---<br>
>  src/mesa/drivers/dri/i965/brw_<wbr>blorp.c | 14 ++++++++++++++<br>
>  1 file changed, 14 insertions(+)<br>
><br>
> diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_blorp.c b/src/mesa/drivers/dri/i965/<wbr>brw_blorp.c<br>
> index c452b7e..bfb866a 100644<br>
> --- a/src/mesa/drivers/dri/i965/<wbr>brw_blorp.c<br>
> +++ b/src/mesa/drivers/dri/i965/<wbr>brw_blorp.c<br>
> @@ -1127,6 +1127,20 @@ intel_hiz_exec(struct brw_context *brw, struct intel_mipmap_tree *mt,<br>
>  {<br>
>     const char *opname = NULL;<br>
><br>
> +   /* From the Ivy Bridge PRM, Vol. 2, pt. 1, section 11.5.3.1 "Depth<br>
> +    * Buffer Clear":<br>
> +    *<br>
> +    *    "If other rendering operations have preceded this clear, a<br>
> +    *    PIPE_CONTROL with depth cache flush enabled, Depth Stall bit enabled<br>
> +    *    must be issued before the rectangle primitive used for the depth<br>
> +    *    buffer clear operation."<br>
> +    *<br>
> +    * This is similar to what is required for CCS operations.<br>
> +    */<br>
> +   brw_emit_pipe_control_flush(<wbr>brw,<br>
> +                               PIPE_CONTROL_DEPTH_CACHE_FLUSH |<br>
> +                               PIPE_CONTROL_DEPTH_STALL);<br>
> +<br>
</div></div>We're already doing this in brw_fast_clear_depth().  There is also a<br>
related comment in the same function:<br>
<br>
       * In addition, from the Ivybridge PRM, volume 2, 1.10.4.1 PIPE_CONTROL,<br>
       * Depth Cache Flush Enable:<br>
       *<br>
       *   This bit must not be set when Depth Stall Enable bit is set in<br>
       *   this packet.<br>
       *<br>
       * This is confirmed to hold for real, HSW gets immediate gpu hangs.<br>
       *<br>
       * Therefore issue two pipe control flushes, one for cache flush and<br>
       * another for depth stall.<br>
<br>
I think you can simply move the relevant code from brw_fast_clear_depth()<br>
to intel_hiz_exec().<span class=""><br></span></blockquote><div><br></div><div>Right.  Somehow I missed that.  To put a finer point on things, I don't think it's required for depth resolves but it does seem to be needed for HiZ resolves which makes sense because they are basically the same as fast-clears only they write a different value to the HIZ buffer.<br><br></div><div>I'll send out a new patch now that I've thought about it more.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
>     switch (op) {<br>
>     case BLORP_HIZ_OP_DEPTH_RESOLVE:<br>
>        opname = "depth resolve";<br>
> --<br>
> 2.5.0.400.gff86faf<br>
><br>
</span>> ______________________________<wbr>_________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</blockquote></div><br></div></div>