[PATCH xf86-video-amdgpu] glamor: Use glamor_egl_create_textured_pixmap_from_gbm_bo when possible
Alex Deucher
alexdeucher at gmail.com
Thu Aug 2 17:10:20 UTC 2018
On Thu, Aug 2, 2018 at 12:47 PM, Michel Dänzer <michel at daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> Inspired by the modesetting driver.
>
> (Ported from radeon commit db28d35ce9fd07a2a4703f3df0633d4c8291ff9b)
>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> src/amdgpu_glamor.c | 32 ++++++++++++++++++--------------
> 1 file changed, 18 insertions(+), 14 deletions(-)
>
> diff --git a/src/amdgpu_glamor.c b/src/amdgpu_glamor.c
> index 8b839105e..ea49f822f 100644
> --- a/src/amdgpu_glamor.c
> +++ b/src/amdgpu_glamor.c
> @@ -53,9 +53,9 @@ void amdgpu_glamor_exchange_buffers(PixmapPtr src, PixmapPtr dst)
>
> Bool amdgpu_glamor_create_screen_resources(ScreenPtr screen)
> {
> + PixmapPtr screen_pixmap = screen->GetScreenPixmap(screen);
> ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
> AMDGPUInfoPtr info = AMDGPUPTR(scrn);
> - uint32_t bo_handle;
>
> if (!info->use_glamor)
> return TRUE;
> @@ -65,14 +65,8 @@ Bool amdgpu_glamor_create_screen_resources(ScreenPtr screen)
> return FALSE;
> #endif
>
> - if (!amdgpu_bo_get_handle(info->front_buffer, &bo_handle) ||
> - !glamor_egl_create_textured_screen(screen, bo_handle,
> - scrn->displayWidth *
> - info->pixel_bytes)) {
> - return FALSE;
> - }
> -
> - return TRUE;
> + return amdgpu_glamor_create_textured_pixmap(screen_pixmap,
> + info->front_buffer);
> }
>
> Bool amdgpu_glamor_pre_init(ScrnInfoPtr scrn)
> @@ -129,16 +123,26 @@ amdgpu_glamor_create_textured_pixmap(PixmapPtr pixmap, struct amdgpu_buffer *bo)
> {
> ScrnInfoPtr scrn = xf86ScreenToScrn(pixmap->drawable.pScreen);
> AMDGPUInfoPtr info = AMDGPUPTR(scrn);
> - uint32_t bo_handle;
>
> if ((info->use_glamor) == 0)
> return TRUE;
>
> - if (!amdgpu_bo_get_handle(bo, &bo_handle))
> - return FALSE;
> + if (bo->flags & AMDGPU_BO_FLAGS_GBM) {
> + return glamor_egl_create_textured_pixmap_from_gbm_bo(pixmap,
> + bo->bo.gbm
> +#if XORG_VERSION_CURRENT > XORG_VERSION_NUMERIC(1,19,99,903,0)
> + , FALSE
> +#endif
> + );
> + } else {
> + uint32_t bo_handle;
>
> - return glamor_egl_create_textured_pixmap(pixmap, bo_handle,
> - pixmap->devKind);
> + if (!amdgpu_bo_get_handle(bo, &bo_handle))
> + return FALSE;
> +
> + return glamor_egl_create_textured_pixmap(pixmap, bo_handle,
> + pixmap->devKind);
> + }
> }
>
> static Bool amdgpu_glamor_destroy_pixmap(PixmapPtr pixmap)
> --
> 2.18.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list