i965/vs: Implement integer quotient and remainder math operations.
[mesa.git] / src / mesa / drivers / dri / r300 / r300_swtcl.c
index ee2c71e1a7f81382afc0801f0ce5d224d3ee5555..4a6762ff8303f2deded4e35d81d375df3ae60bd9 100644 (file)
@@ -68,7 +68,7 @@ do { \
        ++num_attrs; \
 } while (0)
 
-void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead,  GLuint *_OutputsWritten)
+void r300ChooseSwtclVertexFormat(struct gl_context *ctx, GLuint *_InputsRead,  GLuint *_OutputsWritten)
 {
        r300ContextPtr rmesa = R300_CONTEXT( ctx );
        TNLcontext *tnl = TNL_CONTEXT(ctx);
@@ -124,7 +124,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead,  GLuint *_
        }
 
        if (ctx->Light.Enabled && ctx->Light.Model.TwoSide) {
-               VB->AttribPtr[VERT_ATTRIB_GENERIC0] = VB->ColorPtr[1];
+               VB->AttribPtr[VERT_ATTRIB_GENERIC0] = VB->BackfaceColorPtr;
                OutputsWritten |= 1 << VERT_RESULT_BFC0;
 #if MESA_LITTLE_ENDIAN
                EMIT_ATTR( _TNL_ATTRIB_GENERIC0, EMIT_4UB_4F_RGBA );
@@ -134,7 +134,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead,  GLuint *_
                ADD_ATTR(VERT_ATTRIB_GENERIC0, R300_DATA_TYPE_BYTE, SWTCL_OVM_COLOR2, SWIZZLE_XYZW, MASK_XYZW, 1);
 #endif
                if (fp_reads & FRAG_BIT_COL1) {
-                       VB->AttribPtr[VERT_ATTRIB_GENERIC1] = VB->SecondaryColorPtr[1];
+                       VB->AttribPtr[VERT_ATTRIB_GENERIC1] = VB->BackfaceSecondaryColorPtr;
                        GLuint swiz = MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_ONE);
                        OutputsWritten |= 1 << VERT_RESULT_BFC1;
 #if MESA_LITTLE_ENDIAN
@@ -159,7 +159,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead,  GLuint *_
                int tex_id = rmesa->selected_fp->wpos_attr - FRAG_ATTRIB_TEX0;
 
                VB->AttribPtr[VERT_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_POS];
-               VB->TexCoordPtr[tex_id] = VB->AttribPtr[VERT_ATTRIB_POS];
+               VB->AttribPtr[_TNL_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_POS];
                RENDERINPUTS_SET(tnl->render_inputs_bitset, _TNL_ATTRIB_TEX0 + tex_id);
        }
 
@@ -167,7 +167,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead,  GLuint *_
                int tex_id = rmesa->selected_fp->fog_attr - FRAG_ATTRIB_TEX0;
 
                VB->AttribPtr[VERT_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_FOG];
-               VB->TexCoordPtr[tex_id] = VB->AttribPtr[VERT_ATTRIB_FOG];
+               VB->AttribPtr[_TNL_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_FOG];
                RENDERINPUTS_SET(tnl->render_inputs_bitset, _TNL_ATTRIB_TEX0 + tex_id);
        }
 
