Mesa (master): u_surfaces: add util_surfaces_peek

Luca Barbieri lb at kemper.freedesktop.org
Wed Aug 11 09:23:27 UTC 2010


Module: Mesa
Branch: master
Commit: 5668526c915a1e31036386d117c536592dae6859
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5668526c915a1e31036386d117c536592dae6859

Author: Luca Barbieri <luca at luca-barbieri.com>
Date:   Tue Aug  3 22:19:30 2010 +0200

u_surfaces: add util_surfaces_peek

Used to find out if a surface exists without creating one.

---

 src/gallium/auxiliary/util/u_surfaces.h |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_surfaces.h b/src/gallium/auxiliary/util/u_surfaces.h
index 79ecd31..af978c7 100644
--- a/src/gallium/auxiliary/util/u_surfaces.h
+++ b/src/gallium/auxiliary/util/u_surfaces.h
@@ -12,6 +12,7 @@ struct util_surfaces
    {
       struct cso_hash *hash;
       struct pipe_surface **array;
+      void* pv;
    } u;
 };
 
@@ -34,6 +35,18 @@ util_surfaces_get(struct util_surfaces *us, unsigned surface_struct_size, struct
    return util_surfaces_do_get(us, surface_struct_size, pscreen, pt, face, level, zslice, flags);
 }
 
+static INLINE struct pipe_surface *
+util_surfaces_peek(struct util_surfaces *us, struct pipe_resource *pt, unsigned face, unsigned level, unsigned zslice)
+{
+   if(!us->u.pv)
+      return 0;
+
+   if(unlikely(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE))
+      return cso_hash_iter_data(cso_hash_find(us->u.hash, ((zslice + face) << 8) | level));
+   else
+      return us->u.array[level];
+}
+
 void util_surfaces_do_detach(struct util_surfaces *us, struct pipe_surface *ps);
 
 static INLINE void




More information about the mesa-commit mailing list