[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