On Mon, Apr 4, 2016 at 5:30 AM, Michel Dänzer <[email protected]> wrote: > From: Michel Dänzer <[email protected]> > > Fixes crash when running DRI3 clients with ShadowPrimary enabled. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94799 > Signed-off-by: Michel Dänzer <[email protected]>
Revewied-by: Alex Deucher <[email protected]> > --- > src/amdgpu_dri3.c | 6 +++++- > src/amdgpu_glamor_wrappers.c | 11 ++++++----- > 2 files changed, 11 insertions(+), 6 deletions(-) > > diff --git a/src/amdgpu_dri3.c b/src/amdgpu_dri3.c > index c3042e7..0686599 100644 > --- a/src/amdgpu_dri3.c > +++ b/src/amdgpu_dri3.c > @@ -135,8 +135,12 @@ static PixmapPtr amdgpu_dri3_pixmap_from_fd(ScreenPtr > screen, > if (AMDGPUPTR(xf86ScreenToScrn(screen))->use_glamor) { > pixmap = glamor_pixmap_from_fd(screen, fd, width, height, > stride, depth, bpp); > - if (pixmap) > + if (pixmap) { > + struct amdgpu_pixmap *priv = calloc(1, sizeof(*priv)); > + > + amdgpu_set_pixmap_private(pixmap, priv); > return pixmap; > + } > } > #endif > > diff --git a/src/amdgpu_glamor_wrappers.c b/src/amdgpu_glamor_wrappers.c > index 6700851..35b6d7e 100644 > --- a/src/amdgpu_glamor_wrappers.c > +++ b/src/amdgpu_glamor_wrappers.c > @@ -148,10 +148,11 @@ amdgpu_glamor_finish_access_cpu(PixmapPtr pixmap) > */ > > static Bool > -amdgpu_glamor_use_gpu(PixmapPtr pixmap) > +amdgpu_glamor_use_gpu(PixmapPtr pixmap, struct amdgpu_pixmap *priv) > { > return (pixmap->usage_hint & > - (AMDGPU_CREATE_PIXMAP_SCANOUT | AMDGPU_CREATE_PIXMAP_DRI2)) > != 0; > + (AMDGPU_CREATE_PIXMAP_SCANOUT | AMDGPU_CREATE_PIXMAP_DRI2)) > != 0 || > + (priv && !priv->bo); > } > > static Bool > @@ -432,7 +433,7 @@ amdgpu_glamor_poly_fill_rect(DrawablePtr pDrawable, GCPtr > pGC, > PixmapPtr pixmap = get_drawable_pixmap(pDrawable); > struct amdgpu_pixmap *priv = amdgpu_get_pixmap_private(pixmap); > > - if ((info->force_accel || amdgpu_glamor_use_gpu(pixmap)) && > + if ((info->force_accel || amdgpu_glamor_use_gpu(pixmap, priv)) && > amdgpu_glamor_prepare_access_gpu(priv)) { > info->glamor.SavedPolyFillRect(pDrawable, pGC, nrect, prect); > amdgpu_glamor_finish_access_gpu_rw(info, priv); > @@ -536,8 +537,8 @@ amdgpu_glamor_copy_area(DrawablePtr pSrcDrawable, > DrawablePtr pDstDrawable, > struct amdgpu_pixmap *dst_priv = > amdgpu_get_pixmap_private(dst_pixmap); > RegionPtr ret = NULL; > > - if (amdgpu_glamor_use_gpu(dst_pixmap) || > - amdgpu_glamor_use_gpu(src_pixmap)) { > + if (amdgpu_glamor_use_gpu(dst_pixmap, dst_priv) || > + amdgpu_glamor_use_gpu(src_pixmap, src_priv)) { > if (!amdgpu_glamor_prepare_access_gpu(dst_priv)) > goto fallback; > if (src_priv != dst_priv && > -- > 2.8.0.rc3 > > _______________________________________________ > xorg-driver-ati mailing list > [email protected] > https://lists.x.org/mailman/listinfo/xorg-driver-ati _______________________________________________ xorg-driver-ati mailing list [email protected] https://lists.x.org/mailman/listinfo/xorg-driver-ati
