summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichel Dänzer <michel.daenzer@amd.com>2018-08-02 18:41:04 +0200
committerMichel Dänzer <michel.daenzer@amd.com>2018-08-02 18:41:04 +0200
commit08c4d42f43f80baa4bbc2ff9d0a422202cdc3538 (patch)
tree698cff9f08e9e9a4068d433d541daf067e1b6c4f /src
parent9b6782c821e0bdc53336d98f87ddde752faf7902 (diff)
glamor: Use glamor_egl_create_textured_pixmap_from_gbm_bo when possible
Inspired by the modesetting driver. (Ported from radeon commit db28d35ce9fd07a2a4703f3df0633d4c8291ff9b) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'src')
-rw-r--r--src/amdgpu_glamor.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/amdgpu_glamor.c b/src/amdgpu_glamor.c
index 8b83910..ea49f82 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)