Whenever transitioning from SubVP to MPO in a high refresh rate and high
resolution display, for example, 4k@120Hz or higher, screen blinks as a
white flash. On gamescope, it happens every time the cursor disappears
because it stops composing in a single plane and returns using primary +
one/two overlay planes. According to [1] SubVP + MPO isn't supported and
the white flash seems to occur exactly when exiting SubVP.

It happens with DCN321 and DCN401, at least. As there is no transition
from SubVP to MPO if SubVP is disabled (ofc), there is no blink when
moving from single plane to multiple planes. Check [2] for more details.

[1] https://gitlab.freedesktop.org/agd5f/linux/-/commit/14eb72ff580d
[2] https://gitlab.freedesktop.org/drm/amd/-/issues/4877

Signed-off-by: Melissa Wen <[email protected]>
---

Hi,

I wonder if the problem could be solved by adding more steps between
first totally disabling SubVP (and its PHANTOM pipe), and only after
that enabling more than one plane. To me, it seems related to the
sequence in which the driver removes and adds pipes with different
features. My attempts to fix it were unsuccessful, and I'm not sure if
the feature can function stably.

Can you guys take a look at this?

Thanks,

Melissa

 drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c  | 2 +-
 .../gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c    | 2 +-
 .../gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c    | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c
index b276fec3e479..9cca249bdd6f 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn32/dcn32_resource.c
@@ -716,7 +716,7 @@ static const struct dc_debug_options debug_defaults_drv = {
                }
        },
        .use_max_lb = true,
-       .force_disable_subvp = false,
+       .force_disable_subvp = true,
        .exit_idle_opt_for_cursor_updates = true,
        .using_dml2 = false,
        .using_dml21 = false, // TODO : Temporary for N-1 validation. Remove 
after N-1 is done.
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c
index 3466ca34c93f..6388e95c89aa 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn321/dcn321_resource.c
@@ -712,7 +712,7 @@ static const struct dc_debug_options debug_defaults_drv = {
                }
        },
        .use_max_lb = true,
-       .force_disable_subvp = false,
+       .force_disable_subvp = true,
        .exit_idle_opt_for_cursor_updates = true,
        .enable_single_display_2to1_odm_policy = true,
 
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c
index 875ae97489d3..789139f549b4 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn401/dcn401_resource.c
@@ -707,7 +707,7 @@ static const struct dc_debug_options debug_defaults_drv = {
                }
        },
        .use_max_lb = true,
-       .force_disable_subvp = false,
+       .force_disable_subvp = true,
        .disable_force_pstate_allow_on_hw_release = false,
        .exit_idle_opt_for_cursor_updates = true,
        .using_dml2 = true,
-- 
2.51.0

Reply via email to