diff options
author | Stéphane Marchesin <[email protected]> | 2011-07-06 02:19:48 -0700 |
---|---|---|
committer | Stéphane Marchesin <[email protected]> | 2011-07-06 02:49:58 -0700 |
commit | e53b41f2632af26c79c4f7ed5b0fdb86a1feb602 (patch) | |
tree | 9499ab923e29bae2908ccf4a37bb88376cfae7e9 /src/gallium/drivers/i915/i915_batch.h | |
parent | 2bc5e0e97ba7b6c32f6ff90cb90448173d74b89b (diff) |
i915g: Improve flushing using heuristics.
Diffstat (limited to 'src/gallium/drivers/i915/i915_batch.h')
-rw-r--r-- | src/gallium/drivers/i915/i915_batch.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/gallium/drivers/i915/i915_batch.h b/src/gallium/drivers/i915/i915_batch.h index ce2691b2fd7..a1f8bcae802 100644 --- a/src/gallium/drivers/i915/i915_batch.h +++ b/src/gallium/drivers/i915/i915_batch.h @@ -29,6 +29,7 @@ #define I915_BATCH_H #include "i915_batchbuffer.h" +#include "i915_context.h" #define BEGIN_BATCH(dwords) \ @@ -49,11 +50,26 @@ #define FLUSH_BATCH(fence) \ i915_flush(i915, fence) - /************************************************************************ * i915_flush.c */ void i915_flush(struct i915_context *i915, struct pipe_fence_handle **fence); +/* + * Flush if the current color buf is idle and we have more than 256 vertices + * queued, or if the current color buf is busy and we have more than 4096 + * vertices queued. + */ +static INLINE void i915_flush_heuristically(struct i915_context* i915, + int num_vertex) +{ + struct i915_winsys *iws = i915->iws; + i915->vertices_since_last_flush += num_vertex; + if ( i915->vertices_since_last_flush > 4096 + || ( i915->vertices_since_last_flush > 256 && + !iws->buffer_is_busy(iws, i915->current.cbuf_bo)) ) + FLUSH_BATCH(NULL); +} + #endif |