On Tue, Feb 13, 2018 at 12:53 PM, Michel Dänzer <michel at daenzer.net> wrote: > From: Michel Dänzer <michel.daenzer at amd.com> > > DRI clients can use depth 32 pixmaps while the screen is depth 24, in > which case page flipping would fail. > > Reported-by: Mario Kleiner <mario.kleiner.de at gmail.com> > (Ported from radeon commit 733f606dd6ca8350e6e7f0858bfff5454ddc98ed) > > Signed-off-by: Michel Dänzer <michel.daenzer at amd.com> Series is: Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > --- > src/amdgpu_pixmap.h | 13 ++++++------- > src/drmmode_display.c | 5 ++--- > 2 files changed, 8 insertions(+), 10 deletions(-) > > diff --git a/src/amdgpu_pixmap.h b/src/amdgpu_pixmap.h > index eded17037..d744ca573 100644 > --- a/src/amdgpu_pixmap.h > +++ b/src/amdgpu_pixmap.h > @@ -104,8 +104,8 @@ static inline struct amdgpu_buffer *amdgpu_get_pixmap_bo(PixmapPtr pPix) > } > > static inline struct drmmode_fb* > -amdgpu_fb_create(int drm_fd, uint32_t width, uint32_t height, uint8_t depth, > - uint8_t bpp, uint32_t pitch, uint32_t handle) > +amdgpu_fb_create(ScrnInfoPtr scrn, int drm_fd, uint32_t width, uint32_t height, > + uint32_t pitch, uint32_t handle) > { > struct drmmode_fb *fb = malloc(sizeof(*fb)); > > @@ -113,8 +113,8 @@ amdgpu_fb_create(int drm_fd, uint32_t width, uint32_t height, uint8_t depth, > return NULL; > > fb->refcnt = 1; > - if (drmModeAddFB(drm_fd, width, height, depth, bpp, pitch, handle, > - &fb->handle) == 0) > + if (drmModeAddFB(drm_fd, width, height, scrn->depth, scrn->bitsPerPixel, > + pitch, handle, &fb->handle) == 0) > return fb; > > free(fb); > @@ -154,9 +154,8 @@ amdgpu_pixmap_get_fb(PixmapPtr pix) > ScrnInfoPtr scrn = xf86ScreenToScrn(pix->drawable.pScreen); > AMDGPUEntPtr pAMDGPUEnt = AMDGPUEntPriv(scrn); > > - *fb_ptr = amdgpu_fb_create(pAMDGPUEnt->fd, pix->drawable.width, > - pix->drawable.height, pix->drawable.depth, > - pix->drawable.bitsPerPixel, pix->devKind, > + *fb_ptr = amdgpu_fb_create(scrn, pAMDGPUEnt->fd, pix->drawable.width, > + pix->drawable.height, pix->devKind, > handle); > } > } > diff --git a/src/drmmode_display.c b/src/drmmode_display.c > index e52b7a355..8ccbf735d 100644 > --- a/src/drmmode_display.c > +++ b/src/drmmode_display.c > @@ -885,9 +885,8 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, > union gbm_bo_handle bo_handle; > > bo_handle = gbm_bo_get_handle(info->front_buffer->bo.gbm); > - fb = amdgpu_fb_create(pAMDGPUEnt->fd, pScrn->virtualX, > - pScrn->virtualY, pScrn->depth, > - pScrn->bitsPerPixel, > + fb = amdgpu_fb_create(pScrn, pAMDGPUEnt->fd, > + pScrn->virtualX, pScrn->virtualY, > pScrn->displayWidth * info->pixel_bytes, > bo_handle.u32); > /* Prevent refcnt of ad-hoc FBs from reaching 2 */ > -- > 2.16.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx