diff options
author | Leo Liu <leo.liu@amd.com> | 2015-06-01 13:48:24 -0400 |
---|---|---|
committer | Marek Olšák <marek.olsak@amd.com> | 2015-08-14 15:02:30 +0200 |
commit | 57fabe9f3a21a2a370284575833637d37e987cb5 (patch) | |
tree | 61d5ba18568427336ac895b4b70f6b2e08c2f6a1 /src/gallium/drivers/radeon/radeon_vce.c | |
parent | e91a67abfa5112acd481ee4a3f07c03f6ff2708c (diff) | |
download | external_mesa3d-57fabe9f3a21a2a370284575833637d37e987cb5.zip external_mesa3d-57fabe9f3a21a2a370284575833637d37e987cb5.tar.gz external_mesa3d-57fabe9f3a21a2a370284575833637d37e987cb5.tar.bz2 |
radeon/vce: add config task and put task info into encoder v2
The config task has own task ID, extract the configuration functions
into config task.
v2 (chk): calculate offset automatically
Signed-off-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'src/gallium/drivers/radeon/radeon_vce.c')
-rw-r--r-- | src/gallium/drivers/radeon/radeon_vce.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/gallium/drivers/radeon/radeon_vce.c b/src/gallium/drivers/radeon/radeon_vce.c index 644958a..e53ef3f 100644 --- a/src/gallium/drivers/radeon/radeon_vce.c +++ b/src/gallium/drivers/radeon/radeon_vce.c @@ -56,6 +56,7 @@ static void flush(struct rvce_encoder *enc) { enc->ws->cs_flush(enc->cs, RADEON_FLUSH_ASYNC, NULL, 0); + enc->task_info_idx = 0; } #if 0 @@ -280,24 +281,19 @@ static void rvce_begin_frame(struct pipe_video_codec *encoder, enc->fb = &fb; enc->session(enc); enc->create(enc); - enc->rate_control(enc); - need_rate_control = false; - enc->config_extension(enc); - enc->motion_estimation(enc); - enc->rdo(enc); - if (enc->use_vui) - enc->vui(enc); - enc->pic_control(enc); + enc->config(enc); enc->feedback(enc); flush(enc); //dump_feedback(enc, &fb); rvid_destroy_buffer(&fb); + need_rate_control = false; } - enc->session(enc); - - if (need_rate_control) - enc->rate_control(enc); + if (need_rate_control) { + enc->session(enc); + enc->config(enc); + flush(enc); + } } static void rvce_encode_bitstream(struct pipe_video_codec *encoder, @@ -314,6 +310,7 @@ static void rvce_encode_bitstream(struct pipe_video_codec *encoder, RVID_ERR("Can't create feedback buffer.\n"); return; } + enc->session(enc); enc->encode(enc); enc->feedback(enc); } |