diff options
author | Veerabadhran <[email protected]> | 2020-02-05 19:33:01 +0530 |
---|---|---|
committer | Veerabadhran G <[email protected]> | 2020-02-12 13:43:35 +0000 |
commit | 461c40e0fd5d67dc8155ae4f6c53ddd9acd995b1 (patch) | |
tree | b2a32b200acdb50c5f1b58307ff231f350c2b890 /src/gallium | |
parent | 286141197dac9fc6765da3fa8bba571840bfa61c (diff) |
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 <[email protected]>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3731>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3731>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/radeon/radeon_vce.c | 10 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/radeon_vce.h | 2 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/radeon_vce_40_2_2.c | 1 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/radeon_vce_50.c | 1 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/radeon_vce_52.c | 1 |
5 files changed, 6 insertions, 9 deletions
diff --git a/src/gallium/drivers/radeon/radeon_vce.c b/src/gallium/drivers/radeon/radeon_vce.c index 3e909d8b318..521dfb40a67 100644 --- a/src/gallium/drivers/radeon/radeon_vce.c +++ b/src/gallium/drivers/radeon/radeon_vce.c @@ -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; } diff --git a/src/gallium/drivers/radeon/radeon_vce.h b/src/gallium/drivers/radeon/radeon_vce.h index b5cfe178061..bb2567ed3be 100644 --- a/src/gallium/drivers/radeon/radeon_vce.h +++ b/src/gallium/drivers/radeon/radeon_vce.h @@ -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; diff --git a/src/gallium/drivers/radeon/radeon_vce_40_2_2.c b/src/gallium/drivers/radeon/radeon_vce_40_2_2.c index e17468c9097..f2d11d49c6f 100644 --- a/src/gallium/drivers/radeon/radeon_vce_40_2_2.c +++ b/src/gallium/drivers/radeon/radeon_vce_40_2_2.c @@ -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; } diff --git a/src/gallium/drivers/radeon/radeon_vce_50.c b/src/gallium/drivers/radeon/radeon_vce_50.c index f4cbc9bb82b..e480ecb749f 100644 --- a/src/gallium/drivers/radeon/radeon_vce_50.c +++ b/src/gallium/drivers/radeon/radeon_vce_50.c @@ -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; } diff --git a/src/gallium/drivers/radeon/radeon_vce_52.c b/src/gallium/drivers/radeon/radeon_vce_52.c index 364da4dbe24..bb97cdfe5c3 100644 --- a/src/gallium/drivers/radeon/radeon_vce_52.c +++ b/src/gallium/drivers/radeon/radeon_vce_52.c @@ -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; } |