[Mesa-dev] [PATCH] i965: Implement another VF cache invalidate workaround on Gen8+.
Pohjolainen, Topi
topi.pohjolainen at gmail.com
Mon Jan 30 18:59:51 UTC 2017
On Sun, Jan 29, 2017 at 08:24:16PM -0800, Kenneth Graunke wrote:
> ...and provide a better citation for the existing one.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
> src/mesa/drivers/dri/i965/brw_pipe_control.c | 32 +++++++++++++++++++++-------
> 1 file changed, 24 insertions(+), 8 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_pipe_control.c b/src/mesa/drivers/dri/i965/brw_pipe_control.c
> index b8f740640f2..3e08841e0a9 100644
> --- a/src/mesa/drivers/dri/i965/brw_pipe_control.c
> +++ b/src/mesa/drivers/dri/i965/brw_pipe_control.c
> @@ -118,14 +118,30 @@ brw_emit_pipe_control_flush(struct brw_context *brw, uint32_t flags)
> if (brw->gen == 8)
> gen8_add_cs_stall_workaround_bits(&flags);
>
> - if (brw->gen == 9 &&
> - (flags & PIPE_CONTROL_VF_CACHE_INVALIDATE)) {
> - /* Hardware workaround: SKL
> - *
> - * Emit Pipe Control with all bits set to zero before emitting
> - * a Pipe Control with VF Cache Invalidate set.
> - */
> - brw_emit_pipe_control_flush(brw, 0);
> + if (flags & PIPE_CONTROL_VF_CACHE_INVALIDATE) {
> + if (brw->gen >= 9) {
> + /* The PIPE_CONTROL "VF Cache Invalidation Enable" bit description
> + * lists several workarounds:
> + *
> + * "Projects: SKL, KBL, BXT
> + * If the VF Cache Invalidation Enable is set to a 1 in a
> + * PIPE_CONTROL, a separate Null PIPE_CONTROL, all bitfields sets
> + * to 0, with the VF Cache Invalidation Enable set to 0 needs to
> + * be sent prior to the PIPE_CONTROL with VF Cache Invalidation
> + * Enable set to a 1."
> + */
> + brw_emit_pipe_control_flush(brw, 0);
> +
> + /* "Projects: BDW+
> + * When VF Cache Invalidate is set ???Post Sync Operation??? must
> + * be enabled to ???Write Immediate Data??? or ???Write PS Depth Count???
> + * or ???Write Timestamp???.
> + */
> + brw_emit_pipe_control_write(brw,
> + flags | PIPE_CONTROL_WRITE_IMMEDIATE,
> + brw->workaround_bo, 0, 0, 0);
Your title says gen8+, this is still within the gen9+ block. Did you mean to
have it also for gen8?
> + return;
> + }
> }
>
> BEGIN_BATCH(6);
> --
> 2.11.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list