diff options
author | Cooper Yuan <cooperyuan@gmail.com> | 2009-10-09 04:50:06 +0800 |
---|---|---|
committer | Cooper Yuan <cooperyuan@gmail.com> | 2009-10-09 04:50:06 +0800 |
commit | be1f1406b77aeb7d8f73f28b2c10fba17ec079cc (patch) | |
tree | 4d4ae60c7bd4ad783442db40d03016ca3f36da4a | |
parent | 12de73c5636b662bc84011101981ea05b62e6a00 (diff) |
xvmc: add vl_screen_create and vl_video_create functions
vl_screen_create is ok, but vl_video_create need to rewrite in order to
create pipe_video_context
-rw-r--r-- | src/gallium/winsys/g3dvl/radeon/Makefile | 1 | ||||
-rw-r--r-- | src/gallium/winsys/g3dvl/radeon/radeon_vl.c | 54 | ||||
-rw-r--r-- | src/gallium/winsys/g3dvl/radeon/radeon_vl.h | 9 |
3 files changed, 31 insertions, 33 deletions
diff --git a/src/gallium/winsys/g3dvl/radeon/Makefile b/src/gallium/winsys/g3dvl/radeon/Makefile index c46af7b50..a27693547 100644 --- a/src/gallium/winsys/g3dvl/radeon/Makefile +++ b/src/gallium/winsys/g3dvl/radeon/Makefile @@ -10,6 +10,7 @@ INCLUDE_DIRS = \ -I$(TOP)/src/mesa \ -I$(TOP)/src/mesa/main \ -I$(TOP)/src/gallium/include \ + -I$(TOP)/src/gallium/include/pipe \ -I$(TOP)/src/gallium/drivers \ -I$(TOP)/src/gallium/drivers/r300 \ -I$(TOP)/src/gallium/auxiliary \ diff --git a/src/gallium/winsys/g3dvl/radeon/radeon_vl.c b/src/gallium/winsys/g3dvl/radeon/radeon_vl.c index 269861602..aa75d2b5f 100644 --- a/src/gallium/winsys/g3dvl/radeon/radeon_vl.c +++ b/src/gallium/winsys/g3dvl/radeon/radeon_vl.c @@ -38,47 +38,33 @@ #include "radeon_r300.h" #include "radeon_winsys_softpipe.h" #include "r300_screen.h" - +#include "p_video_context.h" #include "radeon_vl.h" /* * The following 4 functions are exported to xvmc. */ -int bind_pipe_drawable(struct pipe_context *p_context, Drawable drawable) +Drawable vl_video_bind_drawable(struct pipe_video_context *p_context, + Drawable drawable) { struct radeon_vl_context *rvl_ctx; + Drawable old_drawable; assert(p_context); rvl_ctx = p_context->priv; + old_drawable = rvl_ctx->drawable; rvl_ctx->drawable = drawable; - rvl_ctx->drawable_bound = 1; - - return 0; -} - -int unbind_pipe_drawable(struct pipe_context *p_context) -{ - struct radeon_vl_context *rvl_ctx; - assert (p_context); - rvl_ctx = p_context->priv; - rvl_ctx->drawable_bound = 0; - - return 0; + return old_drawable; } -struct pipe_context* create_pipe_context(Display *display, int screen) +struct pipe_screen *vl_screen_create(Display *display, int screen) { - struct radeon_vl_context *rvl_ctx; - struct r300_winsys *r300; - struct radeon_winsys *p_winsys; - struct pipe_screen *p_screen; - struct pipe_context *p_context; - int drmFD; - - assert(display); - + struct pipe_screen *p_screen; + struct r300_winsys *r300; + struct radeon_winsys *p_winsys; + int drmFD; /* just a temp code, should use dri2 client interface */ drmFD = open("/dev/dri/card0", O_RDWR); @@ -87,12 +73,24 @@ struct pipe_context* create_pipe_context(Display *display, int screen) r300 = radeon_create_r300_winsys(drmFD, p_winsys); p_screen = r300_create_screen(r300); - /* create radeon pipe_context */ - p_context = r300_create_context(p_screen, (struct r300_winsys*)p_screen->winsys); + return p_screen; +} +struct pipe_video_context *vl_video_create(struct pipe_screen *screen, + enum pipe_video_profile profile, + enum pipe_video_chroma_format chr_f, + unsigned int width, + unsigned int height) +{ + struct pipe_video_context *p_context; + struct radeon_vl_context *rvl_ctx; + assert(screen); + assert(width && height); + + /* create radeon pipe_context */ + p_context = r300_create_context(screen, (struct r300_winsys*)screen->winsys); /* create radeon_vl_context*/ rvl_ctx = calloc(1, sizeof(struct radeon_vl_context)); - rvl_ctx->display = display; rvl_ctx->screen = screen; p_context->priv = rvl_ctx; diff --git a/src/gallium/winsys/g3dvl/radeon/radeon_vl.h b/src/gallium/winsys/g3dvl/radeon/radeon_vl.h index 94e5f1e5b..9096a46f4 100644 --- a/src/gallium/winsys/g3dvl/radeon/radeon_vl.h +++ b/src/gallium/winsys/g3dvl/radeon/radeon_vl.h @@ -29,10 +29,9 @@ struct radeon_vl_context { - Display *display; - int screen; - Drawable drawable; - int drawable_bound; + Display *display; + int screen; + Drawable drawable; }; struct radeon_vl_screen @@ -40,4 +39,4 @@ struct radeon_vl_screen struct pipe_screen base; }; -#endif //__RADEON_CONTEXT_VL_H__ +#endif //__RADEON_VL_H__
\ No newline at end of file |