iris: implement Wa_14016118574
After each 3DPRIMITIVE, we need to send a dummy post sync op if point or line list was used or if had only 1 or 2 vertices per primitive. Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18746>
This commit is contained in:
@@ -6870,6 +6870,23 @@ flush_vbos(struct iris_context *ice, struct iris_batch *batch)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
point_or_line_list(enum pipe_prim_type prim_type)
|
||||||
|
{
|
||||||
|
switch (prim_type) {
|
||||||
|
case PIPE_PRIM_POINTS:
|
||||||
|
case PIPE_PRIM_LINES:
|
||||||
|
case PIPE_PRIM_LINE_STRIP:
|
||||||
|
case PIPE_PRIM_LINES_ADJACENCY:
|
||||||
|
case PIPE_PRIM_LINE_STRIP_ADJACENCY:
|
||||||
|
case PIPE_PRIM_LINE_LOOP:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
iris_upload_render_state(struct iris_context *ice,
|
iris_upload_render_state(struct iris_context *ice,
|
||||||
struct iris_batch *batch,
|
struct iris_batch *batch,
|
||||||
@@ -7092,6 +7109,17 @@ iris_upload_render_state(struct iris_context *ice,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if GFX_VERx10 == 125
|
||||||
|
if (point_or_line_list(ice->state.prim_mode) ||
|
||||||
|
indirect || (sc->count == 1 || sc->count == 2)) {
|
||||||
|
iris_emit_pipe_control_write(batch, "Wa_14016118574",
|
||||||
|
PIPE_CONTROL_WRITE_IMMEDIATE,
|
||||||
|
batch->screen->workaround_bo,
|
||||||
|
batch->screen->workaround_address.offset,
|
||||||
|
0ull);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
iris_batch_sync_region_end(batch);
|
iris_batch_sync_region_end(batch);
|
||||||
|
|
||||||
trace_intel_end_draw(&batch->trace, 0);
|
trace_intel_end_draw(&batch->trace, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user