trace: Separate the trace screen/context vs the original screen/context.

This commit is contained in:
José Fonseca 2008-08-14 10:46:38 +01:00
parent c67f353c0f
commit 3c90678ea6
5 changed files with 34 additions and 32 deletions

View File

@ -959,7 +959,8 @@ trace_context_destroy(struct pipe_context *_pipe)
struct pipe_context *
trace_context_create(struct pipe_context *pipe)
trace_context_create(struct pipe_screen *screen,
struct pipe_context *pipe)
{
struct trace_stream *stream;
struct trace_context *tr_ctx;
@ -971,8 +972,8 @@ trace_context_create(struct pipe_context *pipe)
if(!tr_ctx)
return NULL;
tr_ctx->base.winsys = pipe->winsys;
tr_ctx->base.screen = pipe->screen;
tr_ctx->base.winsys = screen->winsys;
tr_ctx->base.screen = screen;
tr_ctx->base.destroy = trace_context_destroy;
tr_ctx->base.set_edgeflags = trace_context_set_edgeflags;
tr_ctx->base.draw_arrays = trace_context_draw_arrays;
@ -1017,11 +1018,7 @@ trace_context_create(struct pipe_context *pipe)
tr_ctx->base.flush = trace_context_flush;
tr_ctx->pipe = pipe;
tr_ctx->stream = stream = trace_winsys(pipe->winsys)->stream;
/* We don't want to trace the internal pipe calls */
pipe->winsys = trace_winsys(pipe->winsys)->winsys;
pipe->screen = trace_screen(pipe->screen)->screen;
tr_ctx->stream = stream = trace_screen(screen)->stream;
trace_dump_call_begin(stream, "", "pipe_context_create");
trace_dump_arg_begin(stream, "screen");

View File

@ -57,7 +57,8 @@ trace_context(struct pipe_context *pipe)
struct pipe_context *
trace_context_create(struct pipe_context *pipe);
trace_context_create(struct pipe_screen *screen,
struct pipe_context *pipe);
#endif /* TR_CONTEXT_H_ */

View File

@ -338,7 +338,11 @@ trace_screen_destroy(struct pipe_screen *_screen)
screen->destroy(screen);
trace_dump_call_end(stream);
trace_dump_trace_end(stream);
trace_stream_close(stream);
FREE(tr_scr);
}
@ -348,6 +352,7 @@ trace_screen_create(struct pipe_screen *screen)
{
struct trace_stream *stream;
struct trace_screen *tr_scr;
struct pipe_winsys *winsys;
if(!debug_get_bool_option("GALLIUM_TRACE", FALSE))
return screen;
@ -356,7 +361,17 @@ trace_screen_create(struct pipe_screen *screen)
if(!tr_scr)
return NULL;
tr_scr->base.winsys = screen->winsys;
tr_scr->stream = stream = trace_stream_create("gallium", "trace");
if(!tr_scr->stream)
return NULL;
trace_dump_trace_begin(stream, 0);
winsys = trace_winsys_create(stream, screen->winsys);
if(!winsys)
return NULL;
tr_scr->base.winsys = winsys;
tr_scr->base.destroy = trace_screen_destroy;
tr_scr->base.get_name = trace_screen_get_name;
tr_scr->base.get_vendor = trace_screen_get_vendor;
@ -372,10 +387,7 @@ trace_screen_create(struct pipe_screen *screen)
tr_scr->base.surface_unmap = trace_screen_surface_unmap;
tr_scr->screen = screen;
tr_scr->stream = stream = trace_winsys(screen->winsys)->stream;
/* We don't want to trace the internal pipe calls */
screen->winsys = trace_winsys(screen->winsys)->winsys;
tr_scr->stream = stream = trace_winsys(winsys)->stream;
trace_dump_call_begin(stream, "", "pipe_screen_create");
trace_dump_arg_begin(stream, "winsys");

View File

@ -393,28 +393,24 @@ trace_winsys_destroy(struct pipe_winsys *_winsys)
trace_dump_arg(stream, ptr, winsys);
winsys->destroy(winsys);
/*
winsys->destroy(winsys);
*/
trace_dump_call_end(stream);
trace_dump_trace_end(stream);
hash_table_destroy(tr_ws->buffer_maps);
trace_stream_close(tr_ws->stream);
FREE(tr_ws);
}
struct pipe_winsys *
trace_winsys_create(struct pipe_winsys *winsys)
trace_winsys_create(struct trace_stream *stream,
struct pipe_winsys *winsys)
{
struct trace_stream *stream;
struct trace_winsys *tr_ws;
if(!debug_get_bool_option("GALLIUM_TRACE", FALSE))
return winsys;
struct trace_winsys *tr_ws;
tr_ws = CALLOC_STRUCT(trace_winsys);
if(!tr_ws)
@ -436,18 +432,13 @@ trace_winsys_create(struct pipe_winsys *winsys)
tr_ws->base.fence_finish = trace_winsys_fence_finish;
tr_ws->winsys = winsys;
tr_ws->stream = stream = trace_stream_create("gallium", "trace");
if(!tr_ws->stream)
return NULL;
tr_ws->stream = stream;
tr_ws->buffer_maps = hash_table_create(trace_buffer_hash,
trace_buffer_compare);
if(!tr_ws->buffer_maps)
return NULL;
trace_dump_trace_begin(tr_ws->stream, 0);
trace_dump_call_begin(stream, "", "pipe_winsys_create");
trace_dump_ret(stream, ptr, winsys);
trace_dump_call_end(stream);

View File

@ -60,7 +60,8 @@ trace_winsys(struct pipe_winsys *winsys)
struct pipe_winsys *
trace_winsys_create(struct pipe_winsys *winsys);
trace_winsys_create(struct trace_stream *stream,
struct pipe_winsys *winsys);
#endif /* TR_WINSYS_H_ */