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 <anarsoul@gmail.com>
Tested-by: Vasily Khoruzhick <anarsoul@gmail.com>
This commit is contained in:
Connor Abbott
2019-09-02 22:31:00 +02:00
parent 63acdb5ce6
commit 2955875381
+3 -2
View File
@@ -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;
}