diff options
Diffstat (limited to 'src/gallium/drivers/nv50/nv50_program.h')
-rw-r--r-- | src/gallium/drivers/nv50/nv50_program.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/gallium/drivers/nv50/nv50_program.h b/src/gallium/drivers/nv50/nv50_program.h index 654bce59f31..1184d9be3b4 100644 --- a/src/gallium/drivers/nv50/nv50_program.h +++ b/src/gallium/drivers/nv50/nv50_program.h @@ -92,6 +92,15 @@ struct nv50_program { #define NV50_INTERP_FLAT (1 << 1) #define NV50_INTERP_CENTROID (1 << 2) +#define NV50_PROG_MAX_SUBROUTINES 8 + +/* analyze TGSI and see which TEMP[] are used as subroutine inputs/outputs */ +struct nv50_subroutine { + int id; + uint32_t argv[4][1]; /* 4 bitmasks, for each of xyzw, only allow 32 TEMPs */ + uint32_t retv[4][1]; +}; + struct nv50_translation_info { struct nv50_program *p; unsigned inst_nr; @@ -108,6 +117,8 @@ struct nv50_translation_info { uint32_t *immd32; unsigned immd32_nr; ubyte edgeflag_out; + struct nv50_subroutine subr[NV50_PROG_MAX_SUBROUTINES]; + int subr_nr; }; int nv50_generate_code(struct nv50_translation_info *ti); |