summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeon/radeon_vce.c
diff options
context:
space:
mode:
authorLeo Liu <leo.liu@amd.com>2015-06-01 13:48:24 -0400
committerMarek Olšák <marek.olsak@amd.com>2015-08-14 15:02:30 +0200
commit57fabe9f3a21a2a370284575833637d37e987cb5 (patch)
tree61d5ba18568427336ac895b4b70f6b2e08c2f6a1 /src/gallium/drivers/radeon/radeon_vce.c
parente91a67abfa5112acd481ee4a3f07c03f6ff2708c (diff)
downloadexternal_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.c21
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);
}