diff options
author | Felix Kuehling <[email protected]> | 2004-03-02 23:48:32 +0000 |
---|---|---|
committer | Felix Kuehling <[email protected]> | 2004-03-02 23:48:32 +0000 |
commit | fc17a6a35c94c1fbcbb95767db58ecab41c04283 (patch) | |
tree | be7b9cbe787020fbca7af857a42ce3c9043e42ae /src/mesa/drivers | |
parent | 2517a0ef217f2f66494c55fc5342362d49ee208d (diff) |
Cope with float colors in VERT_SET_RGBA and VERT_SET_SPEC macros.
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/savage/savagetris.c | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/src/mesa/drivers/dri/savage/savagetris.c b/src/mesa/drivers/dri/savage/savagetris.c index 8e9f33d27d4..a8db86f3b12 100644 --- a/src/mesa/drivers/dri/savage/savagetris.c +++ b/src/mesa/drivers/dri/savage/savagetris.c @@ -299,28 +299,27 @@ static struct { #define AREA_IS_CCW( a ) (a > 0) #define GET_VERTEX(e) (imesa->verts + (e * imesa->vertex_size * sizeof(int))) -#define SAVAGE_COLOR( dst, src ) \ -do { \ - dst[0] = src[2]; \ - dst[1] = src[1]; \ - dst[2] = src[0]; \ - dst[3] = src[3]; \ -} while (0) - -#define SAVAGE_SPEC( dst, src ) \ -do { \ - dst[0] = src[2]; \ - dst[1] = src[1]; \ - dst[2] = src[0]; \ +#define VERT_SET_RGBA( v, c ) \ +do { \ + savage_color_t *color = (savage_color_t *)&((v)->ub4[coloroffset]); \ + UNCLAMPED_FLOAT_TO_UBYTE(color->red, (c)[0]); \ + UNCLAMPED_FLOAT_TO_UBYTE(color->green, (c)[1]); \ + UNCLAMPED_FLOAT_TO_UBYTE(color->blue, (c)[2]); \ + UNCLAMPED_FLOAT_TO_UBYTE(color->alpha, (c)[3]); \ } while (0) - -#define VERT_SET_RGBA( v, c ) SAVAGE_COLOR( v->ub4[coloroffset], c ) #define VERT_COPY_RGBA( v0, v1 ) v0->ui[coloroffset] = v1->ui[coloroffset] #define VERT_SAVE_RGBA( idx ) color[idx] = v[idx]->ui[coloroffset] #define VERT_RESTORE_RGBA( idx ) v[idx]->ui[coloroffset] = color[idx] -#define VERT_SET_SPEC( v, c ) \ - if (specoffset) SAVAGE_SPEC( v->ub4[specoffset], c ) +#define VERT_SET_SPEC( v, c ) \ +do { \ + if (specoffset) { \ + savage_color_t *spec = (savage_color_t *)&((v)->ub4[specoffset]); \ + UNCLAMPED_FLOAT_TO_UBYTE(spec->red, (c)[0]); \ + UNCLAMPED_FLOAT_TO_UBYTE(spec->green, (c)[1]); \ + UNCLAMPED_FLOAT_TO_UBYTE(spec->blue, (c)[2]); \ + } \ +} while (0) #define VERT_COPY_SPEC( v0, v1 ) \ if (specoffset) COPY_3V(v0->ub4[specoffset], v1->ub4[specoffset]) #define VERT_SAVE_SPEC( idx ) \ |