Commit ec4388a2 authored by Dmytro Laktyushkin's avatar Dmytro Laktyushkin Committed by Alex Deucher

drm/amd/display: Add detile buffer size for DCN20

Detile buffer size affects dcc caps and therefore needs to be
corrected for each ip.
Signed-off-by: default avatarDmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Reviewed-by: default avatarChris Park <Chris.Park@amd.com>
Acked-by: default avatarLeo Li <sunpeng.li@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 08b66279
...@@ -186,14 +186,13 @@ static void hubbub2_get_blk256_size(unsigned int *blk256_width, unsigned int *bl ...@@ -186,14 +186,13 @@ static void hubbub2_get_blk256_size(unsigned int *blk256_width, unsigned int *bl
} }
static void hubbub2_det_request_size( static void hubbub2_det_request_size(
unsigned int detile_buf_size,
unsigned int height, unsigned int height,
unsigned int width, unsigned int width,
unsigned int bpe, unsigned int bpe,
bool *req128_horz_wc, bool *req128_horz_wc,
bool *req128_vert_wc) bool *req128_vert_wc)
{ {
unsigned int detile_buf_size = 164 * 1024; /* 164KB for DCN1.0 */
unsigned int blk256_height = 0; unsigned int blk256_height = 0;
unsigned int blk256_width = 0; unsigned int blk256_width = 0;
unsigned int swath_bytes_horz_wc, swath_bytes_vert_wc; unsigned int swath_bytes_horz_wc, swath_bytes_vert_wc;
...@@ -236,7 +235,8 @@ bool hubbub2_get_dcc_compression_cap(struct hubbub *hubbub, ...@@ -236,7 +235,8 @@ bool hubbub2_get_dcc_compression_cap(struct hubbub *hubbub,
&segment_order_horz, &segment_order_vert)) &segment_order_horz, &segment_order_vert))
return false; return false;
hubbub2_det_request_size(input->surface_size.height, input->surface_size.width, hubbub2_det_request_size(TO_DCN20_HUBBUB(hubbub)->detile_buf_size,
input->surface_size.height, input->surface_size.width,
bpe, &req128_horz_wc, &req128_vert_wc); bpe, &req128_horz_wc, &req128_vert_wc);
if (!req128_horz_wc && !req128_vert_wc) { if (!req128_horz_wc && !req128_vert_wc) {
...@@ -619,4 +619,5 @@ void hubbub2_construct(struct dcn20_hubbub *hubbub, ...@@ -619,4 +619,5 @@ void hubbub2_construct(struct dcn20_hubbub *hubbub,
hubbub->masks = hubbub_mask; hubbub->masks = hubbub_mask;
hubbub->debug_test_index_pstate = 0xB; hubbub->debug_test_index_pstate = 0xB;
hubbub->detile_buf_size = 164 * 1024; /* 164KB for DCN2.0 */
} }
...@@ -81,6 +81,7 @@ struct dcn20_hubbub { ...@@ -81,6 +81,7 @@ struct dcn20_hubbub {
unsigned int debug_test_index_pstate; unsigned int debug_test_index_pstate;
struct dcn_watermark_set watermarks; struct dcn_watermark_set watermarks;
struct dcn20_vmid vmid[16]; struct dcn20_vmid vmid[16];
unsigned int detile_buf_size;
}; };
void hubbub2_construct(struct dcn20_hubbub *hubbub, void hubbub2_construct(struct dcn20_hubbub *hubbub,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment