Roland,

Thanks for doing this - re-uniting these files is definitely something 
on my todo list, but I wasn't looking forward to unifying the growing 
differences between them.

Keith


Roland Scheidegger wrote:
>  src/mesa/drivers/dri/i965/brw_vs_tnl.c |   27 ++++++++++++---------------
>  src/mesa/tnl/t_vp_build.c              |   12 +++++++-----
>  2 files changed, 19 insertions(+), 20 deletions(-)
> 
> New commits:
> diff-tree a6cc9ab493a2efa9a0ea91cddba0e85c8c8c83f1 (from 
> 37e6f760fde506728077c6e8b48bb8c34d53dfd3)
> Author: Roland Scheidegger <[EMAIL PROTECTED]>
> Date:   Tue Mar 13 19:04:28 2007 +0100
> 
>     sync up t_vp_build.c brw_vs_tnl.c a bit
>     
>     Bring over the optimizations for fog and normalized spot dir
>     from t_vp_build.c to brw_vs_tnl.c. Likewise, port a fix for point size
>     calc from brw_vs_tnl.c to t_vp_build.c (use ABS(eyez) instead of -eyez). 
> Leave
>     the now differing point size calcs alone though, not sure what's better 
> (it's
>     basically MOV, ABS, MUL, DP3 vs. ABS, MAD, MAD).
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_vs_tnl.c 
> b/src/mesa/drivers/dri/i965/brw_vs_tnl.c
> index c05a9b5..e22a26b 100644
> --- a/src/mesa/drivers/dri/i965/brw_vs_tnl.c
> +++ b/src/mesa/drivers/dri/i965/brw_vs_tnl.c
> @@ -850,14 +850,13 @@ static struct ureg calculate_light_atten
>     /* Calculate spot attenuation:
>      */
>     if (!p->state->unit[i].light_spotcutoff_is_180) {
> -      struct ureg spot_dir = register_param3(p, STATE_LIGHT, i,
> -                                          STATE_SPOT_DIRECTION);
> +      struct ureg spot_dir_norm = register_param3(p, STATE_INTERNAL,
> +                                               STATE_SPOT_DIR_NORMALIZED, i);
>        struct ureg spot = get_temp(p);
>        struct ureg slt = get_temp(p);
> -            
> -      emit_normalize_vec3( p, spot, spot_dir ); /* XXX: precompute! */
> -      emit_op2(p, OPCODE_DP3, spot, 0, ureg_negate(VPpli), spot);
> -      emit_op2(p, OPCODE_SLT, slt, 0, swizzle1(spot_dir,W), spot);
> +
> +      emit_op2(p, OPCODE_DP3, spot, 0, ureg_negate(VPpli), spot_dir_norm);
> +      emit_op2(p, OPCODE_SLT, slt, 0, swizzle1(spot_dir_norm,W), spot);
>        emit_op2(p, OPCODE_POW, spot, 0, spot, swizzle1(attenuation, W));
>        emit_op2(p, OPCODE_MUL, att, 0, slt, spot);
>  
> @@ -1166,7 +1165,8 @@ static void build_fog( struct tnl_progra
>  
>     if (p->state->fog_option &&
>         p->state->tnl_do_vertex_fog) {
> -      struct ureg params = register_param1(p, STATE_FOG_PARAMS);
> +      struct ureg params = register_param2(p, STATE_INTERNAL,
> +                                        STATE_FOG_PARAMS_OPTIMIZED);
>        struct ureg tmp = get_temp(p);
>        struct ureg id = get_identity_param(p);
>  
> @@ -1174,8 +1174,7 @@ static void build_fog( struct tnl_progra
>  
>        switch (p->state->fog_option) {
>        case FOG_LINEAR: {
> -      emit_op1(p, OPCODE_ABS, tmp, 0, input); 
> -      emit_op2(p, OPCODE_SUB, tmp, 0, swizzle1(params,Z), tmp); 
> +      emit_op3(p, OPCODE_MAD, tmp, 0, input, swizzle1(params,X), 
> swizzle1(params,Y));
>        emit_op2(p, OPCODE_MUL, tmp, 0, tmp, swizzle1(params,W)); 
>        emit_op2(p, OPCODE_MAX, tmp, 0, tmp, swizzle1(id,X)); /* saturate */
>        emit_op2(p, OPCODE_MIN, fog, WRITEMASK_X, tmp, swizzle1(id,W));
> @@ -1183,15 +1182,13 @@ static void build_fog( struct tnl_progra
>        }
>        case FOG_EXP:
>        emit_op1(p, OPCODE_ABS, tmp, 0, input); 
> -      emit_op2(p, OPCODE_MUL, tmp, 0, tmp, swizzle1(params,X)); 
> -      emit_op2(p, OPCODE_POW, fog, WRITEMASK_X, 
> -               register_const1f(p, M_E), ureg_negate(tmp)); 
> +      emit_op2(p, OPCODE_MUL, tmp, 0, tmp, swizzle1(params,Z));
> +      emit_op1(p, OPCODE_EX2, fog, WRITEMASK_X, ureg_negate(tmp));
>        break;
>        case FOG_EXP2:
> -      emit_op2(p, OPCODE_MUL, tmp, 0, input, swizzle1(params,X)); 
> +      emit_op2(p, OPCODE_MUL, tmp, 0, input, swizzle1(params,W));
>        emit_op2(p, OPCODE_MUL, tmp, 0, tmp, tmp); 
> -      emit_op2(p, OPCODE_POW, fog, WRITEMASK_X, 
> -               register_const1f(p, M_E), ureg_negate(tmp)); 
> +      emit_op1(p, OPCODE_EX2, fog, WRITEMASK_X, ureg_negate(tmp));
>        break;
>        }
>        
> diff --git a/src/mesa/tnl/t_vp_build.c b/src/mesa/tnl/t_vp_build.c
> index 2a97a1c..2663d99 100644
> --- a/src/mesa/tnl/t_vp_build.c
> +++ b/src/mesa/tnl/t_vp_build.c
> @@ -1329,14 +1329,16 @@ static void build_pointsize( struct tnl_
>     struct ureg out = register_output(p, VERT_RESULT_PSIZ);
>     struct ureg ut = get_temp(p);
>  
> +   /* dist = |eyez| */
> +   emit_op1(p, OPCODE_ABS, ut, WRITEMASK_Y, swizzle1(eye, Z));
>     /* p1 + dist * (p2 + dist * p3); */
> -   emit_op3(p, OPCODE_MAD, ut, 0, negate(swizzle1(eye, Z)),
> +   emit_op3(p, OPCODE_MAD, ut, WRITEMASK_X, swizzle1(ut, Y),
>               swizzle1(state_attenuation, Z), swizzle1(state_attenuation, Y));
> -   emit_op3(p, OPCODE_MAD, ut, 0, negate(swizzle1(eye, Z)),
> +   emit_op3(p, OPCODE_MAD, ut, WRITEMASK_X, swizzle1(ut, Y),
>               ut, swizzle1(state_attenuation, X));
>  
>     /* 1 / sqrt(factor) */
> -   emit_op1(p, OPCODE_RSQ, ut, 0, ut );
> +   emit_op1(p, OPCODE_RSQ, ut, WRITEMASK_X, ut );
>  
>  #if 1
>     /* out = pointSize / sqrt(factor) */
> @@ -1344,8 +1346,8 @@ static void build_pointsize( struct tnl_
>  #else
>     /* not sure, might make sense to do clamping here,
>        but it's not done in t_vb_points neither */
> -   emit_op2(p, OPCODE_MUL, ut, 0, ut, state_size);
> -   emit_op2(p, OPCODE_MAX, ut, 0, ut, swizzle1(state_size, Y));
> +   emit_op2(p, OPCODE_MUL, ut, WRITEMASK_X, ut, state_size);
> +   emit_op2(p, OPCODE_MAX, ut, WRITEMASK_X, ut, swizzle1(state_size, Y));
>     emit_op2(p, OPCODE_MIN, out, WRITEMASK_X, ut, swizzle1(state_size, Z));
>  #endif
>  
> _______________________________________________
> mesa-commit mailing list
> [EMAIL PROTECTED]
> http://lists.freedesktop.org/mailman/listinfo/mesa-commit
> 


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to