diff options
author | Cooper Yuan <cooperyuan@gmail.com> | 2009-09-08 16:47:34 +0800 |
---|---|---|
committer | Cooper Yuan <cooperyuan@gmail.com> | 2009-09-08 16:47:34 +0800 |
commit | 494fc37fc28acb712c83873ae75949e99282258a (patch) | |
tree | 2af7a355d7791def60abf734d06642b72d615927 | |
parent | de6c3f6e3203ab90b52241d2f429f14639f95110 (diff) |
r500xvmc: add interface to ddx driver
-rw-r--r-- | src/r500_hwmc.c | 4 | ||||
-rw-r--r-- | src/r500_hwmc.h | 6 | ||||
-rw-r--r-- | src/radeon.h | 3 | ||||
-rw-r--r-- | src/radeon_driver.c | 5 | ||||
-rw-r--r-- | src/radeon_hwmc.c | 142 | ||||
-rw-r--r-- | src/radeon_hwmc.h | 4 | ||||
-rw-r--r-- | src/radeon_video.c | 7 | ||||
-rw-r--r-- | src/xvmc/radeon_xvmc.c | 104 | ||||
-rw-r--r-- | src/xvmc/radeon_xvmc.h | 4 |
9 files changed, 149 insertions, 130 deletions
diff --git a/src/r500_hwmc.c b/src/r500_hwmc.c index 982296b..576ac65 100644 --- a/src/r500_hwmc.c +++ b/src/r500_hwmc.c @@ -45,8 +45,6 @@ #define _RADEON_XVMC_SERVER_ #include "r500_hwmc.h" -struct radeon_hwmc_driver *hwmc_driver_ptr; - #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) enum @@ -249,7 +247,7 @@ static void r500_hwmc_fini(ScrnInfoPtr pScrn) static XF86MCAdaptorRec pAdapt = { - .name = "AMD(R) XcMC Video", + .name = "AMD(R) R500 XvMC Video", .num_surfaces = ARRAY_SIZE(ppSI), .surfaces = ppSI, .num_subpictures = 0, diff --git a/src/r500_hwmc.h b/src/r500_hwmc.h index acfcbde..6b0c96b 100644 --- a/src/r500_hwmc.h +++ b/src/r500_hwmc.h @@ -28,7 +28,8 @@ #define R500_HWMC_H #define FOURCC_XVMC (('C' << 24) + ('M' << 16) + ('V' << 8) + 'X') -#define XVMC_R500_MPEG2_MC 0x1 +#define XVMC_R500_MPEG2_MC 0x1 +#define XVMC_R500_MPEG2_IDCT_MC 0x2 struct hwmc_buffer { @@ -60,8 +61,7 @@ struct radeon_hwmc_driver void* devPrivate; }; -extern struct radeon_hwmc_driver *hwmc_driver_ptr; -extern struct radeon_hwmc_driver *r500_hwmc_driver_ptr; +extern struct radeon_hwmc_driver r500_hwmc_driver; #endif #endif
\ No newline at end of file diff --git a/src/radeon.h b/src/radeon.h index 3a3631e..ea9e451 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -1005,6 +1005,9 @@ typedef struct { struct radeon_bo *bicubic_bo; void *bicubic_memory; int bicubic_offset; + + /* indicate whether XvMC is eanbled */ + Bool XvMCEnabled; } RADEONInfoRec, *RADEONInfoPtr; #define RADEONWaitForFifo(pScrn, entries) \ diff --git a/src/radeon_driver.c b/src/radeon_driver.c index e766093..0633459 100644 --- a/src/radeon_driver.c +++ b/src/radeon_driver.c @@ -5904,6 +5904,11 @@ void RADEONFreeScreen(int scrnIndex, int flags) xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, "RADEONFreeScreen\n"); +#ifdef RADEON_XVMC + if (info && info->XvMCEnabled) + radeon_hwmc_finish(pScrn); +#endif + /* when server quits at PreInit, we don't need do this anymore*/ if (!info) return; diff --git a/src/radeon_hwmc.c b/src/radeon_hwmc.c index 28d349e..032af59 100644 --- a/src/radeon_hwmc.c +++ b/src/radeon_hwmc.c @@ -41,11 +41,12 @@ #include "xaalocal.h" #include "dixstruct.h" #include "fourcc.h" - +#include "radeon.h" + #define _RADEON_XVMC_SERVER_ #include "r500_hwmc.h" -struct radeon_hwmc_driver *hwmc_driver_ptr; +struct radeon_hwmc_driver *radeon_hwmc_ptr = NULL; #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) @@ -95,109 +96,111 @@ static XF86MCSurfaceInfoPtr ppSI[2] = }; /* set global current driver for xvmc */ -static Bool intel_xvmc_set_driver(struct intel_xvmc_driver *d) +static Bool radeon_hwmc_set_driver(struct radeon_hwmc_driver *d) { - if (xvmc_driver_ptr) + if (radeon_hwmc_ptr) { ErrorF("XvMC driver already set!\n"); return FALSE; } else - xvmc_driver = d; + radeon_hwmc_ptr = d; return TRUE; } /* check chip type and load xvmc driver */ /* This must be first called! */ -Bool intel_xvmc_probe(ScrnInfoPtr pScrn) +Bool radeon_hwmc_probe(ScrnInfoPtr pScrn) { - I830Ptr pI830 = I830PTR(pScrn); + RADEONInfoPtr info = RADEONPTR(pScrn); Bool ret = FALSE; - /* Disable XvMC on DRI2 for now */ - if (pI830->directRenderingType == DRI_DRI2) { - pI830->XvMCEnabled = FALSE; - return FALSE; - } + if (!info->XvMCEnabled) + return FALSE; - if (!pI830->XvMCEnabled) - return FALSE; - - if (IS_I9XX(pI830)) { - if (IS_I915(pI830)) - ret = intel_xvmc_set_driver(&i915_xvmc_driver); - else - ret = intel_xvmc_set_driver(&i965_xvmc_driver); - } else { - ErrorF("Your chipset doesn't support XvMC.\n"); - return FALSE; + if (IS_I9XX(info)) + { + ret = radeon_hwmc_set_driver(&r500_hwmc_driver); + } + else + { + ErrorF("Your chipset doesn't support XvMC.\n"); + return FALSE; } return TRUE; } -void intel_xvmc_finish(ScrnInfoPtr pScrn) +void radeon_hwmc_finish(ScrnInfoPtr pScrn) { - if (!xvmc_driver) - return; - (*xvmc_driver->fini)(pScrn); + if (!radeon_hwmc_ptr) + return; + (*radeon_hwmc_ptr->fini)(pScrn); } -Bool intel_xvmc_driver_init(ScreenPtr pScreen, XF86VideoAdaptorPtr xv_adaptor) +Bool radeon_hwmc_driver_init(ScreenPtr pScreen, XF86VideoAdaptorPtr xv_adaptor) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - if (!xvmc_driver) { - ErrorF("Failed to probe XvMC driver.\n"); - return FALSE; + if (!radeon_hwmc_ptr) + { + ErrorF("Failed to probe XvMC driver.\n"); + return FALSE; } - if (!(*xvmc_driver->init)(pScrn, xv_adaptor)) { - ErrorF("XvMC driver initialize failed.\n"); - return FALSE; + if (!(*radeon_hwmc_ptr->init)(pScrn, xv_adaptor)) + { + ErrorF("XvMC driver initialize failed.\n"); + return FALSE; } return TRUE; } -Bool intel_xvmc_screen_init(ScreenPtr pScreen) +Bool radeon_hwmc_screen_init(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - I830Ptr pI830 = I830PTR(pScrn); - DRIInfoPtr pDRIInfo = pI830->pDRIInfo; - - if (!xvmc_driver) - return FALSE; - - if (xf86XvMCScreenInit(pScreen, 1, &xvmc_driver->adaptor)) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[XvMC] %s driver initialized.\n", - xvmc_driver->name); - } else { - intel_xvmc_finish(pScrn); - pI830->XvMCEnabled = FALSE; - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[XvMC] Failed to initialize XvMC.\n"); - return FALSE; + RADEONInfoPtr info = RADEONPTR(pScrn); + DRIInfoPtr pDRIInfo = info->dri->pDRIInfo; + + if (!radeon_hwmc_ptr) + return FALSE; + + if (xf86XvMCScreenInit(pScreen, 1, &radeon_hwmc_ptr->adaptor)) + { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[XvMC] %s driver initialized.\n", + radeon_hwmc_ptr->name); + } + else + { + radeon_hwmc_finish(pScrn); + info->XvMCEnabled = FALSE; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[XvMC] Failed to initialize.\n"); + return FALSE; } xf86XvMCRegisterDRInfo(pScreen, INTEL_XVMC_LIBNAME, - pDRIInfo->busIdString, - INTEL_XVMC_MAJOR, INTEL_XVMC_MINOR, INTEL_XVMC_PATCHLEVEL); + pDRIInfo->busIdString, + INTEL_XVMC_MAJOR, + INTEL_XVMC_MINOR, + INTEL_XVMC_PATCHLEVEL); return TRUE; } -Bool intel_xvmc_init_batch(ScrnInfoPtr pScrn) +Bool radeon_hwmc_init_batch(ScrnInfoPtr pScrn) { - I830Ptr pI830 = I830PTR(pScrn); + RADEONInfoPtr info = RADEONPTR(pScrn); int size = KB(64); if (!i830_allocate_xvmc_buffer(pScrn, "[XvMC] batch buffer", - &(xvmc_driver->batch), size, + &(radeon_hwmc_ptr->batch), size, ALIGN_BOTH_ENDS)) + { return FALSE; + } - if (drmAddMap(pI830->drmSubFD, - (drm_handle_t)(xvmc_driver->batch->offset+pI830->LinearAddr), - xvmc_driver->batch->size, DRM_AGP, 0, - &xvmc_driver->batch_handle) < 0) { + if (drmAddMap(info->drmSubFD, + (drm_handle_t)(radeon_hwmc_ptr->batch->offset+info->LinearAddr), + radeon_hwmc_ptr->batch->size, DRM_AGP, 0, + &radeon_hwmc_ptr->batch_handle) < 0) + { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "[drm] drmAddMap(batchbuffer_handle) failed!\n"); return FALSE; @@ -205,17 +208,20 @@ Bool intel_xvmc_init_batch(ScrnInfoPtr pScrn) return TRUE; } -void intel_xvmc_fini_batch(ScrnInfoPtr pScrn) +void radeon_hwmc_fini_batch(ScrnInfoPtr pScrn) { - I830Ptr pI830 = I830PTR(pScrn); + RADEONInfoPtr info = RADEONPTR(pScrn); - if (xvmc_driver->batch_handle) { - drmRmMap(pI830->drmSubFD, xvmc_driver->batch_handle); - xvmc_driver->batch_handle = 0; + if (radeon_hwmc_ptr->batch_handle) + { + drmRmMap(info->drmSubFD, radeon_hwmc_ptr->batch_handle); + radeon_hwmc_ptr->batch_handle = 0; } - if (xvmc_driver->batch) { - i830_free_memory(pScrn, xvmc_driver->batch); - xvmc_driver->batch = NULL; + + if (radeon_hwmc_ptr->batch) + { + i830_free_memory(pScrn, radeon_hwmc_ptr->batch); + radeon_hwmc_ptr->batch = NULL; } } diff --git a/src/radeon_hwmc.h b/src/radeon_hwmc.h index db4fdaf..9ef5144 100644 --- a/src/radeon_hwmc.h +++ b/src/radeon_hwmc.h @@ -60,8 +60,8 @@ struct radeon_hwmc_driver void* devPrivate; }; -extern struct radeon_hwmc_driver *hwmc_driver_ptr; -extern struct radeon_hwmc_driver *r500_hwmc_driver_ptr; +extern struct radeon_hwmc_driver *radeon_hwmc_ptr; + #endif #endif
\ No newline at end of file diff --git a/src/radeon_video.c b/src/radeon_video.c index f1fe72b..0ba7d82 100644 --- a/src/radeon_video.c +++ b/src/radeon_video.c @@ -308,6 +308,13 @@ void RADEONInitVideo(ScreenPtr pScreen) } else xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Textured video requires CP on R5xx/R6xx/R7xx/IGP\n"); +#ifdef RADEON_XVMC + if (radeon_hwmc_probe(pScrn)) + { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Probe Radeon XvMC driver\n"); + } +#endif + if(num_adaptors) xf86XVScreenInit(pScreen, adaptors, num_adaptors); diff --git a/src/xvmc/radeon_xvmc.c b/src/xvmc/radeon_xvmc.c index 5fb88c3..790be0d 100644 --- a/src/xvmc/radeon_xvmc.c +++ b/src/xvmc/radeon_xvmc.c @@ -26,7 +26,7 @@ #include "radeon_xvmc.h" -struct radeon_xvmc_driver *xvmc_driver_ptr = NULL; +struct radeon_xvmc_driver *radeon_xvmc_ptr = NULL; static radeon_xvmc_context_ptr radeon_xvmc_new_context(Display *dpy) { @@ -36,9 +36,9 @@ static radeon_xvmc_context_ptr radeon_xvmc_new_context(Display *dpy) if (!ret) return NULL; - ret->next = xvmc_driver_ptr->ctx_list; - xvmc_driver_ptr->ctx_list = ret; - xvmc_driver_ptr->num_ctx++; + ret->next = radeon_xvmc_ptr->ctx_list; + radeon_xvmc_ptr->ctx_list = ret; + radeon_xvmc_ptr->num_ctx++; return ret; @@ -46,15 +46,15 @@ static radeon_xvmc_context_ptr radeon_xvmc_new_context(Display *dpy) static void radeon_xvmc_free_context(XID id) { - radeon_xvmc_context_ptr p = xvmc_driver_ptr->ctx_list; + radeon_xvmc_context_ptr p = radeon_xvmc_ptr->ctx_list; radeon_xvmc_context_ptr pre = p; while(p) { if (p->context && p->context->context_id == id) { - if (p == xvmc_driver_ptr->ctx_list) - xvmc_driver_ptr->ctx_list = p->next; + if (p == radeon_xvmc_ptr->ctx_list) + radeon_xvmc_ptr->ctx_list = p->next; else pre->next = p->next; break; @@ -66,13 +66,13 @@ static void radeon_xvmc_free_context(XID id) if (p) { free(p); - xvmc_driver_ptr->num_ctx--; + radeon_xvmc_ptr->num_ctx--; } } radeon_xvmc_context_ptr radeon_xvmc_find_context(XID id) { - radeon_xvmc_context_ptr p = xvmc_driver_ptr->ctx_list; + radeon_xvmc_context_ptr p = radeon_xvmc_ptr->ctx_list; while(p) { @@ -91,9 +91,9 @@ static radeon_xvmc_surface_ptr radeon_xvmc_new_surface(Display *dpy) if (!ret) return NULL; - ret->next = xvmc_driver_ptr->surf_list; - xvmc_driver_ptr->surf_list = ret; - xvmc_driver_ptr->num_surf++; + ret->next = radeon_xvmc_ptr->surf_list; + radeon_xvmc_ptr->surf_list = ret; + radeon_xvmc_ptr->num_surf++; ret->image = NULL; ret->gc_init = FALSE; @@ -103,15 +103,15 @@ static radeon_xvmc_surface_ptr radeon_xvmc_new_surface(Display *dpy) static void radeon_xvmc_free_surface(XID id) { - radeon_xvmc_surface_ptr p = xvmc_driver_ptr->surf_list; + radeon_xvmc_surface_ptr p = radeon_xvmc_ptr->surf_list; radeon_xvmc_surface_ptr pre = p; while(p) { if (p->surface && p->surface->surface_id == id) { - if (p == xvmc_driver_ptr->surf_list) - xvmc_driver_ptr->surf_list = p->next; + if (p == radeon_xvmc_ptr->surf_list) + radeon_xvmc_ptr->surf_list = p->next; else pre->next = p->next; break; @@ -123,13 +123,13 @@ static void radeon_xvmc_free_surface(XID id) if (p) { free(p); - xvmc_driver_ptr->num_surf--; + radeon_xvmc_ptr->num_surf--; } } radeon_xvmc_surface_ptr radeon_xvmc_find_surface(XID id) { - radeon_xvmc_surface_ptr p = xvmc_driver_ptr->surf_list; + radeon_xvmc_surface_ptr p = radeon_xvmc_ptr->surf_list; while(p) { @@ -215,12 +215,12 @@ _X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, comm = (struct radeon_xvmc_common *)priv_data; - if (xvmc_driver_ptr == NULL || xvmc_driver_ptr->type != comm->type) + if (radeon_xvmc_ptr == NULL || radeon_xvmc_ptr->type != comm->type) { switch (comm->type) { case XVMC_R500_MPEG2_MC: - xvmc_driver_ptr = &r500_xvmc_driver; + radeon_xvmc_ptr = &r500_xvmc_driver; break; default: ErrorF("[XvMC]: Radeon: unimplemented xvmc type %d", comm->type); @@ -230,16 +230,16 @@ _X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, } } - if (xvmc_driver_ptr == NULL || xvmc_driver_ptr->type != comm->type) + if (radeon_xvmc_ptr == NULL || radeon_xvmc_ptr->type != comm->type) { ErrorF("[XvMC]: Radeon: fail to load xvmc driver for type %d\n", comm->type); return BadValue; } - xvmc_driver_ptr->sarea_size = comm->sarea_size; - xvmc_driver_ptr->batchbuffer.handle = comm->batchbuffer.handle; - xvmc_driver_ptr->batchbuffer.offset = comm->batchbuffer.offset; - xvmc_driver_ptr->batchbuffer.size = comm->batchbuffer.size; + radeon_xvmc_ptr->sarea_size = comm->sarea_size; + radeon_xvmc_ptr->batchbuffer.handle = comm->batchbuffer.handle; + radeon_xvmc_ptr->batchbuffer.offset = comm->batchbuffer.offset; + radeon_xvmc_ptr->batchbuffer.size = comm->batchbuffer.size; /* assign local ctx info */ radeon_ctx = radeon_xvmc_new_context(display); @@ -258,7 +258,7 @@ _X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, return BadValue; } - if (!uniDRIOpenConnection(display, screen, &xvmc_driver_ptr->hsarea, &curBusID)) + if (!uniDRIOpenConnection(display, screen, &radeon_xvmc_ptr->hsarea, &curBusID)) { ErrorF("[XvMC]: Could not open DRI connection to X server!"); XFree(priv_data); @@ -274,19 +274,19 @@ _X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, return BadValue; } - xvmc_driver_ptr->fd = fd; + radeon_xvmc_ptr->fd = fd; - strncpy(xvmc_driver_ptr->busID, curBusID, 20); - xvmc_driver_ptr->busID[20] = '\0'; + strncpy(radeon_xvmc_ptr->busID, curBusID, 20); + radeon_xvmc_ptr->busID[20] = '\0'; XFree(curBusID); /* Get magic number */ - drmGetMagic(xvmc_driver_ptr->fd, &magic); + drmGetMagic(radeon_xvmc_ptr->fd, &magic); if (!uniDRIAuthConnection(display, screen, magic)) { ErrorF("[XvMC]: X server did not allow DRI. Check permissions."); - xvmc_driver_ptr = NULL; + radeon_xvmc_ptr = NULL; XFree(priv_data); return BadAlloc; } @@ -294,17 +294,17 @@ _X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, /* * Map DRI Sarea. we always want it right? */ - if (drmMap(xvmc_driver_ptr->fd, xvmc_driver_ptr->hsarea, - xvmc_driver_ptr->sarea_size, &xvmc_driver_ptr->sarea_address) < 0) + if (drmMap(radeon_xvmc_ptr->fd, radeon_xvmc_ptr->hsarea, + radeon_xvmc_ptr->sarea_size, &radeon_xvmc_ptr->sarea_address) < 0) { XVMC_ERR("[XvMC]: Unable to map DRI SAREA.\n"); - xvmc_driver_ptr = NULL; + radeon_xvmc_ptr = NULL; XFree(priv_data); return BadAlloc; } - pSAREA = (drm_sarea_t *)xvmc_driver_ptr->sarea_address; - xvmc_driver_ptr->driHwLock = (drmLock *)&pSAREA->lock; - pthread_mutex_init(&xvmc_driver_ptr->ctxmutex, NULL); + pSAREA = (drm_sarea_t *)radeon_xvmc_ptr->sarea_address; + radeon_xvmc_ptr->driHwLock = (drmLock *)&pSAREA->lock; + pthread_mutex_init(&radeon_xvmc_ptr->ctxmutex, NULL); /* context_id is alloc in _xvmc_create_context */ if (!uniDRICreateContext(display, screen, DefaultVisual(display, screen), @@ -315,7 +315,7 @@ _X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, (int)context->context_id); XFree(priv_data); context->privData = NULL; - drmUnmap(xvmc_driver_ptr->sarea_address, xvmc_driver_ptr->sarea_size); + drmUnmap(radeon_xvmc_ptr->sarea_address, radeon_xvmc_ptr->sarea_size); return BadAlloc; } @@ -323,12 +323,12 @@ _X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, * call driver hook. * driver hook should free priv_data after return if success. */ - ret = (xvmc_driver_ptr->create_context)(display, context, priv_count, priv_data); + ret = (radeon_xvmc_ptr->create_context)(display, context, priv_count, priv_data); if (ret) { ErrorF("[XvMC]: driver create context failed\n"); XFree(priv_data); - drmUnmap(xvmc_driver_ptr->sarea_address, xvmc_driver_ptr->sarea_size); + drmUnmap(radeon_xvmc_ptr->sarea_address, radeon_xvmc_ptr->sarea_size); return ret; } @@ -352,7 +352,7 @@ _X_EXPORT Status XvMCDestroyContext(Display *display, XvMCContext *context) if (!display || !context) return XvMCBadContext; screen = DefaultScreen(display); - ret = (xvmc_driver_ptr->destroy_context)(display, context); + ret = (radeon_xvmc_ptr->destroy_context)(display, context); if (ret) { ErrorF("[XvMC]: destroy context fail\n"); @@ -369,16 +369,16 @@ _X_EXPORT Status XvMCDestroyContext(Display *display, XvMCContext *context) return ret; } - if (xvmc_driver_ptr->num_ctx == 0) + if (radeon_xvmc_ptr->num_ctx == 0) { uniDRICloseConnection(display, screen); - pthread_mutex_destroy(&xvmc_driver_ptr->ctxmutex); + pthread_mutex_destroy(&radeon_xvmc_ptr->ctxmutex); - drmUnmap(xvmc_driver_ptr->sarea_address, xvmc_driver_ptr->sarea_size); + drmUnmap(radeon_xvmc_ptr->sarea_address, radeon_xvmc_ptr->sarea_size); - if (xvmc_driver_ptr->fd >= 0) - drmClose(xvmc_driver_ptr->fd); - xvmc_driver_ptr->fd = -1; + if (radeon_xvmc_ptr->fd >= 0) + drmClose(radeon_xvmc_ptr->fd); + radeon_xvmc_ptr->fd = -1; } return Success; } @@ -426,8 +426,8 @@ _X_EXPORT Status XvMCCreateSurface(Display *display, XvMCContext *context, XvMCS radeon_surf->image->data = (char *)&radeon_surf->data; - ret = (xvmc_driver_ptr->create_surface)(display, context, surface, - priv_count, priv_data); + ret = (radeon_xvmc_ptr->create_surface)(display, context, surface, + priv_count, priv_data); if (ret) { ErrorF("[XvMC]: create surface failed\n"); @@ -456,7 +456,7 @@ _X_EXPORT Status XvMCDestroySurface(Display *display, XvMCSurface *surface) XFreeGC(display, radeon_surf->gc); radeon_xvmc_free_surface(surface->surface_id); - (xvmc_driver_ptr->destroy_surface)(display, surface); + (radeon_xvmc_ptr->destroy_surface)(display, surface); _xvmc_destroy_surface(display, surface); @@ -575,7 +575,7 @@ _X_EXPORT Status XvMCRenderSurface(Display *display, XvMCContext *context, if (!target_surface) return XvMCBadSurface; - ret = (xvmc_driver_ptr->render_surface)(display, context, + ret = (radeon_xvmc_ptr->render_surface)(display, context, picture_structure, target_surface, past_surface, future_surface, flags, @@ -649,7 +649,7 @@ _X_EXPORT Status XvMCPutSurface(Display *display,XvMCSurface *surface, radeon_surf->last_draw = draw; /* fill intel_surf->data */ - ret = (xvmc_driver_ptr->put_surface)(display, surface, draw, srcx, srcy, + ret = (radeon_xvmc_ptr->put_surface)(display, surface, draw, srcx, srcy, srcw, srch, destx, desty, destw, desth, flags, &radeon_surf->data); if (ret) { @@ -719,7 +719,7 @@ _X_EXPORT Status XvMCGetSurfaceStatus(Display *display, XvMCSurface *surface, in if (!display || !surface || !stat) return XvMCBadSurface; - ret = (xvmc_driver_ptr->get_surface_status)(display, surface, stat); + ret = (radeon_xvmc_ptr->get_surface_status)(display, surface, stat); if (ret) { ErrorF("[XvMC]: get surface status fail\n"); diff --git a/src/xvmc/radeon_xvmc.h b/src/xvmc/radeon_xvmc.h index 5561088..473ef12 100644 --- a/src/xvmc/radeon_xvmc.h +++ b/src/xvmc/radeon_xvmc.h @@ -168,9 +168,9 @@ typedef struct radeon_xvmc_driver Status (*get_surface_status)(Display *display, XvMCSurface *surface, int *stat); -}radeon_xvmc_driver_t, *radeon_xvmc_driver_ptr; +}radeon_xvmc_driver_t; -extern struct radeon_xvmc_driver *xvmc_driver_ptr; +extern struct radeon_xvmc_driver *radeon_xvmc_ptr; extern radeon_xvmc_context_ptr radeon_xvmc_find_context(XID id); extern radeon_xvmc_surface_ptr radeon_xvmc_find_surface(XID id); |