Mesa (master): softpipe: try and use back color for a slot if color fails.

Dave Airlie airlied at kemper.freedesktop.org
Thu Dec 22 12:27:14 UTC 2011


Module: Mesa
Branch: master
Commit: 7fd8dc3aa97271e3302667adc963f606c5b2e1e7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7fd8dc3aa97271e3302667adc963f606c5b2e1e7

Author: Dave Airlie <airlied at redhat.com>
Date:   Mon Dec 19 15:54:03 2011 +0000

softpipe: try and use back color for a slot if color fails.

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);
       }
 




More information about the mesa-commit mailing list