st/mesa: don't set vs.key.clamp_color if a shader doesn't write any colors

And update some comments.
This commit is contained in:
Marek Olšák 2015-01-11 18:38:03 +01:00
parent ccc5b60b06
commit 5b01512df3
3 changed files with 10 additions and 5 deletions

View file

@ -149,7 +149,12 @@ update_vp( struct st_context *st )
key.passthrough_edgeflags = st->vertdata_edgeflags;
key.clamp_color = st->clamp_vert_color_in_shader &&
st->ctx->Light._ClampVertexColor;
st->ctx->Light._ClampVertexColor &&
(stvp->Base.Base.OutputsWritten &
(VARYING_SLOT_COL0 |
VARYING_SLOT_COL1 |
VARYING_SLOT_BFC0 |
VARYING_SLOT_BFC1));
st->vp_variant = st_get_vp_variant(st, stvp, &key);

View file

@ -4412,8 +4412,8 @@ translate_dst(struct st_translate *t,
/* Clamp colors for ARB_color_buffer_float. */
switch (t->procType) {
case TGSI_PROCESSOR_VERTEX:
/* XXX if the geometry shader is present, this must be done there
* instead of here. */
/* This can only occur with a compatibility profile, which doesn't
* support geometry shaders. */
if (dst_reg->index == VARYING_SLOT_COL0 ||
dst_reg->index == VARYING_SLOT_COL1 ||
dst_reg->index == VARYING_SLOT_BFC0 ||

View file

@ -299,8 +299,8 @@ translate_dst( struct st_translate *t,
/* Clamp colors for ARB_color_buffer_float. */
switch (t->procType) {
case TGSI_PROCESSOR_VERTEX:
/* XXX if the geometry shader is present, this must be done there
* instead of here. */
/* This can only occur with a compatibility profile, which doesn't
* support geometry shaders. */
if (DstReg->Index == VARYING_SLOT_COL0 ||
DstReg->Index == VARYING_SLOT_COL1 ||
DstReg->Index == VARYING_SLOT_BFC0 ||