Revert to origin xvmc setup steps

We have to grab xvadaptor's PutImage earlier than
xv init, otherwise no chance to do that..
This commit is contained in:
Zhenyu Wang 2007-09-26 15:02:33 +08:00
parent 1e0ff38f44
commit 320b7f08f4
3 changed files with 23 additions and 9 deletions

View File

@ -58,8 +58,6 @@ Bool intel_xvmc_probe(ScrnInfoPtr pScrn)
else
ret = intel_xvmc_set_driver(&i965_xvmc_driver);
*/
if (ret)
pI830->XvMCEnabled = TRUE;
} else {
ErrorF("Your chipset doesn't support XvMC.\n");
return FALSE;
@ -74,10 +72,9 @@ void intel_xvmc_finish(ScrnInfoPtr pScrn)
(*xvmc_driver->fini)(pScrn);
}
Bool intel_xvmc_init(ScreenPtr pScreen, XF86VideoAdaptorPtr xv_adaptor)
Bool intel_xvmc_xv_init(ScreenPtr pScreen, XF86VideoAdaptorPtr xv_adaptor)
{
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
I830Ptr pI830 = I830PTR(pScrn);
if (!xvmc_driver) {
ErrorF("Failed to probe XvMC driver.\n");
@ -88,11 +85,22 @@ Bool intel_xvmc_init(ScreenPtr pScreen, XF86VideoAdaptorPtr xv_adaptor)
ErrorF("XvMC driver initialize failed.\n");
return FALSE;
}
return TRUE;
}
Bool intel_xvmc_init(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
I830Ptr pI830 = I830PTR(pScrn);
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);
pI830->XvMCEnabled = TRUE;
} else {
intel_xvmc_finish(pScrn);
pI830->XvMCEnabled = FALSE;

View File

@ -51,7 +51,8 @@ extern struct intel_xvmc_driver i915_xvmc_driver;
extern Bool intel_xvmc_set_driver(struct intel_xvmc_driver *);
extern Bool intel_xvmc_probe(ScrnInfoPtr);
extern Bool intel_xvmc_init(ScreenPtr, XF86VideoAdaptorPtr);
extern Bool intel_xvmc_xv_init(ScreenPtr, XF86VideoAdaptorPtr);
extern Bool intel_xvmc_init(ScreenPtr);
extern void intel_xvmc_finish(ScrnInfoPtr);
extern int intel_xvmc_putimage_size(ScrnInfoPtr);

View File

@ -560,6 +560,7 @@ I830InitVideo(ScreenPtr pScreen)
XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL;
XF86VideoAdaptorPtr overlayAdaptor = NULL, texturedAdaptor = NULL;
int num_adaptors;
Bool ret = FALSE;
#if 0
{
@ -622,15 +623,19 @@ I830InitVideo(ScreenPtr pScreen)
}
I830InitOffscreenImages(pScreen);
}
#ifdef XvMCExtension
if (intel_xvmc_probe(pScrn)) {
if (texturedAdaptor)
ret = intel_xvmc_xv_init(pScreen, texturedAdaptor);
}
#endif
if (num_adaptors)
xf86XVScreenInit(pScreen, adaptors, num_adaptors);
#ifdef XvMCExtension
if (intel_xvmc_probe(pScrn)) {
if (texturedAdaptor)
intel_xvmc_init(pScreen, texturedAdaptor);
}
if (ret)
intel_xvmc_init(pScreen);
#endif
xfree(adaptors);
}