diff options
author | Jakob Bornecrantz <wallbraker@gmail.com> | 2010-12-03 19:42:45 +0100 |
---|---|---|
committer | Jakob Bornecrantz <wallbraker@gmail.com> | 2011-01-21 20:53:29 +0100 |
commit | 7287964f944d7e2bcf409b758163ab75c61b0f8e (patch) | |
tree | d5a9c1a26bacb968e5df8c87a15368206af80b35 /src/gallium/drivers/i915/i915_resource_texture.c | |
parent | 484edfc8151ddf63d3e0e7be3b4c8fa3906a0ec9 (diff) |
i915g: Use slab allocator for transfers
Also remove unused i915_transfer struct
Diffstat (limited to 'src/gallium/drivers/i915/i915_resource_texture.c')
-rw-r--r-- | src/gallium/drivers/i915/i915_resource_texture.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/gallium/drivers/i915/i915_resource_texture.c b/src/gallium/drivers/i915/i915_resource_texture.c index f19106f341..e793d126ad 100644 --- a/src/gallium/drivers/i915/i915_resource_texture.c +++ b/src/gallium/drivers/i915/i915_resource_texture.c @@ -716,14 +716,16 @@ i915_texture_destroy(struct pipe_screen *screen, } static struct pipe_transfer * -i915_texture_get_transfer(struct pipe_context *context, +i915_texture_get_transfer(struct pipe_context *pipe, struct pipe_resource *resource, unsigned level, unsigned usage, const struct pipe_box *box) { + struct i915_context *i915 = i915_context(pipe); struct i915_texture *tex = i915_texture(resource); - struct pipe_transfer *transfer = CALLOC_STRUCT(pipe_transfer); + struct pipe_transfer *transfer = util_slab_alloc(&i915->transfer_pool); + if (transfer == NULL) return NULL; @@ -737,6 +739,14 @@ i915_texture_get_transfer(struct pipe_context *context, return transfer; } +static void +i915_transfer_destroy(struct pipe_context *pipe, + struct pipe_transfer *transfer) +{ + struct i915_context *i915 = i915_context(pipe); + util_slab_free(&i915->transfer_pool, transfer); +} + static void * i915_texture_transfer_map(struct pipe_context *pipe, struct pipe_transfer *transfer) @@ -781,7 +791,7 @@ struct u_resource_vtbl i915_texture_vtbl = i915_texture_destroy, /* resource_destroy */ NULL, /* is_resource_referenced */ i915_texture_get_transfer, /* get_transfer */ - u_default_transfer_destroy, /* transfer_destroy */ + i915_transfer_destroy, /* transfer_destroy */ i915_texture_transfer_map, /* transfer_map */ u_default_transfer_flush_region, /* transfer_flush_region */ i915_texture_transfer_unmap, /* transfer_unmap */ |