aboutsummaryrefslogtreecommitdiff
path: root/nouveau/nouveau_pushbuf.c
diff options
context:
space:
mode:
Diffstat (limited to 'nouveau/nouveau_pushbuf.c')
-rw-r--r--nouveau/nouveau_pushbuf.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/nouveau/nouveau_pushbuf.c b/nouveau/nouveau_pushbuf.c
index b90e9234..7da3a47a 100644
--- a/nouveau/nouveau_pushbuf.c
+++ b/nouveau/nouveau_pushbuf.c
@@ -80,13 +80,13 @@ nouveau_pushbuf_space(struct nouveau_channel *chan, unsigned min)
nvpb->pushbuf = NULL;
}
- nvpb->size = min < PB_MIN_USER_DWORDS ? PB_MIN_USER_DWORDS : min;
+ nvpb->size = min < PB_MIN_USER_DWORDS ? PB_MIN_USER_DWORDS : min;
nvpb->pushbuf = malloc(sizeof(uint32_t) * nvpb->size);
nvpb->base.channel = chan;
nvpb->base.remaining = nvpb->size;
nvpb->base.cur = nvpb->pushbuf;
-
+
return 0;
}
@@ -165,11 +165,21 @@ nouveau_pushbuf_init(struct nouveau_channel *chan)
sizeof(struct drm_nouveau_gem_pushbuf_bo));
nvpb->relocs = calloc(NOUVEAU_GEM_MAX_RELOCS,
sizeof(struct drm_nouveau_gem_pushbuf_reloc));
-
+
chan->pushbuf = &nvpb->base;
return 0;
}
+void
+nouveau_pushbuf_fini(struct nouveau_channel *chan)
+{
+ struct nouveau_channel_priv *nvchan = nouveau_channel(chan);
+ struct nouveau_pushbuf_priv *nvpb = &nvchan->pb;
+ nouveau_pushbuf_fini_call(chan);
+ free(nvpb->buffers);
+ free(nvpb->relocs);
+}
+
int
nouveau_pushbuf_flush(struct nouveau_channel *chan, unsigned min)
{