X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Ftnl_dd%2Ft_dd_vbtmp.h;h=92dd8931c33b710e3e0e9e58222fd5560a4bc0b9;hb=a846b156b8a0d2ef63de8f905af440f54e5668c7;hp=f4b710dfcc3b0d46b774c7df57131c976d0d501b;hpb=844cdaf461e3e181bcf1d4c0ba79ef5c4140cb4e;p=mesa.git diff --git a/src/mesa/tnl_dd/t_dd_vbtmp.h b/src/mesa/tnl_dd/t_dd_vbtmp.h index f4b710dfcc3..92dd8931c33 100644 --- a/src/mesa/tnl_dd/t_dd_vbtmp.h +++ b/src/mesa/tnl_dd/t_dd_vbtmp.h @@ -129,7 +129,7 @@ static void TAG(emit)( GLcontext *ctx, GLfloat (*col)[4], (*spec)[4]; GLuint tc0_stride, tc1_stride, col_stride, spec_stride, fog_stride; GLuint tc2_stride, tc3_stride; - GLuint tc0_size, tc1_size; + GLuint tc0_size, tc1_size, col_size; GLuint tc2_size, tc3_size; GLfloat (*coord)[4]; GLuint coord_stride; @@ -186,6 +186,7 @@ static void TAG(emit)( GLcontext *ctx, if (DO_RGBA) { col_stride = VB->ColorPtr[0]->stride; col = VB->ColorPtr[0]->data; + col_size = VB->ColorPtr[0]->size; } if (DO_SPEC) { @@ -244,7 +245,11 @@ static void TAG(emit)( GLcontext *ctx, UNCLAMPED_FLOAT_TO_UBYTE(v->v.color.red, col[0][0]); UNCLAMPED_FLOAT_TO_UBYTE(v->v.color.green, col[0][1]); UNCLAMPED_FLOAT_TO_UBYTE(v->v.color.blue, col[0][2]); - UNCLAMPED_FLOAT_TO_UBYTE(v->v.color.alpha, col[0][3]); + if (col_size == 4) { + UNCLAMPED_FLOAT_TO_UBYTE(v->v.color.alpha, col[0][3]); + } else { + v->v.color.alpha = CHAN_MAX; + } STRIDE_4F(col, col_stride); } if (DO_SPEC) { @@ -339,7 +344,7 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end, LOCALVARS struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; GLfloat (*col)[4]; - GLuint col_stride; + GLuint col_stride, col_size; GLfloat (*coord)[4] = VB->NdcPtr->data; GLuint coord_stride = VB->NdcPtr->stride; GLfloat *v = (GLfloat *)dest; @@ -353,6 +358,7 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end, col = VB->ColorPtr[0]->data; col_stride = VB->ColorPtr[0]->stride; + col_size = VB->ColorPtr[0]->size; /* fprintf(stderr, "%s(small) importable %x\n", */ /* __FUNCTION__, VB->importable_data); */ @@ -379,7 +385,11 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end, UNCLAMPED_FLOAT_TO_UBYTE(c->red, col[0][0]); UNCLAMPED_FLOAT_TO_UBYTE(c->green, col[0][1]); UNCLAMPED_FLOAT_TO_UBYTE(c->blue, col[0][2]); - UNCLAMPED_FLOAT_TO_UBYTE(c->alpha, col[0][3]); + if (col_size == 4) { + UNCLAMPED_FLOAT_TO_UBYTE(c->alpha, col[0][3]); + } else { + c->alpha = CHAN_MAX; + } STRIDE_4F( col, col_stride ); } /* fprintf(stderr, "vert %d: %.2f %.2f %.2f %x\n", */