diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/softpipe/sp_setup.c | 46 |
1 files changed, 11 insertions, 35 deletions
diff --git a/src/gallium/drivers/softpipe/sp_setup.c b/src/gallium/drivers/softpipe/sp_setup.c index b7b52b15081..bb1bff581cf 100644 --- a/src/gallium/drivers/softpipe/sp_setup.c +++ b/src/gallium/drivers/softpipe/sp_setup.c @@ -419,38 +419,19 @@ static void const_coeff( struct setup_context *setup, * Compute a0, dadx and dady for a linearly interpolated coefficient, * for a triangle. */ -static void -tri_linear_coeff(struct setup_context *setup, - struct tgsi_interp_coef *coef, - uint vertSlot, - uint i, - uint cylindrical_wrap) +static void tri_linear_coeff( struct setup_context *setup, + struct tgsi_interp_coef *coef, + uint vertSlot, uint i) { float botda = setup->vmid[vertSlot][i] - setup->vmin[vertSlot][i]; float majda = setup->vmax[vertSlot][i] - setup->vmin[vertSlot][i]; - float a, b; - float dadx, dady; + float a = setup->ebot.dy * majda - botda * setup->emaj.dy; + float b = setup->emaj.dx * botda - majda * setup->ebot.dx; + float dadx = a * setup->oneoverarea; + float dady = b * setup->oneoverarea; assert(i <= 3); - if (cylindrical_wrap) { - if (botda > 0.5f) { - botda -= 1.0f; - } else if (botda < -0.5f) { - botda += 1.0f; - } - if (majda > 0.5f) { - majda -= 1.0f; - } else if (majda < -0.5f) { - majda += 1.0f; - } - } - - a = setup->ebot.dy * majda - botda * setup->emaj.dy; - b = setup->emaj.dx * botda - majda * setup->ebot.dx; - dadx = a * setup->oneoverarea; - dady = b * setup->oneoverarea; - coef->dadx[i] = dadx; coef->dady[i] = dady; @@ -566,8 +547,8 @@ static void setup_tri_coefficients( struct setup_context *setup ) /* z and w are done by linear interpolation: */ - tri_linear_coeff(setup, &setup->posCoef, 0, 2, 0); - tri_linear_coeff(setup, &setup->posCoef, 0, 3, 0); + tri_linear_coeff(setup, &setup->posCoef, 0, 2); + tri_linear_coeff(setup, &setup->posCoef, 0, 3); /* setup interpolation for all the remaining attributes: */ @@ -581,13 +562,8 @@ static void setup_tri_coefficients( struct setup_context *setup ) const_coeff(setup, &setup->coef[fragSlot], vertSlot, j); break; case INTERP_LINEAR: - for (j = 0; j < NUM_CHANNELS; j++) { - tri_linear_coeff(setup, - &setup->coef[fragSlot], - vertSlot, - j, - spfs->info.input_cylindrical_wrap[fragSlot] & (1 << j)); - } + for (j = 0; j < NUM_CHANNELS; j++) + tri_linear_coeff(setup, &setup->coef[fragSlot], vertSlot, j); break; case INTERP_PERSPECTIVE: for (j = 0; j < NUM_CHANNELS; j++) |