added st_get_framebuffer_surface() and ST_SURFACE_x tokens
authorBrian <brian.paul@tungstengraphics.com>
Mon, 5 Nov 2007 16:52:14 +0000 (09:52 -0700)
committerBrian <brian.paul@tungstengraphics.com>
Mon, 5 Nov 2007 16:52:14 +0000 (09:52 -0700)
src/mesa/state_tracker/st_framebuffer.c
src/mesa/state_tracker/st_public.h

index 54ae175..326773c 100644 (file)
@@ -112,3 +112,23 @@ void st_unreference_framebuffer( struct st_framebuffer **stfb )
 }
 
 
+
+/**
+ * Return the pipe_surface for the given renderbuffer.
+ */
+struct pipe_surface *
+st_get_framebuffer_surface(struct st_framebuffer *stfb, uint surfIndex)
+{
+   struct st_renderbuffer *strb;
+
+   assert(surfIndex <= ST_SURFACE_BACK_RIGHT);
+
+   /* 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->surface;
+   return NULL;
+}
index 93239e6..acbf54d 100644 (file)
 
 #include "mtypes.h"
 
+
+#define ST_SURFACE_FRONT_LEFT   0
+#define ST_SURFACE_BACK_LEFT    1
+#define ST_SURFACE_FRONT_RIGHT  2
+#define ST_SURFACE_BACK_RIGHT   3
+
+
 struct st_context;
 struct st_framebuffer;
 
@@ -51,6 +58,9 @@ struct st_framebuffer *st_create_framebuffer( const __GLcontextModes *visual );
 void st_resize_framebuffer( struct st_framebuffer *stfb,
                             GLuint width, GLuint height );
 
+struct pipe_surface *st_get_framebuffer_surface(struct st_framebuffer *stfb,
+                                                uint surfIndex);
+
 void st_unreference_framebuffer( struct st_framebuffer **stfb );
 
 void st_make_current(struct st_context *st,