From: Gabe Teeger <gabe.tee...@amd.com>

[what]
does_configuration_meet_sw_policies check was not done in the
validate_only portion of dml2, so some unsupported modes were passing bw
validation, only to fail the same check later in validate_and_build. now
we add the check to validate_only.

Also add line in dcn35_resource to ensure that value set for
enable_windowed_mpo_odm gets passed to dml.

[why]
Immediate black screen during video playback at 4k144hz. The debugger
showed that we were failing validation in dml on every updateplanes().

Reviewed-by: Wenjing Liu <wenjing....@amd.com>
Acked-by: Qingqing Zhuo <qingqing.z...@amd.com>
Signed-off-by: Qingqing Zhuo <qingqing.z...@amd.com>
Signed-off-by: Gabe Teeger <gabe.tee...@amd.com>
---
 drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c | 1 +
 drivers/gpu/drm/amd/display/dc/dml2/dml2_wrapper.c    | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c 
b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c
index 2283daa45318..828846538a92 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn35/dcn35_resource.c
@@ -2072,6 +2072,7 @@ static bool dcn35_resource_construct(
        dc->dml2_options.use_native_soc_bb_construction = true;
        if (dc->config.EnableMinDispClkODM)
                dc->dml2_options.minimize_dispclk_using_odm = true;
+       dc->dml2_options.enable_windowed_mpo_odm = 
dc->config.enable_windowed_mpo_odm;
 
        dc->dml2_options.callbacks.dc = dc;
        dc->dml2_options.callbacks.build_scaling_params = 
&resource_build_scaling_params;
diff --git a/drivers/gpu/drm/amd/display/dc/dml2/dml2_wrapper.c 
b/drivers/gpu/drm/amd/display/dc/dml2/dml2_wrapper.c
index 11c131f6cf26..9a5e145168bc 100644
--- a/drivers/gpu/drm/amd/display/dc/dml2/dml2_wrapper.c
+++ b/drivers/gpu/drm/amd/display/dc/dml2/dml2_wrapper.c
@@ -659,6 +659,9 @@ static bool dml2_validate_only(const struct dc_state 
*context)
                &dml2->v20.scratch.cur_display_config,
                &dml2->v20.scratch.mode_support_info);
 
+       if (result)
+               result = does_configuration_meet_sw_policies(dml2, 
&dml2->v20.scratch.cur_display_config, &dml2->v20.scratch.mode_support_info);
+
        return (result == 1) ? true : false;
 }
 
-- 
2.40.1

Reply via email to