summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/auxiliary/util/u_inlines.h12
-rw-r--r--src/gallium/auxiliary/util/u_surfaces.c1
2 files changed, 10 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/util/u_inlines.h b/src/gallium/auxiliary/util/u_inlines.h
index b2a0408a60e..089adcf3827 100644
--- a/src/gallium/auxiliary/util/u_inlines.h
+++ b/src/gallium/auxiliary/util/u_inlines.h
@@ -122,9 +122,8 @@ pipe_sampler_view_reference(struct pipe_sampler_view **ptr, struct pipe_sampler_
*ptr = view;
}
-/* you have to call pipe_reference_init(&ps->reference, 1) yourself if it is just allocated */
static INLINE void
-pipe_surface_init(struct pipe_surface* ps, struct pipe_resource *pt,
+pipe_surface_reset(struct pipe_surface* ps, struct pipe_resource *pt,
unsigned face, unsigned level, unsigned zslice, unsigned flags)
{
pipe_resource_reference(&ps->texture, pt);
@@ -137,6 +136,15 @@ pipe_surface_init(struct pipe_surface* ps, struct pipe_resource *pt,
ps->zslice = zslice;
}
+static INLINE void
+pipe_surface_init(struct pipe_surface* ps, struct pipe_resource *pt,
+ unsigned face, unsigned level, unsigned zslice, unsigned flags)
+{
+ ps->texture = 0;
+ pipe_reference_init(&ps->reference, 1);
+ pipe_surface_reset(ps, pt, face, level, zslice, flags);
+}
+
/*
* Convenience wrappers for screen buffer functions.
*/
diff --git a/src/gallium/auxiliary/util/u_surfaces.c b/src/gallium/auxiliary/util/u_surfaces.c
index 056b8f23418..ddfc7a9d28c 100644
--- a/src/gallium/auxiliary/util/u_surfaces.c
+++ b/src/gallium/auxiliary/util/u_surfaces.c
@@ -50,7 +50,6 @@ util_surfaces_do_get(struct util_surfaces *us, unsigned surface_struct_size, str
if(!ps)
return NULL;
- pipe_reference_init(&ps->reference, 1);
pipe_surface_init(ps, pt, face, level, zslice, flags);
ps->offset = ~0;