intel: introduce intel_cmd_writer

There is currently a single writer for the batch buffer.  We want to add more
writers later.
diff --git a/icd/intel/queue.c b/icd/intel/queue.c
index 7f11bb8..06455cb 100644
--- a/icd/intel/queue.c
+++ b/icd/intel/queue.c
@@ -64,9 +64,10 @@
 
 XGL_RESULT intel_queue_wait(struct intel_queue *queue, int64_t timeout)
 {
-    struct intel_cmd *cmd = queue->last_submitted_cmd;
+    struct intel_bo *bo = (queue->last_submitted_cmd) ?
+        intel_cmd_get_batch(queue->last_submitted_cmd, NULL) : NULL;
 
-    return (!cmd || intel_bo_wait(cmd->bo, timeout) == 0) ?
+    return (!bo || intel_bo_wait(bo, timeout) == 0) ?
         XGL_SUCCESS : XGL_ERROR_UNKNOWN;
 }
 
@@ -74,10 +75,12 @@
                               struct intel_cmd *cmd)
 {
     struct intel_winsys *winsys = queue->dev->winsys;
+    struct intel_bo *bo;
+    XGL_GPU_SIZE used;
     int err;
 
-    err = intel_winsys_submit_bo(winsys, queue->ring,
-            cmd->bo, cmd->used * sizeof(uint32_t), 0);
+    bo = intel_cmd_get_batch(cmd, &used);
+    err = intel_winsys_submit_bo(winsys, queue->ring, bo, used, 0);
 
     queue->last_submitted_cmd = cmd;