From 9c959fac3af28d191105f63236096ad456dca614 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 29 Sep 2022 16:42:09 +0200 Subject: [PATCH] Use DRM_CAP_CURSOR_WIDTH/HEIGHT if possible There's no need to hardcode the cursor size if the kernel can report the value it wants. --- src/amdgpu_kms.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c index 9364d17..1f049c9 100644 --- a/src/amdgpu_kms.c +++ b/src/amdgpu_kms.c @@ -1501,6 +1501,25 @@ static Bool AMDGPUCreateWindow_oneshot(WindowPtr pWin) return ret; } +static void amdgpu_determine_cursor_size(int fd, AMDGPUInfoPtr info) +{ + uint64_t value; + + if (drmGetCap(fd, DRM_CAP_CURSOR_WIDTH, &value) == 0) + info->cursor_w = value; + else if (info->family < AMDGPU_FAMILY_CI) + info->cursor_w = CURSOR_WIDTH; + else + info->cursor_w = CURSOR_WIDTH_CIK; + + if (drmGetCap(fd, DRM_CAP_CURSOR_HEIGHT, &value) == 0) + info->cursor_h = value; + else if (info->family < AMDGPU_FAMILY_CI) + info->cursor_h = CURSOR_HEIGHT; + else + info->cursor_h = CURSOR_HEIGHT_CIK; +} + /* When the root window is mapped, set the initial modes */ void AMDGPUWindowExposures_oneshot(WindowPtr pWin, RegionPtr pRegion #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1,16,99,901,0) @@ -1684,13 +1703,7 @@ Bool AMDGPUPreInit_KMS(ScrnInfoPtr pScrn, int flags) else pAMDGPUEnt->HasCRTC2 = TRUE; - if (info->family < AMDGPU_FAMILY_CI) { - info->cursor_w = CURSOR_WIDTH; - info->cursor_h = CURSOR_HEIGHT; - } else { - info->cursor_w = CURSOR_WIDTH_CIK; - info->cursor_h = CURSOR_HEIGHT_CIK; - } + amdgpu_determine_cursor_size(pAMDGPUEnt->fd, info); amdgpu_query_heap_size(pAMDGPUEnt->pDev, AMDGPU_GEM_DOMAIN_GTT, &heap_size, &max_allocation); -- 2.35.3