summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nv50/nv50_program.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/nv50/nv50_program.h')
-rw-r--r--src/gallium/drivers/nv50/nv50_program.h11
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);