nv30: fix some sifm transfer issues
authorBen Skeggs <bskeggs@redhat.com>
Sun, 15 Apr 2012 00:52:06 +0000 (10:52 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Sun, 15 Apr 2012 11:56:20 +0000 (21:56 +1000)
src/gallium/drivers/nv30/nv30_transfer.c

index 8e7088378b771f0585a5bf87d37fdb9a61bcf00c..3dd958109d8ad3a7b9ae2ccd3303549c857d7433 100644 (file)
@@ -468,11 +468,10 @@ nv30_transfer_rect_sifm(XFER_ARGS)
    PUSH_DATA (push, ((src->x1 - src->x0) << 20) / (dst->x1 - dst->x0));
    PUSH_DATA (push, ((src->y1 - src->y0) << 20) / (dst->y1 - dst->y0));
    BEGIN_NV04(push, NV03_SIFM(SIZE), 4);
-   PUSH_DATA (push, align((src->y1 - src->y0), 2) << 16 |
-                    align((src->x1 - src->x0), 2));
+   PUSH_DATA (push, align(src->h, 2) << 16 | align(src->w, 2));
    PUSH_DATA (push, src->pitch | si_arg);
    PUSH_RELOC(push, src->bo, src->offset, NOUVEAU_BO_LOW, 0, 0);
-   PUSH_DATA (push, (src->y0 << 16) | src->x0);
+   PUSH_DATA (push, (src->y0 << 20) | src->x0 << 4);
 }
 
 /* The NOP+OFFSET_OUT stuff after each M2MF transfer *is* actually required