From 31ce346a2983bcb25091b53171e02afd62558c90 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Mon, 18 Jul 2011 17:03:12 +0000 Subject: 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. --- i965_drv_video/Makefile.am | 2 +- i965_drv_video/i965_drv_video.c | 8 ++++---- va/x11/dri1_util.c | 1 + va/x11/dri2_util.c | 1 + va/x11/va_dricommon.c | 4 ++++ va/x11/va_dricommon.h | 1 + 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 }; -- cgit v1.2.3