From 369e46888904c6d379b8b477d9242cff1608e30e Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Mon, 8 Oct 2012 04:06:42 +0200 Subject: gallium: unify transfer functions "get_transfer + transfer_map" becomes "transfer_map". "transfer_unmap + transfer_destroy" becomes "transfer_unmap". transfer_map must create and return the transfer object and transfer_unmap must destroy it. transfer_map is successful if the returned buffer pointer is not NULL. If transfer_map fails, the pointer to the transfer object remains unchanged (i.e. doesn't have to be NULL). Acked-by: Brian Paul --- src/gallium/drivers/noop/noop_pipe.c | 53 ++++++++++++++---------------------- 1 file changed, 21 insertions(+), 32 deletions(-) (limited to 'src/gallium/drivers/noop') diff --git a/src/gallium/drivers/noop/noop_pipe.c b/src/gallium/drivers/noop/noop_pipe.c index 6411418c3fe..b7c73cf084d 100644 --- a/src/gallium/drivers/noop/noop_pipe.c +++ b/src/gallium/drivers/noop/noop_pipe.c @@ -146,32 +146,28 @@ static void noop_resource_destroy(struct pipe_screen *screen, /* * transfer */ -static struct pipe_transfer *noop_get_transfer(struct pipe_context *context, - struct pipe_resource *resource, - unsigned level, - enum pipe_transfer_usage usage, - const struct pipe_box *box) -{ - struct pipe_transfer *transfer; - - transfer = CALLOC_STRUCT(pipe_transfer); - if (transfer == NULL) - return NULL; - pipe_resource_reference(&transfer->resource, resource); - transfer->level = level; - transfer->usage = usage; - transfer->box = *box; - transfer->stride = 1; - transfer->layer_stride = 1; - return transfer; -} - static void *noop_transfer_map(struct pipe_context *pipe, - struct pipe_transfer *transfer) + struct pipe_resource *resource, + unsigned level, + enum pipe_transfer_usage usage, + const struct pipe_box *box, + struct pipe_transfer **ptransfer) { - struct noop_resource *nresource = (struct noop_resource *)transfer->resource; + struct pipe_transfer *transfer; + struct noop_resource *nresource = (struct noop_resource *)resource; + + transfer = CALLOC_STRUCT(pipe_transfer); + if (transfer == NULL) + return NULL; + pipe_resource_reference(&transfer->resource, resource); + transfer->level = level; + transfer->usage = usage; + transfer->box = *box; + transfer->stride = 1; + transfer->layer_stride = 1; + *ptransfer = transfer; - return nresource->data; + return nresource->data; } static void noop_transfer_flush_region(struct pipe_context *pipe, @@ -183,13 +179,8 @@ static void noop_transfer_flush_region(struct pipe_context *pipe, static void noop_transfer_unmap(struct pipe_context *pipe, struct pipe_transfer *transfer) { -} - -static void noop_transfer_destroy(struct pipe_context *pipe, - struct pipe_transfer *transfer) -{ - pipe_resource_reference(&transfer->resource, NULL); - FREE(transfer); + pipe_resource_reference(&transfer->resource, NULL); + FREE(transfer); } static void noop_transfer_inline_write(struct pipe_context *pipe, @@ -280,11 +271,9 @@ static struct pipe_context *noop_create_context(struct pipe_screen *screen, void ctx->begin_query = noop_begin_query; ctx->end_query = noop_end_query; ctx->get_query_result = noop_get_query_result; - ctx->get_transfer = noop_get_transfer; ctx->transfer_map = noop_transfer_map; ctx->transfer_flush_region = noop_transfer_flush_region; ctx->transfer_unmap = noop_transfer_unmap; - ctx->transfer_destroy = noop_transfer_destroy; ctx->transfer_inline_write = noop_transfer_inline_write; noop_init_state_functions(ctx); -- cgit v1.2.3