aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorVeerabadhran <[email protected]>2020-02-05 19:33:01 +0530
committerVeerabadhran G <[email protected]>2020-02-12 13:43:35 +0000
commit461c40e0fd5d67dc8155ae4f6c53ddd9acd995b1 (patch)
treeb2a32b200acdb50c5f1b58307ff231f350c2b890 /src/gallium
parent286141197dac9fc6765da3fa8bba571840bfa61c (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.c10
-rw-r--r--src/gallium/drivers/radeon/radeon_vce.h2
-rw-r--r--src/gallium/drivers/radeon/radeon_vce_40_2_2.c1
-rw-r--r--src/gallium/drivers/radeon/radeon_vce_50.c1
-rw-r--r--src/gallium/drivers/radeon/radeon_vce_52.c1
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;
}