mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
drm/amd/display: Fix rest of pass-by-value structs in DML
Passing structs adds a lot of overhead. We don't ever want to pass
anything bigger than primitives by value.
This patch fixes these Coverity IDs:
Addresses-Coverity-ID: 1424031: ("Big parameter passed by value")
Addresses-Coverity-ID: 1424055: ("Big parameter passed by value")
Addresses-Coverity-ID: 1424072: ("Big parameter passed by value")
Addresses-Coverity-ID: 1423779: ("Big parameter passed by value")
Signed-off-by: Harry Wentland <harry.wentland@amd.com>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: amd-gfx@lists.freedesktop.org
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: Arnd Bergmann <arnd@kernel.org>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Xinhui Pan <Xinhui.Pan@amd.com>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: llvm@lists.linux.dev
Acked-by: Christian König <christian.koenig@amd.com>
Build-tested-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
4768349e88
commit
757af27b9f
@@ -37,8 +37,8 @@
|
||||
//
|
||||
static void dml20_rq_dlg_get_rq_params(
|
||||
struct display_mode_lib *mode_lib,
|
||||
display_rq_params_st * rq_param,
|
||||
const display_pipe_source_params_st pipe_src_param);
|
||||
display_rq_params_st *rq_param,
|
||||
const display_pipe_source_params_st *pipe_src_param);
|
||||
|
||||
// Function: dml20_rq_dlg_get_dlg_params
|
||||
// Calculate deadline related parameters
|
||||
@@ -49,8 +49,8 @@ static void dml20_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
|
||||
const unsigned int pipe_idx,
|
||||
display_dlg_regs_st *disp_dlg_regs,
|
||||
display_ttu_regs_st *disp_ttu_regs,
|
||||
const display_rq_dlg_params_st rq_dlg_param,
|
||||
const display_dlg_sys_params_st dlg_sys_param,
|
||||
const display_rq_dlg_params_st *rq_dlg_param,
|
||||
const display_dlg_sys_params_st *dlg_sys_param,
|
||||
const bool cstate_en,
|
||||
const bool pstate_en);
|
||||
/*
|
||||
@@ -188,28 +188,28 @@ static void extract_rq_sizing_regs(struct display_mode_lib *mode_lib,
|
||||
|
||||
static void extract_rq_regs(struct display_mode_lib *mode_lib,
|
||||
display_rq_regs_st *rq_regs,
|
||||
const display_rq_params_st rq_param)
|
||||
const display_rq_params_st *rq_param)
|
||||
{
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
unsigned int detile_buf_plane1_addr = 0;
|
||||
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param.sizing.rq_l);
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param->sizing.rq_l);
|
||||
|
||||
rq_regs->rq_regs_l.pte_row_height_linear = dml_floor(dml_log2(rq_param.dlg.rq_l.dpte_row_height),
|
||||
rq_regs->rq_regs_l.pte_row_height_linear = dml_floor(dml_log2(rq_param->dlg.rq_l.dpte_row_height),
|
||||
1) - 3;
|
||||
|
||||
if (rq_param.yuv420) {
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param.sizing.rq_c);
|
||||
rq_regs->rq_regs_c.pte_row_height_linear = dml_floor(dml_log2(rq_param.dlg.rq_c.dpte_row_height),
|
||||
if (rq_param->yuv420) {
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param->sizing.rq_c);
|
||||
rq_regs->rq_regs_c.pte_row_height_linear = dml_floor(dml_log2(rq_param->dlg.rq_c.dpte_row_height),
|
||||
1) - 3;
|
||||
}
|
||||
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param.dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param.dlg.rq_c.swath_height);
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param->dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param->dlg.rq_c.swath_height);
|
||||
|
||||
// TODO: take the max between luma, chroma chunk size?
|
||||
// okay for now, as we are setting chunk_bytes to 8kb anyways
|
||||
if (rq_param.sizing.rq_l.chunk_bytes >= 32 * 1024) { //32kb
|
||||
if (rq_param->sizing.rq_l.chunk_bytes >= 32 * 1024) { //32kb
|
||||
rq_regs->drq_expansion_mode = 0;
|
||||
} else {
|
||||
rq_regs->drq_expansion_mode = 2;
|
||||
@@ -218,9 +218,9 @@ static void extract_rq_regs(struct display_mode_lib *mode_lib,
|
||||
rq_regs->mrq_expansion_mode = 1;
|
||||
rq_regs->crq_expansion_mode = 1;
|
||||
|
||||
if (rq_param.yuv420) {
|
||||
if ((double) rq_param.misc.rq_l.stored_swath_bytes
|
||||
/ (double) rq_param.misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
if (rq_param->yuv420) {
|
||||
if ((double) rq_param->misc.rq_l.stored_swath_bytes
|
||||
/ (double) rq_param->misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
detile_buf_plane1_addr = (detile_buf_size_in_bytes / 2.0 / 64.0); // half to chroma
|
||||
} else {
|
||||
detile_buf_plane1_addr = dml_round_to_multiple((unsigned int) ((2.0 * detile_buf_size_in_bytes) / 3.0),
|
||||
@@ -233,7 +233,7 @@ static void extract_rq_regs(struct display_mode_lib *mode_lib,
|
||||
|
||||
static void handle_det_buf_split(struct display_mode_lib *mode_lib,
|
||||
display_rq_params_st *rq_param,
|
||||
const display_pipe_source_params_st pipe_src_param)
|
||||
const display_pipe_source_params_st *pipe_src_param)
|
||||
{
|
||||
unsigned int total_swath_bytes = 0;
|
||||
unsigned int swath_bytes_l = 0;
|
||||
@@ -242,8 +242,8 @@ static void handle_det_buf_split(struct display_mode_lib *mode_lib,
|
||||
unsigned int full_swath_bytes_packed_c = 0;
|
||||
bool req128_l = false;
|
||||
bool req128_c = false;
|
||||
bool surf_linear = (pipe_src_param.sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param.source_scan == dm_vert);
|
||||
bool surf_linear = (pipe_src_param->sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param->source_scan == dm_vert);
|
||||
unsigned int log2_swath_height_l = 0;
|
||||
unsigned int log2_swath_height_c = 0;
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
@@ -685,7 +685,7 @@ static void get_surf_rq_param(struct display_mode_lib *mode_lib,
|
||||
display_data_rq_sizing_params_st *rq_sizing_param,
|
||||
display_data_rq_dlg_params_st *rq_dlg_param,
|
||||
display_data_rq_misc_params_st *rq_misc_param,
|
||||
const display_pipe_source_params_st pipe_src_param,
|
||||
const display_pipe_source_params_st *pipe_src_param,
|
||||
bool is_chroma)
|
||||
{
|
||||
bool mode_422 = false;
|
||||
@@ -697,15 +697,15 @@ static void get_surf_rq_param(struct display_mode_lib *mode_lib,
|
||||
|
||||
// TODO check if ppe apply for both luma and chroma in 422 case
|
||||
if (is_chroma) {
|
||||
vp_width = pipe_src_param.viewport_width_c / ppe;
|
||||
vp_height = pipe_src_param.viewport_height_c;
|
||||
data_pitch = pipe_src_param.data_pitch_c;
|
||||
meta_pitch = pipe_src_param.meta_pitch_c;
|
||||
vp_width = pipe_src_param->viewport_width_c / ppe;
|
||||
vp_height = pipe_src_param->viewport_height_c;
|
||||
data_pitch = pipe_src_param->data_pitch_c;
|
||||
meta_pitch = pipe_src_param->meta_pitch_c;
|
||||
} else {
|
||||
vp_width = pipe_src_param.viewport_width / ppe;
|
||||
vp_height = pipe_src_param.viewport_height;
|
||||
data_pitch = pipe_src_param.data_pitch;
|
||||
meta_pitch = pipe_src_param.meta_pitch;
|
||||
vp_width = pipe_src_param->viewport_width / ppe;
|
||||
vp_height = pipe_src_param->viewport_height;
|
||||
data_pitch = pipe_src_param->data_pitch;
|
||||
meta_pitch = pipe_src_param->meta_pitch;
|
||||
}
|
||||
|
||||
rq_sizing_param->chunk_bytes = 8192;
|
||||
@@ -728,21 +728,21 @@ static void get_surf_rq_param(struct display_mode_lib *mode_lib,
|
||||
vp_height,
|
||||
data_pitch,
|
||||
meta_pitch,
|
||||
pipe_src_param.source_format,
|
||||
pipe_src_param.sw_mode,
|
||||
pipe_src_param.macro_tile_size,
|
||||
pipe_src_param.source_scan,
|
||||
pipe_src_param->source_format,
|
||||
pipe_src_param->sw_mode,
|
||||
pipe_src_param->macro_tile_size,
|
||||
pipe_src_param->source_scan,
|
||||
is_chroma);
|
||||
}
|
||||
|
||||
static void dml20_rq_dlg_get_rq_params(struct display_mode_lib *mode_lib,
|
||||
display_rq_params_st *rq_param,
|
||||
const display_pipe_source_params_st pipe_src_param)
|
||||
const display_pipe_source_params_st *pipe_src_param)
|
||||
{
|
||||
// get param for luma surface
|
||||
rq_param->yuv420 = pipe_src_param.source_format == dm_420_8
|
||||
|| pipe_src_param.source_format == dm_420_10;
|
||||
rq_param->yuv420_10bpc = pipe_src_param.source_format == dm_420_10;
|
||||
rq_param->yuv420 = pipe_src_param->source_format == dm_420_8
|
||||
|| pipe_src_param->source_format == dm_420_10;
|
||||
rq_param->yuv420_10bpc = pipe_src_param->source_format == dm_420_10;
|
||||
|
||||
get_surf_rq_param(mode_lib,
|
||||
&(rq_param->sizing.rq_l),
|
||||
@@ -751,7 +751,7 @@ static void dml20_rq_dlg_get_rq_params(struct display_mode_lib *mode_lib,
|
||||
pipe_src_param,
|
||||
0);
|
||||
|
||||
if (is_dual_plane((enum source_format_class)(pipe_src_param.source_format))) {
|
||||
if (is_dual_plane((enum source_format_class)(pipe_src_param->source_format))) {
|
||||
// get param for chroma surface
|
||||
get_surf_rq_param(mode_lib,
|
||||
&(rq_param->sizing.rq_c),
|
||||
@@ -773,8 +773,8 @@ void dml20_rq_dlg_get_rq_reg(struct display_mode_lib *mode_lib,
|
||||
display_rq_params_st rq_param = {0};
|
||||
|
||||
memset(rq_regs, 0, sizeof(*rq_regs));
|
||||
dml20_rq_dlg_get_rq_params(mode_lib, &rq_param, pipe_param->src);
|
||||
extract_rq_regs(mode_lib, rq_regs, rq_param);
|
||||
dml20_rq_dlg_get_rq_params(mode_lib, &rq_param, &pipe_param->src);
|
||||
extract_rq_regs(mode_lib, rq_regs, &rq_param);
|
||||
|
||||
print__rq_regs_st(mode_lib, rq_regs);
|
||||
}
|
||||
@@ -787,8 +787,8 @@ static void dml20_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
|
||||
const unsigned int pipe_idx,
|
||||
display_dlg_regs_st *disp_dlg_regs,
|
||||
display_ttu_regs_st *disp_ttu_regs,
|
||||
const display_rq_dlg_params_st rq_dlg_param,
|
||||
const display_dlg_sys_params_st dlg_sys_param,
|
||||
const display_rq_dlg_params_st *rq_dlg_param,
|
||||
const display_dlg_sys_params_st *dlg_sys_param,
|
||||
const bool cstate_en,
|
||||
const bool pstate_en)
|
||||
{
|
||||
@@ -935,7 +935,7 @@ static void dml20_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
|
||||
* (double) ref_freq_to_pix_freq);
|
||||
ASSERT(disp_dlg_regs->refcyc_h_blank_end < (unsigned int) dml_pow(2, 13));
|
||||
|
||||
min_dcfclk_mhz = dlg_sys_param.deepsleep_dcfclk_mhz;
|
||||
min_dcfclk_mhz = dlg_sys_param->deepsleep_dcfclk_mhz;
|
||||
t_calc_us = get_tcalc(mode_lib, e2e_pipe_param, num_pipes);
|
||||
min_ttu_vblank = get_min_ttu_vblank(mode_lib, e2e_pipe_param, num_pipes, pipe_idx);
|
||||
|
||||
@@ -995,20 +995,20 @@ static void dml20_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
|
||||
// vinit_bot_l = scl.vinit_bot;
|
||||
// vinit_bot_c = scl.vinit_bot_c;
|
||||
|
||||
// unsigned int swath_height_l = rq_dlg_param.rq_l.swath_height;
|
||||
swath_width_ub_l = rq_dlg_param.rq_l.swath_width_ub;
|
||||
// unsigned int dpte_bytes_per_row_ub_l = rq_dlg_param.rq_l.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_l = rq_dlg_param.rq_l.dpte_groups_per_row_ub;
|
||||
// unsigned int meta_pte_bytes_per_frame_ub_l = rq_dlg_param.rq_l.meta_pte_bytes_per_frame_ub;
|
||||
// unsigned int meta_bytes_per_row_ub_l = rq_dlg_param.rq_l.meta_bytes_per_row_ub;
|
||||
// unsigned int swath_height_l = rq_dlg_param->rq_l.swath_height;
|
||||
swath_width_ub_l = rq_dlg_param->rq_l.swath_width_ub;
|
||||
// unsigned int dpte_bytes_per_row_ub_l = rq_dlg_param->rq_l.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_l = rq_dlg_param->rq_l.dpte_groups_per_row_ub;
|
||||
// unsigned int meta_pte_bytes_per_frame_ub_l = rq_dlg_param->rq_l.meta_pte_bytes_per_frame_ub;
|
||||
// unsigned int meta_bytes_per_row_ub_l = rq_dlg_param->rq_l.meta_bytes_per_row_ub;
|
||||
|
||||
// unsigned int swath_height_c = rq_dlg_param.rq_c.swath_height;
|
||||
swath_width_ub_c = rq_dlg_param.rq_c.swath_width_ub;
|
||||
// dpte_bytes_per_row_ub_c = rq_dlg_param.rq_c.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_c = rq_dlg_param.rq_c.dpte_groups_per_row_ub;
|
||||
// unsigned int swath_height_c = rq_dlg_param->rq_c.swath_height;
|
||||
swath_width_ub_c = rq_dlg_param->rq_c.swath_width_ub;
|
||||
// dpte_bytes_per_row_ub_c = rq_dlg_param->rq_c.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_c = rq_dlg_param->rq_c.dpte_groups_per_row_ub;
|
||||
|
||||
meta_chunks_per_row_ub_l = rq_dlg_param.rq_l.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_c = rq_dlg_param.rq_c.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_l = rq_dlg_param->rq_l.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_c = rq_dlg_param->rq_c.meta_chunks_per_row_ub;
|
||||
vupdate_offset = dst->vupdate_offset;
|
||||
vupdate_width = dst->vupdate_width;
|
||||
vready_offset = dst->vready_offset;
|
||||
@@ -1137,16 +1137,16 @@ static void dml20_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
|
||||
dml_print("DML_DLG: %s: vratio_pre_c=%3.2f\n", __func__, vratio_pre_c);
|
||||
|
||||
// Active
|
||||
req_per_swath_ub_l = rq_dlg_param.rq_l.req_per_swath_ub;
|
||||
req_per_swath_ub_c = rq_dlg_param.rq_c.req_per_swath_ub;
|
||||
meta_row_height_l = rq_dlg_param.rq_l.meta_row_height;
|
||||
meta_row_height_c = rq_dlg_param.rq_c.meta_row_height;
|
||||
req_per_swath_ub_l = rq_dlg_param->rq_l.req_per_swath_ub;
|
||||
req_per_swath_ub_c = rq_dlg_param->rq_c.req_per_swath_ub;
|
||||
meta_row_height_l = rq_dlg_param->rq_l.meta_row_height;
|
||||
meta_row_height_c = rq_dlg_param->rq_c.meta_row_height;
|
||||
swath_width_pixels_ub_l = 0;
|
||||
swath_width_pixels_ub_c = 0;
|
||||
scaler_rec_in_width_l = 0;
|
||||
scaler_rec_in_width_c = 0;
|
||||
dpte_row_height_l = rq_dlg_param.rq_l.dpte_row_height;
|
||||
dpte_row_height_c = rq_dlg_param.rq_c.dpte_row_height;
|
||||
dpte_row_height_l = rq_dlg_param->rq_l.dpte_row_height;
|
||||
dpte_row_height_c = rq_dlg_param->rq_c.dpte_row_height;
|
||||
|
||||
if (mode_422) {
|
||||
swath_width_pixels_ub_l = swath_width_ub_l * 2; // *2 for 2 pixel per element
|
||||
@@ -1584,15 +1584,15 @@ void dml20_rq_dlg_get_dlg_reg(struct display_mode_lib *mode_lib,
|
||||
// system parameter calculation done
|
||||
|
||||
dml_print("DML_DLG: Calculation for pipe[%d] start\n\n", pipe_idx);
|
||||
dml20_rq_dlg_get_rq_params(mode_lib, &rq_param, e2e_pipe_param[pipe_idx].pipe.src);
|
||||
dml20_rq_dlg_get_rq_params(mode_lib, &rq_param, &e2e_pipe_param[pipe_idx].pipe.src);
|
||||
dml20_rq_dlg_get_dlg_params(mode_lib,
|
||||
e2e_pipe_param,
|
||||
num_pipes,
|
||||
pipe_idx,
|
||||
dlg_regs,
|
||||
ttu_regs,
|
||||
rq_param.dlg,
|
||||
dlg_sys_param,
|
||||
&rq_param.dlg,
|
||||
&dlg_sys_param,
|
||||
cstate_en,
|
||||
pstate_en);
|
||||
dml_print("DML_DLG: Calculation for pipe[%d] end\n", pipe_idx);
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
static void dml20v2_rq_dlg_get_rq_params(
|
||||
struct display_mode_lib *mode_lib,
|
||||
display_rq_params_st * rq_param,
|
||||
const display_pipe_source_params_st pipe_src_param);
|
||||
const display_pipe_source_params_st *pipe_src_param);
|
||||
|
||||
// Function: dml20v2_rq_dlg_get_dlg_params
|
||||
// Calculate deadline related parameters
|
||||
@@ -49,8 +49,8 @@ static void dml20v2_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
|
||||
const unsigned int pipe_idx,
|
||||
display_dlg_regs_st *disp_dlg_regs,
|
||||
display_ttu_regs_st *disp_ttu_regs,
|
||||
const display_rq_dlg_params_st rq_dlg_param,
|
||||
const display_dlg_sys_params_st dlg_sys_param,
|
||||
const display_rq_dlg_params_st *rq_dlg_param,
|
||||
const display_dlg_sys_params_st *dlg_sys_param,
|
||||
const bool cstate_en,
|
||||
const bool pstate_en);
|
||||
/*
|
||||
@@ -188,28 +188,28 @@ static void extract_rq_sizing_regs(struct display_mode_lib *mode_lib,
|
||||
|
||||
static void extract_rq_regs(struct display_mode_lib *mode_lib,
|
||||
display_rq_regs_st *rq_regs,
|
||||
const display_rq_params_st rq_param)
|
||||
const display_rq_params_st *rq_param)
|
||||
{
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
unsigned int detile_buf_plane1_addr = 0;
|
||||
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param.sizing.rq_l);
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param->sizing.rq_l);
|
||||
|
||||
rq_regs->rq_regs_l.pte_row_height_linear = dml_floor(dml_log2(rq_param.dlg.rq_l.dpte_row_height),
|
||||
rq_regs->rq_regs_l.pte_row_height_linear = dml_floor(dml_log2(rq_param->dlg.rq_l.dpte_row_height),
|
||||
1) - 3;
|
||||
|
||||
if (rq_param.yuv420) {
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param.sizing.rq_c);
|
||||
rq_regs->rq_regs_c.pte_row_height_linear = dml_floor(dml_log2(rq_param.dlg.rq_c.dpte_row_height),
|
||||
if (rq_param->yuv420) {
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param->sizing.rq_c);
|
||||
rq_regs->rq_regs_c.pte_row_height_linear = dml_floor(dml_log2(rq_param->dlg.rq_c.dpte_row_height),
|
||||
1) - 3;
|
||||
}
|
||||
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param.dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param.dlg.rq_c.swath_height);
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param->dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param->dlg.rq_c.swath_height);
|
||||
|
||||
// TODO: take the max between luma, chroma chunk size?
|
||||
// okay for now, as we are setting chunk_bytes to 8kb anyways
|
||||
if (rq_param.sizing.rq_l.chunk_bytes >= 32 * 1024) { //32kb
|
||||
if (rq_param->sizing.rq_l.chunk_bytes >= 32 * 1024) { //32kb
|
||||
rq_regs->drq_expansion_mode = 0;
|
||||
} else {
|
||||
rq_regs->drq_expansion_mode = 2;
|
||||
@@ -218,9 +218,9 @@ static void extract_rq_regs(struct display_mode_lib *mode_lib,
|
||||
rq_regs->mrq_expansion_mode = 1;
|
||||
rq_regs->crq_expansion_mode = 1;
|
||||
|
||||
if (rq_param.yuv420) {
|
||||
if ((double) rq_param.misc.rq_l.stored_swath_bytes
|
||||
/ (double) rq_param.misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
if (rq_param->yuv420) {
|
||||
if ((double) rq_param->misc.rq_l.stored_swath_bytes
|
||||
/ (double) rq_param->misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
detile_buf_plane1_addr = (detile_buf_size_in_bytes / 2.0 / 64.0); // half to chroma
|
||||
} else {
|
||||
detile_buf_plane1_addr = dml_round_to_multiple((unsigned int) ((2.0 * detile_buf_size_in_bytes) / 3.0),
|
||||
@@ -233,7 +233,7 @@ static void extract_rq_regs(struct display_mode_lib *mode_lib,
|
||||
|
||||
static void handle_det_buf_split(struct display_mode_lib *mode_lib,
|
||||
display_rq_params_st *rq_param,
|
||||
const display_pipe_source_params_st pipe_src_param)
|
||||
const display_pipe_source_params_st *pipe_src_param)
|
||||
{
|
||||
unsigned int total_swath_bytes = 0;
|
||||
unsigned int swath_bytes_l = 0;
|
||||
@@ -242,8 +242,8 @@ static void handle_det_buf_split(struct display_mode_lib *mode_lib,
|
||||
unsigned int full_swath_bytes_packed_c = 0;
|
||||
bool req128_l = false;
|
||||
bool req128_c = false;
|
||||
bool surf_linear = (pipe_src_param.sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param.source_scan == dm_vert);
|
||||
bool surf_linear = (pipe_src_param->sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param->source_scan == dm_vert);
|
||||
unsigned int log2_swath_height_l = 0;
|
||||
unsigned int log2_swath_height_c = 0;
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
@@ -685,7 +685,7 @@ static void get_surf_rq_param(struct display_mode_lib *mode_lib,
|
||||
display_data_rq_sizing_params_st *rq_sizing_param,
|
||||
display_data_rq_dlg_params_st *rq_dlg_param,
|
||||
display_data_rq_misc_params_st *rq_misc_param,
|
||||
const display_pipe_source_params_st pipe_src_param,
|
||||
const display_pipe_source_params_st *pipe_src_param,
|
||||
bool is_chroma)
|
||||
{
|
||||
bool mode_422 = false;
|
||||
@@ -697,15 +697,15 @@ static void get_surf_rq_param(struct display_mode_lib *mode_lib,
|
||||
|
||||
// TODO check if ppe apply for both luma and chroma in 422 case
|
||||
if (is_chroma) {
|
||||
vp_width = pipe_src_param.viewport_width_c / ppe;
|
||||
vp_height = pipe_src_param.viewport_height_c;
|
||||
data_pitch = pipe_src_param.data_pitch_c;
|
||||
meta_pitch = pipe_src_param.meta_pitch_c;
|
||||
vp_width = pipe_src_param->viewport_width_c / ppe;
|
||||
vp_height = pipe_src_param->viewport_height_c;
|
||||
data_pitch = pipe_src_param->data_pitch_c;
|
||||
meta_pitch = pipe_src_param->meta_pitch_c;
|
||||
} else {
|
||||
vp_width = pipe_src_param.viewport_width / ppe;
|
||||
vp_height = pipe_src_param.viewport_height;
|
||||
data_pitch = pipe_src_param.data_pitch;
|
||||
meta_pitch = pipe_src_param.meta_pitch;
|
||||
vp_width = pipe_src_param->viewport_width / ppe;
|
||||
vp_height = pipe_src_param->viewport_height;
|
||||
data_pitch = pipe_src_param->data_pitch;
|
||||
meta_pitch = pipe_src_param->meta_pitch;
|
||||
}
|
||||
|
||||
rq_sizing_param->chunk_bytes = 8192;
|
||||
@@ -728,21 +728,21 @@ static void get_surf_rq_param(struct display_mode_lib *mode_lib,
|
||||
vp_height,
|
||||
data_pitch,
|
||||
meta_pitch,
|
||||
pipe_src_param.source_format,
|
||||
pipe_src_param.sw_mode,
|
||||
pipe_src_param.macro_tile_size,
|
||||
pipe_src_param.source_scan,
|
||||
pipe_src_param->source_format,
|
||||
pipe_src_param->sw_mode,
|
||||
pipe_src_param->macro_tile_size,
|
||||
pipe_src_param->source_scan,
|
||||
is_chroma);
|
||||
}
|
||||
|
||||
static void dml20v2_rq_dlg_get_rq_params(struct display_mode_lib *mode_lib,
|
||||
display_rq_params_st *rq_param,
|
||||
const display_pipe_source_params_st pipe_src_param)
|
||||
const display_pipe_source_params_st *pipe_src_param)
|
||||
{
|
||||
// get param for luma surface
|
||||
rq_param->yuv420 = pipe_src_param.source_format == dm_420_8
|
||||
|| pipe_src_param.source_format == dm_420_10;
|
||||
rq_param->yuv420_10bpc = pipe_src_param.source_format == dm_420_10;
|
||||
rq_param->yuv420 = pipe_src_param->source_format == dm_420_8
|
||||
|| pipe_src_param->source_format == dm_420_10;
|
||||
rq_param->yuv420_10bpc = pipe_src_param->source_format == dm_420_10;
|
||||
|
||||
get_surf_rq_param(mode_lib,
|
||||
&(rq_param->sizing.rq_l),
|
||||
@@ -751,7 +751,7 @@ static void dml20v2_rq_dlg_get_rq_params(struct display_mode_lib *mode_lib,
|
||||
pipe_src_param,
|
||||
0);
|
||||
|
||||
if (is_dual_plane((enum source_format_class)(pipe_src_param.source_format))) {
|
||||
if (is_dual_plane((enum source_format_class)(pipe_src_param->source_format))) {
|
||||
// get param for chroma surface
|
||||
get_surf_rq_param(mode_lib,
|
||||
&(rq_param->sizing.rq_c),
|
||||
@@ -773,8 +773,8 @@ void dml20v2_rq_dlg_get_rq_reg(struct display_mode_lib *mode_lib,
|
||||
display_rq_params_st rq_param = {0};
|
||||
|
||||
memset(rq_regs, 0, sizeof(*rq_regs));
|
||||
dml20v2_rq_dlg_get_rq_params(mode_lib, &rq_param, pipe_param->src);
|
||||
extract_rq_regs(mode_lib, rq_regs, rq_param);
|
||||
dml20v2_rq_dlg_get_rq_params(mode_lib, &rq_param, &pipe_param->src);
|
||||
extract_rq_regs(mode_lib, rq_regs, &rq_param);
|
||||
|
||||
print__rq_regs_st(mode_lib, rq_regs);
|
||||
}
|
||||
@@ -787,8 +787,8 @@ static void dml20v2_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
|
||||
const unsigned int pipe_idx,
|
||||
display_dlg_regs_st *disp_dlg_regs,
|
||||
display_ttu_regs_st *disp_ttu_regs,
|
||||
const display_rq_dlg_params_st rq_dlg_param,
|
||||
const display_dlg_sys_params_st dlg_sys_param,
|
||||
const display_rq_dlg_params_st *rq_dlg_param,
|
||||
const display_dlg_sys_params_st *dlg_sys_param,
|
||||
const bool cstate_en,
|
||||
const bool pstate_en)
|
||||
{
|
||||
@@ -935,7 +935,7 @@ static void dml20v2_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
|
||||
* (double) ref_freq_to_pix_freq);
|
||||
ASSERT(disp_dlg_regs->refcyc_h_blank_end < (unsigned int) dml_pow(2, 13));
|
||||
|
||||
min_dcfclk_mhz = dlg_sys_param.deepsleep_dcfclk_mhz;
|
||||
min_dcfclk_mhz = dlg_sys_param->deepsleep_dcfclk_mhz;
|
||||
t_calc_us = get_tcalc(mode_lib, e2e_pipe_param, num_pipes);
|
||||
min_ttu_vblank = get_min_ttu_vblank(mode_lib, e2e_pipe_param, num_pipes, pipe_idx);
|
||||
|
||||
@@ -996,20 +996,20 @@ static void dml20v2_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
|
||||
// vinit_bot_l = scl.vinit_bot;
|
||||
// vinit_bot_c = scl.vinit_bot_c;
|
||||
|
||||
// unsigned int swath_height_l = rq_dlg_param.rq_l.swath_height;
|
||||
swath_width_ub_l = rq_dlg_param.rq_l.swath_width_ub;
|
||||
// unsigned int dpte_bytes_per_row_ub_l = rq_dlg_param.rq_l.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_l = rq_dlg_param.rq_l.dpte_groups_per_row_ub;
|
||||
// unsigned int meta_pte_bytes_per_frame_ub_l = rq_dlg_param.rq_l.meta_pte_bytes_per_frame_ub;
|
||||
// unsigned int meta_bytes_per_row_ub_l = rq_dlg_param.rq_l.meta_bytes_per_row_ub;
|
||||
// unsigned int swath_height_l = rq_dlg_param->rq_l.swath_height;
|
||||
swath_width_ub_l = rq_dlg_param->rq_l.swath_width_ub;
|
||||
// unsigned int dpte_bytes_per_row_ub_l = rq_dlg_param->rq_l.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_l = rq_dlg_param->rq_l.dpte_groups_per_row_ub;
|
||||
// unsigned int meta_pte_bytes_per_frame_ub_l = rq_dlg_param->rq_l.meta_pte_bytes_per_frame_ub;
|
||||
// unsigned int meta_bytes_per_row_ub_l = rq_dlg_param->rq_l.meta_bytes_per_row_ub;
|
||||
|
||||
// unsigned int swath_height_c = rq_dlg_param.rq_c.swath_height;
|
||||
swath_width_ub_c = rq_dlg_param.rq_c.swath_width_ub;
|
||||
// dpte_bytes_per_row_ub_c = rq_dlg_param.rq_c.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_c = rq_dlg_param.rq_c.dpte_groups_per_row_ub;
|
||||
// unsigned int swath_height_c = rq_dlg_param->rq_c.swath_height;
|
||||
swath_width_ub_c = rq_dlg_param->rq_c.swath_width_ub;
|
||||
// dpte_bytes_per_row_ub_c = rq_dlg_param->rq_c.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_c = rq_dlg_param->rq_c.dpte_groups_per_row_ub;
|
||||
|
||||
meta_chunks_per_row_ub_l = rq_dlg_param.rq_l.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_c = rq_dlg_param.rq_c.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_l = rq_dlg_param->rq_l.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_c = rq_dlg_param->rq_c.meta_chunks_per_row_ub;
|
||||
vupdate_offset = dst->vupdate_offset;
|
||||
vupdate_width = dst->vupdate_width;
|
||||
vready_offset = dst->vready_offset;
|
||||
@@ -1138,16 +1138,16 @@ static void dml20v2_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
|
||||
dml_print("DML_DLG: %s: vratio_pre_c=%3.2f\n", __func__, vratio_pre_c);
|
||||
|
||||
// Active
|
||||
req_per_swath_ub_l = rq_dlg_param.rq_l.req_per_swath_ub;
|
||||
req_per_swath_ub_c = rq_dlg_param.rq_c.req_per_swath_ub;
|
||||
meta_row_height_l = rq_dlg_param.rq_l.meta_row_height;
|
||||
meta_row_height_c = rq_dlg_param.rq_c.meta_row_height;
|
||||
req_per_swath_ub_l = rq_dlg_param->rq_l.req_per_swath_ub;
|
||||
req_per_swath_ub_c = rq_dlg_param->rq_c.req_per_swath_ub;
|
||||
meta_row_height_l = rq_dlg_param->rq_l.meta_row_height;
|
||||
meta_row_height_c = rq_dlg_param->rq_c.meta_row_height;
|
||||
swath_width_pixels_ub_l = 0;
|
||||
swath_width_pixels_ub_c = 0;
|
||||
scaler_rec_in_width_l = 0;
|
||||
scaler_rec_in_width_c = 0;
|
||||
dpte_row_height_l = rq_dlg_param.rq_l.dpte_row_height;
|
||||
dpte_row_height_c = rq_dlg_param.rq_c.dpte_row_height;
|
||||
dpte_row_height_l = rq_dlg_param->rq_l.dpte_row_height;
|
||||
dpte_row_height_c = rq_dlg_param->rq_c.dpte_row_height;
|
||||
|
||||
if (mode_422) {
|
||||
swath_width_pixels_ub_l = swath_width_ub_l * 2; // *2 for 2 pixel per element
|
||||
@@ -1585,15 +1585,15 @@ void dml20v2_rq_dlg_get_dlg_reg(struct display_mode_lib *mode_lib,
|
||||
// system parameter calculation done
|
||||
|
||||
dml_print("DML_DLG: Calculation for pipe[%d] start\n\n", pipe_idx);
|
||||
dml20v2_rq_dlg_get_rq_params(mode_lib, &rq_param, e2e_pipe_param[pipe_idx].pipe.src);
|
||||
dml20v2_rq_dlg_get_rq_params(mode_lib, &rq_param, &e2e_pipe_param[pipe_idx].pipe.src);
|
||||
dml20v2_rq_dlg_get_dlg_params(mode_lib,
|
||||
e2e_pipe_param,
|
||||
num_pipes,
|
||||
pipe_idx,
|
||||
dlg_regs,
|
||||
ttu_regs,
|
||||
rq_param.dlg,
|
||||
dlg_sys_param,
|
||||
&rq_param.dlg,
|
||||
&dlg_sys_param,
|
||||
cstate_en,
|
||||
pstate_en);
|
||||
dml_print("DML_DLG: Calculation for pipe[%d] end\n", pipe_idx);
|
||||
|
||||
@@ -166,30 +166,30 @@ static void extract_rq_sizing_regs(
|
||||
static void extract_rq_regs(
|
||||
struct display_mode_lib *mode_lib,
|
||||
display_rq_regs_st *rq_regs,
|
||||
const display_rq_params_st rq_param)
|
||||
const display_rq_params_st *rq_param)
|
||||
{
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
unsigned int detile_buf_plane1_addr = 0;
|
||||
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param.sizing.rq_l);
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param->sizing.rq_l);
|
||||
|
||||
rq_regs->rq_regs_l.pte_row_height_linear = dml_floor(
|
||||
dml_log2(rq_param.dlg.rq_l.dpte_row_height),
|
||||
dml_log2(rq_param->dlg.rq_l.dpte_row_height),
|
||||
1) - 3;
|
||||
|
||||
if (rq_param.yuv420) {
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param.sizing.rq_c);
|
||||
if (rq_param->yuv420) {
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param->sizing.rq_c);
|
||||
rq_regs->rq_regs_c.pte_row_height_linear = dml_floor(
|
||||
dml_log2(rq_param.dlg.rq_c.dpte_row_height),
|
||||
dml_log2(rq_param->dlg.rq_c.dpte_row_height),
|
||||
1) - 3;
|
||||
}
|
||||
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param.dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param.dlg.rq_c.swath_height);
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param->dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param->dlg.rq_c.swath_height);
|
||||
|
||||
// FIXME: take the max between luma, chroma chunk size?
|
||||
// okay for now, as we are setting chunk_bytes to 8kb anyways
|
||||
if (rq_param.sizing.rq_l.chunk_bytes >= 32 * 1024) { //32kb
|
||||
if (rq_param->sizing.rq_l.chunk_bytes >= 32 * 1024) { //32kb
|
||||
rq_regs->drq_expansion_mode = 0;
|
||||
} else {
|
||||
rq_regs->drq_expansion_mode = 2;
|
||||
@@ -198,9 +198,9 @@ static void extract_rq_regs(
|
||||
rq_regs->mrq_expansion_mode = 1;
|
||||
rq_regs->crq_expansion_mode = 1;
|
||||
|
||||
if (rq_param.yuv420) {
|
||||
if ((double) rq_param.misc.rq_l.stored_swath_bytes
|
||||
/ (double) rq_param.misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
if (rq_param->yuv420) {
|
||||
if ((double) rq_param->misc.rq_l.stored_swath_bytes
|
||||
/ (double) rq_param->misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
detile_buf_plane1_addr = (detile_buf_size_in_bytes / 2.0 / 64.0); // half to chroma
|
||||
} else {
|
||||
detile_buf_plane1_addr = dml_round_to_multiple(
|
||||
@@ -215,7 +215,7 @@ static void extract_rq_regs(
|
||||
static void handle_det_buf_split(
|
||||
struct display_mode_lib *mode_lib,
|
||||
display_rq_params_st *rq_param,
|
||||
const display_pipe_source_params_st pipe_src_param)
|
||||
const display_pipe_source_params_st *pipe_src_param)
|
||||
{
|
||||
unsigned int total_swath_bytes = 0;
|
||||
unsigned int swath_bytes_l = 0;
|
||||
@@ -224,8 +224,8 @@ static void handle_det_buf_split(
|
||||
unsigned int full_swath_bytes_packed_c = 0;
|
||||
bool req128_l = false;
|
||||
bool req128_c = false;
|
||||
bool surf_linear = (pipe_src_param.sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param.source_scan == dm_vert);
|
||||
bool surf_linear = (pipe_src_param->sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param->source_scan == dm_vert);
|
||||
unsigned int log2_swath_height_l = 0;
|
||||
unsigned int log2_swath_height_c = 0;
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
@@ -806,7 +806,7 @@ static void dml_rq_dlg_get_rq_params(
|
||||
}
|
||||
|
||||
// calculate how to split the det buffer space between luma and chroma
|
||||
handle_det_buf_split(mode_lib, rq_param, pipe_param->src);
|
||||
handle_det_buf_split(mode_lib, rq_param, &pipe_param->src);
|
||||
print__rq_params_st(mode_lib, rq_param);
|
||||
}
|
||||
|
||||
@@ -819,7 +819,7 @@ void dml21_rq_dlg_get_rq_reg(
|
||||
|
||||
memset(rq_regs, 0, sizeof(*rq_regs));
|
||||
dml_rq_dlg_get_rq_params(mode_lib, &rq_param, pipe_param);
|
||||
extract_rq_regs(mode_lib, rq_regs, rq_param);
|
||||
extract_rq_regs(mode_lib, rq_regs, &rq_param);
|
||||
|
||||
print__rq_regs_st(mode_lib, rq_regs);
|
||||
}
|
||||
@@ -833,8 +833,8 @@ static void dml_rq_dlg_get_dlg_params(
|
||||
const unsigned int pipe_idx,
|
||||
display_dlg_regs_st *disp_dlg_regs,
|
||||
display_ttu_regs_st *disp_ttu_regs,
|
||||
const display_rq_dlg_params_st rq_dlg_param,
|
||||
const display_dlg_sys_params_st dlg_sys_param,
|
||||
const display_rq_dlg_params_st *rq_dlg_param,
|
||||
const display_dlg_sys_params_st *dlg_sys_param,
|
||||
const bool cstate_en,
|
||||
const bool pstate_en)
|
||||
{
|
||||
@@ -981,7 +981,7 @@ static void dml_rq_dlg_get_dlg_params(
|
||||
* (double) ref_freq_to_pix_freq);
|
||||
ASSERT(disp_dlg_regs->refcyc_h_blank_end < (unsigned int)dml_pow(2, 13));
|
||||
|
||||
min_dcfclk_mhz = dlg_sys_param.deepsleep_dcfclk_mhz;
|
||||
min_dcfclk_mhz = dlg_sys_param->deepsleep_dcfclk_mhz;
|
||||
t_calc_us = get_tcalc(mode_lib, e2e_pipe_param, num_pipes);
|
||||
min_ttu_vblank = get_min_ttu_vblank(mode_lib, e2e_pipe_param, num_pipes, pipe_idx);
|
||||
|
||||
@@ -1042,13 +1042,13 @@ static void dml_rq_dlg_get_dlg_params(
|
||||
scl_enable = scl->scl_enable;
|
||||
|
||||
line_time_in_us = (htotal / pclk_freq_in_mhz);
|
||||
swath_width_ub_l = rq_dlg_param.rq_l.swath_width_ub;
|
||||
dpte_groups_per_row_ub_l = rq_dlg_param.rq_l.dpte_groups_per_row_ub;
|
||||
swath_width_ub_c = rq_dlg_param.rq_c.swath_width_ub;
|
||||
dpte_groups_per_row_ub_c = rq_dlg_param.rq_c.dpte_groups_per_row_ub;
|
||||
swath_width_ub_l = rq_dlg_param->rq_l.swath_width_ub;
|
||||
dpte_groups_per_row_ub_l = rq_dlg_param->rq_l.dpte_groups_per_row_ub;
|
||||
swath_width_ub_c = rq_dlg_param->rq_c.swath_width_ub;
|
||||
dpte_groups_per_row_ub_c = rq_dlg_param->rq_c.dpte_groups_per_row_ub;
|
||||
|
||||
meta_chunks_per_row_ub_l = rq_dlg_param.rq_l.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_c = rq_dlg_param.rq_c.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_l = rq_dlg_param->rq_l.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_c = rq_dlg_param->rq_c.meta_chunks_per_row_ub;
|
||||
vupdate_offset = dst->vupdate_offset;
|
||||
vupdate_width = dst->vupdate_width;
|
||||
vready_offset = dst->vready_offset;
|
||||
@@ -1189,16 +1189,16 @@ static void dml_rq_dlg_get_dlg_params(
|
||||
dml_print("DML_DLG: %s: vratio_pre_c=%3.2f\n", __func__, vratio_pre_c);
|
||||
|
||||
// Active
|
||||
req_per_swath_ub_l = rq_dlg_param.rq_l.req_per_swath_ub;
|
||||
req_per_swath_ub_c = rq_dlg_param.rq_c.req_per_swath_ub;
|
||||
meta_row_height_l = rq_dlg_param.rq_l.meta_row_height;
|
||||
meta_row_height_c = rq_dlg_param.rq_c.meta_row_height;
|
||||
req_per_swath_ub_l = rq_dlg_param->rq_l.req_per_swath_ub;
|
||||
req_per_swath_ub_c = rq_dlg_param->rq_c.req_per_swath_ub;
|
||||
meta_row_height_l = rq_dlg_param->rq_l.meta_row_height;
|
||||
meta_row_height_c = rq_dlg_param->rq_c.meta_row_height;
|
||||
swath_width_pixels_ub_l = 0;
|
||||
swath_width_pixels_ub_c = 0;
|
||||
scaler_rec_in_width_l = 0;
|
||||
scaler_rec_in_width_c = 0;
|
||||
dpte_row_height_l = rq_dlg_param.rq_l.dpte_row_height;
|
||||
dpte_row_height_c = rq_dlg_param.rq_c.dpte_row_height;
|
||||
dpte_row_height_l = rq_dlg_param->rq_l.dpte_row_height;
|
||||
dpte_row_height_c = rq_dlg_param->rq_c.dpte_row_height;
|
||||
|
||||
if (mode_422) {
|
||||
swath_width_pixels_ub_l = swath_width_ub_l * 2; // *2 for 2 pixel per element
|
||||
@@ -1704,8 +1704,8 @@ void dml21_rq_dlg_get_dlg_reg(
|
||||
pipe_idx,
|
||||
dlg_regs,
|
||||
ttu_regs,
|
||||
rq_param.dlg,
|
||||
dlg_sys_param,
|
||||
&rq_param.dlg,
|
||||
&dlg_sys_param,
|
||||
cstate_en,
|
||||
pstate_en);
|
||||
dml_print("DML_DLG: Calculation for pipe[%d] end\n", pipe_idx);
|
||||
|
||||
@@ -113,28 +113,28 @@ static void extract_rq_sizing_regs(struct display_mode_lib *mode_lib,
|
||||
|
||||
static void extract_rq_regs(struct display_mode_lib *mode_lib,
|
||||
display_rq_regs_st *rq_regs,
|
||||
const display_rq_params_st rq_param)
|
||||
const display_rq_params_st *rq_param)
|
||||
{
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
unsigned int detile_buf_plane1_addr = 0;
|
||||
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param.sizing.rq_l);
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param->sizing.rq_l);
|
||||
|
||||
rq_regs->rq_regs_l.pte_row_height_linear = dml_floor(dml_log2(rq_param.dlg.rq_l.dpte_row_height),
|
||||
rq_regs->rq_regs_l.pte_row_height_linear = dml_floor(dml_log2(rq_param->dlg.rq_l.dpte_row_height),
|
||||
1) - 3;
|
||||
|
||||
if (rq_param.yuv420) {
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param.sizing.rq_c);
|
||||
rq_regs->rq_regs_c.pte_row_height_linear = dml_floor(dml_log2(rq_param.dlg.rq_c.dpte_row_height),
|
||||
if (rq_param->yuv420) {
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param->sizing.rq_c);
|
||||
rq_regs->rq_regs_c.pte_row_height_linear = dml_floor(dml_log2(rq_param->dlg.rq_c.dpte_row_height),
|
||||
1) - 3;
|
||||
}
|
||||
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param.dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param.dlg.rq_c.swath_height);
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param->dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param->dlg.rq_c.swath_height);
|
||||
|
||||
// FIXME: take the max between luma, chroma chunk size?
|
||||
// okay for now, as we are setting chunk_bytes to 8kb anyways
|
||||
if (rq_param.sizing.rq_l.chunk_bytes >= 32 * 1024 || (rq_param.yuv420 && rq_param.sizing.rq_c.chunk_bytes >= 32 * 1024)) { //32kb
|
||||
if (rq_param->sizing.rq_l.chunk_bytes >= 32 * 1024 || (rq_param->yuv420 && rq_param->sizing.rq_c.chunk_bytes >= 32 * 1024)) { //32kb
|
||||
rq_regs->drq_expansion_mode = 0;
|
||||
} else {
|
||||
rq_regs->drq_expansion_mode = 2;
|
||||
@@ -143,9 +143,9 @@ static void extract_rq_regs(struct display_mode_lib *mode_lib,
|
||||
rq_regs->mrq_expansion_mode = 1;
|
||||
rq_regs->crq_expansion_mode = 1;
|
||||
|
||||
if (rq_param.yuv420) {
|
||||
if ((double)rq_param.misc.rq_l.stored_swath_bytes
|
||||
/ (double)rq_param.misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
if (rq_param->yuv420) {
|
||||
if ((double)rq_param->misc.rq_l.stored_swath_bytes
|
||||
/ (double)rq_param->misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
detile_buf_plane1_addr = (detile_buf_size_in_bytes / 2.0 / 64.0); // half to chroma
|
||||
} else {
|
||||
detile_buf_plane1_addr = dml_round_to_multiple((unsigned int)((2.0 * detile_buf_size_in_bytes) / 3.0),
|
||||
@@ -158,7 +158,7 @@ static void extract_rq_regs(struct display_mode_lib *mode_lib,
|
||||
|
||||
static void handle_det_buf_split(struct display_mode_lib *mode_lib,
|
||||
display_rq_params_st *rq_param,
|
||||
const display_pipe_source_params_st pipe_src_param)
|
||||
const display_pipe_source_params_st *pipe_src_param)
|
||||
{
|
||||
unsigned int total_swath_bytes = 0;
|
||||
unsigned int swath_bytes_l = 0;
|
||||
@@ -167,8 +167,8 @@ static void handle_det_buf_split(struct display_mode_lib *mode_lib,
|
||||
unsigned int full_swath_bytes_packed_c = 0;
|
||||
bool req128_l = false;
|
||||
bool req128_c = false;
|
||||
bool surf_linear = (pipe_src_param.sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param.source_scan == dm_vert);
|
||||
bool surf_linear = (pipe_src_param->sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param->source_scan == dm_vert);
|
||||
unsigned int log2_swath_height_l = 0;
|
||||
unsigned int log2_swath_height_c = 0;
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
@@ -871,7 +871,7 @@ static void dml_rq_dlg_get_rq_params(struct display_mode_lib *mode_lib,
|
||||
}
|
||||
|
||||
// calculate how to split the det buffer space between luma and chroma
|
||||
handle_det_buf_split(mode_lib, rq_param, pipe_param->src);
|
||||
handle_det_buf_split(mode_lib, rq_param, &pipe_param->src);
|
||||
print__rq_params_st(mode_lib, rq_param);
|
||||
}
|
||||
|
||||
@@ -883,7 +883,7 @@ void dml30_rq_dlg_get_rq_reg(struct display_mode_lib *mode_lib,
|
||||
|
||||
memset(rq_regs, 0, sizeof(*rq_regs));
|
||||
dml_rq_dlg_get_rq_params(mode_lib, &rq_param, pipe_param);
|
||||
extract_rq_regs(mode_lib, rq_regs, rq_param);
|
||||
extract_rq_regs(mode_lib, rq_regs, &rq_param);
|
||||
|
||||
print__rq_regs_st(mode_lib, rq_regs);
|
||||
}
|
||||
|
||||
@@ -196,26 +196,26 @@ static void extract_rq_sizing_regs(struct display_mode_lib *mode_lib, display_da
|
||||
rq_regs->mpte_group_size = dml_log2(rq_sizing->mpte_group_bytes) - 6;
|
||||
}
|
||||
|
||||
static void extract_rq_regs(struct display_mode_lib *mode_lib, display_rq_regs_st *rq_regs, const display_rq_params_st rq_param)
|
||||
static void extract_rq_regs(struct display_mode_lib *mode_lib, display_rq_regs_st *rq_regs, const display_rq_params_st *rq_param)
|
||||
{
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
unsigned int detile_buf_plane1_addr = 0;
|
||||
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param.sizing.rq_l);
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param->sizing.rq_l);
|
||||
|
||||
rq_regs->rq_regs_l.pte_row_height_linear = dml_floor(dml_log2(rq_param.dlg.rq_l.dpte_row_height), 1) - 3;
|
||||
rq_regs->rq_regs_l.pte_row_height_linear = dml_floor(dml_log2(rq_param->dlg.rq_l.dpte_row_height), 1) - 3;
|
||||
|
||||
if (rq_param.yuv420) {
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param.sizing.rq_c);
|
||||
rq_regs->rq_regs_c.pte_row_height_linear = dml_floor(dml_log2(rq_param.dlg.rq_c.dpte_row_height), 1) - 3;
|
||||
if (rq_param->yuv420) {
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param->sizing.rq_c);
|
||||
rq_regs->rq_regs_c.pte_row_height_linear = dml_floor(dml_log2(rq_param->dlg.rq_c.dpte_row_height), 1) - 3;
|
||||
}
|
||||
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param.dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param.dlg.rq_c.swath_height);
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param->dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param->dlg.rq_c.swath_height);
|
||||
|
||||
// FIXME: take the max between luma, chroma chunk size?
|
||||
// okay for now, as we are setting chunk_bytes to 8kb anyways
|
||||
if (rq_param.sizing.rq_l.chunk_bytes >= 32 * 1024 || (rq_param.yuv420 && rq_param.sizing.rq_c.chunk_bytes >= 32 * 1024)) { //32kb
|
||||
if (rq_param->sizing.rq_l.chunk_bytes >= 32 * 1024 || (rq_param->yuv420 && rq_param->sizing.rq_c.chunk_bytes >= 32 * 1024)) { //32kb
|
||||
rq_regs->drq_expansion_mode = 0;
|
||||
} else {
|
||||
rq_regs->drq_expansion_mode = 2;
|
||||
@@ -225,8 +225,8 @@ static void extract_rq_regs(struct display_mode_lib *mode_lib, display_rq_regs_s
|
||||
rq_regs->crq_expansion_mode = 1;
|
||||
|
||||
// Note: detile_buf_plane1_addr is in unit of 1KB
|
||||
if (rq_param.yuv420) {
|
||||
if ((double) rq_param.misc.rq_l.stored_swath_bytes / (double) rq_param.misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
if (rq_param->yuv420) {
|
||||
if ((double) rq_param->misc.rq_l.stored_swath_bytes / (double) rq_param->misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
detile_buf_plane1_addr = (detile_buf_size_in_bytes / 2.0 / 1024.0); // half to chroma
|
||||
#ifdef __DML_RQ_DLG_CALC_DEBUG__
|
||||
dml_print("DML_DLG: %s: detile_buf_plane1_addr = %0d (1/2 to chroma)\n", __func__, detile_buf_plane1_addr);
|
||||
@@ -244,14 +244,14 @@ static void extract_rq_regs(struct display_mode_lib *mode_lib, display_rq_regs_s
|
||||
dml_print("DML_DLG: %s: detile_buf_size_in_bytes = %0d\n", __func__, detile_buf_size_in_bytes);
|
||||
dml_print("DML_DLG: %s: detile_buf_plane1_addr = %0d\n", __func__, detile_buf_plane1_addr);
|
||||
dml_print("DML_DLG: %s: plane1_base_address = %0d\n", __func__, rq_regs->plane1_base_address);
|
||||
dml_print("DML_DLG: %s: rq_l.stored_swath_bytes = %0d\n", __func__, rq_param.misc.rq_l.stored_swath_bytes);
|
||||
dml_print("DML_DLG: %s: rq_c.stored_swath_bytes = %0d\n", __func__, rq_param.misc.rq_c.stored_swath_bytes);
|
||||
dml_print("DML_DLG: %s: rq_l.swath_height = %0d\n", __func__, rq_param.dlg.rq_l.swath_height);
|
||||
dml_print("DML_DLG: %s: rq_c.swath_height = %0d\n", __func__, rq_param.dlg.rq_c.swath_height);
|
||||
dml_print("DML_DLG: %s: rq_l.stored_swath_bytes = %0d\n", __func__, rq_param->misc.rq_l.stored_swath_bytes);
|
||||
dml_print("DML_DLG: %s: rq_c.stored_swath_bytes = %0d\n", __func__, rq_param->misc.rq_c.stored_swath_bytes);
|
||||
dml_print("DML_DLG: %s: rq_l.swath_height = %0d\n", __func__, rq_param->dlg.rq_l.swath_height);
|
||||
dml_print("DML_DLG: %s: rq_c.swath_height = %0d\n", __func__, rq_param->dlg.rq_c.swath_height);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void handle_det_buf_split(struct display_mode_lib *mode_lib, display_rq_params_st *rq_param, const display_pipe_source_params_st pipe_src_param)
|
||||
static void handle_det_buf_split(struct display_mode_lib *mode_lib, display_rq_params_st *rq_param, const display_pipe_source_params_st *pipe_src_param)
|
||||
{
|
||||
unsigned int total_swath_bytes = 0;
|
||||
unsigned int swath_bytes_l = 0;
|
||||
@@ -260,8 +260,8 @@ static void handle_det_buf_split(struct display_mode_lib *mode_lib, display_rq_p
|
||||
unsigned int full_swath_bytes_packed_c = 0;
|
||||
bool req128_l = 0;
|
||||
bool req128_c = 0;
|
||||
bool surf_linear = (pipe_src_param.sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param.source_scan == dm_vert);
|
||||
bool surf_linear = (pipe_src_param->sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param->source_scan == dm_vert);
|
||||
unsigned int log2_swath_height_l = 0;
|
||||
unsigned int log2_swath_height_c = 0;
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
@@ -849,7 +849,7 @@ static void dml_rq_dlg_get_rq_params(struct display_mode_lib *mode_lib, display_
|
||||
}
|
||||
|
||||
// calculate how to split the det buffer space between luma and chroma
|
||||
handle_det_buf_split(mode_lib, rq_param, pipe_param->src);
|
||||
handle_det_buf_split(mode_lib, rq_param, &pipe_param->src);
|
||||
print__rq_params_st(mode_lib, rq_param);
|
||||
}
|
||||
|
||||
@@ -859,7 +859,7 @@ void dml31_rq_dlg_get_rq_reg(struct display_mode_lib *mode_lib, display_rq_regs_
|
||||
|
||||
memset(rq_regs, 0, sizeof(*rq_regs));
|
||||
dml_rq_dlg_get_rq_params(mode_lib, &rq_param, pipe_param);
|
||||
extract_rq_regs(mode_lib, rq_regs, rq_param);
|
||||
extract_rq_regs(mode_lib, rq_regs, &rq_param);
|
||||
|
||||
print__rq_regs_st(mode_lib, rq_regs);
|
||||
}
|
||||
@@ -943,8 +943,8 @@ static void dml_rq_dlg_get_dlg_params(
|
||||
const unsigned int pipe_idx,
|
||||
display_dlg_regs_st *disp_dlg_regs,
|
||||
display_ttu_regs_st *disp_ttu_regs,
|
||||
const display_rq_dlg_params_st rq_dlg_param,
|
||||
const display_dlg_sys_params_st dlg_sys_param,
|
||||
const display_rq_dlg_params_st *rq_dlg_param,
|
||||
const display_dlg_sys_params_st *dlg_sys_param,
|
||||
const bool cstate_en,
|
||||
const bool pstate_en,
|
||||
const bool vm_en,
|
||||
@@ -1112,13 +1112,13 @@ static void dml_rq_dlg_get_dlg_params(
|
||||
vratio_c = scl->vscl_ratio_c;
|
||||
scl_enable = scl->scl_enable;
|
||||
|
||||
swath_width_ub_l = rq_dlg_param.rq_l.swath_width_ub;
|
||||
dpte_groups_per_row_ub_l = rq_dlg_param.rq_l.dpte_groups_per_row_ub;
|
||||
swath_width_ub_c = rq_dlg_param.rq_c.swath_width_ub;
|
||||
dpte_groups_per_row_ub_c = rq_dlg_param.rq_c.dpte_groups_per_row_ub;
|
||||
swath_width_ub_l = rq_dlg_param->rq_l.swath_width_ub;
|
||||
dpte_groups_per_row_ub_l = rq_dlg_param->rq_l.dpte_groups_per_row_ub;
|
||||
swath_width_ub_c = rq_dlg_param->rq_c.swath_width_ub;
|
||||
dpte_groups_per_row_ub_c = rq_dlg_param->rq_c.dpte_groups_per_row_ub;
|
||||
|
||||
meta_chunks_per_row_ub_l = rq_dlg_param.rq_l.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_c = rq_dlg_param.rq_c.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_l = rq_dlg_param->rq_l.meta_chunks_per_row_ub;
|
||||
meta_chunks_per_row_ub_c = rq_dlg_param->rq_c.meta_chunks_per_row_ub;
|
||||
vupdate_offset = dst->vupdate_offset;
|
||||
vupdate_width = dst->vupdate_width;
|
||||
vready_offset = dst->vready_offset;
|
||||
@@ -1239,16 +1239,16 @@ static void dml_rq_dlg_get_dlg_params(
|
||||
dml_print("DML_DLG: %s: vratio_pre_c = %3.2f\n", __func__, vratio_pre_c);
|
||||
|
||||
// Active
|
||||
req_per_swath_ub_l = rq_dlg_param.rq_l.req_per_swath_ub;
|
||||
req_per_swath_ub_c = rq_dlg_param.rq_c.req_per_swath_ub;
|
||||
meta_row_height_l = rq_dlg_param.rq_l.meta_row_height;
|
||||
meta_row_height_c = rq_dlg_param.rq_c.meta_row_height;
|
||||
req_per_swath_ub_l = rq_dlg_param->rq_l.req_per_swath_ub;
|
||||
req_per_swath_ub_c = rq_dlg_param->rq_c.req_per_swath_ub;
|
||||
meta_row_height_l = rq_dlg_param->rq_l.meta_row_height;
|
||||
meta_row_height_c = rq_dlg_param->rq_c.meta_row_height;
|
||||
swath_width_pixels_ub_l = 0;
|
||||
swath_width_pixels_ub_c = 0;
|
||||
scaler_rec_in_width_l = 0;
|
||||
scaler_rec_in_width_c = 0;
|
||||
dpte_row_height_l = rq_dlg_param.rq_l.dpte_row_height;
|
||||
dpte_row_height_c = rq_dlg_param.rq_c.dpte_row_height;
|
||||
dpte_row_height_l = rq_dlg_param->rq_l.dpte_row_height;
|
||||
dpte_row_height_c = rq_dlg_param->rq_c.dpte_row_height;
|
||||
|
||||
if (mode_422) {
|
||||
swath_width_pixels_ub_l = swath_width_ub_l * 2; // *2 for 2 pixel per element
|
||||
@@ -1712,8 +1712,8 @@ void dml31_rq_dlg_get_dlg_reg(
|
||||
pipe_idx,
|
||||
dlg_regs,
|
||||
ttu_regs,
|
||||
rq_param.dlg,
|
||||
dlg_sys_param,
|
||||
&rq_param.dlg,
|
||||
&dlg_sys_param,
|
||||
cstate_en,
|
||||
pstate_en,
|
||||
vm_en,
|
||||
|
||||
@@ -231,22 +231,22 @@ static void extract_rq_sizing_regs(
|
||||
void dml1_extract_rq_regs(
|
||||
struct display_mode_lib *mode_lib,
|
||||
struct _vcs_dpi_display_rq_regs_st *rq_regs,
|
||||
const struct _vcs_dpi_display_rq_params_st rq_param)
|
||||
const struct _vcs_dpi_display_rq_params_st *rq_param)
|
||||
{
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
unsigned int detile_buf_plane1_addr = 0;
|
||||
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param.sizing.rq_l);
|
||||
if (rq_param.yuv420)
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param.sizing.rq_c);
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_l), &rq_param->sizing.rq_l);
|
||||
if (rq_param->yuv420)
|
||||
extract_rq_sizing_regs(mode_lib, &(rq_regs->rq_regs_c), &rq_param->sizing.rq_c);
|
||||
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param.dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param.dlg.rq_c.swath_height);
|
||||
rq_regs->rq_regs_l.swath_height = dml_log2(rq_param->dlg.rq_l.swath_height);
|
||||
rq_regs->rq_regs_c.swath_height = dml_log2(rq_param->dlg.rq_c.swath_height);
|
||||
|
||||
/* TODO: take the max between luma, chroma chunk size?
|
||||
* okay for now, as we are setting chunk_bytes to 8kb anyways
|
||||
*/
|
||||
if (rq_param.sizing.rq_l.chunk_bytes >= 32 * 1024) { /*32kb */
|
||||
if (rq_param->sizing.rq_l.chunk_bytes >= 32 * 1024) { /*32kb */
|
||||
rq_regs->drq_expansion_mode = 0;
|
||||
} else {
|
||||
rq_regs->drq_expansion_mode = 2;
|
||||
@@ -255,9 +255,9 @@ void dml1_extract_rq_regs(
|
||||
rq_regs->mrq_expansion_mode = 1;
|
||||
rq_regs->crq_expansion_mode = 1;
|
||||
|
||||
if (rq_param.yuv420) {
|
||||
if ((double) rq_param.misc.rq_l.stored_swath_bytes
|
||||
/ (double) rq_param.misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
if (rq_param->yuv420) {
|
||||
if ((double) rq_param->misc.rq_l.stored_swath_bytes
|
||||
/ (double) rq_param->misc.rq_c.stored_swath_bytes <= 1.5) {
|
||||
detile_buf_plane1_addr = (detile_buf_size_in_bytes / 2.0 / 64.0); /* half to chroma */
|
||||
} else {
|
||||
detile_buf_plane1_addr = dml_round_to_multiple(
|
||||
@@ -272,7 +272,7 @@ void dml1_extract_rq_regs(
|
||||
static void handle_det_buf_split(
|
||||
struct display_mode_lib *mode_lib,
|
||||
struct _vcs_dpi_display_rq_params_st *rq_param,
|
||||
const struct _vcs_dpi_display_pipe_source_params_st pipe_src_param)
|
||||
const struct _vcs_dpi_display_pipe_source_params_st *pipe_src_param)
|
||||
{
|
||||
unsigned int total_swath_bytes = 0;
|
||||
unsigned int swath_bytes_l = 0;
|
||||
@@ -281,8 +281,8 @@ static void handle_det_buf_split(
|
||||
unsigned int full_swath_bytes_packed_c = 0;
|
||||
bool req128_l = 0;
|
||||
bool req128_c = 0;
|
||||
bool surf_linear = (pipe_src_param.sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param.source_scan == dm_vert);
|
||||
bool surf_linear = (pipe_src_param->sw_mode == dm_sw_linear);
|
||||
bool surf_vert = (pipe_src_param->source_scan == dm_vert);
|
||||
unsigned int log2_swath_height_l = 0;
|
||||
unsigned int log2_swath_height_c = 0;
|
||||
unsigned int detile_buf_size_in_bytes = mode_lib->ip.det_buffer_size_kbytes * 1024;
|
||||
@@ -556,7 +556,7 @@ static void get_surf_rq_param(
|
||||
struct _vcs_dpi_display_data_rq_sizing_params_st *rq_sizing_param,
|
||||
struct _vcs_dpi_display_data_rq_dlg_params_st *rq_dlg_param,
|
||||
struct _vcs_dpi_display_data_rq_misc_params_st *rq_misc_param,
|
||||
const struct _vcs_dpi_display_pipe_source_params_st pipe_src_param,
|
||||
const struct _vcs_dpi_display_pipe_source_params_st *pipe_src_param,
|
||||
bool is_chroma)
|
||||
{
|
||||
bool mode_422 = 0;
|
||||
@@ -622,15 +622,15 @@ static void get_surf_rq_param(
|
||||
|
||||
/* TODO check if ppe apply for both luma and chroma in 422 case */
|
||||
if (is_chroma) {
|
||||
vp_width = pipe_src_param.viewport_width_c / ppe;
|
||||
vp_height = pipe_src_param.viewport_height_c;
|
||||
data_pitch = pipe_src_param.data_pitch_c;
|
||||
meta_pitch = pipe_src_param.meta_pitch_c;
|
||||
vp_width = pipe_src_param->viewport_width_c / ppe;
|
||||
vp_height = pipe_src_param->viewport_height_c;
|
||||
data_pitch = pipe_src_param->data_pitch_c;
|
||||
meta_pitch = pipe_src_param->meta_pitch_c;
|
||||
} else {
|
||||
vp_width = pipe_src_param.viewport_width / ppe;
|
||||
vp_height = pipe_src_param.viewport_height;
|
||||
data_pitch = pipe_src_param.data_pitch;
|
||||
meta_pitch = pipe_src_param.meta_pitch;
|
||||
vp_width = pipe_src_param->viewport_width / ppe;
|
||||
vp_height = pipe_src_param->viewport_height;
|
||||
data_pitch = pipe_src_param->data_pitch;
|
||||
meta_pitch = pipe_src_param->meta_pitch;
|
||||
}
|
||||
|
||||
rq_sizing_param->chunk_bytes = 8192;
|
||||
@@ -645,11 +645,11 @@ static void get_surf_rq_param(
|
||||
|
||||
rq_sizing_param->mpte_group_bytes = 2048;
|
||||
|
||||
surf_linear = (pipe_src_param.sw_mode == dm_sw_linear);
|
||||
surf_vert = (pipe_src_param.source_scan == dm_vert);
|
||||
surf_linear = (pipe_src_param->sw_mode == dm_sw_linear);
|
||||
surf_vert = (pipe_src_param->source_scan == dm_vert);
|
||||
|
||||
bytes_per_element = get_bytes_per_element(
|
||||
(enum source_format_class) pipe_src_param.source_format,
|
||||
(enum source_format_class) pipe_src_param->source_format,
|
||||
is_chroma);
|
||||
log2_bytes_per_element = dml_log2(bytes_per_element);
|
||||
blk256_width = 0;
|
||||
@@ -671,7 +671,7 @@ static void get_surf_rq_param(
|
||||
log2_blk256_height = dml_log2((double) blk256_height);
|
||||
blk_bytes =
|
||||
surf_linear ? 256 : get_blk_size_bytes(
|
||||
(enum source_macro_tile_size) pipe_src_param.macro_tile_size);
|
||||
(enum source_macro_tile_size) pipe_src_param->macro_tile_size);
|
||||
log2_blk_bytes = dml_log2((double) blk_bytes);
|
||||
log2_blk_height = 0;
|
||||
log2_blk_width = 0;
|
||||
@@ -682,7 +682,7 @@ static void get_surf_rq_param(
|
||||
* "/2" is like square root
|
||||
* blk is vertical biased
|
||||
*/
|
||||
if (pipe_src_param.sw_mode != dm_sw_linear)
|
||||
if (pipe_src_param->sw_mode != dm_sw_linear)
|
||||
log2_blk_height = log2_blk256_height
|
||||
+ dml_ceil((double) (log2_blk_bytes - 8) / 2.0, 1);
|
||||
else
|
||||
@@ -930,10 +930,10 @@ static void get_surf_rq_param(
|
||||
&func_meta_row_height,
|
||||
vp_width,
|
||||
data_pitch,
|
||||
pipe_src_param.source_format,
|
||||
pipe_src_param.sw_mode,
|
||||
pipe_src_param.macro_tile_size,
|
||||
pipe_src_param.source_scan,
|
||||
pipe_src_param->source_format,
|
||||
pipe_src_param->sw_mode,
|
||||
pipe_src_param->macro_tile_size,
|
||||
pipe_src_param->source_scan,
|
||||
is_chroma);
|
||||
|
||||
/* Just a check to make sure this function and the new one give the same
|
||||
@@ -960,12 +960,12 @@ static void get_surf_rq_param(
|
||||
void dml1_rq_dlg_get_rq_params(
|
||||
struct display_mode_lib *mode_lib,
|
||||
struct _vcs_dpi_display_rq_params_st *rq_param,
|
||||
const struct _vcs_dpi_display_pipe_source_params_st pipe_src_param)
|
||||
const struct _vcs_dpi_display_pipe_source_params_st *pipe_src_param)
|
||||
{
|
||||
/* get param for luma surface */
|
||||
rq_param->yuv420 = pipe_src_param.source_format == dm_420_8
|
||||
|| pipe_src_param.source_format == dm_420_10;
|
||||
rq_param->yuv420_10bpc = pipe_src_param.source_format == dm_420_10;
|
||||
rq_param->yuv420 = pipe_src_param->source_format == dm_420_8
|
||||
|| pipe_src_param->source_format == dm_420_10;
|
||||
rq_param->yuv420_10bpc = pipe_src_param->source_format == dm_420_10;
|
||||
|
||||
get_surf_rq_param(
|
||||
mode_lib,
|
||||
@@ -975,7 +975,7 @@ void dml1_rq_dlg_get_rq_params(
|
||||
pipe_src_param,
|
||||
0);
|
||||
|
||||
if (is_dual_plane((enum source_format_class) pipe_src_param.source_format)) {
|
||||
if (is_dual_plane((enum source_format_class) pipe_src_param->source_format)) {
|
||||
/* get param for chroma surface */
|
||||
get_surf_rq_param(
|
||||
mode_lib,
|
||||
@@ -998,26 +998,26 @@ void dml1_rq_dlg_get_dlg_params(
|
||||
struct display_mode_lib *mode_lib,
|
||||
struct _vcs_dpi_display_dlg_regs_st *disp_dlg_regs,
|
||||
struct _vcs_dpi_display_ttu_regs_st *disp_ttu_regs,
|
||||
const struct _vcs_dpi_display_rq_dlg_params_st rq_dlg_param,
|
||||
const struct _vcs_dpi_display_dlg_sys_params_st dlg_sys_param,
|
||||
const struct _vcs_dpi_display_e2e_pipe_params_st e2e_pipe_param,
|
||||
const struct _vcs_dpi_display_rq_dlg_params_st *rq_dlg_param,
|
||||
const struct _vcs_dpi_display_dlg_sys_params_st *dlg_sys_param,
|
||||
const struct _vcs_dpi_display_e2e_pipe_params_st *e2e_pipe_param,
|
||||
const bool cstate_en,
|
||||
const bool pstate_en,
|
||||
const bool vm_en,
|
||||
const bool iflip_en)
|
||||
{
|
||||
/* Timing */
|
||||
unsigned int htotal = e2e_pipe_param.pipe.dest.htotal;
|
||||
unsigned int hblank_end = e2e_pipe_param.pipe.dest.hblank_end;
|
||||
unsigned int vblank_start = e2e_pipe_param.pipe.dest.vblank_start;
|
||||
unsigned int vblank_end = e2e_pipe_param.pipe.dest.vblank_end;
|
||||
bool interlaced = e2e_pipe_param.pipe.dest.interlaced;
|
||||
unsigned int htotal = e2e_pipe_param->pipe.dest.htotal;
|
||||
unsigned int hblank_end = e2e_pipe_param->pipe.dest.hblank_end;
|
||||
unsigned int vblank_start = e2e_pipe_param->pipe.dest.vblank_start;
|
||||
unsigned int vblank_end = e2e_pipe_param->pipe.dest.vblank_end;
|
||||
bool interlaced = e2e_pipe_param->pipe.dest.interlaced;
|
||||
unsigned int min_vblank = mode_lib->ip.min_vblank_lines;
|
||||
|
||||
double pclk_freq_in_mhz = e2e_pipe_param.pipe.dest.pixel_rate_mhz;
|
||||
double refclk_freq_in_mhz = e2e_pipe_param.clks_cfg.refclk_mhz;
|
||||
double dppclk_freq_in_mhz = e2e_pipe_param.clks_cfg.dppclk_mhz;
|
||||
double dispclk_freq_in_mhz = e2e_pipe_param.clks_cfg.dispclk_mhz;
|
||||
double pclk_freq_in_mhz = e2e_pipe_param->pipe.dest.pixel_rate_mhz;
|
||||
double refclk_freq_in_mhz = e2e_pipe_param->clks_cfg.refclk_mhz;
|
||||
double dppclk_freq_in_mhz = e2e_pipe_param->clks_cfg.dppclk_mhz;
|
||||
double dispclk_freq_in_mhz = e2e_pipe_param->clks_cfg.dispclk_mhz;
|
||||
|
||||
double ref_freq_to_pix_freq;
|
||||
double prefetch_xy_calc_in_dcfclk;
|
||||
@@ -1160,13 +1160,13 @@ void dml1_rq_dlg_get_dlg_params(
|
||||
disp_dlg_regs->dlg_vblank_end = interlaced ? (vblank_end / 2) : vblank_end; /* 15 bits */
|
||||
|
||||
prefetch_xy_calc_in_dcfclk = 24.0; /* TODO: ip_param */
|
||||
min_dcfclk_mhz = dlg_sys_param.deepsleep_dcfclk_mhz;
|
||||
min_dcfclk_mhz = dlg_sys_param->deepsleep_dcfclk_mhz;
|
||||
t_calc_us = prefetch_xy_calc_in_dcfclk / min_dcfclk_mhz;
|
||||
min_ttu_vblank = dlg_sys_param.t_urg_wm_us;
|
||||
min_ttu_vblank = dlg_sys_param->t_urg_wm_us;
|
||||
if (cstate_en)
|
||||
min_ttu_vblank = dml_max(dlg_sys_param.t_sr_wm_us, min_ttu_vblank);
|
||||
min_ttu_vblank = dml_max(dlg_sys_param->t_sr_wm_us, min_ttu_vblank);
|
||||
if (pstate_en)
|
||||
min_ttu_vblank = dml_max(dlg_sys_param.t_mclk_wm_us, min_ttu_vblank);
|
||||
min_ttu_vblank = dml_max(dlg_sys_param->t_mclk_wm_us, min_ttu_vblank);
|
||||
min_ttu_vblank = min_ttu_vblank + t_calc_us;
|
||||
|
||||
min_dst_y_ttu_vblank = min_ttu_vblank * pclk_freq_in_mhz / (double) htotal;
|
||||
@@ -1197,59 +1197,59 @@ void dml1_rq_dlg_get_dlg_params(
|
||||
/* ------------------------- */
|
||||
/* Prefetch Calc */
|
||||
/* Source */
|
||||
dcc_en = e2e_pipe_param.pipe.src.dcc;
|
||||
dcc_en = e2e_pipe_param->pipe.src.dcc;
|
||||
dual_plane = is_dual_plane(
|
||||
(enum source_format_class) e2e_pipe_param.pipe.src.source_format);
|
||||
(enum source_format_class) e2e_pipe_param->pipe.src.source_format);
|
||||
mode_422 = 0; /* TODO */
|
||||
access_dir = (e2e_pipe_param.pipe.src.source_scan == dm_vert); /* vp access direction: horizontal or vertical accessed */
|
||||
access_dir = (e2e_pipe_param->pipe.src.source_scan == dm_vert); /* vp access direction: horizontal or vertical accessed */
|
||||
bytes_per_element_l = get_bytes_per_element(
|
||||
(enum source_format_class) e2e_pipe_param.pipe.src.source_format,
|
||||
(enum source_format_class) e2e_pipe_param->pipe.src.source_format,
|
||||
0);
|
||||
bytes_per_element_c = get_bytes_per_element(
|
||||
(enum source_format_class) e2e_pipe_param.pipe.src.source_format,
|
||||
(enum source_format_class) e2e_pipe_param->pipe.src.source_format,
|
||||
1);
|
||||
vp_height_l = e2e_pipe_param.pipe.src.viewport_height;
|
||||
vp_width_l = e2e_pipe_param.pipe.src.viewport_width;
|
||||
vp_height_c = e2e_pipe_param.pipe.src.viewport_height_c;
|
||||
vp_width_c = e2e_pipe_param.pipe.src.viewport_width_c;
|
||||
vp_height_l = e2e_pipe_param->pipe.src.viewport_height;
|
||||
vp_width_l = e2e_pipe_param->pipe.src.viewport_width;
|
||||
vp_height_c = e2e_pipe_param->pipe.src.viewport_height_c;
|
||||
vp_width_c = e2e_pipe_param->pipe.src.viewport_width_c;
|
||||
|
||||
/* Scaling */
|
||||
htaps_l = e2e_pipe_param.pipe.scale_taps.htaps;
|
||||
htaps_c = e2e_pipe_param.pipe.scale_taps.htaps_c;
|
||||
hratios_l = e2e_pipe_param.pipe.scale_ratio_depth.hscl_ratio;
|
||||
hratios_c = e2e_pipe_param.pipe.scale_ratio_depth.hscl_ratio_c;
|
||||
vratio_l = e2e_pipe_param.pipe.scale_ratio_depth.vscl_ratio;
|
||||
vratio_c = e2e_pipe_param.pipe.scale_ratio_depth.vscl_ratio_c;
|
||||
htaps_l = e2e_pipe_param->pipe.scale_taps.htaps;
|
||||
htaps_c = e2e_pipe_param->pipe.scale_taps.htaps_c;
|
||||
hratios_l = e2e_pipe_param->pipe.scale_ratio_depth.hscl_ratio;
|
||||
hratios_c = e2e_pipe_param->pipe.scale_ratio_depth.hscl_ratio_c;
|
||||
vratio_l = e2e_pipe_param->pipe.scale_ratio_depth.vscl_ratio;
|
||||
vratio_c = e2e_pipe_param->pipe.scale_ratio_depth.vscl_ratio_c;
|
||||
|
||||
line_time_in_us = (htotal / pclk_freq_in_mhz);
|
||||
vinit_l = e2e_pipe_param.pipe.scale_ratio_depth.vinit;
|
||||
vinit_c = e2e_pipe_param.pipe.scale_ratio_depth.vinit_c;
|
||||
vinit_bot_l = e2e_pipe_param.pipe.scale_ratio_depth.vinit_bot;
|
||||
vinit_bot_c = e2e_pipe_param.pipe.scale_ratio_depth.vinit_bot_c;
|
||||
vinit_l = e2e_pipe_param->pipe.scale_ratio_depth.vinit;
|
||||
vinit_c = e2e_pipe_param->pipe.scale_ratio_depth.vinit_c;
|
||||
vinit_bot_l = e2e_pipe_param->pipe.scale_ratio_depth.vinit_bot;
|
||||
vinit_bot_c = e2e_pipe_param->pipe.scale_ratio_depth.vinit_bot_c;
|
||||
|
||||
swath_height_l = rq_dlg_param.rq_l.swath_height;
|
||||
swath_width_ub_l = rq_dlg_param.rq_l.swath_width_ub;
|
||||
dpte_bytes_per_row_ub_l = rq_dlg_param.rq_l.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_l = rq_dlg_param.rq_l.dpte_groups_per_row_ub;
|
||||
meta_pte_bytes_per_frame_ub_l = rq_dlg_param.rq_l.meta_pte_bytes_per_frame_ub;
|
||||
meta_bytes_per_row_ub_l = rq_dlg_param.rq_l.meta_bytes_per_row_ub;
|
||||
swath_height_l = rq_dlg_param->rq_l.swath_height;
|
||||
swath_width_ub_l = rq_dlg_param->rq_l.swath_width_ub;
|
||||
dpte_bytes_per_row_ub_l = rq_dlg_param->rq_l.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_l = rq_dlg_param->rq_l.dpte_groups_per_row_ub;
|
||||
meta_pte_bytes_per_frame_ub_l = rq_dlg_param->rq_l.meta_pte_bytes_per_frame_ub;
|
||||
meta_bytes_per_row_ub_l = rq_dlg_param->rq_l.meta_bytes_per_row_ub;
|
||||
|
||||
swath_height_c = rq_dlg_param.rq_c.swath_height;
|
||||
swath_width_ub_c = rq_dlg_param.rq_c.swath_width_ub;
|
||||
dpte_bytes_per_row_ub_c = rq_dlg_param.rq_c.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_c = rq_dlg_param.rq_c.dpte_groups_per_row_ub;
|
||||
swath_height_c = rq_dlg_param->rq_c.swath_height;
|
||||
swath_width_ub_c = rq_dlg_param->rq_c.swath_width_ub;
|
||||
dpte_bytes_per_row_ub_c = rq_dlg_param->rq_c.dpte_bytes_per_row_ub;
|
||||
dpte_groups_per_row_ub_c = rq_dlg_param->rq_c.dpte_groups_per_row_ub;
|
||||
|
||||
meta_chunks_per_row_ub_l = rq_dlg_param.rq_l.meta_chunks_per_row_ub;
|
||||
vupdate_offset = e2e_pipe_param.pipe.dest.vupdate_offset;
|
||||
vupdate_width = e2e_pipe_param.pipe.dest.vupdate_width;
|
||||
vready_offset = e2e_pipe_param.pipe.dest.vready_offset;
|
||||
meta_chunks_per_row_ub_l = rq_dlg_param->rq_l.meta_chunks_per_row_ub;
|
||||
vupdate_offset = e2e_pipe_param->pipe.dest.vupdate_offset;
|
||||
vupdate_width = e2e_pipe_param->pipe.dest.vupdate_width;
|
||||
vready_offset = e2e_pipe_param->pipe.dest.vready_offset;
|
||||
|
||||
dppclk_delay_subtotal = mode_lib->ip.dppclk_delay_subtotal;
|
||||
dispclk_delay_subtotal = mode_lib->ip.dispclk_delay_subtotal;
|
||||
pixel_rate_delay_subtotal = dppclk_delay_subtotal * pclk_freq_in_mhz / dppclk_freq_in_mhz
|
||||
+ dispclk_delay_subtotal * pclk_freq_in_mhz / dispclk_freq_in_mhz;
|
||||
|
||||
vstartup_start = e2e_pipe_param.pipe.dest.vstartup_start;
|
||||
vstartup_start = e2e_pipe_param->pipe.dest.vstartup_start;
|
||||
|
||||
if (interlaced)
|
||||
vstartup_start = vstartup_start / 2;
|
||||
@@ -1276,13 +1276,13 @@ void dml1_rq_dlg_get_dlg_params(
|
||||
dst_x_after_scaler = 0;
|
||||
dst_y_after_scaler = 0;
|
||||
|
||||
if (e2e_pipe_param.pipe.src.is_hsplit)
|
||||
if (e2e_pipe_param->pipe.src.is_hsplit)
|
||||
dst_x_after_scaler = pixel_rate_delay_subtotal
|
||||
+ e2e_pipe_param.pipe.dest.recout_width;
|
||||
+ e2e_pipe_param->pipe.dest.recout_width;
|
||||
else
|
||||
dst_x_after_scaler = pixel_rate_delay_subtotal;
|
||||
|
||||
if (e2e_pipe_param.dout.output_format == dm_420)
|
||||
if (e2e_pipe_param->dout.output_format == dm_420)
|
||||
dst_y_after_scaler = 1;
|
||||
else
|
||||
dst_y_after_scaler = 0;
|
||||
@@ -1334,7 +1334,7 @@ void dml1_rq_dlg_get_dlg_params(
|
||||
DTRACE(
|
||||
"DLG: %s: t_srx_delay_us = %3.2f",
|
||||
__func__,
|
||||
(double) dlg_sys_param.t_srx_delay_us);
|
||||
(double) dlg_sys_param->t_srx_delay_us);
|
||||
DTRACE("DLG: %s: line_time_in_us = %3.2f", __func__, (double) line_time_in_us);
|
||||
DTRACE("DLG: %s: vupdate_offset = %d", __func__, vupdate_offset);
|
||||
DTRACE("DLG: %s: vupdate_width = %d", __func__, vupdate_width);
|
||||
@@ -1408,12 +1408,12 @@ void dml1_rq_dlg_get_dlg_params(
|
||||
DTRACE("DLG: %s: dpte_row_bytes = %d", __func__, dpte_row_bytes);
|
||||
|
||||
prefetch_bw = (vm_bytes + 2 * dpte_row_bytes + 2 * meta_row_bytes + sw_bytes) / t_pre_us;
|
||||
flip_bw = ((vm_bytes + dpte_row_bytes + meta_row_bytes) * dlg_sys_param.total_flip_bw)
|
||||
/ (double) dlg_sys_param.total_flip_bytes;
|
||||
flip_bw = ((vm_bytes + dpte_row_bytes + meta_row_bytes) * dlg_sys_param->total_flip_bw)
|
||||
/ (double) dlg_sys_param->total_flip_bytes;
|
||||
t_vm_us = line_time_in_us / 4.0;
|
||||
if (vm_en && dcc_en) {
|
||||
t_vm_us = dml_max(
|
||||
dlg_sys_param.t_extra_us,
|
||||
dlg_sys_param->t_extra_us,
|
||||
dml_max((double) vm_bytes / prefetch_bw, t_vm_us));
|
||||
|
||||
if (iflip_en && !dual_plane) {
|
||||
@@ -1423,12 +1423,12 @@ void dml1_rq_dlg_get_dlg_params(
|
||||
}
|
||||
}
|
||||
|
||||
t_r0_us = dml_max(dlg_sys_param.t_extra_us - t_vm_us, line_time_in_us - t_vm_us);
|
||||
t_r0_us = dml_max(dlg_sys_param->t_extra_us - t_vm_us, line_time_in_us - t_vm_us);
|
||||
|
||||
if (vm_en || dcc_en) {
|
||||
t_r0_us = dml_max(
|
||||
(double) (dpte_row_bytes + meta_row_bytes) / prefetch_bw,
|
||||
dlg_sys_param.t_extra_us);
|
||||
dlg_sys_param->t_extra_us);
|
||||
t_r0_us = dml_max((double) (line_time_in_us - t_vm_us), t_r0_us);
|
||||
|
||||
if (iflip_en && !dual_plane) {
|
||||
@@ -1550,15 +1550,15 @@ void dml1_rq_dlg_get_dlg_params(
|
||||
disp_dlg_regs->refcyc_per_meta_chunk_vblank_l;/* dcc for 4:2:0 is not supported in dcn1.0. assigned to be the same as _l for now */
|
||||
|
||||
/* Active */
|
||||
req_per_swath_ub_l = rq_dlg_param.rq_l.req_per_swath_ub;
|
||||
req_per_swath_ub_c = rq_dlg_param.rq_c.req_per_swath_ub;
|
||||
meta_row_height_l = rq_dlg_param.rq_l.meta_row_height;
|
||||
req_per_swath_ub_l = rq_dlg_param->rq_l.req_per_swath_ub;
|
||||
req_per_swath_ub_c = rq_dlg_param->rq_c.req_per_swath_ub;
|
||||
meta_row_height_l = rq_dlg_param->rq_l.meta_row_height;
|
||||
swath_width_pixels_ub_l = 0;
|
||||
swath_width_pixels_ub_c = 0;
|
||||
scaler_rec_in_width_l = 0;
|
||||
scaler_rec_in_width_c = 0;
|
||||
dpte_row_height_l = rq_dlg_param.rq_l.dpte_row_height;
|
||||
dpte_row_height_c = rq_dlg_param.rq_c.dpte_row_height;
|
||||
dpte_row_height_l = rq_dlg_param->rq_l.dpte_row_height;
|
||||
dpte_row_height_c = rq_dlg_param->rq_c.dpte_row_height;
|
||||
|
||||
disp_dlg_regs->dst_y_per_pte_row_nom_l = (unsigned int) ((double) dpte_row_height_l
|
||||
/ (double) vratio_l * dml_pow(2, 2));
|
||||
@@ -1650,14 +1650,14 @@ void dml1_rq_dlg_get_dlg_params(
|
||||
refcyc_per_req_delivery_cur0 = 0.;
|
||||
|
||||
full_recout_width = 0;
|
||||
if (e2e_pipe_param.pipe.src.is_hsplit) {
|
||||
if (e2e_pipe_param.pipe.dest.full_recout_width == 0) {
|
||||
if (e2e_pipe_param->pipe.src.is_hsplit) {
|
||||
if (e2e_pipe_param->pipe.dest.full_recout_width == 0) {
|
||||
DTRACE("DLG: %s: Warningfull_recout_width not set in hsplit mode", __func__);
|
||||
full_recout_width = e2e_pipe_param.pipe.dest.recout_width * 2; /* assume half split for dcn1 */
|
||||
full_recout_width = e2e_pipe_param->pipe.dest.recout_width * 2; /* assume half split for dcn1 */
|
||||
} else
|
||||
full_recout_width = e2e_pipe_param.pipe.dest.full_recout_width;
|
||||
full_recout_width = e2e_pipe_param->pipe.dest.full_recout_width;
|
||||
} else
|
||||
full_recout_width = e2e_pipe_param.pipe.dest.recout_width;
|
||||
full_recout_width = e2e_pipe_param->pipe.dest.recout_width;
|
||||
|
||||
refcyc_per_line_delivery_pre_l = get_refcyc_per_delivery(
|
||||
mode_lib,
|
||||
@@ -1824,9 +1824,9 @@ void dml1_rq_dlg_get_dlg_params(
|
||||
}
|
||||
|
||||
/* TTU - Cursor */
|
||||
hratios_cur0 = e2e_pipe_param.pipe.scale_ratio_depth.hscl_ratio;
|
||||
cur0_src_width = e2e_pipe_param.pipe.src.cur0_src_width; /* cursor source width */
|
||||
cur0_bpp = (enum cursor_bpp) e2e_pipe_param.pipe.src.cur0_bpp;
|
||||
hratios_cur0 = e2e_pipe_param->pipe.scale_ratio_depth.hscl_ratio;
|
||||
cur0_src_width = e2e_pipe_param->pipe.src.cur0_src_width; /* cursor source width */
|
||||
cur0_bpp = (enum cursor_bpp) e2e_pipe_param->pipe.src.cur0_bpp;
|
||||
cur0_req_size = 0;
|
||||
cur0_req_width = 0;
|
||||
cur0_width_ub = 0.0;
|
||||
|
||||
@@ -33,7 +33,7 @@ struct display_mode_lib;
|
||||
void dml1_extract_rq_regs(
|
||||
struct display_mode_lib *mode_lib,
|
||||
struct _vcs_dpi_display_rq_regs_st *rq_regs,
|
||||
const struct _vcs_dpi_display_rq_params_st rq_param);
|
||||
const struct _vcs_dpi_display_rq_params_st *rq_param);
|
||||
/* Function: dml_rq_dlg_get_rq_params
|
||||
* Calculate requestor related parameters that register definition agnostic
|
||||
* (i.e. this layer does try to separate real values from register definition)
|
||||
@@ -45,7 +45,7 @@ void dml1_extract_rq_regs(
|
||||
void dml1_rq_dlg_get_rq_params(
|
||||
struct display_mode_lib *mode_lib,
|
||||
struct _vcs_dpi_display_rq_params_st *rq_param,
|
||||
const struct _vcs_dpi_display_pipe_source_params_st pipe_src_param);
|
||||
const struct _vcs_dpi_display_pipe_source_params_st *pipe_src_param);
|
||||
|
||||
|
||||
/* Function: dml_rq_dlg_get_dlg_params
|
||||
@@ -55,9 +55,9 @@ void dml1_rq_dlg_get_dlg_params(
|
||||
struct display_mode_lib *mode_lib,
|
||||
struct _vcs_dpi_display_dlg_regs_st *dlg_regs,
|
||||
struct _vcs_dpi_display_ttu_regs_st *ttu_regs,
|
||||
const struct _vcs_dpi_display_rq_dlg_params_st rq_dlg_param,
|
||||
const struct _vcs_dpi_display_dlg_sys_params_st dlg_sys_param,
|
||||
const struct _vcs_dpi_display_e2e_pipe_params_st e2e_pipe_param,
|
||||
const struct _vcs_dpi_display_rq_dlg_params_st *rq_dlg_param,
|
||||
const struct _vcs_dpi_display_dlg_sys_params_st *dlg_sys_param,
|
||||
const struct _vcs_dpi_display_e2e_pipe_params_st *e2e_pipe_param,
|
||||
const bool cstate_en,
|
||||
const bool pstate_en,
|
||||
const bool vm_en,
|
||||
|
||||
Reference in New Issue
Block a user