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.
  *

Reply via email to