Module: Mesa Branch: main Commit: d679154dc021feb1333bf7207d8a26d9db75b921 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d679154dc021feb1333bf7207d8a26d9db75b921
Author: Robert Mader <robert.ma...@collabora.com> Date: Wed Nov 8 15:23:48 2023 +0100 util: Add new helpers for pipe resources They will be handy for drivers supporting multi-planar formats. Cc: mesa-stable Reviewed-by: Italo Nicola <italonic...@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26109> --- src/gallium/auxiliary/util/u_resource.c | 32 ++++++++++++++++++++++++++++++++ src/gallium/auxiliary/util/u_resource.h | 6 ++++++ 2 files changed, 38 insertions(+) diff --git a/src/gallium/auxiliary/util/u_resource.c b/src/gallium/auxiliary/util/u_resource.c index b27c3f3c80b..728a662f09b 100644 --- a/src/gallium/auxiliary/util/u_resource.c +++ b/src/gallium/auxiliary/util/u_resource.c @@ -64,3 +64,35 @@ util_resource_size(const struct pipe_resource *res) return size; } + +/** + * Return the number of the resources. + */ +unsigned +util_resource_num(const struct pipe_resource *res) +{ + const struct pipe_resource *cur; + unsigned count; + + for (count = 0, cur = res; cur; cur = cur->next) + count++; + + return count; +} + +/** + * Return the resource at the given index. + */ +struct pipe_resource * +util_resource_at_index(const struct pipe_resource *res, unsigned index) +{ + const struct pipe_resource *cur; + unsigned count; + + for (count = 0, cur = res; cur; cur = cur->next) { + if (count++ == index) + return (struct pipe_resource *)cur; + } + + return NULL; +} diff --git a/src/gallium/auxiliary/util/u_resource.h b/src/gallium/auxiliary/util/u_resource.h index fe9c1c4d7f0..32e9d158ad0 100644 --- a/src/gallium/auxiliary/util/u_resource.h +++ b/src/gallium/auxiliary/util/u_resource.h @@ -31,6 +31,12 @@ unsigned util_resource_size(const struct pipe_resource *res); +unsigned +util_resource_num(const struct pipe_resource *res); + +struct pipe_resource * +util_resource_at_index(const struct pipe_resource *res, unsigned index); + /** * Return true if the texture target is an array type. *