nv50: put low limit on REG_ALLOC_TEMP and FP_RESULT_COUNT
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Wed, 15 Sep 2010 13:21:41 +0000 (15:21 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Wed, 15 Sep 2010 13:35:14 +0000 (15:35 +0200)
src/gallium/drivers/nv50/nv50_pc.c
src/gallium/drivers/nv50/nv50_program.c

index 2706d88779618a944675ba57e3bfa7ee4d37101e..bb464ec4c9f54f0a7ac85d95c654d84f609abc69 100644 (file)
@@ -539,8 +539,8 @@ nv50_generate_code(struct nv50_translation_info *ti)
    ti->p->immd_size = pc->immd_count * 4;
    ti->p->immd = pc->immd_buf;
 
-   /* highest 16 bit reg to num of 32 bit regs */
-   ti->p->max_gpr = (pc->max_reg[NV_FILE_GPR] >> 1) + 1;
+   /* highest 16 bit reg to num of 32 bit regs, limit to >= 4 */
+   ti->p->max_gpr = MAX2(4, (pc->max_reg[NV_FILE_GPR] >> 1) + 1);
 
    ti->p->fixups = pc->fixups;
    ti->p->num_fixups = pc->num_fixups;
index 24952f70f1473a7aa8172ee8f9678a1a69adbcef..b3600f7ba73d209c292a30bb8604c80c8d2a5129 100644 (file)
@@ -514,6 +514,9 @@ nv50_fragprog_prepare(struct nv50_translation_info *ti)
    if (depr < p->out_nr) {
       p->out[depr].mask = 0x4;
       p->out[depr].hw = ti->output_map[depr][2] = p->max_out++;
+   } else {
+      /* allowed values are 1, 4, 5, 8, 9, ... */
+      p->max_out = MAX2(4, p->max_out);
    }
 
    return 0;