Both patches look great to me. Reviewed-by: Jose Fonseca <jfons...@vmware.com>
----- Original Message ----- > To help catch mixed up context pointer bugs in the future, add a > trace_context_check() function and some new assertions. > --- > src/gallium/drivers/trace/tr_context.c | 15 +++++++++++++++ > src/gallium/drivers/trace/tr_context.h | 7 +++++++ > src/gallium/drivers/trace/tr_texture.c | 1 + > 3 files changed, 23 insertions(+), 0 deletions(-) > > diff --git a/src/gallium/drivers/trace/tr_context.c > b/src/gallium/drivers/trace/tr_context.c > index b88f379..538ff4a 100644 > --- a/src/gallium/drivers/trace/tr_context.c > +++ b/src/gallium/drivers/trace/tr_context.c > @@ -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); > +} > + > diff --git a/src/gallium/drivers/trace/tr_context.h > b/src/gallium/drivers/trace/tr_context.h > index dadbe56..90883d7 100644 > --- a/src/gallium/drivers/trace/tr_context.h > +++ b/src/gallium/drivers/trace/tr_context.h > @@ -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; > } > > diff --git a/src/gallium/drivers/trace/tr_texture.c > b/src/gallium/drivers/trace/tr_texture.c > index aae1338..f6bc386 100644 > --- a/src/gallium/drivers/trace/tr_texture.c > +++ b/src/gallium/drivers/trace/tr_texture.c > @@ -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); > -- > 1.7.3.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev