From 695c0b25d4f77d0b443ec97cfcb42f59b4df7e71 Mon Sep 17 00:00:00 2001 From: "Xiang, Haihao" Date: Fri, 2 Mar 2012 15:40:51 +0800 Subject: [PATCH] Add two helper functions for batchbuffer Signed-off-by: Xiang, Haihao --- src/intel_batchbuffer.c | 24 ++++++++++++++++++++++++ src/intel_batchbuffer.h | 2 ++ 2 files changed, 26 insertions(+) diff --git a/src/intel_batchbuffer.c b/src/intel_batchbuffer.c index 0b52281..14c9452 100644 --- a/src/intel_batchbuffer.c +++ b/src/intel_batchbuffer.c @@ -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; + } +} + diff --git a/src/intel_batchbuffer.h b/src/intel_batchbuffer.h index 092da5a..8212de6 100644 --- a/src/intel_batchbuffer.h +++ b/src/intel_batchbuffer.h @@ -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); \ -- 2.7.4