aux/trace: trace transfer ops

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10899>
This commit is contained in:
Mike Blumenkrantz 2021-05-07 15:03:46 -04:00 committed by Marge Bot
parent a1c7279a7f
commit 94ab82a3ca
1 changed files with 34 additions and 12 deletions

View File

@ -1563,23 +1563,29 @@ trace_context_transfer_map(struct pipe_context *_context,
struct pipe_transfer **transfer)
{
struct trace_context *tr_context = trace_context(_context);
struct pipe_context *context = tr_context->pipe;
struct pipe_transfer *result = NULL;
struct pipe_context *pipe = tr_context->pipe;
struct pipe_transfer *xfer = NULL;
void *map;
/*
* Map and transfers can't be serialized so we convert all write transfers
* to texture/buffer_subdata and ignore read transfers.
*/
if (resource->target == PIPE_BUFFER)
map = context->buffer_map(context, resource, level, usage, box, &result);
map = pipe->buffer_map(pipe, resource, level, usage, box, &xfer);
else
map = context->texture_map(context, resource, level, usage, box, &result);
map = pipe->texture_map(pipe, resource, level, usage, box, &xfer);
if (!map)
return NULL;
*transfer = trace_transfer_create(tr_context, resource, xfer);
trace_dump_call_begin("pipe_context", resource->target == PIPE_BUFFER ? "buffer_map" : "texture_map");
*transfer = trace_transfer_create(tr_context, resource, result);
trace_dump_arg(ptr, pipe);
trace_dump_arg(ptr, resource);
trace_dump_arg(uint, level);
trace_dump_arg(uint, usage);
trace_dump_arg(box, box);
trace_dump_arg(ptr, xfer);
trace_dump_ret(ptr, map);
trace_dump_call_end();
if (map) {
if (usage & PIPE_MAP_WRITE) {
@ -1597,10 +1603,18 @@ trace_context_transfer_flush_region( struct pipe_context *_context,
{
struct trace_context *tr_context = trace_context(_context);
struct trace_transfer *tr_transfer = trace_transfer(_transfer);
struct pipe_context *context = tr_context->pipe;
struct pipe_context *pipe = tr_context->pipe;
struct pipe_transfer *transfer = tr_transfer->transfer;
context->transfer_flush_region(context, transfer, box);
trace_dump_call_begin("pipe_context", "transfer_flush_region");
trace_dump_arg(ptr, pipe);
trace_dump_arg(ptr, transfer);
trace_dump_arg(box, box);
trace_dump_call_end();
pipe->transfer_flush_region(pipe, transfer, box);
}
static void
@ -1612,6 +1626,14 @@ trace_context_transfer_unmap(struct pipe_context *_context,
struct pipe_context *context = tr_ctx->pipe;
struct pipe_transfer *transfer = tr_trans->transfer;
trace_dump_call_begin("pipe_context", "transfer_unmap");
trace_dump_arg(ptr, context);
trace_dump_arg(ptr, transfer);
trace_dump_call_end();
if (tr_trans->map) {
/*
* Fake a texture/buffer_subdata