summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrian <brian.paul@tungstengraphics.com>2007-11-05 09:52:14 -0700
committerBrian <brian.paul@tungstengraphics.com>2007-11-05 09:52:14 -0700
commit616bf3556939d94852b1dfe73f92ef94b10782c4 (patch)
tree948ba9f332ff9db490cdfd4f295f33f371611ec0 /src
parentf221ea658b8aabefb419ad19826906a3afa3e806 (diff)
added st_get_framebuffer_surface() and ST_SURFACE_x tokens
Diffstat (limited to 'src')
-rw-r--r--src/mesa/state_tracker/st_framebuffer.c20
-rw-r--r--src/mesa/state_tracker/st_public.h10
2 files changed, 30 insertions, 0 deletions
diff --git a/src/mesa/state_tracker/st_framebuffer.c b/src/mesa/state_tracker/st_framebuffer.c
index 54ae175e60..326773c505 100644
--- a/src/mesa/state_tracker/st_framebuffer.c
+++ b/src/mesa/state_tracker/st_framebuffer.c
@@ -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;
+}
diff --git a/src/mesa/state_tracker/st_public.h b/src/mesa/state_tracker/st_public.h
index 93239e66d6..acbf54d5ab 100644
--- a/src/mesa/state_tracker/st_public.h
+++ b/src/mesa/state_tracker/st_public.h
@@ -30,6 +30,13 @@
#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,