gallium/util: Break recursion in pipe_resource_reference
authorMichel Dänzer <michel.daenzer@amd.com>
Tue, 13 Jun 2017 03:02:59 +0000 (12:02 +0900)
committerMichel Dänzer <michel@daenzer.net>
Thu, 15 Jun 2017 02:24:59 +0000 (11:24 +0900)
commit176e761513f9f9502248c0c8dad133d2d9f28d2d
treebd705b102af98028f26b1a0f9296d4e591bdc623
parent1c00af4264d795bf1fb3d13b7a966722a5984c4a
gallium/util: Break recursion in pipe_resource_reference

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]

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/auxiliary/util/u_inlines.h