[Mesa-dev] [PATCH 2/3] radeon/vce: implement non-referenced frames

Leo Liu leo.liu at amd.com
Tue May 27 07:12:01 PDT 2014


Signed-off-by: Leo Liu <leo.liu at amd.com>
---
 src/gallium/drivers/radeon/radeon_vce.c        | 6 ++++--
 src/gallium/drivers/radeon/radeon_vce_40_2_2.c | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeon/radeon_vce.c b/src/gallium/drivers/radeon/radeon_vce.c
index 222f32e..81e62d3 100644
--- a/src/gallium/drivers/radeon/radeon_vce.c
+++ b/src/gallium/drivers/radeon/radeon_vce.c
@@ -231,11 +231,13 @@ static void rvce_end_frame(struct pipe_video_codec *encoder,
 	flush(enc);
 
 	/* update the CPB backtrack with the just encoded frame */
-	LIST_DEL(&slot->list);
 	slot->picture_type = enc->pic.picture_type;
 	slot->frame_num = enc->pic.frame_num;
 	slot->pic_order_cnt = enc->pic.pic_order_cnt;
-	LIST_ADD(&slot->list, &enc->cpb_slots);
+	if (!enc->pic.not_referenced) {
+		LIST_DEL(&slot->list);
+		LIST_ADD(&slot->list, &enc->cpb_slots);
+	}
 }
 
 static void rvce_get_feedback(struct pipe_video_codec *encoder,
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 3b67b31..3010c5b 100644
--- a/src/gallium/drivers/radeon/radeon_vce_40_2_2.c
+++ b/src/gallium/drivers/radeon/radeon_vce_40_2_2.c
@@ -283,7 +283,7 @@ static void encode(struct rvce_encoder *enc)
 	RVCE_CS(enc->pic.picture_type == PIPE_H264_ENC_PICTURE_TYPE_IDR); // encIdrFlag
 	RVCE_CS(0x00000000); // encIdrPicId
 	RVCE_CS(0x00000000); // encMGSKeyPic
-	RVCE_CS(0x00000001); // encReferenceFlag
+	RVCE_CS(!enc->pic.not_referenced); // encReferenceFlag
 	RVCE_CS(0x00000000); // encTemporalLayerIndex
 	RVCE_CS(0x00000000); // num_ref_idx_active_override_flag
 	RVCE_CS(0x00000000); // num_ref_idx_l0_active_minus1
-- 
1.9.1



More information about the mesa-dev mailing list