drm/nouveau/fence: minor api changes for an upcoming rework
[pandora-kernel.git] / drivers / gpu / drm / nouveau / nouveau_channel.c
index 846afb0..694f632 100644 (file)
@@ -28,6 +28,8 @@
 #include "nouveau_drm.h"
 #include "nouveau_dma.h"
 #include "nouveau_ramht.h"
+#include "nouveau_fence.h"
+#include "nouveau_software.h"
 
 static int
 nouveau_channel_pushbuf_init(struct nouveau_channel *chan)
@@ -38,7 +40,7 @@ nouveau_channel_pushbuf_init(struct nouveau_channel *chan)
        int ret;
 
        /* allocate buffer object */
-       ret = nouveau_bo_new(dev, 65536, 0, mem, 0, 0, &chan->pushbuf_bo);
+       ret = nouveau_bo_new(dev, 65536, 0, mem, 0, 0, NULL, &chan->pushbuf_bo);
        if (ret)
                goto out;
 
@@ -155,8 +157,6 @@ nouveau_channel_alloc(struct drm_device *dev, struct nouveau_channel **chan_ret,
        }
 
        NV_DEBUG(dev, "initialising channel %d\n", chan->id);
-       INIT_LIST_HEAD(&chan->nvsw.vbl_wait);
-       INIT_LIST_HEAD(&chan->nvsw.flip);
        INIT_LIST_HEAD(&chan->fence.pending);
        spin_lock_init(&chan->fence.lock);
 
@@ -213,6 +213,12 @@ nouveau_channel_alloc(struct drm_device *dev, struct nouveau_channel **chan_ret,
                OUT_RING  (chan, 0x00000000);
        FIRE_RING(chan);
 
+       ret = nouveau_gpuobj_gr_new(chan, NvSw, nouveau_software_class(dev));
+       if (ret) {
+               nouveau_channel_put(&chan);
+               return ret;
+       }
+
        ret = nouveau_fence_channel_init(chan);
        if (ret) {
                nouveau_channel_put(&chan);
@@ -364,7 +370,7 @@ nouveau_channel_idle(struct nouveau_channel *chan)
        nouveau_fence_update(chan);
 
        if (chan->fence.sequence != chan->fence.sequence_ack) {
-               ret = nouveau_fence_new(chan, &fence, true);
+               ret = nouveau_fence_new(chan, &fence);
                if (!ret) {
                        ret = nouveau_fence_wait(fence, false, false);
                        nouveau_fence_unref(&fence);