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>
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;
}