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

Author: Ilia Mirkin <[email protected]>
Date:   Wed Jul  2 12:16:01 2014 -0400

r600g: allow vs to write to gl_ViewportIndex

Signed-off-by: Ilia Mirkin <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Tested-by: Tobias Droste <[email protected]>

---

 src/gallium/drivers/r600/r600_shader.c |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/gallium/drivers/r600/r600_shader.c 
b/src/gallium/drivers/r600/r600_shader.c
index 3767e5f..448ca80 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -2042,6 +2042,23 @@ static int r600_shader_from_tgsi(struct r600_context 
*rctx,
                                        output[j].type = 
V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_POS;
                                        pos_emitted = true;
                                        break;
+                               case TGSI_SEMANTIC_VIEWPORT_INDEX:
+                                       /* spi_sid is 0 for outputs that are
+                                        * not consumed by PS */
+                                       if (shader->output[i].spi_sid) {
+                                               output[j].array_base = 
next_param_base++;
+                                               output[j].type = 
V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PARAM;
+                                               j++;
+                                               memcpy(&output[j], 
&output[j-1], sizeof(struct r600_bytecode_output));
+                                       }
+                                       output[j].array_base = 61;
+                                       output[j].swizzle_x = 7;
+                                       output[j].swizzle_y = 7;
+                                       output[j].swizzle_z = 7;
+                                       output[j].swizzle_w = 0;
+                                       output[j].type = 
V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_POS;
+                                       pos_emitted = true;
+                                       break;
                                case TGSI_SEMANTIC_CLIPVERTEX:
                                        j--;
                                        break;

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to