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