On 6 January 2014 17:05, Chad Versace <chad.vers...@linux.intel.com> wrote:

> Unconditionally set brw->need_workaround_flush at the top of gen6 blorp
> state emission. This is an extra safety measure to prevent undiscovered
> difficult-to-diagnose gpu hangs.
>
> The art of emitting workaround flushes on Sandybridge is mysterious and
> not fully understood. Ken and I believe that
> intel_emit_post_sync_nonzero_flush() may be required when switching from
> regular drawing to blorp.
>
> CC: mesa-sta...@lists.freedesktop.org
> CC: Kenneth Graunke <kenn...@whitecape.org>
> CC: Paul Berry <stereotype...@gmail.com>
> CC: Stéphane Marchesin <marc...@chromium.org>
> Signed-off-by: Chad Versace <chad.vers...@linux.intel.com>
> ---
>  src/mesa/drivers/dri/i965/gen6_blorp.cpp | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.cpp
> b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
> index 929d7b5..9db0840 100644
> --- a/src/mesa/drivers/dri/i965/gen6_blorp.cpp
> +++ b/src/mesa/drivers/dri/i965/gen6_blorp.cpp
> @@ -1023,7 +1023,6 @@ gen6_emit_hiz_workaround(struct brw_context *brw,
> enum gen6_hiz_op hiz_op)
>      */
>     if (hiz_op == GEN6_HIZ_OP_DEPTH_RESOLVE ||
>         hiz_op == GEN6_HIZ_OP_HIZ_RESOLVE) {
> -      brw->batch.need_workaround_flush = true;
>        intel_emit_post_sync_nonzero_flush(brw);
>        intel_emit_depth_stall_flushes(brw);
>     }
> @@ -1051,6 +1050,9 @@ gen6_blorp_exec(struct brw_context *brw,
>
>     uint32_t prog_offset = params->get_wm_prog(brw, &prog_data);
>
> +   /* Emit workaround flushes when we switch from drawing to blorping. */
> +   brw->batch.need_workaround_flush = true;
> +
>

This seems unnecessary to me.  We already set need_workaround_flush
whenever we emit a primitive, so isn't it guaranteed to be set whenever we
reach this point in the code?
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to