Am I right in guessing this is only required for DRI2? On Wed, 28 Sep 2016 at 09:00 Michel Dänzer <mic...@daenzer.net> wrote:
> From: Michel Dänzer <michel.daen...@amd.com> > > This allows deferring shared pixmap updates between different drivers. > > (Ported from radeon commit 53be26b00e83f871f0afd39caa5a7a1d6ec4aea1) > > Signed-off-by: Michel Dänzer <michel.daen...@amd.com> > --- > src/amdgpu_kms.c | 43 ++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 42 insertions(+), 1 deletion(-) > > diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c > index a159c84..4ae7995 100644 > --- a/src/amdgpu_kms.c > +++ b/src/amdgpu_kms.c > @@ -491,6 +491,35 @@ amdgpu_sync_shared_pixmap(PixmapDirtyUpdatePtr dirty) > } > } > > + > +#if HAS_SYNC_SHARED_PIXMAP > + > +static Bool > +master_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr > dirty) > +{ > + ScreenPtr master_screen = > dirty->src->master_pixmap->drawable.pScreen; > + > + return master_screen->SyncSharedPixmap != NULL; > +} > + > +static Bool > +slave_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty) > +{ > + ScreenPtr slave_screen = dirty->slave_dst->drawable.pScreen; > + > + return slave_screen->SyncSharedPixmap != NULL; > +} > + > +static void > +call_sync_shared_pixmap(PixmapDirtyUpdatePtr dirty) > +{ > + ScreenPtr master_screen = > dirty->src->master_pixmap->drawable.pScreen; > + > + master_screen->SyncSharedPixmap(dirty); > +} > + > +#else /* !HAS_SYNC_SHARED_PIXMAP */ > + > static Bool > master_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr > dirty) > { > @@ -507,6 +536,15 @@ slave_has_sync_shared_pixmap(ScrnInfoPtr scrn, > PixmapDirtyUpdatePtr dirty) > return slave_scrn->driverName == scrn->driverName; > } > > +static void > +call_sync_shared_pixmap(PixmapDirtyUpdatePtr dirty) > +{ > + amdgpu_sync_shared_pixmap(dirty); > +} > + > +#endif /* HAS_SYNC_SHARED_PIXMAPS */ > + > + > static Bool > amdgpu_prime_scanout_do_update(xf86CrtcPtr crtc, unsigned scanout_id) > { > @@ -524,7 +562,7 @@ amdgpu_prime_scanout_do_update(xf86CrtcPtr crtc, > unsigned scanout_id) > RegionPtr region; > > if (master_has_sync_shared_pixmap(scrn, dirty)) > - amdgpu_sync_shared_pixmap(dirty); > + call_sync_shared_pixmap(dirty); > > region = dirty_region(dirty); > if (RegionNil(region)) > @@ -1803,6 +1841,9 @@ Bool AMDGPUScreenInit_KMS(SCREEN_INIT_ARGS_DECL) > #ifdef AMDGPU_PIXMAP_SHARING > pScreen->StartPixmapTracking = PixmapStartDirtyTracking; > pScreen->StopPixmapTracking = PixmapStopDirtyTracking; > +#if HAS_SYNC_SHARED_PIXMAP > + pScreen->SyncSharedPixmap = amdgpu_sync_shared_pixmap; > +#endif > #endif > > if (!xf86CrtcScreenInit(pScreen)) > -- > 2.9.3 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx >
_______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx