Mesa (main): aux/trace: trace transfer ops
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Sat May 22 14:02:42 UTC 2021
Module: Mesa
Branch: main
Commit: 94ab82a3ca659b358238f5f967d12185f7e12717
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=94ab82a3ca659b358238f5f967d12185f7e12717
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Fri May 7 15:03:46 2021 -0400
aux/trace: trace transfer ops
Reviewed-by: Adam Jackson <ajax at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10899>
---
src/gallium/auxiliary/driver_trace/tr_context.c | 46 ++++++++++++++++++-------
1 file changed, 34 insertions(+), 12 deletions(-)
diff --git a/src/gallium/auxiliary/driver_trace/tr_context.c b/src/gallium/auxiliary/driver_trace/tr_context.c
index 8a04d4c8a28..9fcf97fdf3f 100644
--- a/src/gallium/auxiliary/driver_trace/tr_context.c
+++ b/src/gallium/auxiliary/driver_trace/tr_context.c
@@ -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
More information about the mesa-commit
mailing list