gallium: Add accessor functions to get textures from a st_framebuffer
authorJakob Bornecrantz <jakob@tungstengraphics.com>
Mon, 23 Jun 2008 13:54:25 +0000 (15:54 +0200)
committerJakob Bornecrantz <jakob@tungstengraphics.com>
Mon, 23 Jun 2008 14:08:23 +0000 (16:08 +0200)
src/mesa/state_tracker/st_framebuffer.c
src/mesa/state_tracker/st_public.h

index 7e6db4675767606c70211475a97f9280cb1e2097..1b6e68c2a116b7954cd719b433efc1b52dfb09af 100644 (file)
@@ -230,6 +230,22 @@ st_get_framebuffer_surface(struct st_framebuffer *stfb, uint surfIndex)
    return NULL;
 }
 
+struct pipe_texture *
+st_get_framebuffer_texture(struct st_framebuffer *stfb, uint surfIndex)
+{
+   struct st_renderbuffer *strb;
+
+   assert(surfIndex <= ST_SURFACE_DEPTH);
+
+   /* sanity checks, ST tokens should match Mesa tokens */
+   assert(ST_SURFACE_FRONT_LEFT == BUFFER_FRONT_LEFT);
+   assert(ST_SURFACE_BACK_RIGHT == BUFFER_BACK_RIGHT);
+
+   strb = st_renderbuffer(stfb->Base.Attachment[surfIndex].Renderbuffer);
+   if (strb)
+      return strb->texture;
+   return NULL;
+}
 
 /**
  * This function is to be called prior to SwapBuffers on the given
index b99984215f7154b937e53bd319c7e90a12d2736d..ca4e9577b1bac1be0d49f650bd34da6ca0368e9c 100644 (file)
@@ -74,6 +74,9 @@ void st_set_framebuffer_surface(struct st_framebuffer *stfb,
 struct pipe_surface *st_get_framebuffer_surface(struct st_framebuffer *stfb,
                                                 uint surfIndex);
 
+struct pipe_texture *st_get_framebuffer_texture(struct st_framebuffer *stfb,
+                                                uint surfIndex);
+
 void *st_framebuffer_private( struct st_framebuffer *stfb );
 
 void st_unreference_framebuffer( struct st_framebuffer **stfb );