All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
To: Tomohito Esaki <etom@igel.co.jp>
Cc: "ML dri-devel" <dri-devel@lists.freedesktop.org>,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Christian König" <christian.koenig@amd.com>,
	"Pan, Xinhui" <Xinhui.Pan@amd.com>,
	"David Airlie" <airlied@linux.ie>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"Ben Skeggs" <bskeggs@redhat.com>,
	"Michel Dänzer" <mdaenzer@redhat.com>,
	"Simon Ser" <contact@emersion.fr>,
	"Qingqing Zhuo" <qingqing.zhuo@amd.com>,
	"Mark Yacoub" <markyacoub@chromium.org>,
	"Sean Paul" <seanpaul@chromium.org>,
	"Evan Quan" <evan.quan@amd.com>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	"Petr Mladek" <pmladek@suse.com>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Lee Jones" <lee.jones@linaro.org>,
	"Abhinav Kumar" <abhinavk@codeaurora.org>,
	"Dmitry Baryshkov" <dmitry.baryshkov@linaro.org>,
	"Rob Clark" <robdclark@chromium.org>,
	"amd-gfx mailing list" <amd-gfx@lists.freedesktop.org>,
	LKML <linux-kernel@vger.kernel.org>,
	nouveau@lists.freedesktop.org,
	"Daniel Stone" <daniel@fooishbar.org>,
	"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
	"Damian Hobson-Garcia" <dhobsong@igel.co.jp>,
	"Takanari Hayama" <taki@igel.co.jp>
Subject: Re: [RFC PATCH v2 2/3] drm: set fb_modifiers_not_supported flag in legacy drivers
Date: Thu, 13 Jan 2022 18:56:18 +0100	[thread overview]
Message-ID: <CAP+8YyF60rXVacY3-ZKieYjxRzseb_SGJbNnXaUzUyUUS-n42Q@mail.gmail.com> (raw)
In-Reply-To: <20220113094419.12433-3-etom@igel.co.jp>

I think we'll also want to do a conditional disable for DC
(drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c) since it only
enables modifiers on newer HW.  Something like "if (modifiers == NULL)
fb_modifiers_not_supported = true;" in amdgpu_dm_plane_init.

