From patchwork Mon Dec 4 13:13:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 750068 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="n2v8KTgl" Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com [IPv6:2a00:1450:4864:20::142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 927DD95 for ; Mon, 4 Dec 2023 05:14:59 -0800 (PST) Received: by mail-lf1-x142.google.com with SMTP id 2adb3069b0e04-50bc8a9503fso5886988e87.3 for ; Mon, 04 Dec 2023 05:14:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1701695698; x=1702300498; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BlFVUNY6tW/87kD0ZRvwKU4P7/Sbw3efuhtuCHaoXGw=; b=n2v8KTglhoQpznhvl9hFC4enVgGWDhvUv94vOPU3g0f0+mJ/1JMC6k6F8yp4rtHQlF lUkkSWzJKuyTOzdIrGiAneUuOfpbnK+i2XBRVUWvhnZNf7fHuGH9fJhtVLbVRc/Fu9j7 TrZKbiuT/7/la2dh5CjDK/MXoh1dxaZAbsLXbMvuTZAOzSx8zZ2zghm+VoyzPxVw8Xh+ S9emI3V2x/wPlZ1vq3aTM24xLpdGz5LfqnlisTD3nxXuWPtxkIQNpvbVBmEzr2WadhJ4 ahm7awvRGpDwTDHXoXKjr1yz7nrIcBOWgMad27OYO5RGO+CDDTKXGsa2N9QnQn1T2Tji 15zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701695698; x=1702300498; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BlFVUNY6tW/87kD0ZRvwKU4P7/Sbw3efuhtuCHaoXGw=; b=Wq1kpXSAjPE6J5pxAbyFxVzVhFGs+TyZ92hcrX5ir+mldUiF9s9GWRqYfBzOk2lJR+ MsB9dCPThgVa3BptvGdeLQqSi0lAwhj1wyZ2NjqngmHLHO3ZstEZKwJ3ETECYAtZKm9f va1a0HKDM5b3Gs4CERyCN2G7jxe9fZuWeblo8pQ+d0jgakQODy45N3lQxXJcy2vJEkko NNxelnUd4Ys+q3R7sVcwAOHLJSrjOOyAQ256Akmne+QNqsODkg2i7es1lQae/3GXYHse //Ma3taY51QyFs219MM6Obv02eHFkoa+1KCOK/xzd9QZVkRu7lTvXU1n8j1uYMrEBqhe Uhjw== X-Gm-Message-State: AOJu0Yzb40hf7K83Jm02tgZof/mL31kdsKwToXbFQL8xXHfsVJXU24M0 AJWmCPsX6j1Gl3AtK+rZiiA4mg== X-Google-Smtp-Source: AGHT+IEgZeVEj6wNutUxqv9hCljBjhDxuKI8mprREK+99n098AI2zpr7KSSKygJ58uNQmVmdrQbD5A== X-Received: by 2002:a05:6512:ac3:b0:50b:e229:23b0 with SMTP id n3-20020a0565120ac300b0050be22923b0mr2318513lfu.94.1701695697747; Mon, 04 Dec 2023 05:14:57 -0800 (PST) Received: from eriador.lan (dzdqv0yyyyyyyyyyyykxt-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::227]) by smtp.gmail.com with ESMTPSA id br25-20020a056512401900b0050bc59642casm1251924lfb.286.2023.12.04.05.14.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 05:14:57 -0800 (PST) From: Dmitry Baryshkov To: Thierry Reding , Sam Ravnborg , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: Rob Clark , Abhinav Kumar , dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Subject: [PATCH 2/7] Revert "drm/atomic: Move framebuffer checks to helper" Date: Mon, 4 Dec 2023 15:13:49 +0200 Message-ID: <20231204131455.19023-3-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231204131455.19023-1-dmitry.baryshkov@linaro.org> References: <20231204131455.19023-1-dmitry.baryshkov@linaro.org> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This reverts commit 4ba6b7a646321e740c7f2d80c90505019c4e8fce. Altough the Solid Fill planes patchset got all reviews and acknowledgements, it doesn't fulfill requirements for the new uABI. It has neither corresponding open-source userspace implementation nor the IGT tests coverage. Reverting this patchset until userspace obligations are fulfilled. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic.c | 130 +++++++++++++++-------------------- 1 file changed, 57 insertions(+), 73 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c index c6f2b86c48ae..1339785fbe80 100644 --- a/drivers/gpu/drm/drm_atomic.c +++ b/drivers/gpu/drm/drm_atomic.c @@ -589,76 +589,6 @@ plane_switching_crtc(const struct drm_plane_state *old_plane_state, return true; } -static int drm_atomic_plane_check_fb(const struct drm_plane_state *state) -{ - struct drm_plane *plane = state->plane; - const struct drm_framebuffer *fb = state->fb; - struct drm_mode_rect *clips; - - uint32_t num_clips; - unsigned int fb_width, fb_height; - int ret; - - /* Check whether this plane supports the fb pixel format. */ - ret = drm_plane_check_pixel_format(plane, fb->format->format, - fb->modifier); - - if (ret) { - drm_dbg_atomic(plane->dev, - "[PLANE:%d:%s] invalid pixel format %p4cc, modifier 0x%llx\n", - plane->base.id, plane->name, - &fb->format->format, fb->modifier); - return ret; - } - - fb_width = fb->width << 16; - fb_height = fb->height << 16; - - /* Make sure source coordinates are inside the fb. */ - if (state->src_w > fb_width || - state->src_x > fb_width - state->src_w || - state->src_h > fb_height || - state->src_y > fb_height - state->src_h) { - drm_dbg_atomic(plane->dev, - "[PLANE:%d:%s] invalid source coordinates " - "%u.%06ux%u.%06u+%u.%06u+%u.%06u (fb %ux%u)\n", - plane->base.id, plane->name, - state->src_w >> 16, - ((state->src_w & 0xffff) * 15625) >> 10, - state->src_h >> 16, - ((state->src_h & 0xffff) * 15625) >> 10, - state->src_x >> 16, - ((state->src_x & 0xffff) * 15625) >> 10, - state->src_y >> 16, - ((state->src_y & 0xffff) * 15625) >> 10, - fb->width, fb->height); - return -ENOSPC; - } - - clips = __drm_plane_get_damage_clips(state); - num_clips = drm_plane_get_damage_clips_count(state); - - /* Make sure damage clips are valid and inside the fb. */ - while (num_clips > 0) { - if (clips->x1 >= clips->x2 || - clips->y1 >= clips->y2 || - clips->x1 < 0 || - clips->y1 < 0 || - clips->x2 > fb_width || - clips->y2 > fb_height) { - drm_dbg_atomic(plane->dev, - "[PLANE:%d:%s] invalid damage clip %d %d %d %d\n", - plane->base.id, plane->name, clips->x1, - clips->y1, clips->x2, clips->y2); - return -EINVAL; - } - clips++; - num_clips--; - } - - return 0; -} - /** * drm_atomic_plane_check - check plane state * @old_plane_state: old plane state to check @@ -675,6 +605,9 @@ static int drm_atomic_plane_check(const struct drm_plane_state *old_plane_state, struct drm_plane *plane = new_plane_state->plane; struct drm_crtc *crtc = new_plane_state->crtc; const struct drm_framebuffer *fb = new_plane_state->fb; + unsigned int fb_width, fb_height; + struct drm_mode_rect *clips; + uint32_t num_clips; int ret; /* either *both* CRTC and FB must be set, or neither */ @@ -701,6 +634,17 @@ static int drm_atomic_plane_check(const struct drm_plane_state *old_plane_state, return -EINVAL; } + /* Check whether this plane supports the fb pixel format. */ + ret = drm_plane_check_pixel_format(plane, fb->format->format, + fb->modifier); + if (ret) { + drm_dbg_atomic(plane->dev, + "[PLANE:%d:%s] invalid pixel format %p4cc, modifier 0x%llx\n", + plane->base.id, plane->name, + &fb->format->format, fb->modifier); + return ret; + } + /* Give drivers some help against integer overflows */ if (new_plane_state->crtc_w > INT_MAX || new_plane_state->crtc_x > INT_MAX - (int32_t) new_plane_state->crtc_w || @@ -714,10 +658,50 @@ static int drm_atomic_plane_check(const struct drm_plane_state *old_plane_state, return -ERANGE; } + fb_width = fb->width << 16; + fb_height = fb->height << 16; - ret = drm_atomic_plane_check_fb(new_plane_state); - if (ret) - return ret; + /* Make sure source coordinates are inside the fb. */ + if (new_plane_state->src_w > fb_width || + new_plane_state->src_x > fb_width - new_plane_state->src_w || + new_plane_state->src_h > fb_height || + new_plane_state->src_y > fb_height - new_plane_state->src_h) { + drm_dbg_atomic(plane->dev, + "[PLANE:%d:%s] invalid source coordinates " + "%u.%06ux%u.%06u+%u.%06u+%u.%06u (fb %ux%u)\n", + plane->base.id, plane->name, + new_plane_state->src_w >> 16, + ((new_plane_state->src_w & 0xffff) * 15625) >> 10, + new_plane_state->src_h >> 16, + ((new_plane_state->src_h & 0xffff) * 15625) >> 10, + new_plane_state->src_x >> 16, + ((new_plane_state->src_x & 0xffff) * 15625) >> 10, + new_plane_state->src_y >> 16, + ((new_plane_state->src_y & 0xffff) * 15625) >> 10, + fb->width, fb->height); + return -ENOSPC; + } + + clips = __drm_plane_get_damage_clips(new_plane_state); + num_clips = drm_plane_get_damage_clips_count(new_plane_state); + + /* Make sure damage clips are valid and inside the fb. */ + while (num_clips > 0) { + if (clips->x1 >= clips->x2 || + clips->y1 >= clips->y2 || + clips->x1 < 0 || + clips->y1 < 0 || + clips->x2 > fb_width || + clips->y2 > fb_height) { + drm_dbg_atomic(plane->dev, + "[PLANE:%d:%s] invalid damage clip %d %d %d %d\n", + plane->base.id, plane->name, clips->x1, + clips->y1, clips->x2, clips->y2); + return -EINVAL; + } + clips++; + num_clips--; + } if (plane_switching_crtc(old_plane_state, new_plane_state)) { drm_dbg_atomic(plane->dev, From patchwork Mon Dec 4 13:13:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 750067 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="wPSHUwtz" Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com [IPv6:2a00:1450:4864:20::142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2AFE9FE for ; Mon, 4 Dec 2023 05:15:01 -0800 (PST) Received: by mail-lf1-x142.google.com with SMTP id 2adb3069b0e04-50bfd8d5c77so529274e87.1 for ; Mon, 04 Dec 2023 05:15:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1701695699; x=1702300499; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aeReGTEh9WdazCjVx3s9wY0Guvu7IN3fugZ3Sd5wrus=; b=wPSHUwtzaCUpy2D7EC1tuAu/j0GojGDiXxj9QOTXdO4BjMOoCvODRzjwLZKUi+zrLn pVsYqspiS/tlgzPMc9Blwtbx65Zd2h5/sZWS1F5Ubf2gJ8kMqDTW/e0uZERtrxY4o76V tpRicqVbPT/LPcTwx3ih/x6eJpoSNHVVbuWBl9TMx5Qe1dtD/o/Y8tqJBEtIMjYPWCUG vI+FQQ3lxSqsFIvB8bNyJDnR8u96ULt44YwCoTLbqEXh9nWfe6IA0ZqwmzNeYlet9NXG FTjtwaMkkYsxdHPNN+wjXzTEhnNFesS/5+wiK0NfxurANpfNupP6Ya04pHoKMbmH0uQm hK1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701695699; x=1702300499; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aeReGTEh9WdazCjVx3s9wY0Guvu7IN3fugZ3Sd5wrus=; b=GGwR9ld2CNGb4WgaTcpatW2qm3Z3pKsCCMd3iwXNRtrzPaTYcq/AmxBTnRVXrCAewi vN+CUNznV7qtDd1nK1vMuPp/gPkMoswAQz0KOaV1IMsyCPPzWHhzutyoWgPvT3ESxvDL zcuo+T4wb+FrCVJTDMYDD/ETgN5ZXer3WK4eCCdR03mUn0PJpJAcz1ygpXDzDwMIR7yY o3dqbpp65ELuIwMRsajGrbBoQCaqSdNV2dT9Jc4v6bq57YHciyVg54xUQP0LQ7Wol90X vR70nLGi53Viy4kiMMwt8680LoGvPrgpb4nj5A/3P4RhRKCprUB5yBgiojsVHcA/c2YT rKrQ== X-Gm-Message-State: AOJu0YwSGJorbL40MhE2uzykpY8+zt285ply8au0spi22EqCipOfC3TJ pygNBm5Y472doPG2NDYsz6ej1Q== X-Google-Smtp-Source: AGHT+IFJ6iOY8OeeHShhkf14uV3ednojj/zd1MnXRsPIVojuWFZfWrMoJV0tGRwuLlo3iG4L8wnh7w== X-Received: by 2002:ac2:521c:0:b0:50b:ef9b:bde5 with SMTP id a28-20020ac2521c000000b0050bef9bbde5mr482316lfl.150.1701695699509; Mon, 04 Dec 2023 05:14:59 -0800 (PST) Received: from eriador.lan (dzdqv0yyyyyyyyyyyykxt-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::227]) by smtp.gmail.com with ESMTPSA id br25-20020a056512401900b0050bc59642casm1251924lfb.286.2023.12.04.05.14.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 05:14:59 -0800 (PST) From: Dmitry Baryshkov To: Thierry Reding , Sam Ravnborg , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: Rob Clark , Abhinav Kumar , dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Subject: [PATCH 4/7] Revert "drm/atomic: Add pixel source to plane state dump" Date: Mon, 4 Dec 2023 15:13:51 +0200 Message-ID: <20231204131455.19023-5-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231204131455.19023-1-dmitry.baryshkov@linaro.org> References: <20231204131455.19023-1-dmitry.baryshkov@linaro.org> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This reverts commit 8283ac7871a959848e09fc6593b8c12b8febfee6. Altough the Solid Fill planes patchset got all reviews and acknowledgements, it doesn't fulfill requirements for the new uABI. It has neither corresponding open-source userspace implementation nor the IGT tests coverage. Reverting this patchset until userspace obligations are fulfilled. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic.c | 1 - drivers/gpu/drm/drm_blend.c | 1 - drivers/gpu/drm/drm_crtc_internal.h | 1 - 3 files changed, 3 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c index 02aa7df832cc..f1a503aafe5a 100644 --- a/drivers/gpu/drm/drm_atomic.c +++ b/drivers/gpu/drm/drm_atomic.c @@ -722,7 +722,6 @@ static void drm_atomic_plane_print_state(struct drm_printer *p, drm_printf(p, "plane[%u]: %s\n", plane->base.id, plane->name); drm_printf(p, "\tcrtc=%s\n", state->crtc ? state->crtc->name : "(null)"); - drm_printf(p, "\tpixel-source=%s\n", drm_get_pixel_source_name(state->pixel_source)); drm_printf(p, "\tfb=%u\n", state->fb ? state->fb->base.id : 0); if (state->fb) drm_framebuffer_print_info(p, 2, state->fb); diff --git a/drivers/gpu/drm/drm_blend.c b/drivers/gpu/drm/drm_blend.c index 9c1608f7c1df..37b31b7e5ce5 100644 --- a/drivers/gpu/drm/drm_blend.c +++ b/drivers/gpu/drm/drm_blend.c @@ -647,7 +647,6 @@ static const struct drm_prop_enum_list drm_pixel_source_enum_list[] = { { DRM_PLANE_PIXEL_SOURCE_FB, "FB" }, { DRM_PLANE_PIXEL_SOURCE_SOLID_FILL, "SOLID_FILL" }, }; -DRM_ENUM_NAME_FN(drm_get_pixel_source_name, drm_pixel_source_enum_list); /** * drm_plane_create_pixel_source_property - create a new pixel source property diff --git a/drivers/gpu/drm/drm_crtc_internal.h b/drivers/gpu/drm/drm_crtc_internal.h index 4114675c0728..a514d5207e41 100644 --- a/drivers/gpu/drm/drm_crtc_internal.h +++ b/drivers/gpu/drm/drm_crtc_internal.h @@ -269,7 +269,6 @@ int drm_plane_check_pixel_format(struct drm_plane *plane, u32 format, u64 modifier); struct drm_mode_rect * __drm_plane_get_damage_clips(const struct drm_plane_state *state); -const char *drm_get_pixel_source_name(int val); /* drm_bridge.c */ void drm_bridge_detach(struct drm_bridge *bridge); From patchwork Mon Dec 4 13:13:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 750066 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="kbgUAPM0" Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D650FD7 for ; Mon, 4 Dec 2023 05:15:03 -0800 (PST) Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-50bf82f4409so820711e87.0 for ; Mon, 04 Dec 2023 05:15:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1701695702; x=1702300502; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0rE6lhBU7YLvWGChwbplqtvJzXDkEUrBtUu71JJ4hyI=; b=kbgUAPM0wHZG/9HwpRCwX7JcKzOc4ioxU5s8XvEo+laFg8qC3fuTxRyKvzV89HsfPt kK8mbOqh4vpHcq6+spfDlHF2nIndaQHu4CAAHyd2xyRdj53Kk1izFeih2ZqByaDIMiKs jkmKNdEPNn6CjkvKlrd23669Ixg1cheXf16duL62x1InJLhTPvKAFN2YC6li9yqkk+eU V8bp6ySMCQnYcbpbwHrs0s7j+/JxNDjbRBdaJdv/N9iXm+wIEePRyhJQS56R0+WcxFnl ugjs0H4C+7NnUCrvGHWJmKsd8mS8YC1tMtVp2PaqgZr1IFCaN4jfUFKwi9tYnOSQZIY+ 4P/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701695702; x=1702300502; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0rE6lhBU7YLvWGChwbplqtvJzXDkEUrBtUu71JJ4hyI=; b=YJIpbNLqHnfG4dBMrv5bBpAcWhn66mvcm5tdalN89twVUM746s9gtSHuZRNl7iD8Il alohseJjVnAiV6Uj4qx18ea5rUdxuXCVcdvvdRR+0qsgyeMNVnygnj4S2c9V9uDSCk93 hOKpBn4ZKInTDFN7MBrpEGgGSyv8Kf9st6IlM5bnogG203edyQmfthhFzL3fMS7zfOap Ie3KqMFjRyRu+hhtFIHm9vF/gmFs/0ikM9797+O9/7BCkihAyNET5WVpJ+3t2UZ+5w1Q BhAWE8wnmXgwLFDTQkhymJAtJAoCqE2kp/BSM1zs7AWrC9+psUVZJbNlmhLFOSyHGFwW X7tA== X-Gm-Message-State: AOJu0YxhaJHqfUqj+LCeCgdNHE1ZAQvPhE+pY/GYPh0xkufnaNs0rlAi EMEW5DM5MGri5O6D6VnaRMDVCm+ZVPLrkYz4GPv3DyRF X-Google-Smtp-Source: AGHT+IFhS7Tf1dloTzZjb34BlPCcQ69FT8FWAktyroXLOjwsZdZD5JVL1divOdF9b6UIbfLL9pfO2Q== X-Received: by 2002:a19:f808:0:b0:50b:fe40:ada5 with SMTP id a8-20020a19f808000000b0050bfe40ada5mr262480lff.2.1701695701645; Mon, 04 Dec 2023 05:15:01 -0800 (PST) Received: from eriador.lan (dzdqv0yyyyyyyyyyyykxt-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::227]) by smtp.gmail.com with ESMTPSA id br25-20020a056512401900b0050bc59642casm1251924lfb.286.2023.12.04.05.15.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 05:15:01 -0800 (PST) From: Dmitry Baryshkov To: Thierry Reding , Sam Ravnborg , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: Rob Clark , Abhinav Kumar , dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Subject: [PATCH 7/7] Revert "drm: Introduce pixel_source DRM plane property" Date: Mon, 4 Dec 2023 15:13:54 +0200 Message-ID: <20231204131455.19023-8-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231204131455.19023-1-dmitry.baryshkov@linaro.org> References: <20231204131455.19023-1-dmitry.baryshkov@linaro.org> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This reverts commit e50e5fed41c7eed2db4119645bf3480ec43fec11. Altough the Solid Fill planes patchset got all reviews and acknowledgements, it doesn't fulfill requirements for the new uABI. It has neither corresponding open-source userspace implementation nor the IGT tests coverage. Reverting this patchset until userspace obligations are fulfilled. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_state_helper.c | 1 - drivers/gpu/drm/drm_atomic_uapi.c | 4 - drivers/gpu/drm/drm_blend.c | 94 ----------------------- drivers/gpu/drm/drm_plane.c | 19 +---- include/drm/drm_blend.h | 2 - include/drm/drm_plane.h | 21 ----- 6 files changed, 4 insertions(+), 137 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c index 311b04edf742..54975de44a0e 100644 --- a/drivers/gpu/drm/drm_atomic_state_helper.c +++ b/drivers/gpu/drm/drm_atomic_state_helper.c @@ -252,7 +252,6 @@ void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *plane_state, plane_state->alpha = DRM_BLEND_ALPHA_OPAQUE; plane_state->pixel_blend_mode = DRM_MODE_BLEND_PREMULTI; - plane_state->pixel_source = DRM_PLANE_PIXEL_SOURCE_FB; if (plane->color_encoding_property) { if (!drm_object_property_get_default_value(&plane->base, diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c index bd7140531948..aee4a65d4959 100644 --- a/drivers/gpu/drm/drm_atomic_uapi.c +++ b/drivers/gpu/drm/drm_atomic_uapi.c @@ -562,8 +562,6 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane, state->src_w = val; } else if (property == config->prop_src_h) { state->src_h = val; - } else if (property == plane->pixel_source_property) { - state->pixel_source = val; } else if (property == plane->alpha_property) { state->alpha = val; } else if (property == plane->blend_mode_property) { @@ -652,8 +650,6 @@ drm_atomic_plane_get_property(struct drm_plane *plane, *val = state->src_w; } else if (property == config->prop_src_h) { *val = state->src_h; - } else if (property == plane->pixel_source_property) { - *val = state->pixel_source; } else if (property == plane->alpha_property) { *val = state->alpha; } else if (property == plane->blend_mode_property) { diff --git a/drivers/gpu/drm/drm_blend.c b/drivers/gpu/drm/drm_blend.c index fce734cdb85b..6e74de833466 100644 --- a/drivers/gpu/drm/drm_blend.c +++ b/drivers/gpu/drm/drm_blend.c @@ -185,25 +185,6 @@ * plane does not expose the "alpha" property, then this is * assumed to be 1.0 * - * pixel_source: - * pixel_source is set up with drm_plane_create_pixel_source_property(). - * It is used to toggle the active source of pixel data for the plane. - * The plane will only display data from the set pixel_source -- any - * data from other sources will be ignored. - * - * For non-framebuffer sources, if pixel_source is set to a non-framebuffer - * and non-NONE source, and the corresponding source property is NULL, then - * the atomic commit should return an error. - * - * Possible values: - * - * "NONE": - * No active pixel source. - * Committing with a NONE pixel source will disable the plane. - * - * "FB": - * Framebuffer source set by the "FB_ID" property. - * * Note that all the property extensions described here apply either to the * plane or the CRTC (e.g. for the background color, which currently is not * exposed and assumed to be black). @@ -634,78 +615,3 @@ int drm_plane_create_blend_mode_property(struct drm_plane *plane, return 0; } EXPORT_SYMBOL(drm_plane_create_blend_mode_property); - -static const struct drm_prop_enum_list drm_pixel_source_enum_list[] = { - { DRM_PLANE_PIXEL_SOURCE_NONE, "NONE" }, - { DRM_PLANE_PIXEL_SOURCE_FB, "FB" }, -}; - -/** - * drm_plane_create_pixel_source_property - create a new pixel source property - * @plane: DRM plane - * @extra_sources: Bitmask of additional supported pixel_sources for the driver. - * DRM_PLANE_PIXEL_SOURCE_FB and DRM_PLANE_PIXEL_SOURCE_NONE will - * always be enabled as supported sources. - * - * This creates a new property describing the current source of pixel data for the - * plane. The pixel_source will be initialized as DRM_PLANE_PIXEL_SOURCE_FB by default. - * - * Drivers can set a custom default source by overriding the pixel_source value in - * drm_plane_funcs.reset() - * - * The property is exposed to userspace as an enumeration property called - * "pixel_source" and has the following enumeration values: - * - * "NONE": - * No active pixel source - * - * "FB": - * Framebuffer pixel source - * - * Returns: - * Zero on success, negative errno on failure. - */ -int drm_plane_create_pixel_source_property(struct drm_plane *plane, - unsigned long extra_sources) -{ - struct drm_device *dev = plane->dev; - struct drm_property *prop; - static const unsigned int valid_source_mask = BIT(DRM_PLANE_PIXEL_SOURCE_FB) | - BIT(DRM_PLANE_PIXEL_SOURCE_NONE); - int i; - - /* FB is supported by default */ - unsigned long supported_sources = extra_sources | - BIT(DRM_PLANE_PIXEL_SOURCE_FB) | - BIT(DRM_PLANE_PIXEL_SOURCE_NONE); - - if (WARN_ON(supported_sources & ~valid_source_mask)) - return -EINVAL; - - prop = drm_property_create(dev, DRM_MODE_PROP_ENUM | DRM_MODE_PROP_ATOMIC, "pixel_source", - hweight32(supported_sources)); - - if (!prop) - return -ENOMEM; - - for (i = 0; i < ARRAY_SIZE(drm_pixel_source_enum_list); i++) { - int ret; - - if (!test_bit(drm_pixel_source_enum_list[i].type, &supported_sources)) - continue; - - ret = drm_property_add_enum(prop, drm_pixel_source_enum_list[i].type, - drm_pixel_source_enum_list[i].name); - if (ret) { - drm_property_destroy(dev, prop); - - return ret; - } - } - - drm_object_attach_property(&plane->base, prop, DRM_PLANE_PIXEL_SOURCE_FB); - plane->pixel_source_property = prop; - - return 0; -} -EXPORT_SYMBOL(drm_plane_create_pixel_source_property); diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c index c8dbe5ae60cc..9e8e4c60983d 100644 --- a/drivers/gpu/drm/drm_plane.c +++ b/drivers/gpu/drm/drm_plane.c @@ -953,14 +953,6 @@ bool drm_any_plane_has_format(struct drm_device *dev, } EXPORT_SYMBOL(drm_any_plane_has_format); -static bool drm_plane_needs_disable(struct drm_plane_state *state, struct drm_framebuffer *fb) -{ - if (state->pixel_source == DRM_PLANE_PIXEL_SOURCE_NONE) - return true; - - return state->pixel_source == DRM_PLANE_PIXEL_SOURCE_FB && fb == NULL; -} - /* * __setplane_internal - setplane handler for internal callers * @@ -983,8 +975,8 @@ static int __setplane_internal(struct drm_plane *plane, WARN_ON(drm_drv_uses_atomic_modeset(plane->dev)); - /* No visible data means shut it down */ - if (drm_plane_needs_disable(plane->state, fb)) { + /* No fb means shut it down */ + if (!fb) { plane->old_fb = plane->fb; ret = plane->funcs->disable_plane(plane, ctx); if (!ret) { @@ -1035,8 +1027,8 @@ static int __setplane_atomic(struct drm_plane *plane, WARN_ON(!drm_drv_uses_atomic_modeset(plane->dev)); - /* No visible data means shut it down */ - if (drm_plane_needs_disable(plane->state, fb)) + /* No fb means shut it down */ + if (!fb) return plane->funcs->disable_plane(plane, ctx); /* @@ -1109,9 +1101,6 @@ int drm_mode_setplane(struct drm_device *dev, void *data, return -ENOENT; } - if (plane->state) - plane->state->pixel_source = DRM_PLANE_PIXEL_SOURCE_FB; - if (plane_req->fb_id) { fb = drm_framebuffer_lookup(dev, file_priv, plane_req->fb_id); if (!fb) { diff --git a/include/drm/drm_blend.h b/include/drm/drm_blend.h index 122bbfbaae33..88bdfec3bd88 100644 --- a/include/drm/drm_blend.h +++ b/include/drm/drm_blend.h @@ -58,6 +58,4 @@ int drm_atomic_normalize_zpos(struct drm_device *dev, struct drm_atomic_state *state); int drm_plane_create_blend_mode_property(struct drm_plane *plane, unsigned int supported_modes); -int drm_plane_create_pixel_source_property(struct drm_plane *plane, - unsigned long extra_sources); #endif diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h index bc0176ba25be..c6565a6f9324 100644 --- a/include/drm/drm_plane.h +++ b/include/drm/drm_plane.h @@ -40,12 +40,6 @@ enum drm_scaling_filter { DRM_SCALING_FILTER_NEAREST_NEIGHBOR, }; -enum drm_plane_pixel_source { - DRM_PLANE_PIXEL_SOURCE_NONE, - DRM_PLANE_PIXEL_SOURCE_FB, - DRM_PLANE_PIXEL_SOURCE_MAX -}; - /** * struct drm_plane_state - mutable plane state * @@ -126,14 +120,6 @@ struct drm_plane_state { /** @hotspot_y: y offset to mouse cursor hotspot */ int32_t hotspot_x, hotspot_y; - /** - * @pixel_source: - * - * Source of pixel information for the plane. See - * drm_plane_create_pixel_source_property() for more details. - */ - enum drm_plane_pixel_source pixel_source; - /** * @alpha: * Opacity of the plane with 0 as completely transparent and 0xffff as @@ -727,13 +713,6 @@ struct drm_plane { */ struct drm_plane_state *state; - /* - * @pixel_source_property: - * Optional pixel_source property for this plane. See - * drm_plane_create_pixel_source_property(). - */ - struct drm_property *pixel_source_property; - /** * @alpha_property: * Optional alpha property for this plane. See