On 12/19/2011 09:29 AM, Dave Airlie wrote:
From: Dave Airlie<airl...@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<airl...@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
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to