From: Dave Airlie <airl...@redhat.com>

This requires GLSL 1.30 enabled, which requires integer types enabled,
so don't bother doing an INT to FLT conversion on it.

We should probably remove the instance id flt->int conversion when
turning on native integers.

this passes the three piglit tests with GLSL 1.30 forced on.

Signed-off-by: Dave Airlie <airl...@redhat.com>
---
 src/gallium/drivers/r600/r600_shader.c |   23 +++++++++++++++--------
 1 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c 
b/src/gallium/drivers/r600/r600_shader.c
index ad4aded..d07f7f8 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -451,8 +451,8 @@ static int tgsi_declaration(struct r600_shader_ctx *ctx)
                        if ((r = r600_bytecode_add_alu(ctx->bc, &alu)))
                                return r;
                        break;
-               }
-
+               } else if (d->Semantic.Name == TGSI_SEMANTIC_VERTEXID)
+                       break;
        default:
                R600_ERR("unsupported file %d declaration\n", 
d->Declaration.File);
                return -EINVAL;
@@ -539,12 +539,19 @@ static void tgsi_src(struct r600_shader_ctx *ctx,
                r600_src->sel = V_SQ_ALU_SRC_LITERAL;
                memcpy(r600_src->value, ctx->literals + index * 4, 
sizeof(r600_src->value));
        } else if (tgsi_src->Register.File == TGSI_FILE_SYSTEM_VALUE) {
-               /* assume we wan't TGSI_SEMANTIC_INSTANCEID here */
-               r600_src->swizzle[0] = 3;
-               r600_src->swizzle[1] = 3;
-               r600_src->swizzle[2] = 3;
-               r600_src->swizzle[3] = 3;
-               r600_src->sel = 0;
+               if 
(ctx->info.system_value_semantic_name[tgsi_src->Register.Index] == 
TGSI_SEMANTIC_INSTANCEID) {
+                       r600_src->swizzle[0] = 3;
+                       r600_src->swizzle[1] = 3;
+                       r600_src->swizzle[2] = 3;
+                       r600_src->swizzle[3] = 3;
+                       r600_src->sel = 0;
+               } else if 
(ctx->info.system_value_semantic_name[tgsi_src->Register.Index] == 
TGSI_SEMANTIC_VERTEXID) {
+                       r600_src->swizzle[0] = 0;
+                       r600_src->swizzle[1] = 0;
+                       r600_src->swizzle[2] = 0;
+                       r600_src->swizzle[3] = 0;
+                       r600_src->sel = 0;
+               }
        } else {
                if (tgsi_src->Register.Indirect)
                        r600_src->rel = V_SQ_REL_RELATIVE;
-- 
1.7.7.5

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to