diff options
author | Christoph Bumiller <[email protected]> | 2009-12-31 00:37:47 +0100 |
---|---|---|
committer | Christoph Bumiller <[email protected]> | 2009-12-31 14:34:26 +0100 |
commit | 170cdb4507683fb9042620f7ab2ad96e57787d6c (patch) | |
tree | 429b85960eb1e1db887b1822179f8e47bd31f6c3 /src/gallium | |
parent | 0ba518e3274b020deac255061ab23c74aefeb3f1 (diff) |
nv50: alloc_reg on reg_instance
If we create multiple instances of an nv50_reg referencing
them same resource, register allocation from alloc_reg has
to be done with the original nv50_reg.
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/nv50/nv50_program.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c index 739621a5b32..295725a6c06 100644 --- a/src/gallium/drivers/nv50/nv50_program.c +++ b/src/gallium/drivers/nv50/nv50_program.c @@ -163,20 +163,6 @@ struct nv50_pc { uint8_t edgeflag_out; }; -static INLINE struct nv50_reg * -reg_instance(struct nv50_pc *pc, struct nv50_reg *reg) -{ - struct nv50_reg *ri; - - assert(pc->reg_instance_nr < 16); - ri = &pc->reg_instances[pc->reg_instance_nr++]; - if (reg) { - *ri = *reg; - reg->mod = 0; - } - return ri; -} - static INLINE void ctor_reg(struct nv50_reg *reg, unsigned type, int index, int hw) { @@ -255,6 +241,21 @@ alloc_reg(struct nv50_pc *pc, struct nv50_reg *reg) assert(0); } +static INLINE struct nv50_reg * +reg_instance(struct nv50_pc *pc, struct nv50_reg *reg) +{ + struct nv50_reg *ri; + + assert(pc->reg_instance_nr < 16); + ri = &pc->reg_instances[pc->reg_instance_nr++]; + if (reg) { + alloc_reg(pc, reg); + *ri = *reg; + reg->mod = 0; + } + return ri; +} + /* XXX: For shaders that aren't executed linearly (e.g. shaders that * contain loops), we need to assign all hw regs to TGSI TEMPs early, * lest we risk temp_temps overwriting regs alloc'd "later". |