radeon/vcn: add encode get feedback
authorBoyuan Zhang <boyuan.zhang@amd.com>
Tue, 7 Nov 2017 21:21:21 +0000 (16:21 -0500)
committerLeo Liu <leo.liu@amd.com>
Fri, 17 Nov 2017 17:25:47 +0000 (12:25 -0500)
Add implementation for get_feedback interface for vcn encode.

Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
src/gallium/drivers/radeon/radeon_vcn_enc.c

index 219f8706f50905cf9b41813d80231668b7c89316..de485cf05e5999c4f47b5f4ea34c7b7523d7e8b4 100644 (file)
@@ -200,7 +200,20 @@ static void radeon_enc_destroy(struct pipe_video_codec *encoder)
 static void radeon_enc_get_feedback(struct pipe_video_codec *encoder,
                                                          void *feedback, unsigned *size)
 {
-       /* TODO*/
+       struct radeon_encoder *enc = (struct radeon_encoder*)encoder;
+       struct rvid_buffer *fb = feedback;
+
+       if (size) {
+               uint32_t *ptr = enc->ws->buffer_map(fb->res->buf, enc->cs, PIPE_TRANSFER_READ_WRITE);
+               if (ptr[1])
+                       *size = ptr[6];
+               else
+                       *size = 0;
+               enc->ws->buffer_unmap(fb->res->buf);
+       }
+
+       si_vid_destroy_buffer(fb);
+       FREE(fb);
 }
 
 struct pipe_video_codec *radeon_create_encoder(struct pipe_context *context,