X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Ftrace%2Ftr_drm.c;h=eaa47df4066e28c8cc820ac6ff411c3f52ce651c;hb=1318848f782cce716d6376ca13aebf68b728e24c;hp=93c569c73a8d1630553d5095ccf602f6abdeed60;hpb=d09a19bf6e09eb0c8908e9b5378962ac17bcbc4c;p=mesa.git diff --git a/src/gallium/drivers/trace/tr_drm.c b/src/gallium/drivers/trace/tr_drm.c index 93c569c73a8..eaa47df4066 100644 --- a/src/gallium/drivers/trace/tr_drm.c +++ b/src/gallium/drivers/trace/tr_drm.c @@ -28,11 +28,9 @@ #include "state_tracker/drm_api.h" #include "util/u_memory.h" -#include "trace/tr_drm.h" -#include "trace/tr_screen.h" -#include "trace/tr_context.h" -#include "trace/tr_buffer.h" -#include "trace/tr_texture.h" +#include "tr_drm.h" +#include "tr_screen.h" +#include "tr_public.h" struct trace_drm_api { @@ -49,7 +47,7 @@ trace_drm_api(struct drm_api *_api) static struct pipe_screen * trace_drm_create_screen(struct drm_api *_api, int fd, - struct drm_create_screen_arg *arg) + struct drm_create_screen_arg *arg) { struct trace_drm_api *tr_api = trace_drm_api(_api); struct drm_api *api = tr_api->api; @@ -62,111 +60,8 @@ trace_drm_create_screen(struct drm_api *_api, int fd, screen = api->create_screen(api, fd, arg); - return trace_screen_create(screen); -} -static struct pipe_context * -trace_drm_create_context(struct drm_api *_api, - struct pipe_screen *_screen) -{ - struct trace_screen *tr_screen = trace_screen(_screen); - struct trace_drm_api *tr_api = trace_drm_api(_api); - struct pipe_screen *screen = tr_screen->screen; - struct drm_api *api = tr_api->api; - struct pipe_context *pipe; - - /* TODO trace call */ - - pipe = api->create_context(api, screen); - - pipe = trace_context_create(_screen, pipe); - - return pipe; -} - -static boolean -trace_drm_buffer_from_texture(struct drm_api *_api, - struct pipe_texture *_texture, - struct pipe_buffer **_buffer, - unsigned *stride) -{ - struct trace_texture *tr_texture = trace_texture(_texture); - struct trace_drm_api *tr_api = trace_drm_api(_api); - struct pipe_texture *texture = tr_texture->texture; - struct drm_api *api = tr_api->api; - struct pipe_buffer *buffer = NULL; - boolean result; - - /* TODO trace call */ - - result = api->buffer_from_texture(api, texture, &buffer, stride); - - if (result && _buffer) - buffer = trace_buffer_create(trace_screen(_texture->screen), buffer); - - if (_buffer) - *_buffer = buffer; - else - pipe_buffer_reference(&buffer, NULL); - - return result; -} - -static struct pipe_buffer * -trace_drm_buffer_from_handle(struct drm_api *_api, - struct pipe_screen *_screen, - const char *name, - unsigned handle) -{ - struct trace_screen *tr_screen = trace_screen(_screen); - struct trace_drm_api *tr_api = trace_drm_api(_api); - struct pipe_screen *screen = tr_screen->screen; - struct drm_api *api = tr_api->api; - struct pipe_buffer *result; - - /* TODO trace call */ - - result = api->buffer_from_handle(api, screen, name, handle); - - result = trace_buffer_create(trace_screen(_screen), result); - - return result; -} - -static boolean -trace_drm_handle_from_buffer(struct drm_api *_api, - struct pipe_screen *_screen, - struct pipe_buffer *_buffer, - unsigned *handle) -{ - struct trace_screen *tr_screen = trace_screen(_screen); - struct trace_buffer *tr_buffer = trace_buffer(_buffer); - struct trace_drm_api *tr_api = trace_drm_api(_api); - struct pipe_screen *screen = tr_screen->screen; - struct pipe_buffer *buffer = tr_buffer->buffer; - struct drm_api *api = tr_api->api; - - /* TODO trace call */ - - return api->handle_from_buffer(api, screen, buffer, handle); -} - -static boolean -trace_drm_global_handle_from_buffer(struct drm_api *_api, - struct pipe_screen *_screen, - struct pipe_buffer *_buffer, - unsigned *handle) -{ - struct trace_screen *tr_screen = trace_screen(_screen); - struct trace_buffer *tr_buffer = trace_buffer(_buffer); - struct trace_drm_api *tr_api = trace_drm_api(_api); - struct pipe_screen *screen = tr_screen->screen; - struct pipe_buffer *buffer = tr_buffer->buffer; - struct drm_api *api = tr_api->api; - - /* TODO trace call */ - - return api->global_handle_from_buffer(api, screen, buffer, handle); + return trace_screen_create(screen); } static void @@ -174,7 +69,9 @@ trace_drm_destroy(struct drm_api *_api) { struct trace_drm_api *tr_api = trace_drm_api(_api); struct drm_api *api = tr_api->api; - api->destroy(api); + + if (api->destroy) + api->destroy(api); free(tr_api); } @@ -195,12 +92,9 @@ trace_drm_create(struct drm_api *api) if (!tr_api) goto error; + tr_api->base.name = api->name; + tr_api->base.driver_name = api->driver_name; tr_api->base.create_screen = trace_drm_create_screen; - tr_api->base.create_context = trace_drm_create_context; - tr_api->base.buffer_from_texture = trace_drm_buffer_from_texture; - tr_api->base.buffer_from_handle = trace_drm_buffer_from_handle; - tr_api->base.handle_from_buffer = trace_drm_handle_from_buffer; - tr_api->base.global_handle_from_buffer = trace_drm_global_handle_from_buffer; tr_api->base.destroy = trace_drm_destroy; tr_api->api = api;