summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCooper Yuan <cooperyuan@gmail.com>2009-09-08 16:47:34 +0800
committerCooper Yuan <cooperyuan@gmail.com>2009-09-08 16:47:34 +0800
commit494fc37fc28acb712c83873ae75949e99282258a (patch)
tree2af7a355d7791def60abf734d06642b72d615927
parentde6c3f6e3203ab90b52241d2f429f14639f95110 (diff)
r500xvmc: add interface to ddx driver
-rw-r--r--src/r500_hwmc.c4
-rw-r--r--src/r500_hwmc.h6
-rw-r--r--src/radeon.h3
-rw-r--r--src/radeon_driver.c5
-rw-r--r--src/radeon_hwmc.c142
-rw-r--r--src/radeon_hwmc.h4
-rw-r--r--src/radeon_video.c7
-rw-r--r--src/xvmc/radeon_xvmc.c104
-rw-r--r--src/xvmc/radeon_xvmc.h4
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);