xf86: add initial scanout pixmap support (v2)
Add the simple passthrough interface for drivers to use, so they can set scanout pixmaps. v2: detach scanout pixmap properly. Reviewed-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
f2da2c1204
commit
2ed3f64d9d
|
@ -734,6 +734,9 @@ xf86CrtcCloseScreen(ScreenPtr screen)
|
||||||
for (c = 0; c < config->num_crtc; c++) {
|
for (c = 0; c < config->num_crtc; c++) {
|
||||||
xf86CrtcPtr crtc = config->crtc[c];
|
xf86CrtcPtr crtc = config->crtc[c];
|
||||||
|
|
||||||
|
if (crtc->randr_crtc->scanout_pixmap)
|
||||||
|
RRCrtcDetachScanoutPixmap(crtc->randr_crtc);
|
||||||
|
|
||||||
crtc->randr_crtc = NULL;
|
crtc->randr_crtc = NULL;
|
||||||
}
|
}
|
||||||
/* detach any providers */
|
/* detach any providers */
|
||||||
|
|
|
@ -218,6 +218,11 @@ typedef struct _xf86CrtcFuncs {
|
||||||
void
|
void
|
||||||
(*set_origin) (xf86CrtcPtr crtc, int x, int y);
|
(*set_origin) (xf86CrtcPtr crtc, int x, int y);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
Bool
|
||||||
|
(*set_scanout_pixmap)(xf86CrtcPtr crtc, PixmapPtr pixmap);
|
||||||
|
|
||||||
} xf86CrtcFuncsRec, *xf86CrtcFuncsPtr;
|
} xf86CrtcFuncsRec, *xf86CrtcFuncsPtr;
|
||||||
|
|
||||||
#define XF86_CRTC_VERSION 4
|
#define XF86_CRTC_VERSION 4
|
||||||
|
|
|
@ -1789,6 +1789,15 @@ xf86RandR14ProviderGetProperty(ScreenPtr pScreen,
|
||||||
return config->provider_funcs->get_property(pScrn, property);
|
return config->provider_funcs->get_property(pScrn, property);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
xf86CrtcSetScanoutPixmap(RRCrtcPtr randr_crtc, PixmapPtr pixmap)
|
||||||
|
{
|
||||||
|
xf86CrtcPtr crtc = randr_crtc->devPrivate;
|
||||||
|
if (!crtc->funcs->set_scanout_pixmap)
|
||||||
|
return FALSE;
|
||||||
|
return crtc->funcs->set_scanout_pixmap(crtc, pixmap);
|
||||||
|
}
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
xf86RandR12Init12(ScreenPtr pScreen)
|
xf86RandR12Init12(ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
|
@ -1814,6 +1823,7 @@ xf86RandR12Init12(ScreenPtr pScreen)
|
||||||
|
|
||||||
rp->rrProviderSetProperty = xf86RandR14ProviderSetProperty;
|
rp->rrProviderSetProperty = xf86RandR14ProviderSetProperty;
|
||||||
rp->rrProviderGetProperty = xf86RandR14ProviderGetProperty;
|
rp->rrProviderGetProperty = xf86RandR14ProviderGetProperty;
|
||||||
|
rp->rrCrtcSetScanoutPixmap = xf86CrtcSetScanoutPixmap;
|
||||||
|
|
||||||
pScrn->PointerMoved = xf86RandR12PointerMoved;
|
pScrn->PointerMoved = xf86RandR12PointerMoved;
|
||||||
pScrn->ChangeGamma = xf86RandR12ChangeGamma;
|
pScrn->ChangeGamma = xf86RandR12ChangeGamma;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user