Add two helper functions for batchbuffer
authorXiang, Haihao <haihao.xiang@intel.com>
Fri, 2 Mar 2012 07:40:51 +0000 (15:40 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Fri, 2 Mar 2012 07:40:51 +0000 (15:40 +0800)
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
src/intel_batchbuffer.c
src/intel_batchbuffer.h

index 0b52281..14c9452 100644 (file)
@@ -281,3 +281,27 @@ intel_batchbuffer_end_atomic(struct intel_batchbuffer *batch)
     assert(batch->atomic);
     batch->atomic = 0;
 }
+
+int
+intel_batchbuffer_used_size(struct intel_batchbuffer *batch)
+{
+    return batch->ptr - batch->map;
+}
+
+void
+intel_batchbuffer_align(struct intel_batchbuffer *batch, unsigned int alignedment)
+{
+    int used = batch->ptr - batch->map;
+    int pad_size;
+
+    assert((alignedment & 3) == 0);
+    pad_size = ALIGN(used, alignedment) - used;
+    assert((pad_size & 3) == 0);
+    assert(intel_batchbuffer_space(batch) >= pad_size);
+
+    while (pad_size >= 4) {
+        intel_batchbuffer_emit_dword(batch, 0);
+        pad_size -= 4;
+    }
+}
+
index 092da5a..8212de6 100644 (file)
@@ -44,6 +44,8 @@ void intel_batchbuffer_begin_batch(struct intel_batchbuffer *batch, int total);
 void intel_batchbuffer_advance_batch(struct intel_batchbuffer *batch);
 void intel_batchbuffer_check_batchbuffer_flag(struct intel_batchbuffer *batch, int flag);
 int intel_batchbuffer_check_free_space(struct intel_batchbuffer *batch, int size);
+int intel_batchbuffer_used_size(struct intel_batchbuffer *batch);
+void intel_batchbuffer_align(struct intel_batchbuffer *batch, unsigned int alignedment);
 
 #define __BEGIN_BATCH(batch, n, f) do {                         \
         assert(f == batch->flag);                               \