r600g: handle absolute modifier in shader translator
authorKeith Whitwell <keithw@vmware.com>
Thu, 14 Oct 2010 16:19:00 +0000 (17:19 +0100)
committerDave Airlie <airlied@redhat.com>
Thu, 14 Oct 2010 22:33:50 +0000 (08:33 +1000)
This was being classed as unsupported in one place but used in others.
Enabling it seems to work fine.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/r600_shader.c

index 141adcc54be0a3f485d334db50715099634aec3f..b53d4780719d4305e166dd16afc1582c5853d342 100644 (file)
@@ -389,11 +389,9 @@ static int tgsi_is_supported(struct r600_shader_ctx *ctx)
        }
 #endif
        for (j = 0; j < i->Instruction.NumSrcRegs; j++) {
-               if (i->Src[j].Register.Dimension ||
-                       i->Src[j].Register.Absolute) {
-                       R600_ERR("unsupported src %d (dimension %d|absolute %d)\n", j,
-                                i->Src[j].Register.Dimension,
-                                i->Src[j].Register.Absolute);
+               if (i->Src[j].Register.Dimension) {
+                       R600_ERR("unsupported src %d (dimension %d)\n", j,
+                                i->Src[j].Register.Dimension);
                        return -EINVAL;
                }
        }
@@ -760,6 +758,7 @@ static int tgsi_src(struct r600_shader_ctx *ctx,
        if (tgsi_src->Register.Indirect)
                r600_src->rel = V_SQ_REL_RELATIVE;
        r600_src->neg = tgsi_src->Register.Negate;
+       r600_src->abs = tgsi_src->Register.Absolute;
        r600_src->sel += ctx->file_offset[tgsi_src->Register.File];
        return 0;
 }