trace: add context pointer sanity checking
To help catch mixed up context pointer bugs in the future, add a trace_context_check() function and some new assertions. Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
82d62cf04f
commit
2ef530cf68
|
@ -852,6 +852,8 @@ trace_context_sampler_view_destroy(struct pipe_context *_pipe,
|
|||
struct pipe_context *pipe = tr_ctx->pipe;
|
||||
struct pipe_sampler_view *view = tr_view->sampler_view;
|
||||
|
||||
assert(_view->context == _pipe);
|
||||
|
||||
trace_dump_call_begin("pipe_context", "sampler_view_destroy");
|
||||
|
||||
trace_dump_arg(ptr, pipe);
|
||||
|
@ -1610,3 +1612,16 @@ trace_context_create(struct trace_screen *tr_scr,
|
|||
error1:
|
||||
return pipe;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sanity checker: check that the given context really is a
|
||||
* trace context (and not the wrapped driver's context).
|
||||
*/
|
||||
void
|
||||
trace_context_check(const struct pipe_context *pipe)
|
||||
{
|
||||
struct trace_context *tr_ctx = (struct trace_context *) pipe;
|
||||
assert(tr_ctx->base.destroy == trace_context_destroy);
|
||||
}
|
||||
|
||||
|
|
|
@ -50,10 +50,17 @@ struct trace_context
|
|||
};
|
||||
|
||||
|
||||
void
|
||||
trace_context_check(const struct pipe_context *pipe);
|
||||
|
||||
|
||||
static INLINE struct trace_context *
|
||||
trace_context(struct pipe_context *pipe)
|
||||
{
|
||||
assert(pipe);
|
||||
#ifdef DEBUG
|
||||
trace_context_check(pipe);
|
||||
#endif
|
||||
return (struct trace_context *)pipe;
|
||||
}
|
||||
|
||||
|
|
|
@ -108,6 +108,7 @@ error:
|
|||
void
|
||||
trace_surf_destroy(struct trace_surface *tr_surf)
|
||||
{
|
||||
trace_context_check(tr_surf->base.context);
|
||||
pipe_resource_reference(&tr_surf->base.texture, NULL);
|
||||
pipe_surface_reference(&tr_surf->surface, NULL);
|
||||
FREE(tr_surf);
|
||||
|
|
Loading…
Reference in New Issue