summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2011-07-18 17:03:12 +0000
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2011-07-18 15:49:34 +0000
commit31ce346a2983bcb25091b53171e02afd62558c90 (patch)
treea08cd1feeea43690473b0d80f09e32e1ce165c50
parent6ba1aca2c3e226ec3e09a1471ffc3881b1ca99d1 (diff)
Use dri_state vfuncs directly in video drivers
So i965_drv_video doesnt need to link again libva-x11.so Also add getDrawable as new dri_state vfunc.
-rw-r--r--i965_drv_video/Makefile.am2
-rw-r--r--i965_drv_video/i965_drv_video.c8
-rw-r--r--va/x11/dri1_util.c1
-rw-r--r--va/x11/dri2_util.c1
-rw-r--r--va/x11/va_dricommon.c4
-rw-r--r--va/x11/va_dricommon.h1
6 files changed, 12 insertions, 5 deletions
diff --git a/i965_drv_video/Makefile.am b/i965_drv_video/Makefile.am
index f75a4b8..541e4af 100644
--- a/i965_drv_video/Makefile.am
+++ b/i965_drv_video/Makefile.am
@@ -27,7 +27,7 @@ AM_CFLAGS = -Wall -I$(top_srcdir) -I$(top_srcdir)/va -I$(top_srcdir)/va/x11 -DPT
i965_drv_video_la_LTLIBRARIES = i965_drv_video.la
i965_drv_video_ladir = @LIBVA_DRIVERS_PATH@
i965_drv_video_la_LDFLAGS = -module -avoid-version -no-undefined -Wl,--no-undefined @DRM_LIBS@ -ldrm_intel
-i965_drv_video_la_LIBADD = ../va/libva-x11.la -lpthread
+i965_drv_video_la_LIBADD = -lpthread
i965_drv_video_la_SOURCES = \
object_heap.c \
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index 26b07a2..68748cb 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -2261,10 +2261,9 @@ i965_PutSurface(VADriverContextP ctx,
_i965LockMutex(&i965->render_mutex);
- dri_drawable = dri_get_drawable(ctx, (Drawable)draw);
+ dri_drawable = dri_state->getDrawable(ctx, draw);
assert(dri_drawable);
-
- buffer = dri_get_rendering_buffer(ctx, dri_drawable);
+ buffer = dri_state->getRenderingBuffer(ctx, dri_drawable);
assert(buffer);
dest_region = render_state->draw_region;
@@ -2321,7 +2320,8 @@ i965_PutSurface(VADriverContextP ctx,
intel_render_put_subpicture(ctx, surface, &src_rect, &dst_rect);
}
- dri_swap_buffer(ctx, dri_drawable);
+ dri_state->swapBuffer(ctx, dri_drawable);
+
obj_surface->flags |= SURFACE_DISPLAYED;
if ((obj_surface->flags & SURFACE_ALL_MASK) == SURFACE_DISPLAYED) {
diff --git a/va/x11/dri1_util.c b/va/x11/dri1_util.c
index d9afca6..b513ea1 100644
--- a/va/x11/dri1_util.c
+++ b/va/x11/dri1_util.c
@@ -132,6 +132,7 @@ isDRI1Connected(VADriverContextP ctx, char **driver_name)
dri_state->swapBuffer = dri1SwapBuffer;
dri_state->getRenderingBuffer = dri1GetRenderingBuffer;
dri_state->close = dri1Close;
+ dri_state->getDrawable = dri_get_drawable;
return True;
diff --git a/va/x11/dri2_util.c b/va/x11/dri2_util.c
index 8a6dd4f..df82b3e 100644
--- a/va/x11/dri2_util.c
+++ b/va/x11/dri2_util.c
@@ -191,6 +191,7 @@ isDRI2Connected(VADriverContextP ctx, char **driver_name)
dri_state->swapBuffer = dri2SwapBuffer;
dri_state->getRenderingBuffer = dri2GetRenderingBuffer;
dri_state->close = dri2Close;
+ dri_state->getDrawable = dri_get_drawable;
gsDRI2SwapAvailable = (minor >= 2);
if (device_name)
diff --git a/va/x11/va_dricommon.c b/va/x11/va_dricommon.c
index 019cae5..603354b 100644
--- a/va/x11/va_dricommon.c
+++ b/va/x11/va_dricommon.c
@@ -97,6 +97,10 @@ dri_get_drawable(VADriverContextP ctx, void *drawable)
return do_drawable_hash(ctx, (XID) drawable);
}
+/* FIXME: remove swap_buffer and get_rendering_buffer
+ * use dri_state vfuncs directly
+ */
+
void
dri_swap_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable)
{
diff --git a/va/x11/va_dricommon.h b/va/x11/va_dricommon.h
index 3614ec5..9f12634 100644
--- a/va/x11/va_dricommon.h
+++ b/va/x11/va_dricommon.h
@@ -65,6 +65,7 @@ struct dri_state
void (*swapBuffer)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
union dri_buffer *(*getRenderingBuffer)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
void (*close)(VADriverContextP ctx);
+ struct dri_drawable *(*getDrawable)(VADriverContextP ctx, void *drawable);
#endif
};