On Thu, Jan 13, 2022 at 10:44 AM Tomohito Esaki <etom@igel.co.jp> wrote:
>
> Set fb_modifiers_not_supported flag in legacy drivers whose planes
> support non-linear layouts but does not support modifiers, and replace
> allow_fb_modifiers with fb_modifiers_not_supported.
>
> Signed-off-by: Tomohito Esaki <etom@igel.co.jp>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 6 +++---
>  drivers/gpu/drm/amd/amdgpu/dce_v10_0.c      | 2 ++
>  drivers/gpu/drm/amd/amdgpu/dce_v11_0.c      | 2 ++
>  drivers/gpu/drm/amd/amdgpu/dce_v6_0.c       | 1 +
>  drivers/gpu/drm/amd/amdgpu/dce_v8_0.c       | 2 ++
>  drivers/gpu/drm/nouveau/nouveau_display.c   | 6 ++++--
>  drivers/gpu/drm/radeon/radeon_display.c     | 2 ++
>  7 files changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> index dc50c05f23fc..cbaea9c6cfda 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> @@ -958,7 +958,7 @@ static int amdgpu_display_verify_sizes(struct amdgpu_framebuffer *rfb)
>         int ret;
>         unsigned int i, block_width, block_height, block_size_log2;
>
> -       if (!rfb->base.dev->mode_config.allow_fb_modifiers)
> +       if (rfb->base.dev->mode_config.fb_modifiers_not_supported)
>                 return 0;
>
>         for (i = 0; i < format_info->num_planes; ++i) {
> @@ -1145,7 +1145,7 @@ int amdgpu_display_framebuffer_init(struct drm_device *dev,
>         if (ret)
>                 return ret;
>
> -       if (!dev->mode_config.allow_fb_modifiers) {
> +       if (dev->mode_config.fb_modifiers_not_supported) {
>                 drm_WARN_ONCE(dev, adev->family >= AMDGPU_FAMILY_AI,
>                               "GFX9+ requires FB check based on format modifier\n");
>                 ret = check_tiling_flags_gfx6(rfb);
> @@ -1153,7 +1153,7 @@ int amdgpu_display_framebuffer_init(struct drm_device *dev,
>                         return ret;
>         }
>
> -       if (dev->mode_config.allow_fb_modifiers &&
> +       if (!dev->mode_config.fb_modifiers_not_supported &&
>             !(rfb->base.flags & DRM_MODE_FB_MODIFIERS)) {
>                 ret = convert_tiling_flags_to_modifier(rfb);
>                 if (ret) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> index d1570a462a51..fb61c0814115 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> @@ -2798,6 +2798,8 @@ static int dce_v10_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> index 18a7b3bd633b..17942a11366d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> @@ -2916,6 +2916,8 @@ static int dce_v11_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> index c7803dc2b2d5..2ec99ec8e1a3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> @@ -2674,6 +2674,7 @@ static int dce_v6_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.max_height = 16384;
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> index b200b9e722d9..8369336cec90 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> @@ -2699,6 +2699,8 @@ static int dce_v8_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
> index 929de41c281f..1ecad7fa3e8a 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_display.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_display.c
> @@ -711,10 +711,12 @@ nouveau_display_create(struct drm_device *dev)
>                                      &disp->disp);
>                 if (ret == 0) {
>                         nouveau_display_create_properties(dev);
> -                       if (disp->disp.object.oclass < NV50_DISP)
> +                       if (disp->disp.object.oclass < NV50_DISP) {
> +                               dev->mode_config.fb_modifiers_not_supported = true;
>                                 ret = nv04_display_create(dev);
> -                       else
> +                       } else {
>                                 ret = nv50_display_create(dev);
> +                       }
>                 }
>         } else {
>                 ret = 0;
> diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
> index 573154268d43..b9a07677a71e 100644
> --- a/drivers/gpu/drm/radeon/radeon_display.c
> +++ b/drivers/gpu/drm/radeon/radeon_display.c
> @@ -1596,6 +1596,8 @@ int radeon_modeset_init(struct radeon_device *rdev)
>         rdev->ddev->mode_config.preferred_depth = 24;
>         rdev->ddev->mode_config.prefer_shadow = 1;
>
> +       rdev->ddev->mode_config.fb_modifiers_not_supported = true;
> +
>         rdev->ddev->mode_config.fb_base = rdev->mc.aper_base;
>
>         ret = radeon_modeset_create_props(rdev);
> --
> 2.25.1
>

WARNING: multiple messages have this Message-ID (diff)
From: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
To: Tomohito Esaki <etom@igel.co.jp>
Cc: "David Airlie" <airlied@linux.ie>,
	nouveau@lists.freedesktop.org,
	"ML dri-devel" <dri-devel@lists.freedesktop.org>,
	"Michel Dänzer" <mdaenzer@redhat.com>,
	"Lee Jones" <lee.jones@linaro.org>,
	"Rob Clark" <robdclark@chromium.org>,
	"Evan Quan" <evan.quan@amd.com>,
	"amd-gfx mailing list" <amd-gfx@lists.freedesktop.org>,
	"Ben Skeggs" <bskeggs@redhat.com>,
	"Petr Mladek" <pmladek@suse.com>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Abhinav Kumar" <abhinavk@codeaurora.org>,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Takanari Hayama" <taki@igel.co.jp>,
	"Sean Paul" <seanpaul@chromium.org>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	"Qingqing Zhuo" <qingqing.zhuo@amd.com>,
	"Pan, Xinhui" <Xinhui.Pan@amd.com>,
	LKML <linux-kernel@vger.kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"Mark Yacoub" <markyacoub@chromium.org>,
	"Dmitry Baryshkov" <dmitry.baryshkov@linaro.org>,
	"Damian Hobson-Garcia" <dhobsong@igel.co.jp>,
	"Christian König" <christian.koenig@amd.com>,
	"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>
Subject: Re: [RFC PATCH v2 2/3] drm: set fb_modifiers_not_supported flag in legacy drivers
Date: Thu, 13 Jan 2022 18:56:18 +0100	[thread overview]
Message-ID: <CAP+8YyF60rXVacY3-ZKieYjxRzseb_SGJbNnXaUzUyUUS-n42Q@mail.gmail.com> (raw)
In-Reply-To: <20220113094419.12433-3-etom@igel.co.jp>

I think we'll also want to do a conditional disable for DC
(drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c) since it only
enables modifiers on newer HW.  Something like "if (modifiers == NULL)
fb_modifiers_not_supported = true;" in amdgpu_dm_plane_init.

On Thu, Jan 13, 2022 at 10:44 AM Tomohito Esaki <etom@igel.co.jp> wrote:
>
> Set fb_modifiers_not_supported flag in legacy drivers whose planes
> support non-linear layouts but does not support modifiers, and replace
> allow_fb_modifiers with fb_modifiers_not_supported.
>
> Signed-off-by: Tomohito Esaki <etom@igel.co.jp>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 6 +++---
>  drivers/gpu/drm/amd/amdgpu/dce_v10_0.c      | 2 ++
>  drivers/gpu/drm/amd/amdgpu/dce_v11_0.c      | 2 ++
>  drivers/gpu/drm/amd/amdgpu/dce_v6_0.c       | 1 +
>  drivers/gpu/drm/amd/amdgpu/dce_v8_0.c       | 2 ++
>  drivers/gpu/drm/nouveau/nouveau_display.c   | 6 ++++--
>  drivers/gpu/drm/radeon/radeon_display.c     | 2 ++
>  7 files changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> index dc50c05f23fc..cbaea9c6cfda 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> @@ -958,7 +958,7 @@ static int amdgpu_display_verify_sizes(struct amdgpu_framebuffer *rfb)
>         int ret;
>         unsigned int i, block_width, block_height, block_size_log2;
>
> -       if (!rfb->base.dev->mode_config.allow_fb_modifiers)
> +       if (rfb->base.dev->mode_config.fb_modifiers_not_supported)
>                 return 0;
>
>         for (i = 0; i < format_info->num_planes; ++i) {
> @@ -1145,7 +1145,7 @@ int amdgpu_display_framebuffer_init(struct drm_device *dev,
>         if (ret)
>                 return ret;
>
> -       if (!dev->mode_config.allow_fb_modifiers) {
> +       if (dev->mode_config.fb_modifiers_not_supported) {
>                 drm_WARN_ONCE(dev, adev->family >= AMDGPU_FAMILY_AI,
>                               "GFX9+ requires FB check based on format modifier\n");
>                 ret = check_tiling_flags_gfx6(rfb);
> @@ -1153,7 +1153,7 @@ int amdgpu_display_framebuffer_init(struct drm_device *dev,
>                         return ret;
>         }
>
> -       if (dev->mode_config.allow_fb_modifiers &&
> +       if (!dev->mode_config.fb_modifiers_not_supported &&
>             !(rfb->base.flags & DRM_MODE_FB_MODIFIERS)) {
>                 ret = convert_tiling_flags_to_modifier(rfb);
>                 if (ret) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> index d1570a462a51..fb61c0814115 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> @@ -2798,6 +2798,8 @@ static int dce_v10_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> index 18a7b3bd633b..17942a11366d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> @@ -2916,6 +2916,8 @@ static int dce_v11_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> index c7803dc2b2d5..2ec99ec8e1a3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> @@ -2674,6 +2674,7 @@ static int dce_v6_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.max_height = 16384;
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> index b200b9e722d9..8369336cec90 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> @@ -2699,6 +2699,8 @@ static int dce_v8_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
> index 929de41c281f..1ecad7fa3e8a 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_display.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_display.c
> @@ -711,10 +711,12 @@ nouveau_display_create(struct drm_device *dev)
>                                      &disp->disp);
>                 if (ret == 0) {
>                         nouveau_display_create_properties(dev);
> -                       if (disp->disp.object.oclass < NV50_DISP)
> +                       if (disp->disp.object.oclass < NV50_DISP) {
> +                               dev->mode_config.fb_modifiers_not_supported = true;
>                                 ret = nv04_display_create(dev);
> -                       else
> +                       } else {
>                                 ret = nv50_display_create(dev);
> +                       }
>                 }
>         } else {
>                 ret = 0;
> diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
> index 573154268d43..b9a07677a71e 100644
> --- a/drivers/gpu/drm/radeon/radeon_display.c
> +++ b/drivers/gpu/drm/radeon/radeon_display.c
> @@ -1596,6 +1596,8 @@ int radeon_modeset_init(struct radeon_device *rdev)
>         rdev->ddev->mode_config.preferred_depth = 24;
>         rdev->ddev->mode_config.prefer_shadow = 1;
>
> +       rdev->ddev->mode_config.fb_modifiers_not_supported = true;
> +
>         rdev->ddev->mode_config.fb_base = rdev->mc.aper_base;
>
>         ret = radeon_modeset_create_props(rdev);
> --
> 2.25.1
>

WARNING: multiple messages have this Message-ID (diff)
From: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
To: Tomohito Esaki <etom@igel.co.jp>
Cc: "David Airlie" <airlied@linux.ie>,
	nouveau@lists.freedesktop.org,
	"ML dri-devel" <dri-devel@lists.freedesktop.org>,
	"Michel Dänzer" <mdaenzer@redhat.com>,
	"Daniel Stone" <daniel@fooishbar.org>,
	"Lee Jones" <lee.jones@linaro.org>,
	"Rob Clark" <robdclark@chromium.org>,
	"Evan Quan" <evan.quan@amd.com>,
	"amd-gfx mailing list" <amd-gfx@lists.freedesktop.org>,
	"Ben Skeggs" <bskeggs@redhat.com>,
	"Petr Mladek" <pmladek@suse.com>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Abhinav Kumar" <abhinavk@codeaurora.org>,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Takanari Hayama" <taki@igel.co.jp>,
	"Sean Paul" <seanpaul@chromium.org>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	"Simon Ser" <contact@emersion.fr>,
	"Qingqing Zhuo" <qingqing.zhuo@amd.com>,
	"Pan, Xinhui" <Xinhui.Pan@amd.com>,
	LKML <linux-kernel@vger.kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"Mark Yacoub" <markyacoub@chromium.org>,
	"Dmitry Baryshkov" <dmitry.baryshkov@linaro.org>,
	"Damian Hobson-Garcia" <dhobsong@igel.co.jp>,
	"Christian König" <christian.koenig@amd.com>,
	"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>
Subject: Re: [RFC PATCH v2 2/3] drm: set fb_modifiers_not_supported flag in legacy drivers
Date: Thu, 13 Jan 2022 18:56:18 +0100	[thread overview]
Message-ID: <CAP+8YyF60rXVacY3-ZKieYjxRzseb_SGJbNnXaUzUyUUS-n42Q@mail.gmail.com> (raw)
In-Reply-To: <20220113094419.12433-3-etom@igel.co.jp>

I think we'll also want to do a conditional disable for DC
(drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c) since it only
enables modifiers on newer HW.  Something like "if (modifiers == NULL)
fb_modifiers_not_supported = true;" in amdgpu_dm_plane_init.

On Thu, Jan 13, 2022 at 10:44 AM Tomohito Esaki <etom@igel.co.jp> wrote:
>
> Set fb_modifiers_not_supported flag in legacy drivers whose planes
> support non-linear layouts but does not support modifiers, and replace
> allow_fb_modifiers with fb_modifiers_not_supported.
>
> Signed-off-by: Tomohito Esaki <etom@igel.co.jp>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 6 +++---
>  drivers/gpu/drm/amd/amdgpu/dce_v10_0.c      | 2 ++
>  drivers/gpu/drm/amd/amdgpu/dce_v11_0.c      | 2 ++
>  drivers/gpu/drm/amd/amdgpu/dce_v6_0.c       | 1 +
>  drivers/gpu/drm/amd/amdgpu/dce_v8_0.c       | 2 ++
>  drivers/gpu/drm/nouveau/nouveau_display.c   | 6 ++++--
>  drivers/gpu/drm/radeon/radeon_display.c     | 2 ++
>  7 files changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> index dc50c05f23fc..cbaea9c6cfda 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> @@ -958,7 +958,7 @@ static int amdgpu_display_verify_sizes(struct amdgpu_framebuffer *rfb)
>         int ret;
>         unsigned int i, block_width, block_height, block_size_log2;
>
> -       if (!rfb->base.dev->mode_config.allow_fb_modifiers)
> +       if (rfb->base.dev->mode_config.fb_modifiers_not_supported)
>                 return 0;
>
>         for (i = 0; i < format_info->num_planes; ++i) {
> @@ -1145,7 +1145,7 @@ int amdgpu_display_framebuffer_init(struct drm_device *dev,
>         if (ret)
>                 return ret;
>
> -       if (!dev->mode_config.allow_fb_modifiers) {
> +       if (dev->mode_config.fb_modifiers_not_supported) {
>                 drm_WARN_ONCE(dev, adev->family >= AMDGPU_FAMILY_AI,
>                               "GFX9+ requires FB check based on format modifier\n");
>                 ret = check_tiling_flags_gfx6(rfb);
> @@ -1153,7 +1153,7 @@ int amdgpu_display_framebuffer_init(struct drm_device *dev,
>                         return ret;
>         }
>
> -       if (dev->mode_config.allow_fb_modifiers &&
> +       if (!dev->mode_config.fb_modifiers_not_supported &&
>             !(rfb->base.flags & DRM_MODE_FB_MODIFIERS)) {
>                 ret = convert_tiling_flags_to_modifier(rfb);
>                 if (ret) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> index d1570a462a51..fb61c0814115 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> @@ -2798,6 +2798,8 @@ static int dce_v10_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> index 18a7b3bd633b..17942a11366d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> @@ -2916,6 +2916,8 @@ static int dce_v11_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> index c7803dc2b2d5..2ec99ec8e1a3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> @@ -2674,6 +2674,7 @@ static int dce_v6_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.max_height = 16384;
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> index b200b9e722d9..8369336cec90 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> @@ -2699,6 +2699,8 @@ static int dce_v8_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
> index 929de41c281f..1ecad7fa3e8a 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_display.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_display.c
> @@ -711,10 +711,12 @@ nouveau_display_create(struct drm_device *dev)
>                                      &disp->disp);
>                 if (ret == 0) {
>                         nouveau_display_create_properties(dev);
> -                       if (disp->disp.object.oclass < NV50_DISP)
> +                       if (disp->disp.object.oclass < NV50_DISP) {
> +                               dev->mode_config.fb_modifiers_not_supported = true;
>                                 ret = nv04_display_create(dev);
> -                       else
> +                       } else {
>                                 ret = nv50_display_create(dev);
> +                       }
>                 }
>         } else {
>                 ret = 0;
> diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
> index 573154268d43..b9a07677a71e 100644
> --- a/drivers/gpu/drm/radeon/radeon_display.c
> +++ b/drivers/gpu/drm/radeon/radeon_display.c
> @@ -1596,6 +1596,8 @@ int radeon_modeset_init(struct radeon_device *rdev)
>         rdev->ddev->mode_config.preferred_depth = 24;
>         rdev->ddev->mode_config.prefer_shadow = 1;
>
> +       rdev->ddev->mode_config.fb_modifiers_not_supported = true;
> +
>         rdev->ddev->mode_config.fb_base = rdev->mc.aper_base;
>
>         ret = radeon_modeset_create_props(rdev);
> --
> 2.25.1
>

WARNING: multiple messages have this Message-ID (diff)
From: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
To: Tomohito Esaki <etom@igel.co.jp>
Cc: "David Airlie" <airlied@linux.ie>,
	nouveau@lists.freedesktop.org,
	"ML dri-devel" <dri-devel@lists.freedesktop.org>,
	"Michel Dänzer" <mdaenzer@redhat.com>,
	"Daniel Stone" <daniel@fooishbar.org>,
	"Lee Jones" <lee.jones@linaro.org>,
	"Rob Clark" <robdclark@chromium.org>,
	"Evan Quan" <evan.quan@amd.com>,
	"amd-gfx mailing list" <amd-gfx@lists.freedesktop.org>,
	"Ben Skeggs" <bskeggs@redhat.com>,
	"Petr Mladek" <pmladek@suse.com>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Abhinav Kumar" <abhinavk@codeaurora.org>,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Takanari Hayama" <taki@igel.co.jp>,
	"Sean Paul" <seanpaul@chromium.org>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	"Simon Ser" <contact@emersion.fr>,
	"Qingqing Zhuo" <qingqing.zhuo@amd.com>,
	"Pan, Xinhui" <Xinhui.Pan@amd.com>,
	LKML <linux-kernel@vger.kernel.org>,
	"Mark Yacoub" <markyacoub@chromium.org>,
	"Dmitry Baryshkov" <dmitry.baryshkov@linaro.org>,
	"Damian Hobson-Garcia" <dhobsong@igel.co.jp>,
	"Christian König" <christian.koenig@amd.com>,
	"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>
Subject: Re: [Nouveau] [RFC PATCH v2 2/3] drm: set fb_modifiers_not_supported flag in legacy drivers
Date: Thu, 13 Jan 2022 18:56:18 +0100	[thread overview]
Message-ID: <CAP+8YyF60rXVacY3-ZKieYjxRzseb_SGJbNnXaUzUyUUS-n42Q@mail.gmail.com> (raw)
In-Reply-To: <20220113094419.12433-3-etom@igel.co.jp>

I think we'll also want to do a conditional disable for DC
(drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c) since it only
enables modifiers on newer HW.  Something like "if (modifiers == NULL)
fb_modifiers_not_supported = true;" in amdgpu_dm_plane_init.

On Thu, Jan 13, 2022 at 10:44 AM Tomohito Esaki <etom@igel.co.jp> wrote:
>
> Set fb_modifiers_not_supported flag in legacy drivers whose planes
> support non-linear layouts but does not support modifiers, and replace
> allow_fb_modifiers with fb_modifiers_not_supported.
>
> Signed-off-by: Tomohito Esaki <etom@igel.co.jp>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 6 +++---
>  drivers/gpu/drm/amd/amdgpu/dce_v10_0.c      | 2 ++
>  drivers/gpu/drm/amd/amdgpu/dce_v11_0.c      | 2 ++
>  drivers/gpu/drm/amd/amdgpu/dce_v6_0.c       | 1 +
>  drivers/gpu/drm/amd/amdgpu/dce_v8_0.c       | 2 ++
>  drivers/gpu/drm/nouveau/nouveau_display.c   | 6 ++++--
>  drivers/gpu/drm/radeon/radeon_display.c     | 2 ++
>  7 files changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> index dc50c05f23fc..cbaea9c6cfda 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> @@ -958,7 +958,7 @@ static int amdgpu_display_verify_sizes(struct amdgpu_framebuffer *rfb)
>         int ret;
>         unsigned int i, block_width, block_height, block_size_log2;
>
> -       if (!rfb->base.dev->mode_config.allow_fb_modifiers)
> +       if (rfb->base.dev->mode_config.fb_modifiers_not_supported)
>                 return 0;
>
>         for (i = 0; i < format_info->num_planes; ++i) {
> @@ -1145,7 +1145,7 @@ int amdgpu_display_framebuffer_init(struct drm_device *dev,
>         if (ret)
>                 return ret;
>
> -       if (!dev->mode_config.allow_fb_modifiers) {
> +       if (dev->mode_config.fb_modifiers_not_supported) {
>                 drm_WARN_ONCE(dev, adev->family >= AMDGPU_FAMILY_AI,
>                               "GFX9+ requires FB check based on format modifier\n");
>                 ret = check_tiling_flags_gfx6(rfb);
> @@ -1153,7 +1153,7 @@ int amdgpu_display_framebuffer_init(struct drm_device *dev,
>                         return ret;
>         }
>
> -       if (dev->mode_config.allow_fb_modifiers &&
> +       if (!dev->mode_config.fb_modifiers_not_supported &&
>             !(rfb->base.flags & DRM_MODE_FB_MODIFIERS)) {
>                 ret = convert_tiling_flags_to_modifier(rfb);
>                 if (ret) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> index d1570a462a51..fb61c0814115 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> @@ -2798,6 +2798,8 @@ static int dce_v10_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> index 18a7b3bd633b..17942a11366d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> @@ -2916,6 +2916,8 @@ static int dce_v11_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> index c7803dc2b2d5..2ec99ec8e1a3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> @@ -2674,6 +2674,7 @@ static int dce_v6_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.max_height = 16384;
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> index b200b9e722d9..8369336cec90 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> @@ -2699,6 +2699,8 @@ static int dce_v8_0_sw_init(void *handle)
>         adev_to_drm(adev)->mode_config.preferred_depth = 24;
>         adev_to_drm(adev)->mode_config.prefer_shadow = 1;
>
> +       adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
> +
>         adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
>
>         r = amdgpu_display_modeset_create_props(adev);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
> index 929de41c281f..1ecad7fa3e8a 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_display.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_display.c
> @@ -711,10 +711,12 @@ nouveau_display_create(struct drm_device *dev)
>                                      &disp->disp);
>                 if (ret == 0) {
>                         nouveau_display_create_properties(dev);
> -                       if (disp->disp.object.oclass < NV50_DISP)
> +                       if (disp->disp.object.oclass < NV50_DISP) {
> +                               dev->mode_config.fb_modifiers_not_supported = true;
>                                 ret = nv04_display_create(dev);
> -                       else
> +                       } else {
>                                 ret = nv50_display_create(dev);
> +                       }
>                 }
>         } else {
>                 ret = 0;
> diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
> index 573154268d43..b9a07677a71e 100644
> --- a/drivers/gpu/drm/radeon/radeon_display.c
> +++ b/drivers/gpu/drm/radeon/radeon_display.c
> @@ -1596,6 +1596,8 @@ int radeon_modeset_init(struct radeon_device *rdev)
>         rdev->ddev->mode_config.preferred_depth = 24;
>         rdev->ddev->mode_config.prefer_shadow = 1;
>
> +       rdev->ddev->mode_config.fb_modifiers_not_supported = true;
> +
>         rdev->ddev->mode_config.fb_base = rdev->mc.aper_base;
>
>         ret = radeon_modeset_create_props(rdev);
> --
> 2.25.1
>

  reply	other threads:[~2022-01-13 17:56 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-13  9:44 [RFC PATCH v2 0/3] Add support modifiers for drivers whose planes only support linear layout Tomohito Esaki
2022-01-13  9:44 ` [Nouveau] " Tomohito Esaki
2022-01-13  9:44 ` Tomohito Esaki
2022-01-13  9:44 ` Tomohito Esaki
2022-01-13  9:44 ` [RFC PATCH v2 1/3] drm: add " Tomohito Esaki
2022-01-13  9:44   ` [Nouveau] " Tomohito Esaki
2022-01-13  9:44   ` Tomohito Esaki
2022-01-13  9:44   ` Tomohito Esaki
2022-01-13  9:44 ` [RFC PATCH v2 2/3] drm: set fb_modifiers_not_supported flag in legacy drivers Tomohito Esaki
2022-01-13  9:44   ` [Nouveau] " Tomohito Esaki
2022-01-13  9:44   ` Tomohito Esaki
2022-01-13  9:44   ` Tomohito Esaki
2022-01-13 17:56   ` Bas Nieuwenhuizen [this message]
2022-01-13 17:56     ` [Nouveau] " Bas Nieuwenhuizen
2022-01-13 17:56     ` Bas Nieuwenhuizen
2022-01-13 17:56     ` Bas Nieuwenhuizen
2022-01-14  2:06     ` Esaki Tomohito
2022-01-14  2:06       ` [Nouveau] " Esaki Tomohito
2022-01-14  2:06       ` Esaki Tomohito
2022-01-14  2:06       ` Esaki Tomohito
2022-01-13  9:44 ` [RFC PATCH v2 3/3] drm: replace allow_fb_modifiers with fb_modifiers_not_supported Tomohito Esaki
2022-01-13  9:44   ` [Nouveau] " Tomohito Esaki
2022-01-13  9:44   ` Tomohito Esaki
2022-01-13  9:44   ` Tomohito Esaki
2022-01-13 13:44 ` [RFC PATCH v2 0/3] Add support modifiers for drivers whose planes only support linear layout Daniel Stone
2022-01-13 13:44   ` Daniel Stone
2022-01-13 13:44   ` Daniel Stone
2022-01-13 13:44   ` [Nouveau] " Daniel Stone
2022-01-14  1:46   ` Esaki Tomohito
2022-01-14  1:46     ` [Nouveau] " Esaki Tomohito
2022-01-14  1:46     ` Esaki Tomohito
2022-01-14  1:46     ` Esaki Tomohito

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAP+8YyF60rXVacY3-ZKieYjxRzseb_SGJbNnXaUzUyUUS-n42Q@mail.gmail.com \
    --to=bas@basnieuwenhuizen.nl \
    --cc=Xinhui.Pan@amd.com \
    --cc=abhinavk@codeaurora.org \
    --cc=airlied@linux.ie \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=bskeggs@redhat.com \
    --cc=christian.koenig@amd.com \
    --cc=contact@emersion.fr \
    --cc=daniel@ffwll.ch \
    --cc=daniel@fooishbar.org \
    --cc=dhobsong@igel.co.jp \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=etom@igel.co.jp \
    --cc=evan.quan@amd.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=markyacoub@chromium.org \
    --cc=mdaenzer@redhat.com \
    --cc=mripard@kernel.org \
    --cc=nouveau@lists.freedesktop.org \
    --cc=pmladek@suse.com \
    --cc=qingqing.zhuo@amd.com \
    --cc=robdclark@chromium.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=seanpaul@chromium.org \
    --cc=taki@igel.co.jp \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.