drm/amd/display: use max lb for latency hiding
authorDmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Mon, 7 Dec 2020 21:23:41 +0000 (16:23 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 24 Mar 2021 03:31:46 +0000 (23:31 -0400)
Enable max memory lb config to improve stutter efficiency and
latency hiding. Also increase max number of lb lines to be
used by dml since experiments have shown that there isnt a hard max
beyond what fits in lb.

Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Reviewed-by: Eric Bernstein <Eric.Bernstein@amd.com>
Acked-by: Solomon Chiu <solomon.chiu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_resource.c
drivers/gpu/drm/amd/display/dc/dcn301/dcn301_resource.c
drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c

index 90e912f..3381195 100644 (file)
@@ -82,7 +82,7 @@ const struct _vcs_dpi_ip_params_st dcn1_0_ip = {
        .meta_chunk_size_kbytes = 2,
        .writeback_chunk_size_kbytes = 2,
        .line_buffer_size_bits = 589824,
-       .max_line_buffer_lines = 12,
+       .max_line_buffer_lines = 32,
        .IsLineBufferBppFixed = 0,
        .LineBufferFixedBpp = -1,
        .writeback_luma_buffer_size_kbytes = 12,
@@ -619,6 +619,7 @@ static const struct dc_debug_options debug_defaults_drv = {
                .recovery_enabled = false, /*enable this by default after testing.*/
                .max_downscale_src_width = 3840,
                .underflow_assert_delay_us = 0xFFFFFFFF,
+               .use_max_lb = true
 };
 
 static const struct dc_debug_options debug_defaults_diags = {
@@ -630,6 +631,7 @@ static const struct dc_debug_options debug_defaults_diags = {
                .disable_pplib_clock_request = true,
                .disable_pplib_wm_range = true,
                .underflow_assert_delay_us = 0xFFFFFFFF,
+               .use_max_lb = true
 };
 
 static void dcn10_dpp_destroy(struct dpp **dpp)
index a65efed..9ae12a8 100644 (file)
@@ -112,7 +112,7 @@ struct _vcs_dpi_ip_params_st dcn2_0_ip = {
        .is_line_buffer_bpp_fixed = 0,
        .line_buffer_fixed_bpp = 0,
        .dcc_supported = true,
-       .max_line_buffer_lines = 12,
+       .max_line_buffer_lines = 32,
        .writeback_luma_buffer_size_kbytes = 12,
        .writeback_chroma_buffer_size_kbytes = 8,
        .writeback_chroma_line_buffer_width_pixels = 4,
@@ -180,7 +180,7 @@ static struct _vcs_dpi_ip_params_st dcn2_0_nv14_ip = {
        .is_line_buffer_bpp_fixed = 0,
        .line_buffer_fixed_bpp = 0,
        .dcc_supported = true,
-       .max_line_buffer_lines = 12,
+       .max_line_buffer_lines = 32,
        .writeback_luma_buffer_size_kbytes = 12,
        .writeback_chroma_buffer_size_kbytes = 8,
        .writeback_chroma_line_buffer_width_pixels = 4,
@@ -1075,6 +1075,7 @@ static const struct dc_debug_options debug_defaults_drv = {
                .scl_reset_length10 = true,
                .sanity_checks = false,
                .underflow_assert_delay_us = 0xFFFFFFFF,
+               .use_max_lb = true
 };
 
 static const struct dc_debug_options debug_defaults_diags = {
@@ -1091,6 +1092,7 @@ static const struct dc_debug_options debug_defaults_diags = {
                .scl_reset_length10 = true,
                .underflow_assert_delay_us = 0xFFFFFFFF,
                .enable_tri_buf = true,
+               .use_max_lb = true
 };
 
 void dcn20_dpp_destroy(struct dpp **dpp)
index 2c4e309..bd8e4c0 100644 (file)
@@ -115,7 +115,7 @@ struct _vcs_dpi_ip_params_st dcn2_1_ip = {
        .is_line_buffer_bpp_fixed = 0,
        .line_buffer_fixed_bpp = 0,
        .dcc_supported = true,
-       .max_line_buffer_lines = 12,
+       .max_line_buffer_lines = 32,
        .writeback_luma_buffer_size_kbytes = 12,
        .writeback_chroma_buffer_size_kbytes = 8,
        .writeback_chroma_line_buffer_width_pixels = 4,
@@ -882,7 +882,9 @@ static const struct dc_debug_options debug_defaults_drv = {
                .scl_reset_length10 = true,
                .sanity_checks = true,
                .disable_48mhz_pwrdwn = false,
-               .usbc_combo_phy_reset_wa = true
+               .usbc_combo_phy_reset_wa = true,
+               .dmub_command_table = true,
+               .use_max_lb = true
 };
 
 static const struct dc_debug_options debug_defaults_diags = {
@@ -898,7 +900,8 @@ static const struct dc_debug_options debug_defaults_diags = {
                .disable_stutter = true,
                .disable_48mhz_pwrdwn = true,
                .disable_psr = true,
-               .enable_tri_buf = true
+               .enable_tri_buf = true,
+               .use_max_lb = true
 };
 
 enum dcn20_clk_src_array_id {
index 71e2d5e..a3ac7e2 100644 (file)
@@ -120,7 +120,7 @@ struct _vcs_dpi_ip_params_st dcn3_0_ip = {
        .dcc_supported = true,
        .writeback_interface_buffer_size_kbytes = 90,
        .writeback_line_buffer_buffer_size = 0,
-       .max_line_buffer_lines = 12,
+       .max_line_buffer_lines = 32,
        .writeback_luma_buffer_size_kbytes = 12,  // writeback_line_buffer_buffer_size = 656640
        .writeback_chroma_buffer_size_kbytes = 8,
        .writeback_chroma_line_buffer_width_pixels = 4,
@@ -852,6 +852,7 @@ static const struct dc_debug_options debug_defaults_drv = {
        .dwb_fi_phase = -1, // -1 = disable,
        .dmub_command_table = true,
        .disable_psr = false,
+       .use_max_lb = true
 };
 
 static const struct dc_debug_options debug_defaults_diags = {
@@ -870,6 +871,7 @@ static const struct dc_debug_options debug_defaults_diags = {
        .dmub_command_table = true,
        .disable_psr = true,
        .enable_tri_buf = true,
+       .use_max_lb = true
 };
 
 void dcn30_dpp_destroy(struct dpp **dpp)
index c109d0c..0395419 100644 (file)
@@ -116,7 +116,7 @@ struct _vcs_dpi_ip_params_st dcn3_01_ip = {
        .dcc_supported = true,
        .writeback_interface_buffer_size_kbytes = 90,
        .writeback_line_buffer_buffer_size = 656640,
-       .max_line_buffer_lines = 12,
+       .max_line_buffer_lines = 32,
        .writeback_luma_buffer_size_kbytes = 12,  // writeback_line_buffer_buffer_size = 656640
        .writeback_chroma_buffer_size_kbytes = 8,
        .writeback_chroma_line_buffer_width_pixels = 4,
index 4b659b6..98b464e 100644 (file)
@@ -101,7 +101,7 @@ struct _vcs_dpi_ip_params_st dcn3_02_ip = {
                .dcc_supported = true,
                .writeback_interface_buffer_size_kbytes = 90,
                .writeback_line_buffer_buffer_size = 0,
-               .max_line_buffer_lines = 12,
+               .max_line_buffer_lines = 32,
                .writeback_luma_buffer_size_kbytes = 12,  // writeback_line_buffer_buffer_size = 656640
                .writeback_chroma_buffer_size_kbytes = 8,
                .writeback_chroma_line_buffer_width_pixels = 4,
@@ -223,6 +223,7 @@ static const struct dc_debug_options debug_defaults_drv = {
                .underflow_assert_delay_us = 0xFFFFFFFF,
                .dwb_fi_phase = -1, // -1 = disable,
                .dmub_command_table = true,
+               .use_max_lb = true
 };
 
 static const struct dc_debug_options debug_defaults_diags = {
@@ -241,6 +242,7 @@ static const struct dc_debug_options debug_defaults_diags = {
                .dmub_command_table = true,
                .enable_tri_buf = true,
                .disable_psr = true,
+               .use_max_lb = true
 };
 
 enum dcn302_clk_src_array_id {