i915g: Make batchbuffer flush function not be inline

This commit is contained in:
Jakob Bornecrantz
2010-07-03 15:25:17 +01:00
parent ded664b1ac
commit 57fc2ad7a1
3 changed files with 28 additions and 15 deletions
+10 -4
View File
@@ -30,6 +30,7 @@
#include "i915_batchbuffer.h"
#define BEGIN_BATCH(dwords, relocs) \
(i915_winsys_batchbuffer_check(i915->batch, dwords, relocs))
@@ -39,9 +40,14 @@
#define OUT_RELOC(buf, usage, offset) \
i915_winsys_batchbuffer_reloc(i915->batch, buf, usage, offset)
#define FLUSH_BATCH(fence) do { \
i915_winsys_batchbuffer_flush(i915->batch, fence); \
i915->hardware_dirty = ~0; \
} while (0)
#define FLUSH_BATCH(fence) \
i915_flush(i915, fence)
/************************************************************************
* i915_flush.c
*/
void i915_flush(struct i915_context *i915, struct pipe_fence_handle **fence);
#endif
+2 -7
View File
@@ -30,6 +30,8 @@
#include "i915_winsys.h"
struct i915_context;
static INLINE boolean
i915_winsys_batchbuffer_check(struct i915_winsys_batchbuffer *batch,
size_t dwords,
@@ -77,11 +79,4 @@ i915_winsys_batchbuffer_reloc(struct i915_winsys_batchbuffer *batch,
return batch->iws->batchbuffer_reloc(batch, buffer, usage, offset);
}
static INLINE void
i915_winsys_batchbuffer_flush(struct i915_winsys_batchbuffer *batch,
struct pipe_fence_handle **fence)
{
batch->iws->batchbuffer_flush(batch, fence);
}
#endif
+16 -4
View File
@@ -38,9 +38,9 @@
#include "i915_debug.h"
static void i915_flush( struct pipe_context *pipe,
unsigned flags,
struct pipe_fence_handle **fence )
static void i915_flush_pipe( struct pipe_context *pipe,
unsigned flags,
struct pipe_fence_handle **fence )
{
struct i915_context *i915 = i915_context(pipe);
@@ -81,5 +81,17 @@ static void i915_flush( struct pipe_context *pipe,
void i915_init_flush_functions( struct i915_context *i915 )
{
i915->base.flush = i915_flush;
i915->base.flush = i915_flush_pipe;
}
/**
* Here we handle all the notifications that needs to go out on a flush.
* XXX might move above function to i915_pipe_flush.c and leave this here.
*/
void i915_flush(struct i915_context *i915, struct pipe_fence_handle **fence)
{
struct i915_winsys_batchbuffer *batch = i915->batch;
batch->iws->batchbuffer_flush(batch, fence);
i915->hardware_dirty = ~0;
}