diff options
-rw-r--r-- | src/mesa/state_tracker/st_framebuffer.c | 20 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_public.h | 10 |
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 54ae175e60e..326773c505e 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 93239e66d63..acbf54d5ab3 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, |