radeonsi/vcn: mark rc_per_pic as obsoleted
Rename parameters in rc_per_pic to emphasize that the method is obsoleted Add warning to recommend users to update VCN FW for the correct rate control Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com> Reviewed-by: Ruijing Dong <ruijing.dong@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28234>
This commit is contained in:
@@ -312,10 +312,10 @@ typedef struct rvcn_enc_rate_ctl_layer_init_s {
|
||||
} rvcn_enc_rate_ctl_layer_init_t;
|
||||
|
||||
typedef struct rvcn_enc_rate_ctl_per_picture_s {
|
||||
uint32_t qp;
|
||||
uint32_t min_qp_app;
|
||||
uint32_t max_qp_app;
|
||||
uint32_t max_au_size;
|
||||
uint32_t qp_obs;
|
||||
uint32_t min_qp_app_obs;
|
||||
uint32_t max_qp_app_obs;
|
||||
uint32_t max_au_size_obs;
|
||||
uint32_t qp_i;
|
||||
uint32_t qp_p;
|
||||
uint32_t qp_b;
|
||||
|
||||
@@ -261,9 +261,9 @@ static void radeon_vcn_enc_h264_get_rc_param(struct radeon_encoder *enc,
|
||||
frame_rate_num);
|
||||
}
|
||||
enc->enc_pic.rc_session_init.vbv_buffer_level = pic->rate_ctrl[0].vbv_buf_lv;
|
||||
enc->enc_pic.rc_per_pic.qp = pic->quant_i_frames;
|
||||
enc->enc_pic.rc_per_pic.min_qp_app = pic->rate_ctrl[0].min_qp;
|
||||
enc->enc_pic.rc_per_pic.max_qp_app = pic->rate_ctrl[0].max_qp ?
|
||||
enc->enc_pic.rc_per_pic.qp_obs = pic->quant_i_frames;
|
||||
enc->enc_pic.rc_per_pic.min_qp_app_obs = pic->rate_ctrl[0].min_qp;
|
||||
enc->enc_pic.rc_per_pic.max_qp_app_obs = pic->rate_ctrl[0].max_qp ?
|
||||
pic->rate_ctrl[0].max_qp : 51;
|
||||
enc->enc_pic.rc_per_pic.qp_i = pic->quant_i_frames;
|
||||
enc->enc_pic.rc_per_pic.qp_p = pic->quant_p_frames;
|
||||
@@ -295,7 +295,7 @@ static void radeon_vcn_enc_h264_get_rc_param(struct radeon_encoder *enc,
|
||||
default:
|
||||
enc->enc_pic.rc_session_init.rate_control_method = RENCODE_RATE_CONTROL_METHOD_NONE;
|
||||
}
|
||||
enc->enc_pic.rc_per_pic.max_au_size = pic->rate_ctrl[0].max_au_size;
|
||||
enc->enc_pic.rc_per_pic.max_au_size_obs = pic->rate_ctrl[0].max_au_size;
|
||||
enc->enc_pic.rc_per_pic.max_au_size_i = pic->rate_ctrl[0].max_au_size;
|
||||
enc->enc_pic.rc_per_pic.max_au_size_p = pic->rate_ctrl[0].max_au_size;
|
||||
enc->enc_pic.rc_per_pic.max_au_size_b = pic->rate_ctrl[0].max_au_size;
|
||||
@@ -518,9 +518,9 @@ static void radeon_vcn_enc_hevc_get_rc_param(struct radeon_encoder *enc,
|
||||
frame_rate_den,
|
||||
frame_rate_num);
|
||||
enc->enc_pic.rc_session_init.vbv_buffer_level = pic->rc.vbv_buf_lv;
|
||||
enc->enc_pic.rc_per_pic.qp = pic->rc.quant_i_frames;
|
||||
enc->enc_pic.rc_per_pic.min_qp_app = pic->rc.min_qp;
|
||||
enc->enc_pic.rc_per_pic.max_qp_app = pic->rc.max_qp ? pic->rc.max_qp : 51;
|
||||
enc->enc_pic.rc_per_pic.qp_obs = pic->rc.quant_i_frames;
|
||||
enc->enc_pic.rc_per_pic.min_qp_app_obs = pic->rc.min_qp;
|
||||
enc->enc_pic.rc_per_pic.max_qp_app_obs = pic->rc.max_qp ? pic->rc.max_qp : 51;
|
||||
enc->enc_pic.rc_per_pic.qp_i = pic->rc.quant_i_frames;
|
||||
enc->enc_pic.rc_per_pic.qp_p = pic->rc.quant_p_frames;
|
||||
enc->enc_pic.rc_per_pic.min_qp_i = pic->rc.min_qp;
|
||||
@@ -547,7 +547,7 @@ static void radeon_vcn_enc_hevc_get_rc_param(struct radeon_encoder *enc,
|
||||
default:
|
||||
enc->enc_pic.rc_session_init.rate_control_method = RENCODE_RATE_CONTROL_METHOD_NONE;
|
||||
}
|
||||
enc->enc_pic.rc_per_pic.max_au_size = pic->rc.max_au_size;
|
||||
enc->enc_pic.rc_per_pic.max_au_size_obs = pic->rc.max_au_size;
|
||||
enc->enc_pic.rc_per_pic.max_au_size_i = pic->rc.max_au_size;
|
||||
enc->enc_pic.rc_per_pic.max_au_size_p = pic->rc.max_au_size;
|
||||
}
|
||||
@@ -746,9 +746,9 @@ static void radeon_vcn_enc_av1_get_rc_param(struct radeon_encoder *enc,
|
||||
frame_rate_num);
|
||||
}
|
||||
enc->enc_pic.rc_session_init.vbv_buffer_level = pic->rc[0].vbv_buf_lv;
|
||||
enc->enc_pic.rc_per_pic.qp = pic->rc[0].qp;
|
||||
enc->enc_pic.rc_per_pic.min_qp_app = pic->rc[0].min_qp ? pic->rc[0].min_qp : 1;
|
||||
enc->enc_pic.rc_per_pic.max_qp_app = pic->rc[0].max_qp ? pic->rc[0].max_qp : 255;
|
||||
enc->enc_pic.rc_per_pic.qp_obs = pic->rc[0].qp;
|
||||
enc->enc_pic.rc_per_pic.min_qp_app_obs = pic->rc[0].min_qp ? pic->rc[0].min_qp : 1;
|
||||
enc->enc_pic.rc_per_pic.max_qp_app_obs = pic->rc[0].max_qp ? pic->rc[0].max_qp : 255;
|
||||
enc->enc_pic.rc_per_pic.qp_i = pic->rc[0].qp;
|
||||
enc->enc_pic.rc_per_pic.qp_p = pic->rc[0].qp_inter;
|
||||
min_qp = pic->rc[0].min_qp ? pic->rc[0].min_qp : 1;
|
||||
@@ -776,7 +776,7 @@ static void radeon_vcn_enc_av1_get_rc_param(struct radeon_encoder *enc,
|
||||
default:
|
||||
enc->enc_pic.rc_session_init.rate_control_method = RENCODE_RATE_CONTROL_METHOD_NONE;
|
||||
}
|
||||
enc->enc_pic.rc_per_pic.max_au_size = pic->rc[0].max_au_size;
|
||||
enc->enc_pic.rc_per_pic.max_au_size_obs = pic->rc[0].max_au_size;
|
||||
enc->enc_pic.rc_per_pic.max_au_size_i = pic->rc[0].max_au_size;
|
||||
enc->enc_pic.rc_per_pic.max_au_size_p = pic->rc[0].max_au_size;
|
||||
}
|
||||
|
||||
@@ -1190,11 +1190,13 @@ static void radeon_enc_intra_refresh(struct radeon_encoder *enc)
|
||||
|
||||
static void radeon_enc_rc_per_pic(struct radeon_encoder *enc)
|
||||
{
|
||||
fprintf(stderr, "Warning: Obsoleted rate control is being used due to outdated VCN firmware on system.\n");
|
||||
fprintf(stderr, "Updating VCN firmware is highly recommended.\n");
|
||||
RADEON_ENC_BEGIN(enc->cmd.rc_per_pic);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_per_pic.qp);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_per_pic.min_qp_app);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_per_pic.max_qp_app);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_per_pic.max_au_size);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_per_pic.qp_obs);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_per_pic.min_qp_app_obs);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_per_pic.max_qp_app_obs);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_per_pic.max_au_size_obs);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_per_pic.enabled_filler_data);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_per_pic.skip_frame_enable);
|
||||
RADEON_ENC_CS(enc->enc_pic.rc_per_pic.enforce_hrd);
|
||||
|
||||
Reference in New Issue
Block a user