Initial multitexturing support. Old behaviour can be re-enabled by changing ifdefs...
[mesa.git] / src / mesa / drivers / dri / r300 / r300_maos.c
index ca945956b845b6f063b1992d211fd4165a75add9..547ab359b9bd83d3a2c901a4d0309a09f7d68173 100644 (file)
@@ -52,6 +52,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #define DEBUG_ALL DEBUG_VERTS
 
+
 #if defined(USE_X86_ASM)
 #define COPY_DWORDS( dst, src, nr )                                    \
 do {                                                                   \
@@ -243,6 +244,7 @@ void r300EmitArrays(GLcontext * ctx, GLboolean immd)
        GLuint aa_vap_reg = 0; /* VAP register assignment */
        GLuint i;
        GLuint inputs = 0;
+       
 
 #define CONFIGURE_AOS(r, f, v, sz, cn) { \
                if (RADEON_DEBUG & DEBUG_STATE) \
@@ -291,10 +293,15 @@ void r300EmitArrays(GLcontext * ctx, GLboolean immd)
                        inputs |= _TNL_BIT_FOG;
                        rmesa->state.aos[nr++].aos_reg = rmesa->current_vp->inputs[VERT_ATTRIB_FOG];
                }
+               if(ctx->Const.MaxTextureUnits > 8) { /* Not sure if this can even happen... */
+                       fprintf(stderr, "%s: Cant handle that many inputs\n", __FUNCTION__);
+                       exit(-1);
+               }
                for (i=0;i<ctx->Const.MaxTextureUnits;i++) {
-                       if (rmesa->current_vp->inputs[VERT_ATTRIB_TEX0+i] != -1)
+                       if (rmesa->current_vp->inputs[VERT_ATTRIB_TEX0+i] != -1) {
                                inputs |= _TNL_BIT_TEX0<<i;
                                rmesa->state.aos[nr++].aos_reg = rmesa->current_vp->inputs[VERT_ATTRIB_TEX0+i];
+                       }
                }
                nr = 0;
        } else {
@@ -321,7 +328,7 @@ void r300EmitArrays(GLcontext * ctx, GLboolean immd)
        }
 
        if (inputs & _TNL_BIT_COLOR0) {
-               int emitsize;
+               int emitsize=4;
 
                if (!immd) {
                        if (VB->ColorPtr[0]->size == 4 &&
@@ -367,6 +374,7 @@ void r300EmitArrays(GLcontext * ctx, GLboolean immd)
                        vic_1 |= R300_INPUT_CNTL_TC0 << i;
                }
        }
+       
 
 int cmd_reserved=0;
 int cmd_written=0;