-/* TODO any better helper somewhere to sort a list? */
-
-static void
-insert_sorted(struct exec_list *var_list, nir_variable *new_var)
-{
- nir_foreach_variable(var, var_list) {
- if (var->data.location > new_var->data.location) {
- exec_node_insert_node_before(&var->node, &new_var->node);
- return;
- }
- }
- exec_list_push_tail(var_list, &new_var->node);
-}
-
-static void
-sort_varyings(struct exec_list *var_list)
-{
- struct exec_list new_list;
- exec_list_make_empty(&new_list);
- nir_foreach_variable_safe(var, var_list) {
- exec_node_remove(&var->node);
- insert_sorted(&new_list, var);
- }
- exec_list_move_nodes_to(&new_list, var_list);
-}
-
-static void
-set_st_program(struct gl_program *prog,
- struct gl_shader_program *shader_program,
- nir_shader *nir)
-{
- struct st_vertex_program *stvp;
- struct st_common_program *stp;
- struct st_fragment_program *stfp;
- struct st_compute_program *stcp;
-
- switch (prog->info.stage) {
- case MESA_SHADER_VERTEX:
- stvp = (struct st_vertex_program *)prog;
- stvp->shader_program = shader_program;
- stvp->tgsi.type = PIPE_SHADER_IR_NIR;
- stvp->tgsi.ir.nir = nir;
- break;
- case MESA_SHADER_GEOMETRY:
- case MESA_SHADER_TESS_CTRL:
- case MESA_SHADER_TESS_EVAL:
- stp = (struct st_common_program *)prog;
- stp->shader_program = shader_program;
- stp->tgsi.type = PIPE_SHADER_IR_NIR;
- stp->tgsi.ir.nir = nir;
- break;
- case MESA_SHADER_FRAGMENT:
- stfp = (struct st_fragment_program *)prog;
- stfp->shader_program = shader_program;
- stfp->tgsi.type = PIPE_SHADER_IR_NIR;
- stfp->tgsi.ir.nir = nir;
- break;
- case MESA_SHADER_COMPUTE:
- stcp = (struct st_compute_program *)prog;
- stcp->shader_program = shader_program;
- stcp->tgsi.ir_type = PIPE_SHADER_IR_NIR;
- stcp->tgsi.prog = nir;
- break;
- default:
- unreachable("unknown shader stage");
- }
-}
-