On Sun,  4 Sep 2011 15:05:04 +0100, Dave Airlie <airl...@gmail.com> wrote:
> From: Dave Airlie <airl...@redhat.com>
> 
> This adds the vertex processing paths for the 2101010 types. It converts
> the attributes to floats for all the immediate entry points, some entrypoints
> are normalised and the attrib APIs take a normalized parameter.
> 
> There are four main paths,
> ui10 -> float unnormalized
> i10 -> float unnormalized
> ui10 -> float normalized
> i10 -> float normalized
> along with the ui2/i2 equivs.
> 
> Signed-off-by: Dave Airlie <airl...@redhat.com>
> ---
>  src/mesa/vbo/vbo_attrib_tmp.h |  401 
> ++++++++++++++++++++++++++++++++++++++++-
>  src/mesa/vbo/vbo_exec_api.c   |   45 +++++
>  src/mesa/vbo/vbo_save_api.c   |   46 +++++
>  3 files changed, 490 insertions(+), 2 deletions(-)
> 
> diff --git a/src/mesa/vbo/vbo_attrib_tmp.h b/src/mesa/vbo/vbo_attrib_tmp.h
> index c793ce0..4283154 100644
> --- a/src/mesa/vbo/vbo_attrib_tmp.h
> +++ b/src/mesa/vbo/vbo_attrib_tmp.h

> +static inline float conv_ui10_to_norm_float(unsigned ui10)
> +{
> +   return (float)(ui10) / 1023.0;
> +}
> +
> +static inline float conv_ui2_to_norm_float(unsigned ui2)
> +{
> +   return (float)(ui2) / 3.0;
> +}
> +
> +#define ATTRUI10_1( A, UI ) ATTR( A, 1, (UI) & 0x3ff, 0, 0, 1 )
> +#define ATTRUI10_2( A, UI ) ATTR( A, 2, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, 
> 0, 1 )
> +#define ATTRUI10_3( A, UI ) ATTR( A, 3, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, 
> ((UI) >> 20) & 0x3ff, 1 )
> +#define ATTRUI10_4( A, UI ) ATTR( A, 4, (UI) & 0x3ff, ((UI) >> 10) & 0x3ff, 
> ((UI) >> 20) & 0x3ff, ((UI) >> 30) & 0x3 )
> +
> +#define ATTRUI10N_1( A, UI ) ATTR( A, 1, conv_ui10_to_norm_float((UI) & 
> 0x3ff), 0, 0, 1 )
> +#define ATTRUI10N_2( A, UI ) ATTR( A, 2, \
> +                                conv_ui10_to_norm_float((UI) & 0x3ff), \
> +                                conv_ui10_to_norm_float(((UI) >> 10) & 
> 0x3ff), 0, 1 )
> +#define ATTRUI10N_3( A, UI ) ATTR( A, 3, \
> +                                conv_ui10_to_norm_float((UI) & 0x3ff), \
> +                                conv_ui10_to_norm_float(((UI) >> 10) & 
> 0x3ff), \
> +                                conv_ui10_to_norm_float(((UI) >> 20) & 
> 0x3ff), 1 )
> +#define ATTRUI10N_4( A, UI ) ATTR( A, 4, \
> +                                conv_ui10_to_norm_float((UI) & 0x3ff), \
> +                                conv_ui10_to_norm_float(((UI) >> 10) & 
> 0x3ff), \
> +                                conv_ui10_to_norm_float(((UI) >> 20) & 
> 0x3ff), \
> +                                conv_ui2_to_norm_float(((UI) >> 30) & 0x3) )

I think the alpha value for <4-component UNSIGNED_INT types here should
be 0x3 (though it looks right for INT below).

Attachment: pgpJpslI4vvbz.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to