From b9eeed3e8f964f1ee8b169497299b9e76c076154 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Mon, 8 Oct 2018 13:44:01 -0700 Subject: [PATCH] iris: Allow PIPE_CONTROL with Stall at Scoreboard and RT flush It's nonsensical, but not illegal, and mandatory on Icelake --- src/gallium/drivers/iris/iris_state.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index 86aeccd8c81..c443b16749b 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -4302,7 +4302,7 @@ iris_emit_raw_pipe_control(struct iris_batch *batch, uint32_t flags, PIPE_CONTROL_WRITE_TIMESTAMP))); } - if (flags & PIPE_CONTROL_STALL_AT_SCOREBOARD) { + if (GEN_GEN < 11 && (flags & PIPE_CONTROL_STALL_AT_SCOREBOARD)) { /* From the PIPE_CONTROL instruction table, bit 1: * * "This bit is ignored if Depth Stall Enable is set. @@ -4311,6 +4311,10 @@ iris_emit_raw_pipe_control(struct iris_batch *batch, uint32_t flags, * * We assert that the caller doesn't do this combination, to try and * prevent mistakes. It shouldn't hurt the GPU, though. + * + * We skip this check on Gen11+ as the "Stall at Pixel Scoreboard" + * and "Render Target Flush" combo is explicitly required for BTI + * update workarounds. */ assert(!(flags & (PIPE_CONTROL_DEPTH_STALL | PIPE_CONTROL_RENDER_TARGET_FLUSH))); -- 2.30.2