X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Ftrace%2Ftr_texture.c;h=47845a35a64b5fa1fccbb03df3952fd8d99e8dcc;hb=48d743c5019076056739561f979e7101c04acf21;hp=d818e21bb8214e65dc815678f46f410decba2ef0;hpb=d35ecca5ee231c072687578642e0c22c6c0590b1;p=mesa.git diff --git a/src/gallium/drivers/trace/tr_texture.c b/src/gallium/drivers/trace/tr_texture.c index d818e21bb82..47845a35a64 100644 --- a/src/gallium/drivers/trace/tr_texture.c +++ b/src/gallium/drivers/trace/tr_texture.c @@ -1,6 +1,6 @@ /************************************************************************** * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * Copyright 2008 VMware, Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -18,7 +18,7 @@ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -28,81 +28,75 @@ #include "util/u_inlines.h" #include "util/u_hash_table.h" #include "util/u_memory.h" -#include "util/u_simple_list.h" +#include "util/simple_list.h" #include "tr_screen.h" #include "tr_context.h" #include "tr_texture.h" -struct pipe_texture * -trace_texture_create(struct trace_screen *tr_scr, - struct pipe_texture *texture) +struct pipe_resource * +trace_resource_create(struct trace_screen *tr_scr, + struct pipe_resource *texture) { - struct trace_texture *tr_tex; + struct trace_resource *tr_res; - if(!texture) + if (!texture) goto error; assert(texture->screen == tr_scr->screen); - tr_tex = CALLOC_STRUCT(trace_texture); - if(!tr_tex) + tr_res = CALLOC_STRUCT(trace_resource); + if (!tr_res) goto error; - memcpy(&tr_tex->base, texture, sizeof(struct pipe_texture)); + memcpy(&tr_res->base, texture, sizeof(struct pipe_resource)); - pipe_reference_init(&tr_tex->base.reference, 1); - tr_tex->base.screen = &tr_scr->base; - tr_tex->texture = texture; + pipe_reference_init(&tr_res->base.reference, 1); + tr_res->base.screen = &tr_scr->base; + tr_res->resource = texture; - trace_screen_add_to_list(tr_scr, textures, tr_tex); - - return &tr_tex->base; + return &tr_res->base; error: - pipe_texture_reference(&texture, NULL); + pipe_resource_reference(&texture, NULL); return NULL; } void -trace_texture_destroy(struct trace_texture *tr_tex) +trace_resource_destroy(struct trace_screen *tr_scr, + struct trace_resource *tr_res) { - struct trace_screen *tr_scr = trace_screen(tr_tex->base.screen); - - trace_screen_remove_from_list(tr_scr, textures, tr_tex); - - pipe_texture_reference(&tr_tex->texture, NULL); - FREE(tr_tex); + pipe_resource_reference(&tr_res->resource, NULL); + FREE(tr_res); } struct pipe_surface * -trace_surface_create(struct trace_texture *tr_tex, - struct pipe_surface *surface) +trace_surf_create(struct trace_context *tr_ctx, + struct trace_resource *tr_res, + struct pipe_surface *surface) { - struct trace_screen *tr_scr = trace_screen(tr_tex->base.screen); struct trace_surface *tr_surf; - if(!surface) + if (!surface) goto error; - assert(surface->texture == tr_tex->texture); + assert(surface->texture == tr_res->resource); tr_surf = CALLOC_STRUCT(trace_surface); - if(!tr_surf) + if (!tr_surf) goto error; memcpy(&tr_surf->base, surface, sizeof(struct pipe_surface)); + tr_surf->base.context = &tr_ctx->base; pipe_reference_init(&tr_surf->base.reference, 1); tr_surf->base.texture = NULL; - pipe_texture_reference(&tr_surf->base.texture, &tr_tex->base); + pipe_resource_reference(&tr_surf->base.texture, &tr_res->base); tr_surf->surface = surface; - trace_screen_add_to_list(tr_scr, surfaces, tr_surf); - return &tr_surf->base; error: @@ -112,13 +106,10 @@ error: void -trace_surface_destroy(struct trace_surface *tr_surf) +trace_surf_destroy(struct trace_surface *tr_surf) { - struct trace_screen *tr_scr = trace_screen(tr_surf->base.texture->screen); - - trace_screen_remove_from_list(tr_scr, surfaces, tr_surf); - - pipe_texture_reference(&tr_surf->base.texture, NULL); + trace_context_check(tr_surf->base.context); + pipe_resource_reference(&tr_surf->base.texture, NULL); pipe_surface_reference(&tr_surf->surface, NULL); FREE(tr_surf); } @@ -126,35 +117,32 @@ trace_surface_destroy(struct trace_surface *tr_surf) struct pipe_transfer * trace_transfer_create(struct trace_context *tr_ctx, - struct trace_texture *tr_tex, + struct trace_resource *tr_res, struct pipe_transfer *transfer) { - struct trace_screen *tr_scr = trace_screen(tr_tex->base.screen); struct trace_transfer *tr_trans; - if(!transfer) + if (!transfer) goto error; - assert(transfer->texture == tr_tex->texture); + assert(transfer->resource == tr_res->resource); tr_trans = CALLOC_STRUCT(trace_transfer); - if(!tr_trans) + if (!tr_trans) goto error; memcpy(&tr_trans->base, transfer, sizeof(struct pipe_transfer)); - tr_trans->base.texture = NULL; + tr_trans->base.resource = NULL; tr_trans->transfer = transfer; - pipe_texture_reference(&tr_trans->base.texture, &tr_tex->base); - assert(tr_trans->base.texture == &tr_tex->base); - - trace_screen_add_to_list(tr_scr, transfers, tr_trans); + pipe_resource_reference(&tr_trans->base.resource, &tr_res->base); + assert(tr_trans->base.resource == &tr_res->base); return &tr_trans->base; error: - tr_ctx->pipe->tex_transfer_destroy(tr_ctx->pipe, transfer); + tr_ctx->pipe->transfer_unmap(tr_ctx->pipe, transfer); return NULL; } @@ -163,14 +151,7 @@ void trace_transfer_destroy(struct trace_context *tr_context, struct trace_transfer *tr_trans) { - struct trace_screen *tr_scr = trace_screen(tr_context->base.screen); - struct pipe_context *context = tr_context->pipe; - struct pipe_transfer *transfer = tr_trans->transfer; - - trace_screen_remove_from_list(tr_scr, transfers, tr_trans); - - pipe_texture_reference(&tr_trans->base.texture, NULL); - context->tex_transfer_destroy(context, transfer); + pipe_resource_reference(&tr_trans->base.resource, NULL); FREE(tr_trans); }