summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCooper Yuan <cooperyuan@gmail.com>2009-10-09 04:50:06 +0800
committerCooper Yuan <cooperyuan@gmail.com>2009-10-09 04:50:06 +0800
commitbe1f1406b77aeb7d8f73f28b2c10fba17ec079cc (patch)
tree4d4ae60c7bd4ad783442db40d03016ca3f36da4a
parent12de73c5636b662bc84011101981ea05b62e6a00 (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/Makefile1
-rw-r--r--src/gallium/winsys/g3dvl/radeon/radeon_vl.c54
-rw-r--r--src/gallium/winsys/g3dvl/radeon/radeon_vl.h9
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