On Wed, Jun 14, 2017 at 11:44 AM, Michel Dänzer <mic...@daenzer.net> wrote: > From: Michel Dänzer <michel.daen...@amd.com> > > It calling itself recursively prevented it from being inlined, resulting > in a copy being generated in every compilation unit referencing it. This > bloated the text segment of the Gallium mega-driver *_dri.so by ~4%, > and might also have impacted performance. > > Fixes: ecd6fce2611e ("mesa/st: support lowering multi-planar YUV") > v2: > * Add comment above pipe_resource_next_reference [Samuel Pitoiset] > v3: > * Use loop to unreference the full chain of resources referenced via > the next members [Timothy Arceri] > v4: > * Stop chasing ->next chain at the first sub-resource which isn't > destroyed [Nicolai Hähnle] > > Signed-off-by: Michel Dänzer <michel.daen...@amd.com> > --- > src/gallium/auxiliary/util/u_inlines.h | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/auxiliary/util/u_inlines.h > b/src/gallium/auxiliary/util/u_inlines.h > index 6a3d5043cf..4fc683a574 100644 > --- a/src/gallium/auxiliary/util/u_inlines.h > +++ b/src/gallium/auxiliary/util/u_inlines.h > @@ -137,8 +137,14 @@ pipe_resource_reference(struct pipe_resource **ptr, > struct pipe_resource *tex) > > if (pipe_reference_described(&(*ptr)->reference, &tex->reference, > > (debug_reference_descriptor)debug_describe_resource)) { > - pipe_resource_reference(&old_tex->next, NULL); > - old_tex->screen->resource_destroy(old_tex->screen, old_tex); > + /* Avoid recursion, which would prevent inlining this function */ > + do { > + struct pipe_resource *next = old_tex->next; > + > + old_tex->screen->resource_destroy(old_tex->screen, old_tex); > + old_tex = next; > + } while (pipe_reference_described(&old_tex->reference, NULL, > + > (debug_reference_descriptor)debug_describe_resource));
Reviewed-by: Marek Olšák <marek.ol...@amd.com> Marek > } > *ptr = tex; > } > -- > 2.11.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev