* [PATCH] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-19 15:15 ` Joaquín Ignacio Aramendía
0 siblings, 0 replies; 21+ messages in thread
From: Joaquín Ignacio Aramendía @ 2022-10-19 15:15 UTC (permalink / raw)
To: harry.wentland
Cc: amd-gfx, sunpeng.li, Rodrigo.Siqueira, alexander.deucher,
christian.koenig, Xinhui.Pan, airlied, daniel, dri-devel,
linux-kernel, Joaquín Ignacio Aramendía
This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
("drm/amd/display: Create a file dedicated to planes") the logic in
dm_plane_format_mod_supported() function got changed by a switch logic.
That change broke drm_plane modifiers setting on series 5000 APUs
(tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
leading to Gamescope not working as reproted on GitHub[1]
To reproduce the issue, enter a TTY and run:
$ gamescope -- vkcube
With said commit applied it will abort. This one restores the old logic,
fixing the issue that affects Gamescope.
[1](https://github.com/Plagman/gamescope/issues/624)
Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
---
.../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
1 file changed, 8 insertions(+), 42 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index dfd3be49eac8..81c1fc9468b8 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
@@ -1371,6 +1371,8 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
const struct drm_format_info *info = drm_format_info(format);
struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
+ int i;
+
enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
if (!info)
@@ -1386,49 +1388,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
return true;
}
- /* check if swizzle mode is supported by this version of DCN */
- switch (asic_id.chip_family) {
- case FAMILY_SI:
- case FAMILY_CI:
- case FAMILY_KV:
- case FAMILY_CZ:
- case FAMILY_VI:
- /* asics before AI does not have modifier support */
- return false;
- case FAMILY_AI:
- case FAMILY_RV:
- case FAMILY_NV:
- case FAMILY_VGH:
- case FAMILY_YELLOW_CARP:
- case AMDGPU_FAMILY_GC_10_3_6:
- case AMDGPU_FAMILY_GC_10_3_7:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- case AMDGPU_FAMILY_GC_11_0_0:
- case AMDGPU_FAMILY_GC_11_0_1:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- default:
- ASSERT(0); /* Unknown asic */
- break;
+ /* Check that the modifier is on the list of the plane's supported modifiers. */
+ for (i = 0; i < plane->modifier_count; i++) {
+ if (modifier == plane->modifiers[i])
+ break;
}
+ if (i == plane->modifier_count)
+ return false;
/*
* For D swizzle the canonical modifier depends on the bpp, so check
--
2.38.0
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-19 15:15 ` Joaquín Ignacio Aramendía
0 siblings, 0 replies; 21+ messages in thread
From: Joaquín Ignacio Aramendía @ 2022-10-19 15:15 UTC (permalink / raw)
To: harry.wentland
Cc: sunpeng.li, Xinhui.Pan, Rodrigo.Siqueira, linux-kernel, amd-gfx,
dri-devel, daniel, alexander.deucher, airlied, christian.koenig,
Joaquín Ignacio Aramendía
This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
("drm/amd/display: Create a file dedicated to planes") the logic in
dm_plane_format_mod_supported() function got changed by a switch logic.
That change broke drm_plane modifiers setting on series 5000 APUs
(tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
leading to Gamescope not working as reproted on GitHub[1]
To reproduce the issue, enter a TTY and run:
$ gamescope -- vkcube
With said commit applied it will abort. This one restores the old logic,
fixing the issue that affects Gamescope.
[1](https://github.com/Plagman/gamescope/issues/624)
Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
---
.../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
1 file changed, 8 insertions(+), 42 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index dfd3be49eac8..81c1fc9468b8 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
@@ -1371,6 +1371,8 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
const struct drm_format_info *info = drm_format_info(format);
struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
+ int i;
+
enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
if (!info)
@@ -1386,49 +1388,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
return true;
}
- /* check if swizzle mode is supported by this version of DCN */
- switch (asic_id.chip_family) {
- case FAMILY_SI:
- case FAMILY_CI:
- case FAMILY_KV:
- case FAMILY_CZ:
- case FAMILY_VI:
- /* asics before AI does not have modifier support */
- return false;
- case FAMILY_AI:
- case FAMILY_RV:
- case FAMILY_NV:
- case FAMILY_VGH:
- case FAMILY_YELLOW_CARP:
- case AMDGPU_FAMILY_GC_10_3_6:
- case AMDGPU_FAMILY_GC_10_3_7:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- case AMDGPU_FAMILY_GC_11_0_0:
- case AMDGPU_FAMILY_GC_11_0_1:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- default:
- ASSERT(0); /* Unknown asic */
- break;
+ /* Check that the modifier is on the list of the plane's supported modifiers. */
+ for (i = 0; i < plane->modifier_count; i++) {
+ if (modifier == plane->modifiers[i])
+ break;
}
+ if (i == plane->modifier_count)
+ return false;
/*
* For D swizzle the canonical modifier depends on the bpp, so check
--
2.38.0
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-19 15:15 ` Joaquín Ignacio Aramendía
0 siblings, 0 replies; 21+ messages in thread
From: Joaquín Ignacio Aramendía @ 2022-10-19 15:15 UTC (permalink / raw)
To: harry.wentland
Cc: sunpeng.li, Xinhui.Pan, Rodrigo.Siqueira, linux-kernel, amd-gfx,
dri-devel, alexander.deucher, christian.koenig,
Joaquín Ignacio Aramendía
This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
("drm/amd/display: Create a file dedicated to planes") the logic in
dm_plane_format_mod_supported() function got changed by a switch logic.
That change broke drm_plane modifiers setting on series 5000 APUs
(tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
leading to Gamescope not working as reproted on GitHub[1]
To reproduce the issue, enter a TTY and run:
$ gamescope -- vkcube
With said commit applied it will abort. This one restores the old logic,
fixing the issue that affects Gamescope.
[1](https://github.com/Plagman/gamescope/issues/624)
Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
---
.../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
1 file changed, 8 insertions(+), 42 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index dfd3be49eac8..81c1fc9468b8 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
@@ -1371,6 +1371,8 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
const struct drm_format_info *info = drm_format_info(format);
struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
+ int i;
+
enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
if (!info)
@@ -1386,49 +1388,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
return true;
}
- /* check if swizzle mode is supported by this version of DCN */
- switch (asic_id.chip_family) {
- case FAMILY_SI:
- case FAMILY_CI:
- case FAMILY_KV:
- case FAMILY_CZ:
- case FAMILY_VI:
- /* asics before AI does not have modifier support */
- return false;
- case FAMILY_AI:
- case FAMILY_RV:
- case FAMILY_NV:
- case FAMILY_VGH:
- case FAMILY_YELLOW_CARP:
- case AMDGPU_FAMILY_GC_10_3_6:
- case AMDGPU_FAMILY_GC_10_3_7:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- case AMDGPU_FAMILY_GC_11_0_0:
- case AMDGPU_FAMILY_GC_11_0_1:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- default:
- ASSERT(0); /* Unknown asic */
- break;
+ /* Check that the modifier is on the list of the plane's supported modifiers. */
+ for (i = 0; i < plane->modifier_count; i++) {
+ if (modifier == plane->modifiers[i])
+ break;
}
+ if (i == plane->modifier_count)
+ return false;
/*
* For D swizzle the canonical modifier depends on the bpp, so check
--
2.38.0
^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH] drm/amd/display: Revert logic for plane modifiers
2022-10-19 15:15 ` Joaquín Ignacio Aramendía
(?)
@ 2022-10-20 12:35 ` Rodrigo Siqueira Jordao
-1 siblings, 0 replies; 21+ messages in thread
From: Rodrigo Siqueira Jordao @ 2022-10-20 12:35 UTC (permalink / raw)
To: Joaquín Ignacio Aramendía, harry.wentland
Cc: amd-gfx, sunpeng.li, alexander.deucher, christian.koenig,
Xinhui.Pan, airlied, daniel, dri-devel, linux-kernel
On 2022-10-19 11:15, Joaquín Ignacio Aramendía wrote:
> This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
> ("drm/amd/display: Create a file dedicated to planes") the logic in
> dm_plane_format_mod_supported() function got changed by a switch logic.
> That change broke drm_plane modifiers setting on series 5000 APUs
> (tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
> leading to Gamescope not working as reproted on GitHub[1]
>
> To reproduce the issue, enter a TTY and run:
>
> $ gamescope -- vkcube
>
> With said commit applied it will abort. This one restores the old logic,
> fixing the issue that affects Gamescope.
>
> [1](https://github.com/Plagman/gamescope/issues/624>>
> Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
> ---
> .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
> 1 file changed, 8 insertions(+), 42 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> index dfd3be49eac8..81c1fc9468b8 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
> @@ -1371,6 +1371,8 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> const struct drm_format_info *info = drm_format_info(format);
> struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
Hi,
First of all, thanks a lot for this patch.
You can drop asic_id since it is not used anymore.
Thanks
Siqueira
>
> + int i;
> +
> enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
>
> if (!info)
> @@ -1386,49 +1388,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> return true;
> }
>
> - /* check if swizzle mode is supported by this version of DCN */
> - switch (asic_id.chip_family) {
> - case FAMILY_SI:
> - case FAMILY_CI:
> - case FAMILY_KV:
> - case FAMILY_CZ:
> - case FAMILY_VI:
> - /* asics before AI does not have modifier support */
> - return false;
> - case FAMILY_AI:
> - case FAMILY_RV:
> - case FAMILY_NV:
> - case FAMILY_VGH:
> - case FAMILY_YELLOW_CARP:
> - case AMDGPU_FAMILY_GC_10_3_6:
> - case AMDGPU_FAMILY_GC_10_3_7:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - case AMDGPU_FAMILY_GC_11_0_0:
> - case AMDGPU_FAMILY_GC_11_0_1:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - default:
> - ASSERT(0); /* Unknown asic */
> - break;
> + /* Check that the modifier is on the list of the plane's supported modifiers. */
> + for (i = 0; i < plane->modifier_count; i++) {
> + if (modifier == plane->modifiers[i])
> + break;
> }
> + if (i == plane->modifier_count)
> + return false;
>
> /*
> * For D swizzle the canonical modifier depends on the bpp, so check
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-20 12:35 ` Rodrigo Siqueira Jordao
0 siblings, 0 replies; 21+ messages in thread
From: Rodrigo Siqueira Jordao @ 2022-10-20 12:35 UTC (permalink / raw)
To: Joaquín Ignacio Aramendía, harry.wentland
Cc: sunpeng.li, Xinhui.Pan, linux-kernel, amd-gfx, dri-devel,
alexander.deucher, christian.koenig
On 2022-10-19 11:15, Joaquín Ignacio Aramendía wrote:
> This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
> ("drm/amd/display: Create a file dedicated to planes") the logic in
> dm_plane_format_mod_supported() function got changed by a switch logic.
> That change broke drm_plane modifiers setting on series 5000 APUs
> (tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
> leading to Gamescope not working as reproted on GitHub[1]
>
> To reproduce the issue, enter a TTY and run:
>
> $ gamescope -- vkcube
>
> With said commit applied it will abort. This one restores the old logic,
> fixing the issue that affects Gamescope.
>
> [1](https://github.com/Plagman/gamescope/issues/624>>
> Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
> ---
> .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
> 1 file changed, 8 insertions(+), 42 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> index dfd3be49eac8..81c1fc9468b8 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
> @@ -1371,6 +1371,8 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> const struct drm_format_info *info = drm_format_info(format);
> struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
Hi,
First of all, thanks a lot for this patch.
You can drop asic_id since it is not used anymore.
Thanks
Siqueira
>
> + int i;
> +
> enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
>
> if (!info)
> @@ -1386,49 +1388,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> return true;
> }
>
> - /* check if swizzle mode is supported by this version of DCN */
> - switch (asic_id.chip_family) {
> - case FAMILY_SI:
> - case FAMILY_CI:
> - case FAMILY_KV:
> - case FAMILY_CZ:
> - case FAMILY_VI:
> - /* asics before AI does not have modifier support */
> - return false;
> - case FAMILY_AI:
> - case FAMILY_RV:
> - case FAMILY_NV:
> - case FAMILY_VGH:
> - case FAMILY_YELLOW_CARP:
> - case AMDGPU_FAMILY_GC_10_3_6:
> - case AMDGPU_FAMILY_GC_10_3_7:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - case AMDGPU_FAMILY_GC_11_0_0:
> - case AMDGPU_FAMILY_GC_11_0_1:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - default:
> - ASSERT(0); /* Unknown asic */
> - break;
> + /* Check that the modifier is on the list of the plane's supported modifiers. */
> + for (i = 0; i < plane->modifier_count; i++) {
> + if (modifier == plane->modifiers[i])
> + break;
> }
> + if (i == plane->modifier_count)
> + return false;
>
> /*
> * For D swizzle the canonical modifier depends on the bpp, so check
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-20 12:35 ` Rodrigo Siqueira Jordao
0 siblings, 0 replies; 21+ messages in thread
From: Rodrigo Siqueira Jordao @ 2022-10-20 12:35 UTC (permalink / raw)
To: Joaquín Ignacio Aramendía, harry.wentland
Cc: sunpeng.li, Xinhui.Pan, linux-kernel, amd-gfx, dri-devel, daniel,
alexander.deucher, airlied, christian.koenig
On 2022-10-19 11:15, Joaquín Ignacio Aramendía wrote:
> This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
> ("drm/amd/display: Create a file dedicated to planes") the logic in
> dm_plane_format_mod_supported() function got changed by a switch logic.
> That change broke drm_plane modifiers setting on series 5000 APUs
> (tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
> leading to Gamescope not working as reproted on GitHub[1]
>
> To reproduce the issue, enter a TTY and run:
>
> $ gamescope -- vkcube
>
> With said commit applied it will abort. This one restores the old logic,
> fixing the issue that affects Gamescope.
>
> [1](https://github.com/Plagman/gamescope/issues/624>>
> Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
> ---
> .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
> 1 file changed, 8 insertions(+), 42 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> index dfd3be49eac8..81c1fc9468b8 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
> @@ -1371,6 +1371,8 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> const struct drm_format_info *info = drm_format_info(format);
> struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
Hi,
First of all, thanks a lot for this patch.
You can drop asic_id since it is not used anymore.
Thanks
Siqueira
>
> + int i;
> +
> enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
>
> if (!info)
> @@ -1386,49 +1388,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> return true;
> }
>
> - /* check if swizzle mode is supported by this version of DCN */
> - switch (asic_id.chip_family) {
> - case FAMILY_SI:
> - case FAMILY_CI:
> - case FAMILY_KV:
> - case FAMILY_CZ:
> - case FAMILY_VI:
> - /* asics before AI does not have modifier support */
> - return false;
> - case FAMILY_AI:
> - case FAMILY_RV:
> - case FAMILY_NV:
> - case FAMILY_VGH:
> - case FAMILY_YELLOW_CARP:
> - case AMDGPU_FAMILY_GC_10_3_6:
> - case AMDGPU_FAMILY_GC_10_3_7:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - case AMDGPU_FAMILY_GC_11_0_0:
> - case AMDGPU_FAMILY_GC_11_0_1:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - default:
> - ASSERT(0); /* Unknown asic */
> - break;
> + /* Check that the modifier is on the list of the plane's supported modifiers. */
> + for (i = 0; i < plane->modifier_count; i++) {
> + if (modifier == plane->modifiers[i])
> + break;
> }
> + if (i == plane->modifier_count)
> + return false;
>
> /*
> * For D swizzle the canonical modifier depends on the bpp, so check
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] drm/amd/display: Revert logic for plane modifiers
2022-10-20 12:35 ` Rodrigo Siqueira Jordao
@ 2022-10-20 14:52 ` Joaquin Aramendia
-1 siblings, 0 replies; 21+ messages in thread
From: Joaquin Aramendia @ 2022-10-20 14:52 UTC (permalink / raw)
To: Rodrigo Siqueira Jordao
Cc: sunpeng.li, Xinhui.Pan, linux-kernel, amd-gfx, dri-devel,
alexander.deucher, christian.koenig
[-- Attachment #1: Type: text/plain, Size: 79 bytes --]
Hello. Thanks for the reply, Rodrigo
Will redo the patch and resubmit.
Cheers
[-- Attachment #2: Type: text/html, Size: 327 bytes --]
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-20 14:52 ` Joaquin Aramendia
0 siblings, 0 replies; 21+ messages in thread
From: Joaquin Aramendia @ 2022-10-20 14:52 UTC (permalink / raw)
To: Rodrigo Siqueira Jordao
Cc: sunpeng.li, airlied, Xinhui.Pan, linux-kernel, amd-gfx,
dri-devel, daniel, alexander.deucher, harry.wentland,
christian.koenig
[-- Attachment #1: Type: text/plain, Size: 79 bytes --]
Hello. Thanks for the reply, Rodrigo
Will redo the patch and resubmit.
Cheers
[-- Attachment #2: Type: text/html, Size: 327 bytes --]
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH] drm/amd/display: Revert logic for plane modifiers
2022-10-20 12:35 ` Rodrigo Siqueira Jordao
(?)
@ 2022-10-20 20:53 ` Joaquín Ignacio Aramendía
-1 siblings, 0 replies; 21+ messages in thread
From: Joaquín Ignacio Aramendía @ 2022-10-20 20:53 UTC (permalink / raw)
To: rodrigo.siqueira
Cc: Xinhui.Pan, airlied, alexander.deucher, amd-gfx,
christian.koenig, daniel, dri-devel, harry.wentland,
linux-kernel, samsagax, sunpeng.li
This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
("drm/amd/display: Create a file dedicated to planes") and the logic in
dm_plane_format_mod_supported() function got changed by a switch logic.
That change broke drm_plane modifiers setting on series 5000 APUs
(tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
leading to Gamescope not working as reported on GitHub[1]
To reproduce the issue, enter a TTY and run:
$ gamescope -- vkcube
With said commit applied it will abort. This one restores the old logic,
fixing the issue that affects Gamescope.
[1](https://github.com/Plagman/gamescope/issues/624)
Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
---
.../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 51 +++----------------
1 file changed, 8 insertions(+), 43 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index dfd3be49eac8..1d47d2d69781 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
@@ -1369,7 +1369,8 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
{
struct amdgpu_device *adev = drm_to_adev(plane->dev);
const struct drm_format_info *info = drm_format_info(format);
- struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
+
+ int i;
enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
@@ -1386,49 +1387,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
return true;
}
- /* check if swizzle mode is supported by this version of DCN */
- switch (asic_id.chip_family) {
- case FAMILY_SI:
- case FAMILY_CI:
- case FAMILY_KV:
- case FAMILY_CZ:
- case FAMILY_VI:
- /* asics before AI does not have modifier support */
- return false;
- case FAMILY_AI:
- case FAMILY_RV:
- case FAMILY_NV:
- case FAMILY_VGH:
- case FAMILY_YELLOW_CARP:
- case AMDGPU_FAMILY_GC_10_3_6:
- case AMDGPU_FAMILY_GC_10_3_7:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- case AMDGPU_FAMILY_GC_11_0_0:
- case AMDGPU_FAMILY_GC_11_0_1:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- default:
- ASSERT(0); /* Unknown asic */
- break;
+ /* Check that the modifier is on the list of the plane's supported modifiers. */
+ for (i = 0; i < plane->modifier_count; i++) {
+ if (modifier == plane->modifiers[i])
+ break;
}
+ if (i == plane->modifier_count)
+ return false;
/*
* For D swizzle the canonical modifier depends on the bpp, so check
--
2.38.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-20 20:53 ` Joaquín Ignacio Aramendía
0 siblings, 0 replies; 21+ messages in thread
From: Joaquín Ignacio Aramendía @ 2022-10-20 20:53 UTC (permalink / raw)
To: rodrigo.siqueira
Cc: sunpeng.li, Xinhui.Pan, linux-kernel, amd-gfx, dri-devel,
alexander.deucher, christian.koenig, samsagax
This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
("drm/amd/display: Create a file dedicated to planes") and the logic in
dm_plane_format_mod_supported() function got changed by a switch logic.
That change broke drm_plane modifiers setting on series 5000 APUs
(tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
leading to Gamescope not working as reported on GitHub[1]
To reproduce the issue, enter a TTY and run:
$ gamescope -- vkcube
With said commit applied it will abort. This one restores the old logic,
fixing the issue that affects Gamescope.
[1](https://github.com/Plagman/gamescope/issues/624)
Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
---
.../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 51 +++----------------
1 file changed, 8 insertions(+), 43 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index dfd3be49eac8..1d47d2d69781 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
@@ -1369,7 +1369,8 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
{
struct amdgpu_device *adev = drm_to_adev(plane->dev);
const struct drm_format_info *info = drm_format_info(format);
- struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
+
+ int i;
enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
@@ -1386,49 +1387,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
return true;
}
- /* check if swizzle mode is supported by this version of DCN */
- switch (asic_id.chip_family) {
- case FAMILY_SI:
- case FAMILY_CI:
- case FAMILY_KV:
- case FAMILY_CZ:
- case FAMILY_VI:
- /* asics before AI does not have modifier support */
- return false;
- case FAMILY_AI:
- case FAMILY_RV:
- case FAMILY_NV:
- case FAMILY_VGH:
- case FAMILY_YELLOW_CARP:
- case AMDGPU_FAMILY_GC_10_3_6:
- case AMDGPU_FAMILY_GC_10_3_7:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- case AMDGPU_FAMILY_GC_11_0_0:
- case AMDGPU_FAMILY_GC_11_0_1:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- default:
- ASSERT(0); /* Unknown asic */
- break;
+ /* Check that the modifier is on the list of the plane's supported modifiers. */
+ for (i = 0; i < plane->modifier_count; i++) {
+ if (modifier == plane->modifiers[i])
+ break;
}
+ if (i == plane->modifier_count)
+ return false;
/*
* For D swizzle the canonical modifier depends on the bpp, so check
--
2.38.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-20 20:53 ` Joaquín Ignacio Aramendía
0 siblings, 0 replies; 21+ messages in thread
From: Joaquín Ignacio Aramendía @ 2022-10-20 20:53 UTC (permalink / raw)
To: rodrigo.siqueira
Cc: sunpeng.li, harry.wentland, Xinhui.Pan, linux-kernel, amd-gfx,
dri-devel, daniel, alexander.deucher, airlied, christian.koenig,
samsagax
This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
("drm/amd/display: Create a file dedicated to planes") and the logic in
dm_plane_format_mod_supported() function got changed by a switch logic.
That change broke drm_plane modifiers setting on series 5000 APUs
(tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
leading to Gamescope not working as reported on GitHub[1]
To reproduce the issue, enter a TTY and run:
$ gamescope -- vkcube
With said commit applied it will abort. This one restores the old logic,
fixing the issue that affects Gamescope.
[1](https://github.com/Plagman/gamescope/issues/624)
Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
---
.../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 51 +++----------------
1 file changed, 8 insertions(+), 43 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index dfd3be49eac8..1d47d2d69781 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
@@ -1369,7 +1369,8 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
{
struct amdgpu_device *adev = drm_to_adev(plane->dev);
const struct drm_format_info *info = drm_format_info(format);
- struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
+
+ int i;
enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
@@ -1386,49 +1387,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
return true;
}
- /* check if swizzle mode is supported by this version of DCN */
- switch (asic_id.chip_family) {
- case FAMILY_SI:
- case FAMILY_CI:
- case FAMILY_KV:
- case FAMILY_CZ:
- case FAMILY_VI:
- /* asics before AI does not have modifier support */
- return false;
- case FAMILY_AI:
- case FAMILY_RV:
- case FAMILY_NV:
- case FAMILY_VGH:
- case FAMILY_YELLOW_CARP:
- case AMDGPU_FAMILY_GC_10_3_6:
- case AMDGPU_FAMILY_GC_10_3_7:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- case AMDGPU_FAMILY_GC_11_0_0:
- case AMDGPU_FAMILY_GC_11_0_1:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- default:
- ASSERT(0); /* Unknown asic */
- break;
+ /* Check that the modifier is on the list of the plane's supported modifiers. */
+ for (i = 0; i < plane->modifier_count; i++) {
+ if (modifier == plane->modifiers[i])
+ break;
}
+ if (i == plane->modifier_count)
+ return false;
/*
* For D swizzle the canonical modifier depends on the bpp, so check
--
2.38.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH] drm/amd/display: Revert logic for plane modifiers
2022-10-20 20:53 ` Joaquín Ignacio Aramendía
@ 2022-10-23 23:05 ` Bas Nieuwenhuizen
-1 siblings, 0 replies; 21+ messages in thread
From: Bas Nieuwenhuizen @ 2022-10-23 23:05 UTC (permalink / raw)
To: Joaquín Ignacio Aramendía
Cc: rodrigo.siqueira, sunpeng.li, Xinhui.Pan, linux-kernel, amd-gfx,
dri-devel, alexander.deucher, christian.koenig
Please also add a
Cc: <stable@vger.kernel.org> # 6.0.x
to ensure it gets backported.
On Fri, Oct 21, 2022 at 9:24 AM Joaquín Ignacio Aramendía
<samsagax@gmail.com> wrote:
>
> This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
> ("drm/amd/display: Create a file dedicated to planes") and the logic in
> dm_plane_format_mod_supported() function got changed by a switch logic.
> That change broke drm_plane modifiers setting on series 5000 APUs
> (tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
> leading to Gamescope not working as reported on GitHub[1]
>
> To reproduce the issue, enter a TTY and run:
>
> $ gamescope -- vkcube
>
> With said commit applied it will abort. This one restores the old logic,
> fixing the issue that affects Gamescope.
>
> [1](https://github.com/Plagman/gamescope/issues/624)
>
> Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
> ---
> .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 51 +++----------------
> 1 file changed, 8 insertions(+), 43 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> index dfd3be49eac8..1d47d2d69781 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
> @@ -1369,7 +1369,8 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> {
> struct amdgpu_device *adev = drm_to_adev(plane->dev);
> const struct drm_format_info *info = drm_format_info(format);
> - struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
> +
Can remove this newline.
With that removed, this patch is
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Thanks,
Bas
> + int i;
>
> enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
>
> @@ -1386,49 +1387,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> return true;
> }
>
> - /* check if swizzle mode is supported by this version of DCN */
> - switch (asic_id.chip_family) {
> - case FAMILY_SI:
> - case FAMILY_CI:
> - case FAMILY_KV:
> - case FAMILY_CZ:
> - case FAMILY_VI:
> - /* asics before AI does not have modifier support */
> - return false;
> - case FAMILY_AI:
> - case FAMILY_RV:
> - case FAMILY_NV:
> - case FAMILY_VGH:
> - case FAMILY_YELLOW_CARP:
> - case AMDGPU_FAMILY_GC_10_3_6:
> - case AMDGPU_FAMILY_GC_10_3_7:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - case AMDGPU_FAMILY_GC_11_0_0:
> - case AMDGPU_FAMILY_GC_11_0_1:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - default:
> - ASSERT(0); /* Unknown asic */
> - break;
> + /* Check that the modifier is on the list of the plane's supported modifiers. */
> + for (i = 0; i < plane->modifier_count; i++) {
> + if (modifier == plane->modifiers[i])
> + break;
> }
> + if (i == plane->modifier_count)
> + return false;
>
> /*
> * For D swizzle the canonical modifier depends on the bpp, so check
> --
> 2.38.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-23 23:05 ` Bas Nieuwenhuizen
0 siblings, 0 replies; 21+ messages in thread
From: Bas Nieuwenhuizen @ 2022-10-23 23:05 UTC (permalink / raw)
To: Joaquín Ignacio Aramendía
Cc: sunpeng.li, Xinhui.Pan, rodrigo.siqueira, linux-kernel,
dri-devel, amd-gfx, alexander.deucher, christian.koenig
Please also add a
Cc: <stable@vger.kernel.org> # 6.0.x
to ensure it gets backported.
On Fri, Oct 21, 2022 at 9:24 AM Joaquín Ignacio Aramendía
<samsagax@gmail.com> wrote:
>
> This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
> ("drm/amd/display: Create a file dedicated to planes") and the logic in
> dm_plane_format_mod_supported() function got changed by a switch logic.
> That change broke drm_plane modifiers setting on series 5000 APUs
> (tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
> leading to Gamescope not working as reported on GitHub[1]
>
> To reproduce the issue, enter a TTY and run:
>
> $ gamescope -- vkcube
>
> With said commit applied it will abort. This one restores the old logic,
> fixing the issue that affects Gamescope.
>
> [1](https://github.com/Plagman/gamescope/issues/624)
>
> Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
> ---
> .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 51 +++----------------
> 1 file changed, 8 insertions(+), 43 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> index dfd3be49eac8..1d47d2d69781 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
> @@ -1369,7 +1369,8 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> {
> struct amdgpu_device *adev = drm_to_adev(plane->dev);
> const struct drm_format_info *info = drm_format_info(format);
> - struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
> +
Can remove this newline.
With that removed, this patch is
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Thanks,
Bas
> + int i;
>
> enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
>
> @@ -1386,49 +1387,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> return true;
> }
>
> - /* check if swizzle mode is supported by this version of DCN */
> - switch (asic_id.chip_family) {
> - case FAMILY_SI:
> - case FAMILY_CI:
> - case FAMILY_KV:
> - case FAMILY_CZ:
> - case FAMILY_VI:
> - /* asics before AI does not have modifier support */
> - return false;
> - case FAMILY_AI:
> - case FAMILY_RV:
> - case FAMILY_NV:
> - case FAMILY_VGH:
> - case FAMILY_YELLOW_CARP:
> - case AMDGPU_FAMILY_GC_10_3_6:
> - case AMDGPU_FAMILY_GC_10_3_7:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - case AMDGPU_FAMILY_GC_11_0_0:
> - case AMDGPU_FAMILY_GC_11_0_1:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - default:
> - ASSERT(0); /* Unknown asic */
> - break;
> + /* Check that the modifier is on the list of the plane's supported modifiers. */
> + for (i = 0; i < plane->modifier_count; i++) {
> + if (modifier == plane->modifiers[i])
> + break;
> }
> + if (i == plane->modifier_count)
> + return false;
>
> /*
> * For D swizzle the canonical modifier depends on the bpp, so check
> --
> 2.38.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v2] drm/amd/display: Revert logic for plane modifiers
2022-10-23 23:05 ` Bas Nieuwenhuizen
@ 2022-10-24 3:08 ` Joaquín Ignacio Aramendía
-1 siblings, 0 replies; 21+ messages in thread
From: Joaquín Ignacio Aramendía @ 2022-10-24 3:08 UTC (permalink / raw)
To: bas
Cc: Xinhui.Pan, alexander.deucher, amd-gfx, christian.koenig,
dri-devel, linux-kernel, rodrigo.siqueira, samsagax, sunpeng.li,
stable
This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
("drm/amd/display: Create a file dedicated to planes") and the logic in
dm_plane_format_mod_supported() function got changed by a switch logic.
That change broke drm_plane modifiers setting on series 5000 APUs
(tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
leading to Gamescope not working as reported on GitHub[1]
To reproduce the issue, enter a TTY and run:
$ gamescope -- vkcube
With said commit applied it will abort. This one restores the old logic,
fixing the issue that affects Gamescope.
[1](https://github.com/Plagman/gamescope/issues/624)
Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
---
Removed asic_id and excess newlines
---
.../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
1 file changed, 7 insertions(+), 43 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index dfd3be49eac8..e6854f7270a6 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
@@ -1369,7 +1369,7 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
{
struct amdgpu_device *adev = drm_to_adev(plane->dev);
const struct drm_format_info *info = drm_format_info(format);
- struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
+ int i;
enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
@@ -1386,49 +1386,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
return true;
}
- /* check if swizzle mode is supported by this version of DCN */
- switch (asic_id.chip_family) {
- case FAMILY_SI:
- case FAMILY_CI:
- case FAMILY_KV:
- case FAMILY_CZ:
- case FAMILY_VI:
- /* asics before AI does not have modifier support */
- return false;
- case FAMILY_AI:
- case FAMILY_RV:
- case FAMILY_NV:
- case FAMILY_VGH:
- case FAMILY_YELLOW_CARP:
- case AMDGPU_FAMILY_GC_10_3_6:
- case AMDGPU_FAMILY_GC_10_3_7:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- case AMDGPU_FAMILY_GC_11_0_0:
- case AMDGPU_FAMILY_GC_11_0_1:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- default:
- ASSERT(0); /* Unknown asic */
- break;
+ /* Check that the modifier is on the list of the plane's supported modifiers. */
+ for (i = 0; i < plane->modifier_count; i++) {
+ if (modifier == plane->modifiers[i])
+ break;
}
+ if (i == plane->modifier_count)
+ return false;
/*
* For D swizzle the canonical modifier depends on the bpp, so check
--
2.38.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-24 3:08 ` Joaquín Ignacio Aramendía
0 siblings, 0 replies; 21+ messages in thread
From: Joaquín Ignacio Aramendía @ 2022-10-24 3:08 UTC (permalink / raw)
To: bas
Cc: sunpeng.li, Xinhui.Pan, rodrigo.siqueira, linux-kernel,
dri-devel, amd-gfx, alexander.deucher, stable, christian.koenig,
samsagax
This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
("drm/amd/display: Create a file dedicated to planes") and the logic in
dm_plane_format_mod_supported() function got changed by a switch logic.
That change broke drm_plane modifiers setting on series 5000 APUs
(tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
leading to Gamescope not working as reported on GitHub[1]
To reproduce the issue, enter a TTY and run:
$ gamescope -- vkcube
With said commit applied it will abort. This one restores the old logic,
fixing the issue that affects Gamescope.
[1](https://github.com/Plagman/gamescope/issues/624)
Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
---
Removed asic_id and excess newlines
---
.../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
1 file changed, 7 insertions(+), 43 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index dfd3be49eac8..e6854f7270a6 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
@@ -1369,7 +1369,7 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
{
struct amdgpu_device *adev = drm_to_adev(plane->dev);
const struct drm_format_info *info = drm_format_info(format);
- struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
+ int i;
enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
@@ -1386,49 +1386,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
return true;
}
- /* check if swizzle mode is supported by this version of DCN */
- switch (asic_id.chip_family) {
- case FAMILY_SI:
- case FAMILY_CI:
- case FAMILY_KV:
- case FAMILY_CZ:
- case FAMILY_VI:
- /* asics before AI does not have modifier support */
- return false;
- case FAMILY_AI:
- case FAMILY_RV:
- case FAMILY_NV:
- case FAMILY_VGH:
- case FAMILY_YELLOW_CARP:
- case AMDGPU_FAMILY_GC_10_3_6:
- case AMDGPU_FAMILY_GC_10_3_7:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- case AMDGPU_FAMILY_GC_11_0_0:
- case AMDGPU_FAMILY_GC_11_0_1:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- default:
- ASSERT(0); /* Unknown asic */
- break;
+ /* Check that the modifier is on the list of the plane's supported modifiers. */
+ for (i = 0; i < plane->modifier_count; i++) {
+ if (modifier == plane->modifiers[i])
+ break;
}
+ if (i == plane->modifier_count)
+ return false;
/*
* For D swizzle the canonical modifier depends on the bpp, so check
--
2.38.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH v2] drm/amd/display: Revert logic for plane modifiers
2022-10-24 3:08 ` Joaquín Ignacio Aramendía
(?)
@ 2022-10-24 3:16 ` kernel test robot
-1 siblings, 0 replies; 21+ messages in thread
From: kernel test robot @ 2022-10-24 3:16 UTC (permalink / raw)
To: Joaquín Ignacio Aramendía; +Cc: stable, kbuild-all
Hi,
Thanks for your patch.
FYI: kernel test robot notices the stable kernel rule is not satisfied.
Rule: 'Cc: stable@vger.kernel.org' or 'commit <sha1> upstream.'
Subject: [PATCH v2] drm/amd/display: Revert logic for plane modifiers
Link: https://lore.kernel.org/stable/20221024030832.119039-1-samsagax%40gmail.com
The check is based on https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v2] drm/amd/display: Revert logic for plane modifiers
2022-10-23 23:05 ` Bas Nieuwenhuizen
@ 2022-10-24 11:33 ` Joaquín Ignacio Aramendía
-1 siblings, 0 replies; 21+ messages in thread
From: Joaquín Ignacio Aramendía @ 2022-10-24 11:33 UTC (permalink / raw)
To: bas
Cc: Xinhui.Pan, alexander.deucher, amd-gfx, christian.koenig,
dri-devel, linux-kernel, rodrigo.siqueira, samsagax, sunpeng.li,
stable
This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
("drm/amd/display: Create a file dedicated to planes") and the logic in
dm_plane_format_mod_supported() function got changed by a switch logic.
That change broke drm_plane modifiers setting on series 5000 APUs
(tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
leading to Gamescope not working as reported on GitHub[1]
To reproduce the issue, enter a TTY and run:
$ gamescope -- vkcube
With said commit applied it will abort. This one restores the old logic,
fixing the issue that affects Gamescope.
[1](https://github.com/Plagman/gamescope/issues/624)
Cc: <stable@vger.kernel.org> # 6.0.x
Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
---
Removed asic_id and excess newlines. Resend with correct Cc line.
---
.../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
1 file changed, 7 insertions(+), 43 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index dfd3be49eac8..e6854f7270a6 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
@@ -1369,7 +1369,7 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
{
struct amdgpu_device *adev = drm_to_adev(plane->dev);
const struct drm_format_info *info = drm_format_info(format);
- struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
+ int i;
enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
@@ -1386,49 +1386,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
return true;
}
- /* check if swizzle mode is supported by this version of DCN */
- switch (asic_id.chip_family) {
- case FAMILY_SI:
- case FAMILY_CI:
- case FAMILY_KV:
- case FAMILY_CZ:
- case FAMILY_VI:
- /* asics before AI does not have modifier support */
- return false;
- case FAMILY_AI:
- case FAMILY_RV:
- case FAMILY_NV:
- case FAMILY_VGH:
- case FAMILY_YELLOW_CARP:
- case AMDGPU_FAMILY_GC_10_3_6:
- case AMDGPU_FAMILY_GC_10_3_7:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- case AMDGPU_FAMILY_GC_11_0_0:
- case AMDGPU_FAMILY_GC_11_0_1:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- default:
- ASSERT(0); /* Unknown asic */
- break;
+ /* Check that the modifier is on the list of the plane's supported modifiers. */
+ for (i = 0; i < plane->modifier_count; i++) {
+ if (modifier == plane->modifiers[i])
+ break;
}
+ if (i == plane->modifier_count)
+ return false;
/*
* For D swizzle the canonical modifier depends on the bpp, so check
--
2.38.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-24 11:33 ` Joaquín Ignacio Aramendía
0 siblings, 0 replies; 21+ messages in thread
From: Joaquín Ignacio Aramendía @ 2022-10-24 11:33 UTC (permalink / raw)
To: bas
Cc: sunpeng.li, Xinhui.Pan, rodrigo.siqueira, linux-kernel,
dri-devel, amd-gfx, alexander.deucher, stable, christian.koenig,
samsagax
This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
("drm/amd/display: Create a file dedicated to planes") and the logic in
dm_plane_format_mod_supported() function got changed by a switch logic.
That change broke drm_plane modifiers setting on series 5000 APUs
(tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
leading to Gamescope not working as reported on GitHub[1]
To reproduce the issue, enter a TTY and run:
$ gamescope -- vkcube
With said commit applied it will abort. This one restores the old logic,
fixing the issue that affects Gamescope.
[1](https://github.com/Plagman/gamescope/issues/624)
Cc: <stable@vger.kernel.org> # 6.0.x
Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
---
Removed asic_id and excess newlines. Resend with correct Cc line.
---
.../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
1 file changed, 7 insertions(+), 43 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index dfd3be49eac8..e6854f7270a6 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
@@ -1369,7 +1369,7 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
{
struct amdgpu_device *adev = drm_to_adev(plane->dev);
const struct drm_format_info *info = drm_format_info(format);
- struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
+ int i;
enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
@@ -1386,49 +1386,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
return true;
}
- /* check if swizzle mode is supported by this version of DCN */
- switch (asic_id.chip_family) {
- case FAMILY_SI:
- case FAMILY_CI:
- case FAMILY_KV:
- case FAMILY_CZ:
- case FAMILY_VI:
- /* asics before AI does not have modifier support */
- return false;
- case FAMILY_AI:
- case FAMILY_RV:
- case FAMILY_NV:
- case FAMILY_VGH:
- case FAMILY_YELLOW_CARP:
- case AMDGPU_FAMILY_GC_10_3_6:
- case AMDGPU_FAMILY_GC_10_3_7:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- case AMDGPU_FAMILY_GC_11_0_0:
- case AMDGPU_FAMILY_GC_11_0_1:
- switch (AMD_FMT_MOD_GET(TILE, modifier)) {
- case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
- case AMD_FMT_MOD_TILE_GFX9_64K_D:
- return true;
- default:
- return false;
- }
- break;
- default:
- ASSERT(0); /* Unknown asic */
- break;
+ /* Check that the modifier is on the list of the plane's supported modifiers. */
+ for (i = 0; i < plane->modifier_count; i++) {
+ if (modifier == plane->modifiers[i])
+ break;
}
+ if (i == plane->modifier_count)
+ return false;
/*
* For D swizzle the canonical modifier depends on the bpp, so check
--
2.38.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH v2] drm/amd/display: Revert logic for plane modifiers
2022-10-24 11:33 ` Joaquín Ignacio Aramendía
(?)
@ 2022-10-24 17:13 ` Alex Deucher
-1 siblings, 0 replies; 21+ messages in thread
From: Alex Deucher @ 2022-10-24 17:13 UTC (permalink / raw)
To: Joaquín Ignacio Aramendía
Cc: sunpeng.li, Xinhui.Pan, rodrigo.siqueira, linux-kernel,
dri-devel, amd-gfx, alexander.deucher, stable, christian.koenig
Applied. Thanks!
Alex
On Mon, Oct 24, 2022 at 9:17 AM Joaquín Ignacio Aramendía
<samsagax@gmail.com> wrote:
>
> This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
> ("drm/amd/display: Create a file dedicated to planes") and the logic in
> dm_plane_format_mod_supported() function got changed by a switch logic.
> That change broke drm_plane modifiers setting on series 5000 APUs
> (tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
> leading to Gamescope not working as reported on GitHub[1]
>
> To reproduce the issue, enter a TTY and run:
>
> $ gamescope -- vkcube
>
> With said commit applied it will abort. This one restores the old logic,
> fixing the issue that affects Gamescope.
>
> [1](https://github.com/Plagman/gamescope/issues/624)
>
> Cc: <stable@vger.kernel.org> # 6.0.x
> Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
> ---
> Removed asic_id and excess newlines. Resend with correct Cc line.
> ---
> .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
> 1 file changed, 7 insertions(+), 43 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> index dfd3be49eac8..e6854f7270a6 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
> @@ -1369,7 +1369,7 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> {
> struct amdgpu_device *adev = drm_to_adev(plane->dev);
> const struct drm_format_info *info = drm_format_info(format);
> - struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
> + int i;
>
> enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
>
> @@ -1386,49 +1386,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> return true;
> }
>
> - /* check if swizzle mode is supported by this version of DCN */
> - switch (asic_id.chip_family) {
> - case FAMILY_SI:
> - case FAMILY_CI:
> - case FAMILY_KV:
> - case FAMILY_CZ:
> - case FAMILY_VI:
> - /* asics before AI does not have modifier support */
> - return false;
> - case FAMILY_AI:
> - case FAMILY_RV:
> - case FAMILY_NV:
> - case FAMILY_VGH:
> - case FAMILY_YELLOW_CARP:
> - case AMDGPU_FAMILY_GC_10_3_6:
> - case AMDGPU_FAMILY_GC_10_3_7:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - case AMDGPU_FAMILY_GC_11_0_0:
> - case AMDGPU_FAMILY_GC_11_0_1:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - default:
> - ASSERT(0); /* Unknown asic */
> - break;
> + /* Check that the modifier is on the list of the plane's supported modifiers. */
> + for (i = 0; i < plane->modifier_count; i++) {
> + if (modifier == plane->modifiers[i])
> + break;
> }
> + if (i == plane->modifier_count)
> + return false;
>
> /*
> * For D swizzle the canonical modifier depends on the bpp, so check
> --
> 2.38.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-24 17:13 ` Alex Deucher
0 siblings, 0 replies; 21+ messages in thread
From: Alex Deucher @ 2022-10-24 17:13 UTC (permalink / raw)
To: Joaquín Ignacio Aramendía
Cc: sunpeng.li, Xinhui.Pan, rodrigo.siqueira, linux-kernel,
dri-devel, amd-gfx, bas, alexander.deucher, stable,
christian.koenig
Applied. Thanks!
Alex
On Mon, Oct 24, 2022 at 9:17 AM Joaquín Ignacio Aramendía
<samsagax@gmail.com> wrote:
>
> This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
> ("drm/amd/display: Create a file dedicated to planes") and the logic in
> dm_plane_format_mod_supported() function got changed by a switch logic.
> That change broke drm_plane modifiers setting on series 5000 APUs
> (tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
> leading to Gamescope not working as reported on GitHub[1]
>
> To reproduce the issue, enter a TTY and run:
>
> $ gamescope -- vkcube
>
> With said commit applied it will abort. This one restores the old logic,
> fixing the issue that affects Gamescope.
>
> [1](https://github.com/Plagman/gamescope/issues/624)
>
> Cc: <stable@vger.kernel.org> # 6.0.x
> Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
> ---
> Removed asic_id and excess newlines. Resend with correct Cc line.
> ---
> .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
> 1 file changed, 7 insertions(+), 43 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> index dfd3be49eac8..e6854f7270a6 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
> @@ -1369,7 +1369,7 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> {
> struct amdgpu_device *adev = drm_to_adev(plane->dev);
> const struct drm_format_info *info = drm_format_info(format);
> - struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
> + int i;
>
> enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
>
> @@ -1386,49 +1386,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> return true;
> }
>
> - /* check if swizzle mode is supported by this version of DCN */
> - switch (asic_id.chip_family) {
> - case FAMILY_SI:
> - case FAMILY_CI:
> - case FAMILY_KV:
> - case FAMILY_CZ:
> - case FAMILY_VI:
> - /* asics before AI does not have modifier support */
> - return false;
> - case FAMILY_AI:
> - case FAMILY_RV:
> - case FAMILY_NV:
> - case FAMILY_VGH:
> - case FAMILY_YELLOW_CARP:
> - case AMDGPU_FAMILY_GC_10_3_6:
> - case AMDGPU_FAMILY_GC_10_3_7:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - case AMDGPU_FAMILY_GC_11_0_0:
> - case AMDGPU_FAMILY_GC_11_0_1:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - default:
> - ASSERT(0); /* Unknown asic */
> - break;
> + /* Check that the modifier is on the list of the plane's supported modifiers. */
> + for (i = 0; i < plane->modifier_count; i++) {
> + if (modifier == plane->modifiers[i])
> + break;
> }
> + if (i == plane->modifier_count)
> + return false;
>
> /*
> * For D swizzle the canonical modifier depends on the bpp, so check
> --
> 2.38.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2] drm/amd/display: Revert logic for plane modifiers
@ 2022-10-24 17:13 ` Alex Deucher
0 siblings, 0 replies; 21+ messages in thread
From: Alex Deucher @ 2022-10-24 17:13 UTC (permalink / raw)
To: Joaquín Ignacio Aramendía
Cc: bas, sunpeng.li, Xinhui.Pan, rodrigo.siqueira, linux-kernel,
dri-devel, amd-gfx, alexander.deucher, stable, christian.koenig
Applied. Thanks!
Alex
On Mon, Oct 24, 2022 at 9:17 AM Joaquín Ignacio Aramendía
<samsagax@gmail.com> wrote:
>
> This file was split in commit 5d945cbcd4b16a29d6470a80dfb19738f9a4319f
> ("drm/amd/display: Create a file dedicated to planes") and the logic in
> dm_plane_format_mod_supported() function got changed by a switch logic.
> That change broke drm_plane modifiers setting on series 5000 APUs
> (tested on OXP mini AMD 5800U and HP Dev One 5850U PRO)
> leading to Gamescope not working as reported on GitHub[1]
>
> To reproduce the issue, enter a TTY and run:
>
> $ gamescope -- vkcube
>
> With said commit applied it will abort. This one restores the old logic,
> fixing the issue that affects Gamescope.
>
> [1](https://github.com/Plagman/gamescope/issues/624)
>
> Cc: <stable@vger.kernel.org> # 6.0.x
> Signed-off-by: Joaquín Ignacio Aramendía <samsagax@gmail.com>
> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
> ---
> Removed asic_id and excess newlines. Resend with correct Cc line.
> ---
> .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 50 +++----------------
> 1 file changed, 7 insertions(+), 43 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> index dfd3be49eac8..e6854f7270a6 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
> @@ -1369,7 +1369,7 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> {
> struct amdgpu_device *adev = drm_to_adev(plane->dev);
> const struct drm_format_info *info = drm_format_info(format);
> - struct hw_asic_id asic_id = adev->dm.dc->ctx->asic_id;
> + int i;
>
> enum dm_micro_swizzle microtile = modifier_gfx9_swizzle_mode(modifier) & 3;
>
> @@ -1386,49 +1386,13 @@ static bool dm_plane_format_mod_supported(struct drm_plane *plane,
> return true;
> }
>
> - /* check if swizzle mode is supported by this version of DCN */
> - switch (asic_id.chip_family) {
> - case FAMILY_SI:
> - case FAMILY_CI:
> - case FAMILY_KV:
> - case FAMILY_CZ:
> - case FAMILY_VI:
> - /* asics before AI does not have modifier support */
> - return false;
> - case FAMILY_AI:
> - case FAMILY_RV:
> - case FAMILY_NV:
> - case FAMILY_VGH:
> - case FAMILY_YELLOW_CARP:
> - case AMDGPU_FAMILY_GC_10_3_6:
> - case AMDGPU_FAMILY_GC_10_3_7:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - case AMDGPU_FAMILY_GC_11_0_0:
> - case AMDGPU_FAMILY_GC_11_0_1:
> - switch (AMD_FMT_MOD_GET(TILE, modifier)) {
> - case AMD_FMT_MOD_TILE_GFX11_256K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_R_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_S_X:
> - case AMD_FMT_MOD_TILE_GFX9_64K_D:
> - return true;
> - default:
> - return false;
> - }
> - break;
> - default:
> - ASSERT(0); /* Unknown asic */
> - break;
> + /* Check that the modifier is on the list of the plane's supported modifiers. */
> + for (i = 0; i < plane->modifier_count; i++) {
> + if (modifier == plane->modifiers[i])
> + break;
> }
> + if (i == plane->modifier_count)
> + return false;
>
> /*
> * For D swizzle the canonical modifier depends on the bpp, so check
> --
> 2.38.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2022-10-25 6:55 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-19 15:15 [PATCH] drm/amd/display: Revert logic for plane modifiers Joaquín Ignacio Aramendía
2022-10-19 15:15 ` Joaquín Ignacio Aramendía
2022-10-19 15:15 ` Joaquín Ignacio Aramendía
2022-10-20 12:35 ` Rodrigo Siqueira Jordao
2022-10-20 12:35 ` Rodrigo Siqueira Jordao
2022-10-20 12:35 ` Rodrigo Siqueira Jordao
2022-10-20 14:52 ` Joaquin Aramendia
2022-10-20 14:52 ` Joaquin Aramendia
2022-10-20 20:53 ` Joaquín Ignacio Aramendía
2022-10-20 20:53 ` Joaquín Ignacio Aramendía
2022-10-20 20:53 ` Joaquín Ignacio Aramendía
2022-10-23 23:05 ` Bas Nieuwenhuizen
2022-10-23 23:05 ` Bas Nieuwenhuizen
2022-10-24 3:08 ` [PATCH v2] " Joaquín Ignacio Aramendía
2022-10-24 3:08 ` Joaquín Ignacio Aramendía
2022-10-24 3:16 ` kernel test robot
2022-10-24 11:33 ` Joaquín Ignacio Aramendía
2022-10-24 11:33 ` Joaquín Ignacio Aramendía
2022-10-24 17:13 ` Alex Deucher
2022-10-24 17:13 ` Alex Deucher
2022-10-24 17:13 ` Alex Deucher
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.