From 83a47c0ebe17caa79d12a8b2f94b59cc945452f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Wed, 11 Nov 2015 17:37:54 +0900 Subject: [PATCH] PRIME: Don't advertise offload capabilities when acceleration is disabled Xorg tends to crash if the user tries to actually use the offload capabilities with acceleration disabled. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57200 (ported from radeon commit c74de9fec13fac2c836bb2a07ae6f90e1d61e667) Reviewed-by: Alex Deucher --- src/amdgpu_kms.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c index 084f625..2efdbf5 100644 --- a/src/amdgpu_kms.c +++ b/src/amdgpu_kms.c @@ -668,14 +668,18 @@ static void AMDGPUSetupCapabilities(ScrnInfoPtr pScrn) pScrn->capabilities = 0; ret = drmGetCap(pAMDGPUEnt->fd, DRM_CAP_PRIME, &value); if (ret == 0) { - if (value & DRM_PRIME_CAP_EXPORT) - pScrn->capabilities |= - RR_Capability_SourceOutput | - RR_Capability_SinkOffload; - if (value & DRM_PRIME_CAP_IMPORT) - pScrn->capabilities |= - RR_Capability_SourceOffload | - RR_Capability_SinkOutput; + AMDGPUInfoPtr info = AMDGPUPTR(pScrn); + + if (value & DRM_PRIME_CAP_EXPORT) { + pScrn->capabilities |= RR_Capability_SourceOutput; + if (info->use_glamor && info->dri2.available) + pScrn->capabilities |= RR_Capability_SinkOffload; + } + if (value & DRM_PRIME_CAP_IMPORT) { + pScrn->capabilities |= RR_Capability_SinkOutput; + if (info->use_glamor && info->dri2.available) + pScrn->capabilities |= RR_Capability_SourceOffload; + } } #endif }