nouveau: bump pushbuf size a little, so a "full" packet can fit
authorBen Skeggs <skeggsb@gmail.com>
Sun, 16 Dec 2007 13:46:30 +0000 (00:46 +1100)
committerBen Skeggs <skeggsb@gmail.com>
Sun, 16 Dec 2007 13:46:30 +0000 (00:46 +1100)
src/mesa/drivers/dri/nouveau_winsys/nouveau_pushbuf.c

index a922300ff5e441235db3c497873096851f5a4446..36f201712aadf8578146e6e8ecb34846f2f13dfc 100644 (file)
@@ -27,6 +27,8 @@
 #include "nouveau_drmif.h"
 #include "nouveau_dma.h"
 
+#define PB_RSVD_DWORDS 2
+
 int
 nouveau_pushbuf_init(struct nouveau_channel *chan)
 {
@@ -72,7 +74,7 @@ nouveau_pushbuf_flush(struct nouveau_channel *chan)
        if (!nvpb)
                goto out_realloc;
 
-       if (nvpb->base.remaining == nvpb->res->size / 4)
+       if (nvpb->base.remaining == (nvpb->res->size / 4) - PB_RSVD_DWORDS)
                return 0;
        nvchan->pb_tail = NULL;
 
@@ -154,13 +156,13 @@ out_realloc:
        if (!nvpb)
                return -ENOMEM;
 
-       while (nouveau_resource_alloc(nvchan->pb_heap, 0x2000, NULL,
+       while (nouveau_resource_alloc(nvchan->pb_heap, 0x2100, NULL,
                                      &nvpb->res)) {
                nouveau_fence_flush(chan);
        }
 
        nvpb->base.channel = chan;
-       nvpb->base.remaining = nvpb->res->size / 4;
+       nvpb->base.remaining = (nvpb->res->size / 4) - PB_RSVD_DWORDS;
        nvpb->base.cur = &nvchan->pushbuf[nvpb->res->start/4];
        nvchan->pb_tail = &nvpb->base;