Updated code generation so that for vertex shader output position is written at last...
[mesa.git] / src / libre-soc / vulkan / libresoc_shader_args.c
1
2 #include "libresoc_shader_args.h"
3
4 #include "nir/nir_builder.h"
5
6 void add_arg(struct shader_args *info, enum arg_regfile regfile, unsigned size,
7 enum arg_type type, struct arg *arg)
8 {
9 assert(info->arg_count < MAX_ARGS);
10
11 unsigned offset;
12 if (regfile == ARG_SGPR) {
13 offset = info->num_sgprs_used;
14 info->num_sgprs_used += size;
15 } else {
16 assert(regfile == ARG_VGPR);
17 offset = info->num_vgprs_used;
18 info->num_vgprs_used += size;
19 }
20
21 info->args[info->arg_count].file = regfile;
22 info->args[info->arg_count].offset = offset;
23 info->args[info->arg_count].size = size;
24 info->args[info->arg_count].type = type;
25
26 if (arg) {
27 arg->arg_index = info->arg_count;
28 arg->used = true;
29 }
30
31 info->arg_count++;
32 }