From: Connor Abbott Date: Mon, 2 Sep 2019 20:31:00 +0000 (+0200) Subject: lima/gpir: Fix schedule_first insertion logic X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2955875381c18290a8f6f798ab78dc53cf3daa47;p=mesa.git lima/gpir: Fix schedule_first insertion logic The idea was to make sure schedule_first nodes were always first in the ready list. I made sure they were inserted first, but not that other nodes wouldn't later be scheduled ahead of them. Fixes spec@glsl-1.10@execution@built-in-functions@vs-exp-float and probably others. Reviewed-by: Vasily Khoruzhick Tested-by: Vasily Khoruzhick --- diff --git a/src/gallium/drivers/lima/ir/gp/scheduler.c b/src/gallium/drivers/lima/ir/gp/scheduler.c index bfb64543e06..8fff4f79b36 100644 --- a/src/gallium/drivers/lima/ir/gp/scheduler.c +++ b/src/gallium/drivers/lima/ir/gp/scheduler.c @@ -441,8 +441,9 @@ static void schedule_insert_ready_list(sched_ctx *ctx, struct list_head *insert_pos = &ctx->ready_list; list_for_each_entry(gpir_node, node, &ctx->ready_list, list) { - if (insert_node->sched.dist > node->sched.dist || - gpir_op_infos[insert_node->op].schedule_first) { + if ((insert_node->sched.dist > node->sched.dist || + gpir_op_infos[insert_node->op].schedule_first) && + !gpir_op_infos[node->op].schedule_first) { insert_pos = &node->list; break; }