[Mesa-dev] [PATCH 1/2] softpipe: try and use back color for a slot if color fails.

Brian Paul brianp at vmware.com
Mon Dec 19 09:39:23 PST 2011


On 12/19/2011 09:29 AM, Dave Airlie wrote:
> From: Dave Airlie<airlied at redhat.com>
>
> In the case where a front and back output are specified, the draw code will
> copy the back output into the front color slot and everything is happy.
>
> However if no front is specified then the draw code will do a bad copy (separate patch), but also the frag shader won't pick up the color as there there is
> no write to COLOR from the vertex shader just BCOLOR.
>
> This patch fixes that problem so if it can't find a vertex shader output
> for the front color slot, it will go and lookup and use one for the back color
> slot.
>
> Signed-off-by: Dave Airlie<airlied at redhat.com>
> ---
>   src/gallium/drivers/softpipe/sp_state_derived.c |    5 +++++
>   1 files changed, 5 insertions(+), 0 deletions(-)
>
> diff --git a/src/gallium/drivers/softpipe/sp_state_derived.c b/src/gallium/drivers/softpipe/sp_state_derived.c
> index f89d23c..5685997 100644
> --- a/src/gallium/drivers/softpipe/sp_state_derived.c
> +++ b/src/gallium/drivers/softpipe/sp_state_derived.c
> @@ -121,6 +121,11 @@ softpipe_get_vertex_info(struct softpipe_context *softpipe)
>            src = draw_find_shader_output(softpipe->draw,
>                                          fsInfo->input_semantic_name[i],
>                                          fsInfo->input_semantic_index[i]);
> +	 if (fsInfo->input_semantic_name[i] == TGSI_SEMANTIC_COLOR&&  src == 0)
> +	   /* try and find a bcolor */
> +	   src = draw_find_shader_output(softpipe->draw,
> +					 TGSI_SEMANTIC_BCOLOR, fsInfo->input_semantic_index[i]);
> +
>            draw_emit_vertex_attr(vinfo, EMIT_4F, interp, src);
>         }
>

And if the VS emits neither a front color or back color, what happens?

It seems to me that if the VS doesn't emit a front color and the 
polygon ends up being front-facing, the polygon color is undefined.

Off-hand I don't recall what the GL/GLSL specs say about this.  What 
is the piglit test expecting?

-Brain


More information about the mesa-dev mailing list