From 2955875381c18290a8f6f798ab78dc53cf3daa47 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Mon, 2 Sep 2019 22:31:00 +0200 Subject: [PATCH] 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 --- src/gallium/drivers/lima/ir/gp/scheduler.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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; } -- 2.30.2