Commit 183b70bb authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/gem: convert indirect pushbufs to new push macros

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
parent cd346a89
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "nouveau_vmm.h" #include "nouveau_vmm.h"
#include <nvif/class.h> #include <nvif/class.h>
#include <nvif/push206e.h>
void void
nouveau_gem_object_del(struct drm_gem_object *gem) nouveau_gem_object_del(struct drm_gem_object *gem)
...@@ -799,7 +800,7 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data, ...@@ -799,7 +800,7 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data,
} }
} else } else
if (drm->client.device.info.chipset >= 0x25) { if (drm->client.device.info.chipset >= 0x25) {
ret = RING_SPACE(chan, req->nr_push * 2); ret = PUSH_WAIT(chan->chan.push, req->nr_push * 2);
if (ret) { if (ret) {
NV_PRINTK(err, cli, "cal_space: %d\n", ret); NV_PRINTK(err, cli, "cal_space: %d\n", ret);
goto out; goto out;
...@@ -809,11 +810,11 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data, ...@@ -809,11 +810,11 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data,
struct nouveau_bo *nvbo = (void *)(unsigned long) struct nouveau_bo *nvbo = (void *)(unsigned long)
bo[push[i].bo_index].user_priv; bo[push[i].bo_index].user_priv;
OUT_RING(chan, (nvbo->offset + push[i].offset) | 2); PUSH_CALL(chan->chan.push, nvbo->offset + push[i].offset);
OUT_RING(chan, 0); PUSH_DATA(chan->chan.push, 0);
} }
} else { } else {
ret = RING_SPACE(chan, req->nr_push * (2 + NOUVEAU_DMA_SKIPS)); ret = PUSH_WAIT(chan->chan.push, req->nr_push * (2 + NOUVEAU_DMA_SKIPS));
if (ret) { if (ret) {
NV_PRINTK(err, cli, "jmp_space: %d\n", ret); NV_PRINTK(err, cli, "jmp_space: %d\n", ret);
goto out; goto out;
...@@ -843,11 +844,10 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data, ...@@ -843,11 +844,10 @@ nouveau_gem_ioctl_pushbuf(struct drm_device *dev, void *data,
push[i].length - 8) / 4, cmd); push[i].length - 8) / 4, cmd);
} }
OUT_RING(chan, 0x20000000 | PUSH_JUMP(chan->chan.push, nvbo->offset + push[i].offset);
(nvbo->offset + push[i].offset)); PUSH_DATA(chan->chan.push, 0);
OUT_RING(chan, 0);
for (j = 0; j < NOUVEAU_DMA_SKIPS; j++) for (j = 0; j < NOUVEAU_DMA_SKIPS; j++)
OUT_RING(chan, 0); PUSH_DATA(chan->chan.push, 0);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment