aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/iris/iris_draw.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gallium/drivers/iris/iris_draw.c b/src/gallium/drivers/iris/iris_draw.c
index 86fc95cac0c..87399c430ee 100644
--- a/src/gallium/drivers/iris/iris_draw.c
+++ b/src/gallium/drivers/iris/iris_draw.c
@@ -55,6 +55,9 @@ prim_is_points_or_lines(const struct pipe_draw_info *draw)
/**
* Record the current primitive mode and restart information, flagging
* related packets as dirty if necessary.
+ *
+ * This must be called before updating compiled shaders, because the patch
+ * information informs the TCS key.
*/
static void
iris_update_draw_info(struct iris_context *ice,
@@ -94,7 +97,15 @@ iris_update_draw_info(struct iris_context *ice,
ice->state.primitive_restart = info->primitive_restart;
ice->state.cut_index = info->restart_index;
}
+}
+/**
+ * Update shader draw parameters, flagging VF packets as dirty if necessary.
+ */
+static void
+iris_update_draw_parameters(struct iris_context *ice,
+ const struct pipe_draw_info *info)
+{
if (info->indirect) {
pipe_resource_reference(&ice->draw.draw_params_res,
info->indirect->buffer);
@@ -153,6 +164,7 @@ iris_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
iris_batch_maybe_flush(batch, 1500);
iris_update_draw_info(ice, info);
+ iris_update_draw_parameters(ice, dinfo);
if (devinfo->gen == 9)
gen9_toggle_preemption(ice, batch, info);