trace: Correct/cleanup.

Observe the actual type hierarchy and polymorphism of sampler views and
surface state.

s/texture/resource/

etc.
This commit is contained in:
José Fonseca 2011-04-05 20:13:44 +01:00
parent 391f7147e7
commit c0f6bfd489
6 changed files with 114 additions and 74 deletions

View file

@ -47,15 +47,15 @@ static INLINE struct pipe_resource *
trace_resource_unwrap(struct trace_context *tr_ctx,
struct pipe_resource *resource)
{
struct trace_resource *tr_tex;
struct trace_resource *tr_res;
if(!resource)
return NULL;
tr_tex = trace_resource(resource);
tr_res = trace_resource(resource);
assert(tr_tex->resource);
return tr_tex->resource;
assert(tr_res->resource);
return tr_res->resource;
}
@ -832,19 +832,22 @@ trace_create_sampler_view(struct pipe_context *_pipe,
const struct pipe_sampler_view *templ)
{
struct trace_context *tr_ctx = trace_context(_pipe);
struct trace_resource *tr_tex = trace_resource(_resource);
struct trace_resource *tr_res = trace_resource(_resource);
struct pipe_context *pipe = tr_ctx->pipe;
struct pipe_resource *texture = tr_tex->resource;
struct pipe_resource *resource = tr_res->resource;
struct pipe_sampler_view *result;
struct trace_sampler_view *tr_view;
trace_dump_call_begin("pipe_context", "create_sampler_view");
trace_dump_arg(ptr, pipe);
trace_dump_arg(ptr, texture);
trace_dump_arg(sampler_view_template, templ);
trace_dump_arg(ptr, resource);
result = pipe->create_sampler_view(pipe, texture, templ);
trace_dump_arg_begin("templ");
trace_dump_sampler_view_template(templ, resource->target);
trace_dump_arg_end();
result = pipe->create_sampler_view(pipe, resource, templ);
trace_dump_ret(ptr, result);
@ -895,29 +898,32 @@ trace_sampler_view_destroy(struct pipe_context *_pipe,
static struct pipe_surface *
trace_create_surface(struct pipe_context *_pipe,
struct pipe_resource *_texture,
struct pipe_resource *_resource,
const struct pipe_surface *surf_tmpl)
{
struct trace_context *tr_ctx = trace_context(_pipe);
struct trace_resource *tr_tex = trace_resource(_texture);
struct trace_resource *tr_res = trace_resource(_resource);
struct pipe_context *pipe = tr_ctx->pipe;
struct pipe_resource *texture = tr_tex->resource;
struct pipe_resource *resource = tr_res->resource;
struct pipe_surface *result = NULL;
trace_dump_call_begin("pipe_context", "create_surface");
trace_dump_arg(ptr, pipe);
trace_dump_arg(ptr, texture);
/* hmm some values unitialized there */
trace_dump_arg(surface, surf_tmpl);
trace_dump_arg(ptr, resource);
trace_dump_arg_begin("surf_tmpl");
trace_dump_surface_template(surf_tmpl, resource->target);
trace_dump_arg_end();
result = pipe->create_surface(pipe, texture, surf_tmpl);
result = pipe->create_surface(pipe, resource, surf_tmpl);
trace_dump_ret(ptr, result);
trace_dump_call_end();
result = trace_surf_create(tr_tex, result);
result = trace_surf_create(tr_res, result);
return result;
}
@ -1231,9 +1237,9 @@ trace_context_get_transfer(struct pipe_context *_context,
const struct pipe_box *box)
{
struct trace_context *tr_context = trace_context(_context);
struct trace_resource *tr_tex = trace_resource(_resource);
struct trace_resource *tr_res = trace_resource(_resource);
struct pipe_context *context = tr_context->pipe;
struct pipe_resource *texture = tr_tex->resource;
struct pipe_resource *texture = tr_res->resource;
struct pipe_transfer *result = NULL;
assert(texture->screen == context->screen);
@ -1246,7 +1252,7 @@ trace_context_get_transfer(struct pipe_context *_context,
result = context->get_transfer(context, texture, level, usage, box);
if (result)
result = trace_transfer_create(tr_context, tr_tex, result);
result = trace_transfer_create(tr_context, tr_res, result);
return result;
}
@ -1360,9 +1366,9 @@ trace_context_transfer_inline_write(struct pipe_context *_context,
unsigned layer_stride)
{
struct trace_context *tr_context = trace_context(_context);
struct trace_resource *tr_tex = trace_resource(_resource);
struct trace_resource *tr_res = trace_resource(_resource);
struct pipe_context *context = tr_context->pipe;
struct pipe_resource *resource = tr_tex->resource;
struct pipe_resource *resource = tr_res->resource;
assert(resource->screen == context->screen);
@ -1397,9 +1403,9 @@ static void trace_redefine_user_buffer(struct pipe_context *_context,
unsigned offset, unsigned size)
{
struct trace_context *tr_context = trace_context(_context);
struct trace_resource *tr_tex = trace_resource(_resource);
struct trace_resource *tr_res = trace_resource(_resource);
struct pipe_context *context = tr_context->pipe;
struct pipe_resource *resource = tr_tex->resource;
struct pipe_resource *resource = tr_res->resource;
assert(resource->screen == context->screen);

View file

@ -453,7 +453,8 @@ void trace_dump_sampler_state(const struct pipe_sampler_state *state)
}
void trace_dump_sampler_view_template(const struct pipe_sampler_view *state)
void trace_dump_sampler_view_template(const struct pipe_sampler_view *state,
enum pipe_texture_target target)
{
if (!trace_dumping_enabled_locked())
return;
@ -466,13 +467,29 @@ void trace_dump_sampler_view_template(const struct pipe_sampler_view *state)
trace_dump_struct_begin("pipe_sampler_view");
trace_dump_member(format, state, format);
/* XXX */
trace_dump_member(uint, state, u.tex.first_level);
trace_dump_member(uint, state, u.tex.last_level);
trace_dump_member(uint, state, u.tex.first_layer);
trace_dump_member(uint, state, u.tex.last_layer);
trace_dump_member(uint, state, u.buf.first_element);
trace_dump_member(uint, state, u.buf.last_element);
trace_dump_member_begin("u");
trace_dump_struct_begin(""); /* anonymous */
if (target == PIPE_BUFFER) {
trace_dump_member_begin("buf");
trace_dump_struct_begin(""); /* anonymous */
trace_dump_member(uint, &state->u.buf, first_element);
trace_dump_member(uint, &state->u.buf, last_element);
trace_dump_struct_end(); /* anonymous */
trace_dump_member_end(); /* buf */
} else {
trace_dump_member_begin("tex");
trace_dump_struct_begin(""); /* anonymous */
trace_dump_member(uint, &state->u.tex, first_layer);
trace_dump_member(uint, &state->u.tex, last_layer);
trace_dump_member(uint, &state->u.tex, first_level);
trace_dump_member(uint, &state->u.tex, last_level);
trace_dump_struct_end(); /* anonymous */
trace_dump_member_end(); /* tex */
}
trace_dump_struct_end(); /* anonymous */
trace_dump_member_end(); /* u */
trace_dump_member(uint, state, swizzle_r);
trace_dump_member(uint, state, swizzle_g);
trace_dump_member(uint, state, swizzle_b);
@ -482,7 +499,8 @@ void trace_dump_sampler_view_template(const struct pipe_sampler_view *state)
}
void trace_dump_surface(const struct pipe_surface *state)
void trace_dump_surface_template(const struct pipe_surface *state,
enum pipe_texture_target target)
{
if (!trace_dumping_enabled_locked())
return;
@ -500,12 +518,26 @@ void trace_dump_surface(const struct pipe_surface *state)
trace_dump_member(uint, state, usage);
trace_dump_member(ptr, state, texture);
trace_dump_member(uint, state, u.tex.level);
trace_dump_member(uint, state, u.tex.first_layer);
trace_dump_member(uint, state, u.tex.last_layer);
trace_dump_member(uint, state, u.buf.first_element);
trace_dump_member(uint, state, u.buf.last_element);
trace_dump_member_begin("u");
trace_dump_struct_begin(""); /* anonymous */
if (target == PIPE_BUFFER) {
trace_dump_member_begin("buf");
trace_dump_struct_begin(""); /* anonymous */
trace_dump_member(uint, &state->u.buf, first_element);
trace_dump_member(uint, &state->u.buf, last_element);
trace_dump_struct_end(); /* anonymous */
trace_dump_member_end(); /* buf */
} else {
trace_dump_member_begin("tex");
trace_dump_struct_begin(""); /* anonymous */
trace_dump_member(uint, &state->u.tex, level);
trace_dump_member(uint, &state->u.tex, first_layer);
trace_dump_member(uint, &state->u.tex, last_layer);
trace_dump_struct_end(); /* anonymous */
trace_dump_member_end(); /* tex */
}
trace_dump_struct_end(); /* anonymous */
trace_dump_member_end(); /* u */
trace_dump_struct_end();
}

View file

@ -65,9 +65,11 @@ void trace_dump_framebuffer_state(const struct pipe_framebuffer_state *state);
void trace_dump_sampler_state(const struct pipe_sampler_state *state);
void trace_dump_sampler_view_template(const struct pipe_sampler_view *view);
void trace_dump_sampler_view_template(const struct pipe_sampler_view *view,
enum pipe_texture_target target);
void trace_dump_surface(const struct pipe_surface *state);
void trace_dump_surface_template(const struct pipe_surface *state,
enum pipe_texture_target target);
void trace_dump_transfer(const struct pipe_transfer *state);

View file

@ -117,7 +117,7 @@ trace_screen_get_shader_param(struct pipe_screen *_screen, unsigned shader,
trace_dump_call_begin("pipe_screen", "get_shader_param");
trace_dump_arg(ptr, screen);
trace_dump_arg(int, shader);
trace_dump_arg(uint, shader);
trace_dump_arg(int, param);
result = screen->get_shader_param(screen, shader, param);
@ -282,40 +282,40 @@ trace_screen_resource_from_handle(struct pipe_screen *_screen,
static boolean
trace_screen_resource_get_handle(struct pipe_screen *_screen,
struct pipe_resource *_texture,
struct pipe_resource *_resource,
struct winsys_handle *handle)
{
struct trace_screen *tr_screen = trace_screen(_screen);
struct trace_resource *tr_texture = trace_resource(_texture);
struct trace_resource *tr_resource = trace_resource(_resource);
struct pipe_screen *screen = tr_screen->screen;
struct pipe_resource *texture = tr_texture->resource;
struct pipe_resource *resource = tr_resource->resource;
/* TODO trace call */
return screen->resource_get_handle(screen, texture, handle);
return screen->resource_get_handle(screen, resource, handle);
}
static void
trace_screen_resource_destroy(struct pipe_screen *_screen,
struct pipe_resource *_texture)
struct pipe_resource *_resource)
{
struct trace_screen *tr_scr = trace_screen(_screen);
struct trace_resource *tr_tex = trace_resource(_texture);
struct trace_resource *tr_res = trace_resource(_resource);
struct pipe_screen *screen = tr_scr->screen;
struct pipe_resource *texture = tr_tex->resource;
struct pipe_resource *resource = tr_res->resource;
assert(texture->screen == screen);
assert(resource->screen == screen);
trace_dump_call_begin("pipe_screen", "texture_destroy");
trace_dump_call_begin("pipe_screen", "resource_destroy");
trace_dump_arg(ptr, screen);
trace_dump_arg(ptr, texture);
trace_dump_arg(ptr, resource);
trace_dump_call_end();
trace_resource_destroy(tr_scr, tr_tex);
trace_resource_destroy(tr_scr, tr_res);
}

View file

@ -39,24 +39,24 @@ struct pipe_resource *
trace_resource_create(struct trace_screen *tr_scr,
struct pipe_resource *texture)
{
struct trace_resource *tr_tex;
struct trace_resource *tr_res;
if(!texture)
goto error;
assert(texture->screen == tr_scr->screen);
tr_tex = CALLOC_STRUCT(trace_resource);
if(!tr_tex)
tr_res = CALLOC_STRUCT(trace_resource);
if(!tr_res)
goto error;
memcpy(&tr_tex->base, texture, sizeof(struct pipe_resource));
memcpy(&tr_res->base, texture, sizeof(struct pipe_resource));
pipe_reference_init(&tr_tex->base.reference, 1);
tr_tex->base.screen = &tr_scr->base;
tr_tex->resource = texture;
pipe_reference_init(&tr_res->base.reference, 1);
tr_res->base.screen = &tr_scr->base;
tr_res->resource = texture;
return &tr_tex->base;
return &tr_res->base;
error:
pipe_resource_reference(&texture, NULL);
@ -66,15 +66,15 @@ error:
void
trace_resource_destroy(struct trace_screen *tr_scr,
struct trace_resource *tr_tex)
struct trace_resource *tr_res)
{
pipe_resource_reference(&tr_tex->resource, NULL);
FREE(tr_tex);
pipe_resource_reference(&tr_res->resource, NULL);
FREE(tr_res);
}
struct pipe_surface *
trace_surf_create(struct trace_resource *tr_tex,
trace_surf_create(struct trace_resource *tr_res,
struct pipe_surface *surface)
{
struct trace_surface *tr_surf;
@ -82,7 +82,7 @@ trace_surf_create(struct trace_resource *tr_tex,
if(!surface)
goto error;
assert(surface->texture == tr_tex->resource);
assert(surface->texture == tr_res->resource);
tr_surf = CALLOC_STRUCT(trace_surface);
if(!tr_surf)
@ -92,7 +92,7 @@ trace_surf_create(struct trace_resource *tr_tex,
pipe_reference_init(&tr_surf->base.reference, 1);
tr_surf->base.texture = NULL;
pipe_resource_reference(&tr_surf->base.texture, &tr_tex->base);
pipe_resource_reference(&tr_surf->base.texture, &tr_res->base);
tr_surf->surface = surface;
return &tr_surf->base;
@ -114,7 +114,7 @@ trace_surf_destroy(struct trace_surface *tr_surf)
struct pipe_transfer *
trace_transfer_create(struct trace_context *tr_ctx,
struct trace_resource *tr_tex,
struct trace_resource *tr_res,
struct pipe_transfer *transfer)
{
struct trace_transfer *tr_trans;
@ -122,7 +122,7 @@ trace_transfer_create(struct trace_context *tr_ctx,
if(!transfer)
goto error;
assert(transfer->resource == tr_tex->resource);
assert(transfer->resource == tr_res->resource);
tr_trans = CALLOC_STRUCT(trace_transfer);
if(!tr_trans)
@ -133,8 +133,8 @@ trace_transfer_create(struct trace_context *tr_ctx,
tr_trans->base.resource = NULL;
tr_trans->transfer = transfer;
pipe_resource_reference(&tr_trans->base.resource, &tr_tex->base);
assert(tr_trans->base.resource == &tr_tex->base);
pipe_resource_reference(&tr_trans->base.resource, &tr_res->base);
assert(tr_trans->base.resource == &tr_res->base);
return &tr_trans->base;

View file

@ -122,10 +122,10 @@ trace_resource_create(struct trace_screen *tr_scr,
void
trace_resource_destroy(struct trace_screen *tr_scr,
struct trace_resource *tr_tex);
struct trace_resource *tr_res);
struct pipe_surface *
trace_surf_create(struct trace_resource *tr_tex,
trace_surf_create(struct trace_resource *tr_res,
struct pipe_surface *surface);
void
@ -133,7 +133,7 @@ trace_surf_destroy(struct trace_surface *tr_surf);
struct pipe_transfer *
trace_transfer_create(struct trace_context *tr_ctx,
struct trace_resource *tr_tex,
struct trace_resource *tr_res,
struct pipe_transfer *transfer);
void