summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r128
diff options
context:
space:
mode:
authorKeith Whitwell <keith@tungstengraphics.com>2003-12-09 16:00:38 +0000
committerKeith Whitwell <keith@tungstengraphics.com>2003-12-09 16:00:38 +0000
commitc4f7de5d785266237fd46ee420d4715771f67dfb (patch)
treec664be6f869b4f1b371f521fb57fb24b0e0cbec6 /src/mesa/drivers/dri/r128
parent47909141985a5aa38a49ea45b3aea795f1922dfb (diff)
Fix VERT_SET_RGBA, VERT_SET_SPEC macros to account for change to floating
point colors throughout mesa.
Diffstat (limited to 'src/mesa/drivers/dri/r128')
-rw-r--r--src/mesa/drivers/dri/r128/r128_tris.c48
1 files changed, 31 insertions, 17 deletions
diff --git a/src/mesa/drivers/dri/r128/r128_tris.c b/src/mesa/drivers/dri/r128/r128_tris.c
index 4e2860288e..a94edb53a4 100644
--- a/src/mesa/drivers/dri/r128/r128_tris.c
+++ b/src/mesa/drivers/dri/r128/r128_tris.c
@@ -233,29 +233,43 @@ static struct {
#define AREA_IS_CCW( a ) (a > 0)
#define GET_VERTEX(e) (rmesa->verts + (e<<rmesa->vertex_stride_shift))
-#define VERT_SET_RGBA( v, c ) do { \
- r128_color_t *vc = (r128_color_t *)&(v)->ui[coloroffset]; \
- vc->blue = (c)[2]; \
- vc->green = (c)[1]; \
- vc->red = (c)[0]; \
- vc->alpha = (c)[3]; \
- } while (0)
+#define VERT_SET_RGBA( v, c ) \
+do { \
+ r128_color_t *color = (r128_color_t *)&((v)->ui[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_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( v0, c ) if (havespec) { \
- (v0)->v.specular.red = (c)[0];\
- (v0)->v.specular.green = (c)[1];\
- (v0)->v.specular.blue = (c)[2]; }
-#define VERT_COPY_SPEC( v0, v1 ) if (havespec) { \
- (v0)->v.specular.red = v1->v.specular.red; \
- (v0)->v.specular.green = v1->v.specular.green; \
- (v0)->v.specular.blue = v1->v.specular.blue; }
+#define VERT_SET_SPEC( v0, c ) \
+do { \
+ if (havespec) { \
+ UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.red, (c)[0]); \
+ UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.green, (c)[1]); \
+ UNCLAMPED_FLOAT_TO_UBYTE(v0->v.specular.blue, (c)[2]); \
+ } \
+} while (0)
+#define VERT_COPY_SPEC( v0, v1 ) \
+do { \
+ if (havespec) { \
+ v0->v.specular.red = v1->v.specular.red; \
+ v0->v.specular.green = v1->v.specular.green; \
+ v0->v.specular.blue = v1->v.specular.blue; \
+ } \
+} while (0)
+/* These don't need LE32_TO_CPU() as they used to save and restore
+ * colors which are already in the correct format.
+ */
+#define VERT_SAVE_RGBA( idx ) color[idx] = v[idx]->ui[coloroffset]
+#define VERT_RESTORE_RGBA( idx ) v[idx]->ui[coloroffset] = color[idx]
#define VERT_SAVE_SPEC( idx ) if (havespec) spec[idx] = v[idx]->ui[5]
#define VERT_RESTORE_SPEC( idx ) if (havespec) v[idx]->ui[5] = spec[idx]
+
#define LOCAL_VARS(n) \
r128ContextPtr rmesa = R128_CONTEXT(ctx); \
GLuint color[n], spec[n]; \