summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>2022-09-29 16:42:09 +0200
committerPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>2022-09-29 16:42:09 +0200
commit9c959fac3af28d191105f63236096ad456dca614 (patch)
tree5635ca987712d7646f6a2d43e026727086eabdf6
parent4e011b91fa3ef58b85327d3429889efd934b3531 (diff)
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.
-rw-r--r--src/amdgpu_kms.c27
1 files 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);