From nobody Wed Dec 17 09:47:58 2025 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D78857E110 for ; Wed, 12 Jun 2024 19:55:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.60.130.6 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718222158; cv=none; b=e7juZPX/fNju8sM571SsMQf+LASwa2un7HdGo5/R+Vbrysg5jpMccTPAYHa0dNbCujqbLjI0wMcj+4zqTN2sWRbXyLQdw2Xy3l8DFQrn0Fd7BcIzYYt7OjxTnAJR2DSz7iJ8ZjwPeLWe7DKiEpQqS5oz4zwUGkQxIo8KMUPnxoY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718222158; c=relaxed/simple; bh=Dh2KtUvAtiglq0b5/QtxJb7/lWsVoYr0FusrI650O/U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=uk9xPwkQcD8MnCG+8+9iMb+QQumE2qz35ohFhnkuGOFDTunGqwH59fV/AaIemsU2mdXkfRFjUmIh+cjPNWYfFApKWWNdUKH6gh4j1TFsAa8oxfmSibNrmWMz7XSjGtVz0/ehDmDQNdJXGvjzQ1wMBUnkOi4IeyDJMVYQaN+JPZ0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=Vtz+E3fb; arc=none smtp.client-ip=178.60.130.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="Vtz+E3fb" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=Ld6CWp6MvzsfLCexkDmw2gq97DL2MMR6pnNJDMxtfIA=; b=Vtz+E3fbD9VMAjoM7eXXw/SekN /PGXprwiiarZARHaEYw01wCUTLmPpMy3P2njBf20E2WoMhObsnQPJ/ht8zj8hmcbsthTvjr7CpFow B1fLTQ+hYpXR87n+bzFaP5+eGIkDr/NhT9QuGdD32fUZDRnP/aYuZBm1HuW103UfEIBaU7UBs9yv1 dzaues67Dmyc8wccMFs0E1EssR4SLmIDKjRWRRz3f3V+Tmcelbfe++1CIAqYUW/xKBqYZVIY/9fL9 E8g+/0zAE+dAQdKtaFF6QlAPRhEbpPds8lj9UPBh6ZX3/7HO2/xtFWUQqc2U3QQTFkCX/SBH/h8Ot L93b3x3A==; Received: from [191.204.194.169] (helo=localhost.localdomain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1sHTmg-002RtF-JM; Wed, 12 Jun 2024 21:37:27 +0200 From: =?UTF-8?q?Andr=C3=A9=20Almeida?= To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, Simon Ser , Pekka Paalanen , daniel@ffwll.ch, Daniel Stone , =?UTF-8?q?=27Marek=20Ol=C5=A1=C3=A1k=27?= , Dave Airlie , ville.syrjala@linux.intel.com, Xaver Hugl , Joshua Ashton , =?UTF-8?q?Michel=20D=C3=A4nzer?= , =?UTF-8?q?Andr=C3=A9=20Almeida?= Subject: [PATCH v5 1/3] drm/atomic: Allow userspace to use explicit sync with atomic async flips Date: Wed, 12 Jun 2024 16:37:11 -0300 Message-ID: <20240612193713.167448-2-andrealmeid@igalia.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240612193713.167448-1-andrealmeid@igalia.com> References: <20240612193713.167448-1-andrealmeid@igalia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Allow userspace to use explicit synchronization with atomic async flips. That means that the flip will wait for some hardware fence, and then will flip as soon as possible (async) in regard of the vblank. Signed-off-by: Andr=C3=A9 Almeida --- drivers/gpu/drm/drm_atomic_uapi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic= _uapi.c index 22bbb2d83e30..2e1d9391febe 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -1070,7 +1070,9 @@ int drm_atomic_set_property(struct drm_atomic_state *= state, break; } =20 - if (async_flip && prop !=3D config->prop_fb_id) { + if (async_flip && + prop !=3D config->prop_fb_id && + prop !=3D config->prop_in_fence_fd) { ret =3D drm_atomic_plane_get_property(plane, plane_state, prop, &old_val); ret =3D drm_atomic_check_prop_changes(ret, old_val, prop_value, prop); --=20 2.45.2 From nobody Wed Dec 17 09:47:58 2025 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D37D184A30 for ; Wed, 12 Jun 2024 19:55:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.60.130.6 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718222154; cv=none; b=Ro6BzwjV3qEVlx934Lit6RmobZutUwZBZgnaYscVSB6cje3DN1ZEpBJl2gTE19D8lMxWHwKlgRdLn/mJt8jFdkov51ioNoefPFNmymm3H9oLg5GPA4ZCdOT5kNsjUnj7ErIQus2Ks68S2jXIInI7TrN71IppQhI3dVUlUcV1QGs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718222154; c=relaxed/simple; bh=uKeP+wAXni5MOUXsaMG406PdThCXm4RY4vNFb5fsM8o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=VhQGLCWk04/g5Z2EfUQRYTm8KuOzLS7aBNJ3GMwppWBAOY4aK/52n9TnjmxugE4TKXsFWrB8oLsZRSREPohnGUXQ5VjXXI+l0nSW7+7Dn1HS3eqYDX2IBMPxInxtH+Z2DHA1ondstFQtYKfXZMR0okWAFyfZjbCE7IoNaQ4meqI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=Z1DlfMwK; arc=none smtp.client-ip=178.60.130.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="Z1DlfMwK" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=z9r8+zo+4FzJ8W7BNm4EVq7tJIuBmkd8YYzubry2x7c=; b=Z1DlfMwKkSBovovn64D05AzEnZ /SnVdz89JrylCVzuIYa5F8K6Sl2Yt9/SfVMSy6knCuAh5i/reWDzNUhxSPkmLzwF5MdKGVcnp7wK5 GkNk49vAMrUhPVUIuxiUG81dZNR3ZIoaQDF26XdwkO/Nfw81lnAEGkzZcqhUhP1BXdUeJukUaitEg /1Q/EYbMohJRxIPVOISW6XfAvp7BcKx56/BNMypc2j9GNd1/0O8oS9PBPVsFwBbAR3mykSkgSCK5b 9hAUnBVf9kVSpFjiRLex5w94ZxtzdjiQrMsuOTfnjH1w5r1Z/U5n61IoKBovTQeBxo4kHMf0E5kAe mFWRNvsg==; Received: from [191.204.194.169] (helo=localhost.localdomain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1sHTml-002RtF-14; Wed, 12 Jun 2024 21:37:31 +0200 From: =?UTF-8?q?Andr=C3=A9=20Almeida?= To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, Simon Ser , Pekka Paalanen , daniel@ffwll.ch, Daniel Stone , =?UTF-8?q?=27Marek=20Ol=C5=A1=C3=A1k=27?= , Dave Airlie , ville.syrjala@linux.intel.com, Xaver Hugl , Joshua Ashton , =?UTF-8?q?Michel=20D=C3=A4nzer?= , =?UTF-8?q?Andr=C3=A9=20Almeida?= Subject: [PATCH v5 2/3] drm: Allow drivers to choose plane types to async flip Date: Wed, 12 Jun 2024 16:37:12 -0300 Message-ID: <20240612193713.167448-3-andrealmeid@igalia.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240612193713.167448-1-andrealmeid@igalia.com> References: <20240612193713.167448-1-andrealmeid@igalia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Different planes may have different capabilities of doing async flips, so create a field to let drivers allow async flip per plane type. Signed-off-by: Andr=C3=A9 Almeida --- drivers/gpu/drm/drm_atomic_uapi.c | 4 ++-- drivers/gpu/drm/drm_plane.c | 3 +++ include/drm/drm_plane.h | 5 +++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic= _uapi.c index 2e1d9391febe..dd4b1578f141 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -1079,9 +1079,9 @@ int drm_atomic_set_property(struct drm_atomic_state *= state, break; } =20 - if (async_flip && plane_state->plane->type !=3D DRM_PLANE_TYPE_PRIMARY) { + if (async_flip && !plane_state->plane->async_flip) { drm_dbg_atomic(prop->dev, - "[OBJECT:%d] Only primary planes can be changed during async fl= ip\n", + "[OBJECT:%d] This type of plane cannot be changed during async = flip\n", obj->id); ret =3D -EINVAL; break; diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c index 57662a1fd345..bbcec3940636 100644 --- a/drivers/gpu/drm/drm_plane.c +++ b/drivers/gpu/drm/drm_plane.c @@ -385,6 +385,9 @@ static int __drm_universal_plane_init(struct drm_device= *dev, =20 drm_modeset_lock_init(&plane->mutex); =20 + if (type =3D=3D DRM_PLANE_TYPE_PRIMARY) + plane->async_flip =3D true; + plane->base.properties =3D &plane->properties; plane->dev =3D dev; plane->funcs =3D funcs; diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h index 9507542121fa..0bebc72af5c3 100644 --- a/include/drm/drm_plane.h +++ b/include/drm/drm_plane.h @@ -786,6 +786,11 @@ struct drm_plane { * @kmsg_panic: Used to register a panic notifier for this plane */ struct kmsg_dumper kmsg_panic; + + /** + * @async_flip: indicates if a plane can do async flips + */ + bool async_flip; }; =20 #define obj_to_plane(x) container_of(x, struct drm_plane, base) --=20 2.45.2 From nobody Wed Dec 17 09:47:58 2025 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 473876A8DB for ; Wed, 12 Jun 2024 19:37:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.60.130.6 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718221065; cv=none; b=hUgism7Zwfhnze1q6PHPhx8X2n2h2ZFsq0ux+1RYwj4mAzrR+M/vfun0GipKnaBbHhe+Q0HCdfGomG8g9JK01ONj+J2Mf4owKRafe+Wm7cg7ELcw3KEzcCnDmcVQ+gC4Ss0uxDuMlYcOQXmLsVOtGqYhLvbsCmR3KcV2afaVro8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718221065; c=relaxed/simple; bh=bAgvQLjry72ucsu6tyvE+IoTpk3LdoXsF+98JxrZlGc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=pfrBQqgQ8DZfWo/DbAG7u0e/HvshbAcS6YD+tkRuXPnOyIqzNRS+qZZmLsyIVXWYa0WHJHAeJeEKi421onSADsq3aIdcejgWIyIyhx9SvEN0ZwsuVnuDn0MjzPpvnQ271/2PrQS4ZDy7CYbjisHIk9QyJ9DWVPG+ZS6F8r4OAi8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=Pj8oAdlG; arc=none smtp.client-ip=178.60.130.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="Pj8oAdlG" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=rJP3bi32e6r8RV+D2X0N8VAFuxM3UDfcxB2VNYPJ2TI=; b=Pj8oAdlGr1ZqbcE2L91WeNekxr UJtQDy2roFDtBjZdT9mC+3YBbRvFn8Akid+p+qWIVSNiBkorGQXAywBjBl3PywJpv0B0Nrnyfx4Ql 3QmcQ3OVRTLFMbqmN2S9Rw07Vm7tXgLhOXCwBpeD0agZtb8wB8Lo6Ed4LU9Gw3sw7BD0VFgXx9ClE S26I6mzsO+3y1fY89GpB8fbN8opQSeRA1j+1i+nY0aVJ0Qa0a3VJZZhQHzw1AobZV+quj0ItSHQCy GJZScBPIAZxwqbOJ1T7XHMemb9BczneTGknNwktnvaTeTNbF4ICoZgzVF99oH8YudzeOueMxWqekE cOaa+Knw==; Received: from [191.204.194.169] (helo=localhost.localdomain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1sHTmp-002RtF-F2; Wed, 12 Jun 2024 21:37:35 +0200 From: =?UTF-8?q?Andr=C3=A9=20Almeida?= To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: kernel-dev@igalia.com, alexander.deucher@amd.com, christian.koenig@amd.com, Simon Ser , Pekka Paalanen , daniel@ffwll.ch, Daniel Stone , =?UTF-8?q?=27Marek=20Ol=C5=A1=C3=A1k=27?= , Dave Airlie , ville.syrjala@linux.intel.com, Xaver Hugl , Joshua Ashton , =?UTF-8?q?Michel=20D=C3=A4nzer?= , =?UTF-8?q?Andr=C3=A9=20Almeida?= Subject: [PATCH v5 3/3] drm/amdgpu: Make it possible to async flip overlay planes Date: Wed, 12 Jun 2024 16:37:13 -0300 Message-ID: <20240612193713.167448-4-andrealmeid@igalia.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240612193713.167448-1-andrealmeid@igalia.com> References: <20240612193713.167448-1-andrealmeid@igalia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable amdgpu can handle async flips on overlay planes, so mark it as true during the plane initialization. Signed-off-by: Andr=C3=A9 Almeida --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/driv= ers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c index 8a4c40b4c27e..dc5392c08a87 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c @@ -1708,6 +1708,7 @@ int amdgpu_dm_plane_init(struct amdgpu_display_manage= r *dm, } else if (plane->type =3D=3D DRM_PLANE_TYPE_OVERLAY) { unsigned int zpos =3D 1 + drm_plane_index(plane); drm_plane_create_zpos_property(plane, zpos, 1, 254); + plane->async_flip =3D true; } else if (plane->type =3D=3D DRM_PLANE_TYPE_CURSOR) { drm_plane_create_zpos_immutable_property(plane, 255); } --=20 2.45.2