r300/compiler: use limits from the compiler input instead of inline constants
authorMarek Olšák <maraeo@gmail.com>
Fri, 3 Sep 2010 18:43:48 +0000 (20:43 +0200)
committerMarek Olšák <maraeo@gmail.com>
Sat, 4 Sep 2010 16:56:22 +0000 (18:56 +0200)
src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c

index 1628078a3279224c24433ff2b728dff939a76d63..4076825b48346cd03cb1a0caa907acb8c4d00ad8 100644 (file)
@@ -391,7 +391,7 @@ static void ei_if(struct r300_vertex_program_compiler * compiler,
        /* Reserve a temporary to use as our predicate stack counter, if we
         * don't already have one. */
        if (!compiler->PredicateMask) {
-               unsigned int writemasks[R300_VS_MAX_TEMPS];
+               unsigned int writemasks[RC_REGISTER_MAX_INDEX];
                memset(writemasks, 0, sizeof(writemasks));
                struct rc_instruction * inst;
                unsigned int i;
@@ -400,7 +400,7 @@ static void ei_if(struct r300_vertex_program_compiler * compiler,
                                                        inst = inst->Next) {
                        rc_for_all_writes_mask(inst, mark_write, writemasks);
                }
-               for(i = 0; i < R300_VS_MAX_TEMPS; i++) {
+               for(i = 0; i < compiler->Base.max_temp_regs; i++) {
                        unsigned int mask = ~writemasks[i] & RC_MASK_XYZW;
                        /* Only the W component can be used fo the predicate
                         * stack counter. */
@@ -410,7 +410,7 @@ static void ei_if(struct r300_vertex_program_compiler * compiler,
                                break;
                        }
                }
-               if (i == R300_VS_MAX_TEMPS) {
+               if (i == compiler->Base.max_temp_regs) {
                        rc_error(&compiler->Base, "No free temporary to use for"
                                        " predicate stack counter.\n");
                        return;
@@ -503,8 +503,7 @@ static void translate_vertex_program(struct radeon_compiler *c, void *user)
                        }
                }
 
-               if (compiler->code->length >= R500_VS_MAX_ALU_DWORDS ||
-                   (compiler->code->length >= R300_VS_MAX_ALU_DWORDS && !compiler->Base.is_r500)) {
+               if (compiler->code->length >= c->max_alu_insts) {
                        rc_error(&compiler->Base, "Vertex program has too many instructions\n");
                        return;
                }