From d679154dc021feb1333bf7207d8a26d9db75b921 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Wed, 8 Nov 2023 15:23:48 +0100 Subject: [PATCH] util: Add new helpers for pipe resources They will be handy for drivers supporting multi-planar formats. Cc: mesa-stable Reviewed-by: Italo Nicola Part-of: --- 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. *