aux/trace: add a bunch of methods for lavapipe

with all of these, lavapipe can now be traced

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9958>
This commit is contained in:
Mike Blumenkrantz 2021-03-31 13:54:17 -04:00 committed by Marge Bot
parent c1270d4845
commit 539c7ca508
2 changed files with 152 additions and 0 deletions

View File

@ -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);

View File

@ -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);