On Thu, Nov 19, 2015 at 4:05 AM, Michel Dänzer <[email protected]> wrote: > From: Michel Dänzer <[email protected]> > > (ported from radeon commit 535e5438b2c32f774b9c8c27ee0289b4749548ef) > > Signed-off-by: Michel Dänzer <[email protected]>
For the series: Reviewed-by: Alex Deucher <[email protected]> > --- > src/amdgpu_drv.h | 8 ++++++++ > src/amdgpu_glamor.c | 20 ++++++++++++++++++++ > src/amdgpu_glamor.h | 1 + > src/amdgpu_glamor_wrappers.c | 5 ----- > src/amdgpu_kms.c | 1 + > src/amdgpu_pixmap.h | 4 ---- > 6 files changed, 30 insertions(+), 9 deletions(-) > > diff --git a/src/amdgpu_drv.h b/src/amdgpu_drv.h > index 9acd202..0e7b3b5 100644 > --- a/src/amdgpu_drv.h > +++ b/src/amdgpu_drv.h > @@ -148,6 +148,10 @@ typedef enum { > OPTION_DELETE_DP12, > } AMDGPUOpts; > > +#if XF86_CRTC_VERSION >= 5 > +#define AMDGPU_PIXMAP_SHARING 1 > +#endif > + > #define AMDGPU_VSYNC_TIMEOUT 20000 /* Maximum wait for VSYNC (in usecs) > */ > > /* Buffer are aligned on 4096 byte boundaries */ > @@ -265,6 +269,10 @@ typedef struct { > AddTrapsProcPtr SavedAddTraps; > UnrealizeGlyphProcPtr SavedUnrealizeGlyph; > #endif > +#ifdef AMDGPU_PIXMAP_SHARING > + SharePixmapBackingProcPtr SavedSharePixmapBacking; > + SetSharedPixmapBackingProcPtr SavedSetSharedPixmapBacking; > +#endif > } glamor; > > } AMDGPUInfoRec, *AMDGPUInfoPtr; > diff --git a/src/amdgpu_glamor.c b/src/amdgpu_glamor.c > index c979561..a745555 100644 > --- a/src/amdgpu_glamor.c > +++ b/src/amdgpu_glamor.c > @@ -353,10 +353,14 @@ Bool amdgpu_glamor_init(ScreenPtr screen) > ps->UnrealizeGlyph = SavedUnrealizeGlyph; > #endif > > + info->glamor.SavedCreatePixmap = screen->CreatePixmap; > screen->CreatePixmap = amdgpu_glamor_create_pixmap; > + info->glamor.SavedDestroyPixmap = screen->DestroyPixmap; > screen->DestroyPixmap = amdgpu_glamor_destroy_pixmap; > #ifdef AMDGPU_PIXMAP_SHARING > + info->glamor.SavedSharePixmapBacking = screen->SharePixmapBacking; > screen->SharePixmapBacking = amdgpu_glamor_share_pixmap_backing; > + info->glamor.SavedSetSharedPixmapBacking = > screen->SetSharedPixmapBacking; > screen->SetSharedPixmapBacking = > amdgpu_glamor_set_shared_pixmap_backing; > #endif > @@ -385,6 +389,22 @@ void amdgpu_glamor_finish(ScrnInfoPtr pScrn) > } > } > > +void > +amdgpu_glamor_fini(ScreenPtr screen) > +{ > + AMDGPUInfoPtr info = AMDGPUPTR(xf86ScreenToScrn(screen)); > + > + if (!info->use_glamor) > + return; > + > + screen->CreatePixmap = info->glamor.SavedCreatePixmap; > + screen->DestroyPixmap = info->glamor.SavedDestroyPixmap; > +#ifdef AMDGPU_PIXMAP_SHARING > + screen->SharePixmapBacking = info->glamor.SavedSharePixmapBacking; > + screen->SetSharedPixmapBacking = > info->glamor.SavedSetSharedPixmapBacking; > +#endif > +} > + > XF86VideoAdaptorPtr amdgpu_glamor_xv_init(ScreenPtr pScreen, int num_adapt) > { > return glamor_xv_init(pScreen, num_adapt); > diff --git a/src/amdgpu_glamor.h b/src/amdgpu_glamor.h > index de63005..77e0c21 100644 > --- a/src/amdgpu_glamor.h > +++ b/src/amdgpu_glamor.h > @@ -60,6 +60,7 @@ struct amdgpu_pixmap; > > Bool amdgpu_glamor_pre_init(ScrnInfoPtr scrn); > Bool amdgpu_glamor_init(ScreenPtr screen); > +void amdgpu_glamor_fini(ScreenPtr screen); > void amdgpu_glamor_screen_init(ScreenPtr screen); > Bool amdgpu_glamor_create_screen_resources(ScreenPtr screen); > void amdgpu_glamor_free_screen(int scrnIndex, int flags); > diff --git a/src/amdgpu_glamor_wrappers.c b/src/amdgpu_glamor_wrappers.c > index 7ff2f30..6700851 100644 > --- a/src/amdgpu_glamor_wrappers.c > +++ b/src/amdgpu_glamor_wrappers.c > @@ -924,8 +924,6 @@ amdgpu_glamor_close_screen(CLOSE_SCREEN_ARGS_DECL) > pScreen->CloseScreen = info->glamor.SavedCloseScreen; > pScreen->GetImage = info->glamor.SavedGetImage; > pScreen->GetSpans = info->glamor.SavedGetSpans; > - pScreen->CreatePixmap = info->glamor.SavedCreatePixmap; > - pScreen->DestroyPixmap = info->glamor.SavedDestroyPixmap; > pScreen->CopyWindow = info->glamor.SavedCopyWindow; > pScreen->ChangeWindowAttributes = > info->glamor.SavedChangeWindowAttributes; > @@ -969,9 +967,6 @@ amdgpu_glamor_screen_init(ScreenPtr screen) > info->glamor.SavedGetSpans = screen->GetSpans; > screen->GetSpans = amdgpu_glamor_get_spans; > > - info->glamor.SavedCreatePixmap = screen->CreatePixmap; > - info->glamor.SavedDestroyPixmap = screen->DestroyPixmap; > - > info->glamor.SavedCopyWindow = screen->CopyWindow; > screen->CopyWindow = amdgpu_glamor_copy_window; > > diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c > index 3993591..30bce08 100644 > --- a/src/amdgpu_kms.c > +++ b/src/amdgpu_kms.c > @@ -1033,6 +1033,7 @@ static Bool > AMDGPUCloseScreen_KMS(CLOSE_SCREEN_ARGS_DECL) > if (info->dri2.enabled) { > amdgpu_dri2_close_screen(pScreen); > } > + amdgpu_glamor_fini(pScreen); > pScrn->vtSema = FALSE; > xf86ClearPrimInitDone(info->pEnt->index); > pScreen->BlockHandler = info->BlockHandler; > diff --git a/src/amdgpu_pixmap.h b/src/amdgpu_pixmap.h > index a8f204f..7e0e449 100644 > --- a/src/amdgpu_pixmap.h > +++ b/src/amdgpu_pixmap.h > @@ -56,10 +56,6 @@ static inline void amdgpu_set_pixmap_private(PixmapPtr > pixmap, > dixSetPrivate(&pixmap->devPrivates, &amdgpu_pixmap_index, priv); > } > > -#if XF86_CRTC_VERSION >= 5 > -#define AMDGPU_PIXMAP_SHARING 1 > -#endif > - > static inline void amdgpu_set_pixmap_bo(PixmapPtr pPix, struct amdgpu_buffer > *bo) > { > struct amdgpu_pixmap *priv; > -- > 2.6.2 > > _______________________________________________ > xorg-driver-ati mailing list > [email protected] > http://lists.x.org/mailman/listinfo/xorg-driver-ati _______________________________________________ xorg-driver-ati mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
