From: Mikita Lipski <[email protected]>

Adding the stutter_entry_wm object to dce_bw_output struct
and populating it with bw calculations data

Signed-off-by: Mikita Lipski <[email protected]>
Reviewed-by: Harry Wentland <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c | 111 ++++++++++++++++++++++-
 drivers/gpu/drm/amd/display/dc/inc/core_types.h  |   1 +
 2 files changed, 110 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c 
b/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
index 16dbf86484da..51c565cd7455 100644
--- a/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
+++ b/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
@@ -3091,7 +3091,33 @@ bool bw_calcs(struct dc_context *ctx,
                        bw_fixed_to_int(bw_mul(data->
                                stutter_exit_watermark[9], 
bw_int_to_fixed(1000)));
 
-
+               calcs_output->stutter_entry_wm_ns[0].a_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[4], 
bw_int_to_fixed(1000)));
+               calcs_output->stutter_entry_wm_ns[1].a_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[5], 
bw_int_to_fixed(1000)));
+               calcs_output->stutter_entry_wm_ns[2].a_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[6], 
bw_int_to_fixed(1000)));
+               if (ctx->dc->caps.max_slave_planes) {
+                       calcs_output->stutter_entry_wm_ns[3].a_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[0], 
bw_int_to_fixed(1000)));
+                       calcs_output->stutter_entry_wm_ns[4].a_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[1], 
bw_int_to_fixed(1000)));
+               } else {
+                       calcs_output->stutter_entry_wm_ns[3].a_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[7], 
bw_int_to_fixed(1000)));
+                       calcs_output->stutter_entry_wm_ns[4].a_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[8], 
bw_int_to_fixed(1000)));
+               }
+               calcs_output->stutter_entry_wm_ns[5].a_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[9], 
bw_int_to_fixed(1000)));
 
                calcs_output->urgent_wm_ns[0].a_mark =
                        bw_fixed_to_int(bw_mul(data->
@@ -3186,7 +3212,33 @@ bool bw_calcs(struct dc_context *ctx,
                                bw_fixed_to_int(bw_mul(data->
                                        stutter_exit_watermark[9], 
bw_int_to_fixed(1000)));
 
-
+               calcs_output->stutter_entry_wm_ns[0].b_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[4], 
bw_int_to_fixed(1000)));
+               calcs_output->stutter_entry_wm_ns[1].b_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[5], 
bw_int_to_fixed(1000)));
+               calcs_output->stutter_entry_wm_ns[2].b_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[6], 
bw_int_to_fixed(1000)));
+               if (ctx->dc->caps.max_slave_planes) {
+                       calcs_output->stutter_entry_wm_ns[3].b_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[0], 
bw_int_to_fixed(1000)));
+                       calcs_output->stutter_entry_wm_ns[4].b_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[1], 
bw_int_to_fixed(1000)));
+               } else {
+                       calcs_output->stutter_entry_wm_ns[3].b_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[7], 
bw_int_to_fixed(1000)));
+                       calcs_output->stutter_entry_wm_ns[4].b_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[8], 
bw_int_to_fixed(1000)));
+               }
+               calcs_output->stutter_entry_wm_ns[5].b_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[9], 
bw_int_to_fixed(1000)));
 
                        calcs_output->urgent_wm_ns[0].b_mark =
                                bw_fixed_to_int(bw_mul(data->
@@ -3279,6 +3331,34 @@ bool bw_calcs(struct dc_context *ctx,
                                bw_fixed_to_int(bw_mul(data->
                                        stutter_exit_watermark[9], 
bw_int_to_fixed(1000)));
 
+               calcs_output->stutter_entry_wm_ns[0].c_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[4], 
bw_int_to_fixed(1000)));
+               calcs_output->stutter_entry_wm_ns[1].c_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[5], 
bw_int_to_fixed(1000)));
+               calcs_output->stutter_entry_wm_ns[2].c_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[6], 
bw_int_to_fixed(1000)));
+               if (ctx->dc->caps.max_slave_planes) {
+                       calcs_output->stutter_entry_wm_ns[3].c_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[0], 
bw_int_to_fixed(1000)));
+                       calcs_output->stutter_entry_wm_ns[4].c_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[1], 
bw_int_to_fixed(1000)));
+               } else {
+                       calcs_output->stutter_entry_wm_ns[3].c_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[7], 
bw_int_to_fixed(1000)));
+                       calcs_output->stutter_entry_wm_ns[4].c_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[8], 
bw_int_to_fixed(1000)));
+               }
+               calcs_output->stutter_entry_wm_ns[5].c_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[9], 
bw_int_to_fixed(1000)));
+
                        calcs_output->urgent_wm_ns[0].c_mark =
                                bw_fixed_to_int(bw_mul(data->
                                        urgent_watermark[4], 
bw_int_to_fixed(1000)));
@@ -3383,6 +3463,33 @@ bool bw_calcs(struct dc_context *ctx,
                        bw_fixed_to_int(bw_mul(data->
                                stutter_exit_watermark[9], 
bw_int_to_fixed(1000)));
 
+               calcs_output->stutter_entry_wm_ns[0].d_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[4], 
bw_int_to_fixed(1000)));
+               calcs_output->stutter_entry_wm_ns[1].d_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[5], 
bw_int_to_fixed(1000)));
+               calcs_output->stutter_entry_wm_ns[2].d_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[6], 
bw_int_to_fixed(1000)));
+               if (ctx->dc->caps.max_slave_planes) {
+                       calcs_output->stutter_entry_wm_ns[3].d_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[0], 
bw_int_to_fixed(1000)));
+                       calcs_output->stutter_entry_wm_ns[4].d_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[1], 
bw_int_to_fixed(1000)));
+               } else {
+                       calcs_output->stutter_entry_wm_ns[3].d_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[7], 
bw_int_to_fixed(1000)));
+                       calcs_output->stutter_entry_wm_ns[4].d_mark =
+                               bw_fixed_to_int(bw_mul(data->
+                                       stutter_entry_watermark[8], 
bw_int_to_fixed(1000)));
+               }
+               calcs_output->stutter_entry_wm_ns[5].d_mark =
+                       bw_fixed_to_int(bw_mul(data->
+                               stutter_entry_watermark[9], 
bw_int_to_fixed(1000)));
 
                calcs_output->urgent_wm_ns[0].d_mark =
                        bw_fixed_to_int(bw_mul(data->
diff --git a/drivers/gpu/drm/amd/display/dc/inc/core_types.h 
b/drivers/gpu/drm/amd/display/dc/inc/core_types.h
index 8c51ad70cace..55f56bf7d5b6 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/core_types.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/core_types.h
@@ -250,6 +250,7 @@ struct dce_bw_output {
        bool all_displays_in_sync;
        struct dce_watermarks urgent_wm_ns[MAX_PIPES];
        struct dce_watermarks stutter_exit_wm_ns[MAX_PIPES];
+       struct dce_watermarks stutter_entry_wm_ns[MAX_PIPES];
        struct dce_watermarks nbp_state_change_wm_ns[MAX_PIPES];
        int sclk_khz;
        int sclk_deep_sleep_khz;
-- 
2.14.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to