From: Kenneth Graunke Date: Mon, 8 Oct 2018 20:44:01 +0000 (-0700) Subject: iris: Allow PIPE_CONTROL with Stall at Scoreboard and RT flush X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b9eeed3e8f964f1ee8b169497299b9e76c076154;p=mesa.git iris: Allow PIPE_CONTROL with Stall at Scoreboard and RT flush It's nonsensical, but not illegal, and mandatory on Icelake --- 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)));