From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (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 47614191484 for ; Mon, 1 Sep 2025 15:33:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756740795; cv=none; b=rKYAyWcDMLAnz0cI7IdDiTiYNtikrJ8v1ut7LS0zW18mG/dEvjr/8cusWtk9qGzAXgHgtSGakxPwwenZ/M2ujR7VRgmgPvv20jyDsckD940yMJr0bCiH8FKX5FS20AQmCb3lbNRx1yk6V5BTMnKogbtxu7X1SlttUTspCVxxKcA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756740795; c=relaxed/simple; bh=XtaQ+t8uDNSujVrF8FDzv1tlD3YLzH/otb/Pemi3ifk=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=WmBD2wIFihyf33nJlBWPMn4eFZa7DjNj5r0PrGhTpGhz8V7MJiG5XRmd5E+B28ZDl0i25a+pv09Ift201T45l4tXLPZ3hSu/rfqVz2BCppqRuuIR6cfe7qVaZSLsBQie4ueeVFULRhT0GgI6I5hrIYy5xwzuCIMdn+zf71keUC4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=OjcXpLhu; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="OjcXpLhu" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 89CBD1A0D9B; Mon, 1 Sep 2025 15:33:09 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 5F21D60699; Mon, 1 Sep 2025 15:33:09 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 0D1861C22DDEC; Mon, 1 Sep 2025 17:33:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1756740788; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:content-language:in-reply-to:references:autocrypt; bh=MB6QBgcgS/tttvlQ1z41LKTfvpOMECR7AlIxEccvjr0=; b=OjcXpLhu6i/T6lOjHoMk9L3mBkvK5XeA1p3AbqErnkOJxBJ398cOej19OqLHGrmBoUy1+p Fh8k5dwyes81FxMZXlZJeuGrSbxMx/lyGAGEinKfZOcnqkgZMMp9vmRr1hx7mG5Af1BByn LsacVQA2zA9eThzrQCM6uEJQXLk2rd8Mb1Zz0IZ6KRFoIZRazYH/FbgA1Jfp4rCycXGQ/F 6wb6EeD7uTf+7daFg9Wulb2Z4NVESWh8RHA8qWi+Afeffx/XAUqhiOXK9hynPajK6O2ZsV FT0qp8XRMoYmu4Axh32gF7thCVT5Fd6z5OP3DtVirY2oUjdtDU10nlCEAogfZA== Message-ID: <4005bcd6-968b-4f49-a836-691f522af90e@bootlin.com> Date: Mon, 1 Sep 2025 17:33:00 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 0/2] drm/vkms: Fix plane blending z-order To: =?UTF-8?B?Sm9zw6kgRXhww7NzaXRv?= Cc: airlied@gmail.com, dri-devel@lists.freedesktop.org, hamohammed.sa@gmail.com, linux-kernel@vger.kernel.org, maarten.lankhorst@linux.intel.com, melissa.srw@gmail.com, mripard@kernel.org, simona@ffwll.ch, thomas.petazzoni@bootlin.com, tzimmermann@suse.de References: <20250801-vkms-fix-zpos-v1-0-d83ba1e6291d@bootlin.com> <20250901145206.51213-1-jose.exposito89@gmail.com> Content-Language: en-US From: Louis Chauvet Autocrypt: addr=louis.chauvet@bootlin.com; keydata= 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 In-Reply-To: <20250901145206.51213-1-jose.exposito89@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Last-TLS-Session-Version: TLSv1.3 Le 01/09/2025 à 16:52, José Expósito a écrit : > Hi Louis, > > I already made some comments about zpos here: > https://lore.kernel.org/dri-devel/aJDDr_9soeNRAmm0@fedora/ > But let's start the conversation here as well! > >>  As reported by Marius [1], the current blending algorithm for vkms planes >> is not future-proof. Currently the z-ordering is only garanteed by the >> creation order. As the future ConfigFS interface will allows to create >> planes, this order may vary. >> >> To avoid this, add the zpos property and blend the planes according to >> this zpos order. >> >> [1]:https://lore.kernel.org/all/aHpGGxZyimpJ8Ehz@xpredator/ > > In case you want to have a look, 3 years ago I sent a patch adding the > property and blending following the zpos order, but it wasn't merged: > https://github.com/JoseExposito/linux/commit/befc79a1341b27eb328b582c3841097d17ccce71 > The way "vkms_state->active_planes" is set is a bit simpler, but it might > not be valid anymore due to code changes. I looked quickly at your series, your solution is better (no complex loops), I need to check if I can use your solution, it is on my todo-list (finish to review igt patches too). > About this series, I didn't have a chance to run IGT test to validate it, > but in general your code looks good. > > My only question is, how do we avoid breaking changes in the configfs side? The "easy" solution is to have zpos in the first iteration of ConfigFS, but that's not cool and will slow down again the merge, I would like to avoid. > For the mutable/immutable configuration it'd be easy: We set it to > immutable by default, i.e, when the user creates a new plane via configfs: > > $ sudo mkdir /sys/kernel/config/vkms//planes/ > > We set "planes//zpos_mutability" to immutable. > > However, we don't know the plane type (required to set the zpos value) when > the user creates a new plane on configfs. Two ideas: if (plane_cfg.zpos was not updated by the user) change the plane_cfg.zpos every time plane_cfg.type is changed else don't change plane_cfg.zpos IDK if this is a good idea or not, but it should not break UAPI (older software can't change zpos because it did not exists, new softwares can manually override it). This is not good because it will change the behavior depending on the previous action of the user + we need to track in vkms if the value was changed or not, clearly not ideal. Maybe better idea: plane_cfg.zpos = -1 by default (or whatever special value, I need to check which values are invalid for zpos) On DRM plane creation: if(plane_cfg.zpos == -1) plane.zpos = 1/2/3 depending on plane type else plane.zpos = plane_cfg.zpos > Therefore, we can not set the correct value in "planes//zpos". > Have you already figured out a solution for this? > > Jose > > PS - In case you missed it, I created: > https://github.com/JoseExposito/vkmsctl > I'll add zpos there once we support it in configfs :) I just received it, amazing tool (in fact, I already had mine (in rust too), but very very dirty and some stuff hardcoded) Once I have the time, I will create a PR with some properties I have on my branches, so they will be ready. -- Louis Chauvet, Bootlin Embedded Linux and Kernel engineering https://bootlin.com