@@ -180,7 +180,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead,  GLuint *_
                GLuint swiz, format, hw_format;
                for (i = 0; i < ctx->Const.MaxTextureUnits; i++) {
                        if (fp_reads & FRAG_BIT_TEX(i)) {
-                               switch (VB->TexCoordPtr[i]->size) {
+                               switch (VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->size) {
                                        case 1:
                                                format = EMIT_1F;
                                                hw_format = R300_DATA_TYPE_FLOAT_1;
@@ -215,7 +215,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead,  GLuint *_
 
        if (first_free_tex >= ctx->Const.MaxTextureUnits) {
                fprintf(stderr, "\tout of free texcoords to write fog coordinate\n");
-               _mesa_exit(-1);
+               exit(-1);
        }
 
        R300_NEWPRIM(rmesa);
@@ -226,7 +226,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead,  GLuint *_
        RENDERINPUTS_COPY(rmesa->render_inputs_bitset, tnl->render_inputs_bitset);
 }
 
-static void r300PrepareVertices(GLcontext *ctx)
+static void r300PrepareVertices(struct gl_context *ctx)
 {
        r300ContextPtr rmesa = R300_CONTEXT(ctx);
        GLuint InputsRead, OutputsWritten;
@@ -285,7 +285,7 @@ static GLuint reduced_prim[] = {
        GL_TRIANGLES,
 };
 
-static void r300RasterPrimitive( GLcontext *ctx, GLuint prim );
+static void r300RasterPrimitive( struct gl_context *ctx, GLuint prim );
 
 /***********************************************************************
  *                    Emit primitives as inline vertices               *
@@ -364,7 +364,6 @@ static struct {
 #define DO_POINTS    1
 #define DO_FULL_QUAD 1
 
-#define HAVE_RGBA   1
 #define HAVE_SPEC   1
 #define HAVE_BACK_COLORS  0
 #define HAVE_HW_FLATSHADE 1
@@ -498,7 +497,7 @@ static void init_rast_tab( void )
 /**********************************************************************/
 /*                    Choose render functions                         */
 /**********************************************************************/
-static void r300ChooseRenderState( GLcontext *ctx )
+static void r300ChooseRenderState( struct gl_context *ctx )
 {
        TNLcontext *tnl = TNL_CONTEXT(ctx);
        r300ContextPtr rmesa = R300_CONTEXT(ctx);
@@ -529,7 +528,7 @@ static void r300ChooseRenderState( GLcontext *ctx )
        }
 }
 
-void r300RenderStart(GLcontext *ctx)
+void r300RenderStart(struct gl_context *ctx)
 {
        radeon_print(RADEON_SWRENDER, RADEON_VERBOSE, "%s\n", __func__);
        r300ContextPtr rmesa = R300_CONTEXT( ctx );
@@ -551,11 +550,11 @@ void r300RenderStart(GLcontext *ctx)
        }
 }
 
-void r300RenderFinish(GLcontext *ctx)
+void r300RenderFinish(struct gl_context *ctx)
 {
 }
 
-static void r300RasterPrimitive( GLcontext *ctx, GLuint hwprim )
+static void r300RasterPrimitive( struct gl_context *ctx, GLuint hwprim )
 {
        r300ContextPtr rmesa = R300_CONTEXT(ctx);
        radeon_print(RADEON_SWRENDER, RADEON_TRACE, "%s\n", __func__);
@@ -566,7 +565,7 @@ static void r300RasterPrimitive( GLcontext *ctx, GLuint hwprim )
        }
 }
 
-void r300RenderPrimitive(GLcontext *ctx, GLenum prim)
+void r300RenderPrimitive(struct gl_context *ctx, GLenum prim)
 {
 
        r300ContextPtr rmesa = R300_CONTEXT(ctx);
@@ -579,13 +578,13 @@ void r300RenderPrimitive(GLcontext *ctx, GLenum prim)
        r300RasterPrimitive( ctx, reduced_prim[prim] );
 }
 
-void r300ResetLineStipple(GLcontext *ctx)
+void r300ResetLineStipple(struct gl_context *ctx)
 {
        if (RADEON_DEBUG & RADEON_VERTS)
                fprintf(stderr, "%s\n", __func__);
 }
 
-void r300InitSwtcl(GLcontext *ctx)
+void r300InitSwtcl(struct gl_context *ctx)
 {
        TNLcontext *tnl = TNL_CONTEXT(ctx);
        r300ContextPtr rmesa = R300_CONTEXT(ctx);
@@ -621,7 +620,7 @@ void r300InitSwtcl(GLcontext *ctx)
        _tnl_need_projected_coords( ctx, GL_FALSE );
 }
 
-void r300DestroySwtcl(GLcontext *ctx)
+void r300DestroySwtcl(struct gl_context *ctx)
 {
 }
 
@@ -657,7 +656,7 @@ static void r300EmitVbufPrim(r300ContextPtr rmesa, GLuint primitive, GLuint vert
        END_BATCH();
 }
 
-void r300_swtcl_flush(GLcontext *ctx, uint32_t current_offset)
+void r300_swtcl_flush(struct gl_context *ctx, uint32_t current_offset)
 {
        radeon_print(RADEON_SWRENDER, RADEON_TRACE, "%s\n", __func__);
        r300ContextPtr rmesa = R300_CONTEXT(ctx);
@@ -665,11 +664,11 @@ void r300_swtcl_flush(GLcontext *ctx, uint32_t current_offset)
        r300EmitCacheFlush(rmesa);
 
        radeonEmitState(&rmesa->radeon);
-    r300_emit_scissor(ctx);
+       r300_emit_scissor(ctx);
        r300EmitVertexAOS(rmesa,
-                       rmesa->radeon.swtcl.vertex_size,
-                       first_elem(&rmesa->radeon.dma.reserved)->bo,
-                       current_offset);
+                         rmesa->radeon.swtcl.vertex_size,
+                         rmesa->radeon.swtcl.bo,
+                         current_offset);
 
        r300EmitVbufPrim(rmesa,
                   rmesa->radeon.swtcl.hw_primitive,