diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2010-11-21 20:21:00 +0100 |
---|---|---|
committer | Jakob Bornecrantz <wallbraker@gmail.com> | 2010-12-02 01:34:13 +0100 |
commit | 135b083461f8a5a220d86f57af018f6f0316d2bb (patch) | |
tree | ae2eb2232b756038e575268051b031ed38423ccb /src/gallium/drivers/i915 | |
parent | 1c608403383f3c31e19b70c578ac66443f259967 (diff) | |
download | external_mesa3d-135b083461f8a5a220d86f57af018f6f0316d2bb.zip external_mesa3d-135b083461f8a5a220d86f57af018f6f0316d2bb.tar.gz external_mesa3d-135b083461f8a5a220d86f57af018f6f0316d2bb.tar.bz2 |
i915g: prepare winsys/batchbuffer for execbuf2
Wire up a fenced parameter, switch all relocations to _FENCED
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Jakob Bornecrantz <wallbraker@gmail.com>
Signed-off-by: Jakob Bornecrantz <wallbraker@gmail.com>
Diffstat (limited to 'src/gallium/drivers/i915')
-rw-r--r-- | src/gallium/drivers/i915/i915_batch.h | 5 | ||||
-rw-r--r-- | src/gallium/drivers/i915/i915_batchbuffer.h | 4 | ||||
-rw-r--r-- | src/gallium/drivers/i915/i915_blit.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/i915/i915_state_emit.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/i915/i915_winsys.h | 2 |
5 files changed, 13 insertions, 10 deletions
diff --git a/src/gallium/drivers/i915/i915_batch.h b/src/gallium/drivers/i915/i915_batch.h index c411b84..6e93da7 100644 --- a/src/gallium/drivers/i915/i915_batch.h +++ b/src/gallium/drivers/i915/i915_batch.h @@ -38,7 +38,10 @@ i915_winsys_batchbuffer_dword(i915->batch, dword) #define OUT_RELOC(buf, usage, offset) \ - i915_winsys_batchbuffer_reloc(i915->batch, buf, usage, offset) + i915_winsys_batchbuffer_reloc(i915->batch, buf, usage, offset, false) + +#define OUT_RELOC_FENCED(buf, usage, offset) \ + i915_winsys_batchbuffer_reloc(i915->batch, buf, usage, offset, true) #define FLUSH_BATCH(fence) \ i915_flush(i915, fence) diff --git a/src/gallium/drivers/i915/i915_batchbuffer.h b/src/gallium/drivers/i915/i915_batchbuffer.h index c1cd314..f210c53 100644 --- a/src/gallium/drivers/i915/i915_batchbuffer.h +++ b/src/gallium/drivers/i915/i915_batchbuffer.h @@ -74,9 +74,9 @@ static INLINE int i915_winsys_batchbuffer_reloc(struct i915_winsys_batchbuffer *batch, struct i915_winsys_buffer *buffer, enum i915_winsys_buffer_usage usage, - size_t offset) + size_t offset, bool fenced) { - return batch->iws->batchbuffer_reloc(batch, buffer, usage, offset); + return batch->iws->batchbuffer_reloc(batch, buffer, usage, offset, fenced); } #endif diff --git a/src/gallium/drivers/i915/i915_blit.c b/src/gallium/drivers/i915/i915_blit.c index cdf20c0..97c2566 100644 --- a/src/gallium/drivers/i915/i915_blit.c +++ b/src/gallium/drivers/i915/i915_blit.c @@ -74,7 +74,7 @@ i915_fill_blit(struct i915_context *i915, OUT_BATCH(BR13); OUT_BATCH((y << 16) | x); OUT_BATCH(((y + h) << 16) | (x + w)); - OUT_RELOC(dst_buffer, I915_USAGE_2D_TARGET, dst_offset); + OUT_RELOC_FENCED(dst_buffer, I915_USAGE_2D_TARGET, dst_offset); OUT_BATCH(color); } @@ -138,8 +138,8 @@ i915_copy_blit(struct i915_context *i915, OUT_BATCH(BR13); OUT_BATCH((dst_y << 16) | dst_x); OUT_BATCH((dst_y2 << 16) | dst_x2); - OUT_RELOC(dst_buffer, I915_USAGE_2D_TARGET, dst_offset); + OUT_RELOC_FENCED(dst_buffer, I915_USAGE_2D_TARGET, dst_offset); OUT_BATCH((src_y << 16) | src_x); OUT_BATCH(((int) src_pitch & 0xffff)); - OUT_RELOC(src_buffer, I915_USAGE_2D_SOURCE, src_offset); + OUT_RELOC_FENCED(src_buffer, I915_USAGE_2D_SOURCE, src_offset); } diff --git a/src/gallium/drivers/i915/i915_state_emit.c b/src/gallium/drivers/i915/i915_state_emit.c index 49dff1f..51bbb2b 100644 --- a/src/gallium/drivers/i915/i915_state_emit.c +++ b/src/gallium/drivers/i915/i915_state_emit.c @@ -230,7 +230,7 @@ i915_emit_hardware_state(struct i915_context *i915 ) BUF_3D_PITCH(tex->stride) | /* pitch in bytes */ ctile); - OUT_RELOC(tex->buffer, + OUT_RELOC_FENCED(tex->buffer, I915_USAGE_RENDER, cbuf_surface->offset); } @@ -249,7 +249,7 @@ i915_emit_hardware_state(struct i915_context *i915 ) BUF_3D_PITCH(tex->stride) | /* pitch in bytes */ ztile); - OUT_RELOC(tex->buffer, + OUT_RELOC_FENCED(tex->buffer, I915_USAGE_RENDER, depth_surface->offset); } @@ -298,7 +298,7 @@ i915_emit_hardware_state(struct i915_context *i915 ) count++; - OUT_RELOC(buf, I915_USAGE_SAMPLER, offset); + OUT_RELOC_FENCED(buf, I915_USAGE_SAMPLER, offset); OUT_BATCH(i915->current.texbuffer[unit][0]); /* MS3 */ OUT_BATCH(i915->current.texbuffer[unit][1]); /* MS4 */ } diff --git a/src/gallium/drivers/i915/i915_winsys.h b/src/gallium/drivers/i915/i915_winsys.h index 2ca9e58..ddf8a90 100644 --- a/src/gallium/drivers/i915/i915_winsys.h +++ b/src/gallium/drivers/i915/i915_winsys.h @@ -106,7 +106,7 @@ struct i915_winsys { int (*batchbuffer_reloc)(struct i915_winsys_batchbuffer *batch, struct i915_winsys_buffer *reloc, enum i915_winsys_buffer_usage usage, - unsigned offset); + unsigned offset, bool fenced); /** * Flush a bufferbatch. |