radeon/vce: Move global function pointer si_get_pic_param to local encoder structure

Multi gpu use case broken when the function was global

Reviewed-by: Leo Liu <leo.liu@amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3731>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3731>
This commit is contained in:
Veerabadhran 2020-02-05 19:33:01 +05:30 committed by Veerabadhran G
parent 286141197d
commit 461c40e0fd
5 changed files with 6 additions and 9 deletions

View file

@ -48,10 +48,6 @@
#define FW_52_8_3 ((52 << 24) | (8 << 16) | (3 << 8))
#define FW_53 (53 << 24)
/* version specific function for getting parameters */
static void (*si_get_pic_param)(struct rvce_encoder *enc,
struct pipe_h264_enc_picture_desc *pic) = NULL;
/**
* flush commands to the hardware
*/
@ -276,7 +272,7 @@ static void rvce_begin_frame(struct pipe_video_codec *encoder,
enc->pic.rate_ctrl.target_bitrate != pic->rate_ctrl.target_bitrate;
enc->pic = *pic;
si_get_pic_param(enc, pic);
enc->si_get_pic_param(enc, pic);
enc->get_buffer(vid_buf->resources[0], &enc->handle, &enc->luma);
enc->get_buffer(vid_buf->resources[1], NULL, &enc->chroma);
@ -494,7 +490,6 @@ struct pipe_video_codec *si_vce_create_encoder(struct pipe_context *context,
switch (sscreen->info.vce_fw_version) {
case FW_40_2_2:
si_vce_40_2_2_init(enc);
si_get_pic_param = si_vce_40_2_2_get_param;
break;
case FW_50_0_1:
@ -502,20 +497,17 @@ struct pipe_video_codec *si_vce_create_encoder(struct pipe_context *context,
case FW_50_10_2:
case FW_50_17_3:
si_vce_50_init(enc);
si_get_pic_param = si_vce_50_get_param;
break;
case FW_52_0_3:
case FW_52_4_3:
case FW_52_8_3:
si_vce_52_init(enc);
si_get_pic_param = si_vce_52_get_param;
break;
default:
if ((sscreen->info.vce_fw_version & (0xff << 24)) >= FW_53) {
si_vce_52_init(enc);
si_get_pic_param = si_vce_52_get_param;
} else
goto error;
}

View file

@ -376,6 +376,8 @@ struct rvce_encoder {
void (*task_info)(struct rvce_encoder *enc, uint32_t op,
uint32_t dep, uint32_t fb_idx,
uint32_t ring_idx);
void (*si_get_pic_param)(struct rvce_encoder *enc,
struct pipe_h264_enc_picture_desc *pic);
unsigned stream_handle;

View file

@ -443,4 +443,5 @@ void si_vce_40_2_2_init(struct rvce_encoder *enc)
enc->config = config;
enc->encode = encode;
enc->destroy = destroy;
enc->si_get_pic_param = si_vce_40_2_2_get_param;
}

View file

@ -238,4 +238,5 @@ void si_vce_50_init(struct rvce_encoder *enc)
/* only the two below are different */
enc->rate_control = rate_control;
enc->encode = encode;
enc->si_get_pic_param = si_vce_50_get_param;
}

View file

@ -667,4 +667,5 @@ void si_vce_52_init(struct rvce_encoder *enc)
enc->config = config;
enc->encode = encode;
enc->destroy = destroy;
enc->si_get_pic_param = si_vce_52_get_param;
}