Browse Source

teensy bit of optimization in interp code

tags/R300_DRIVER_0
Daniel Borca 22 years ago
parent
commit
63f025c5ad
1 changed files with 18 additions and 50 deletions
  1. 18
    50
      src/mesa/drivers/glide/fxvbtmp.h

+ 18
- 50
src/mesa/drivers/glide/fxvbtmp.h View File

@@ -214,8 +214,8 @@ static void TAG(interp)( GLcontext *ctx,
GrVertex *dst = (GrVertex *) (fxverts + edst);
const GrVertex *out = (const GrVertex *) (fxverts + eout);
const GrVertex *in = (const GrVertex *) (fxverts + ein);
const GLfloat wout = 1.0F / out->oow;
const GLfloat win = 1.0F / in->oow;
const GLfloat wout = oow / out->oow;
const GLfloat win = oow / in->oow;

VIEWPORT_X(dst->x, dstclip[0] * oow);
VIEWPORT_Y(dst->y, dstclip[1] * oow);
@@ -248,68 +248,36 @@ static void TAG(interp)( GLcontext *ctx,
}

if (IND & SETUP_TMU0) {
INTERP_F( t,
dst->tmuvtx[0].sow,
out->tmuvtx[0].sow * wout,
in->tmuvtx[0].sow * win );
INTERP_F( t,
dst->tmuvtx[0].tow,
out->tmuvtx[0].tow * wout,
in->tmuvtx[0].tow * win );
if (IND & SETUP_PTEX) {
INTERP_F( t,
dst->tmuvtx[0].sow,
out->tmuvtx[0].sow * wout,
in->tmuvtx[0].sow * win );
INTERP_F( t,
dst->tmuvtx[0].tow,
out->tmuvtx[0].tow * wout,
in->tmuvtx[0].tow * win );
INTERP_F( t,
dst->tmuvtx[0].oow,
out->tmuvtx[0].oow * wout,
in->tmuvtx[0].oow * win );

dst->tmuvtx[0].sow *= oow;
dst->tmuvtx[0].tow *= oow;
dst->tmuvtx[0].oow *= oow;
} else {
INTERP_F( t,
dst->tmuvtx[0].sow,
out->tmuvtx[0].sow * wout,
in->tmuvtx[0].sow * win );
INTERP_F( t,
dst->tmuvtx[0].tow,
out->tmuvtx[0].tow * wout,
in->tmuvtx[0].tow * win );

dst->tmuvtx[0].sow *= oow;
dst->tmuvtx[0].tow *= oow;
}
}

if (IND & SETUP_TMU1) {
INTERP_F( t,
dst->tmuvtx[1].sow,
out->tmuvtx[1].sow * wout,
in->tmuvtx[1].sow * win );
INTERP_F( t,
dst->tmuvtx[1].tow,
out->tmuvtx[1].tow * wout,
in->tmuvtx[1].tow * win );
if (IND & SETUP_PTEX) {
INTERP_F( t,
dst->tmuvtx[1].sow,
out->tmuvtx[1].sow * wout,
in->tmuvtx[1].sow * win );
INTERP_F( t,
dst->tmuvtx[1].tow,
out->tmuvtx[1].tow * wout,
in->tmuvtx[1].tow * win );
INTERP_F( t,
dst->tmuvtx[1].oow,
out->tmuvtx[1].oow * wout,
in->tmuvtx[1].oow * win );

dst->tmuvtx[1].sow *= oow;
dst->tmuvtx[1].tow *= oow;
dst->tmuvtx[1].oow *= oow;
} else {
INTERP_F( t,
dst->tmuvtx[1].sow,
out->tmuvtx[1].sow * wout,
in->tmuvtx[1].sow * win );
INTERP_F( t,
dst->tmuvtx[1].tow,
out->tmuvtx[1].tow * wout,
in->tmuvtx[1].tow * win );

dst->tmuvtx[1].sow *= oow;
dst->tmuvtx[1].tow *= oow;
}
}
}

Loading…
Cancel
Save