Mesa (master): aux/trace: add a bunch of methods for lavapipe

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 7 22:42:14 UTC 2021


Module: Mesa
Branch: master
Commit: 539c7ca5084feb786f5a7aaa138c206192982fcd
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=539c7ca5084feb786f5a7aaa138c206192982fcd

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Wed Mar 31 13:54:17 2021 -0400

aux/trace: add a bunch of methods for lavapipe

with all of these, lavapipe can now be traced

Reviewed-by: Adam Jackson <ajax at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9958>

---

 src/gallium/auxiliary/driver_trace/tr_context.c |  18 ++++
 src/gallium/auxiliary/driver_trace/tr_screen.c  | 134 ++++++++++++++++++++++++
 2 files changed, 152 insertions(+)

diff --git a/src/gallium/auxiliary/driver_trace/tr_context.c b/src/gallium/auxiliary/driver_trace/tr_context.c
index 4521b6de8e3..60d151dd49a 100644
--- a/src/gallium/auxiliary/driver_trace/tr_context.c
+++ b/src/gallium/auxiliary/driver_trace/tr_context.c
@@ -837,6 +837,23 @@ trace_context_set_polygon_stipple(struct pipe_context *_pipe,
    trace_dump_call_end();
 }
 
+static void
+trace_context_set_min_samples(struct pipe_context *_pipe,
+                              unsigned min_samples)
+{
+   struct trace_context *tr_ctx = trace_context(_pipe);
+   struct pipe_context *pipe = tr_ctx->pipe;
+
+   trace_dump_call_begin("pipe_context", "set_min_samples");
+
+   trace_dump_arg(ptr, pipe);
+   trace_dump_arg(uint, min_samples);
+
+   pipe->set_min_samples(pipe, min_samples);
+
+   trace_dump_call_end();
+}
+
 
 static void
 trace_context_set_scissor_states(struct pipe_context *_pipe,
@@ -2018,6 +2035,7 @@ trace_context_create(struct trace_screen *tr_scr,
    TR_CTX_INIT(set_framebuffer_state);
    TR_CTX_INIT(set_inlinable_constants);
    TR_CTX_INIT(set_polygon_stipple);
+   TR_CTX_INIT(set_min_samples);
    TR_CTX_INIT(set_scissor_states);
    TR_CTX_INIT(set_viewport_states);
    TR_CTX_INIT(set_sampler_views);
diff --git a/src/gallium/auxiliary/driver_trace/tr_screen.c b/src/gallium/auxiliary/driver_trace/tr_screen.c
index b9e549c96a7..2adda8be291 100644
--- a/src/gallium/auxiliary/driver_trace/tr_screen.c
+++ b/src/gallium/auxiliary/driver_trace/tr_screen.c
@@ -350,6 +350,134 @@ trace_screen_get_device_uuid(struct pipe_screen *_screen, char *uuid)
  * texture
  */
 
+static void *
+trace_screen_map_memory(struct pipe_screen *_screen,
+                        struct pipe_memory_allocation *pmem)
+{
+   struct trace_screen *tr_scr = trace_screen(_screen);
+   struct pipe_screen *screen = tr_scr->screen;
+   void *result;
+
+   trace_dump_call_begin("pipe_screen", "map_memory");
+
+   trace_dump_arg(ptr, screen);
+   trace_dump_arg(ptr, pmem);
+
+   result = screen->map_memory(screen, pmem);
+
+   trace_dump_ret(ptr, result);
+
+   trace_dump_call_end();
+
+   return result;
+}
+
+static void
+trace_screen_unmap_memory(struct pipe_screen *_screen,
+                          struct pipe_memory_allocation *pmem)
+{
+   struct trace_screen *tr_scr = trace_screen(_screen);
+   struct pipe_screen *screen = tr_scr->screen;
+
+   trace_dump_call_begin("pipe_screen", "unmap_memory");
+
+   trace_dump_arg(ptr, screen);
+   trace_dump_arg(ptr, pmem);
+
+   screen->unmap_memory(screen, pmem);
+
+
+   trace_dump_call_end();
+}
+
+static struct pipe_memory_allocation *
+trace_screen_allocate_memory(struct pipe_screen *_screen,
+                             uint64_t size)
+{
+   struct trace_screen *tr_scr = trace_screen(_screen);
+   struct pipe_screen *screen = tr_scr->screen;
+   struct pipe_memory_allocation *result;
+
+   trace_dump_call_begin("pipe_screen", "allocate_memory");
+
+   trace_dump_arg(ptr, screen);
+   trace_dump_arg(uint, size);
+
+   result = screen->allocate_memory(screen, size);
+
+   trace_dump_ret(ptr, result);
+
+   trace_dump_call_end();
+
+   return result;
+}
+
+static void
+trace_screen_free_memory(struct pipe_screen *_screen,
+                         struct pipe_memory_allocation *pmem)
+{
+   struct trace_screen *tr_scr = trace_screen(_screen);
+   struct pipe_screen *screen = tr_scr->screen;
+
+   trace_dump_call_begin("pipe_screen", "free_memory");
+
+   trace_dump_arg(ptr, screen);
+   trace_dump_arg(ptr, pmem);
+
+   screen->free_memory(screen, pmem);
+
+
+   trace_dump_call_end();
+}
+
+static void
+trace_screen_resource_bind_backing(struct pipe_screen *_screen,
+                                   struct pipe_resource *resource,
+                                   struct pipe_memory_allocation *pmem,
+                                   uint64_t offset)
+{
+   struct trace_screen *tr_scr = trace_screen(_screen);
+   struct pipe_screen *screen = tr_scr->screen;
+
+   trace_dump_call_begin("pipe_screen", "resource_bind_backing");
+
+   trace_dump_arg(ptr, screen);
+   trace_dump_arg(ptr, resource);
+   trace_dump_arg(ptr, pmem);
+   trace_dump_arg(uint, offset);
+
+   screen->resource_bind_backing(screen, resource, pmem, offset);
+
+   trace_dump_call_end();
+}
+
+static struct pipe_resource *
+trace_screen_resource_create_unbacked(struct pipe_screen *_screen,
+                                      const struct pipe_resource *templat,
+                                      uint64_t *size_required)
+{
+   struct trace_screen *tr_scr = trace_screen(_screen);
+   struct pipe_screen *screen = tr_scr->screen;
+   struct pipe_resource *result;
+
+   trace_dump_call_begin("pipe_screen", "resource_create_unbacked");
+
+   trace_dump_arg(ptr, screen);
+   trace_dump_arg(resource_template, templat);
+
+   result = screen->resource_create_unbacked(screen, templat, size_required);
+
+   trace_dump_ret_begin();
+   trace_dump_uint(*size_required);
+   trace_dump_ret_end();
+   trace_dump_ret(ptr, result);
+
+   trace_dump_call_end();
+
+   if (result)
+      result->screen = _screen;
+   return result;
+}
 
 static struct pipe_resource *
 trace_screen_resource_create(struct pipe_screen *_screen,
@@ -746,7 +874,13 @@ trace_screen_create(struct pipe_screen *screen)
    assert(screen->context_create);
    tr_scr->base.context_create = trace_screen_context_create;
    tr_scr->base.resource_create = trace_screen_resource_create;
+   tr_scr->base.resource_create_unbacked = trace_screen_resource_create_unbacked;
+   tr_scr->base.resource_bind_backing = trace_screen_resource_bind_backing;
    tr_scr->base.resource_from_handle = trace_screen_resource_from_handle;
+   tr_scr->base.allocate_memory = trace_screen_allocate_memory;
+   tr_scr->base.free_memory = trace_screen_free_memory;
+   tr_scr->base.map_memory = trace_screen_map_memory;
+   tr_scr->base.unmap_memory = trace_screen_unmap_memory;
    SCR_INIT(check_resource_capability);
    tr_scr->base.resource_get_handle = trace_screen_resource_get_handle;
    SCR_INIT(resource_get_param);



More information about the mesa-commit mailing list