[Mesa-dev] [PATCH 1/4] Use INV_SQRT instead of 1/SQRTF

Brian Paul brianp at vmware.com
Fri Jul 20 11:57:39 PDT 2012


On 07/20/2012 12:24 PM, Matt Turner wrote:
> ---
>   src/mesa/math/m_debug_norm.c |    4 ++--
>   src/mesa/tnl/t_vb_points.c   |    2 +-
>   2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/math/m_debug_norm.c b/src/mesa/math/m_debug_norm.c
> index 02eb1f9..dc768f3 100644
> --- a/src/mesa/math/m_debug_norm.c
> +++ b/src/mesa/math/m_debug_norm.c
> @@ -165,7 +165,7 @@ static void ref_norm_transform_normalize( const GLmatrix *mat,
>   	    /* Hmmm, don't know how we could test the precalculated
>   	     * length case...
>   	     */
> -            scale = 1.0 / SQRTF( len );
> +            scale = INV_SQRTF( len );
>   	    SCALE_SCALAR_3V( out[i], scale, t );
>            } else {
>               out[i][0] = out[i][1] = out[i][2] = 0;
> @@ -241,7 +241,7 @@ static int test_norm_function( normal_func func, int mtype, long *cycles )
>         ASSIGN_3V( d2[i], 0.0, 0.0, 0.0 );
>         for ( j = 0 ; j<  3 ; j++ )
>            s[i][j] = rnd();
> -      length[i] = 1 / SQRTF( LEN_SQUARED_3FV( s[i] ) );
> +      length[i] = INV_SQRTF( LEN_SQUARED_3FV( s[i] ) );
>      }
>
>      source->data = (GLfloat(*)[4]) s;
> diff --git a/src/mesa/tnl/t_vb_points.c b/src/mesa/tnl/t_vb_points.c
> index 9edbbc7..0e33b69 100644
> --- a/src/mesa/tnl/t_vb_points.c
> +++ b/src/mesa/tnl/t_vb_points.c
> @@ -64,7 +64,7 @@ run_point_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
>         for (i = 0; i<  VB->Count; i++) {
>            const GLfloat dist = FABSF(*eyeCoord);
>            const GLfloat q = p0 + dist * (p1 + dist * p2);
> -         const GLfloat atten = (q != 0.0F) ? SQRTF(1.0F / q) : 1.0F;
> +         const GLfloat atten = (q != 0.0F) ? INV_SQRTF(q) : 1.0F;

I had to study sqrt(1/q) vs. 1/sqrt(q) for a minute but it's equivalent.

>            size[i][0] = pointSize * atten; /* clamping done in rasterization */
>            eyeCoord += eyeCoordStride;
>         }

For the series:
Reviewed-by: Brian Paul <brianp at vmware.com>


More information about the mesa-dev mailing list