radeon/vce: use util function to get h264 profile idc
[mesa.git] / src / gallium / drivers / radeon / radeon_vce.h
index aa43823acea61b33be77459e824fdc7ba260e9de..cf625e6fed7b3fa4269886aceb2248efe0142a50 100644 (file)
  *
  **************************************************************************/
 
-/*
- * Authors:
- *      Christian König <christian.koenig@amd.com>
- *
- */
-
 #ifndef RADEON_VCE_H
 #define RADEON_VCE_H
 
 #define RVCE_BEGIN(cmd) { \
        uint32_t *begin = &enc->cs->current.buf[enc->cs->current.cdw++]; \
        RVCE_CS(cmd)
-#define RVCE_READ(buf, domain, off) rvce_add_buffer(enc, (buf), RADEON_USAGE_READ, (domain), (off))
-#define RVCE_WRITE(buf, domain, off) rvce_add_buffer(enc, (buf), RADEON_USAGE_WRITE, (domain), (off))
-#define RVCE_READWRITE(buf, domain, off) rvce_add_buffer(enc, (buf), RADEON_USAGE_READWRITE, (domain), (off))
+#define RVCE_READ(buf, domain, off) si_vce_add_buffer(enc, (buf), RADEON_USAGE_READ, (domain), (off))
+#define RVCE_WRITE(buf, domain, off) si_vce_add_buffer(enc, (buf), RADEON_USAGE_WRITE, (domain), (off))
+#define RVCE_READWRITE(buf, domain, off) si_vce_add_buffer(enc, (buf), RADEON_USAGE_READWRITE, (domain), (off))
 #define RVCE_END() *begin = (&enc->cs->current.buf[enc->cs->current.cdw] - begin) * 4; }
 
 #define RVCE_MAX_BITSTREAM_OUTPUT_ROW_SIZE (4096 * 16 * 2.5)
 #define RVCE_MAX_AUX_BUFFER_NUM 4
 
-struct r600_common_screen;
+struct si_screen;
 
 /* driver dependent callback */
 typedef void (*rvce_get_buffer)(struct pipe_resource *resource,
@@ -387,7 +381,7 @@ struct rvce_encoder {
 
        struct pipe_screen              *screen;
        struct radeon_winsys*           ws;
-       struct radeon_winsys_cs*        cs;
+       struct radeon_cmdbuf*   cs;
 
        rvce_get_buffer                 get_buffer;
 
@@ -405,6 +399,7 @@ struct rvce_encoder {
        struct rvid_buffer              *fb;
        struct rvid_buffer              cpb;
        struct pipe_h264_enc_picture_desc pic;
+       struct rvce_h264_enc_pic        enc_pic;
 
        unsigned                        task_info_idx;
        unsigned                        bs_idx;
@@ -416,30 +411,46 @@ struct rvce_encoder {
 };
 
 /* CPB handling functions */
-struct rvce_cpb_slot *current_slot(struct rvce_encoder *enc);
-struct rvce_cpb_slot *l0_slot(struct rvce_encoder *enc);
-struct rvce_cpb_slot *l1_slot(struct rvce_encoder *enc);
-void rvce_frame_offset(struct rvce_encoder *enc, struct rvce_cpb_slot *slot,
-                      signed *luma_offset, signed *chroma_offset);
+struct rvce_cpb_slot *si_current_slot(struct rvce_encoder *enc);
+struct rvce_cpb_slot *si_l0_slot(struct rvce_encoder *enc);
+struct rvce_cpb_slot *si_l1_slot(struct rvce_encoder *enc);
+void si_vce_frame_offset(struct rvce_encoder *enc, struct rvce_cpb_slot *slot,
+                        signed *luma_offset, signed *chroma_offset);
 
-struct pipe_video_codec *rvce_create_encoder(struct pipe_context *context,
-                                            const struct pipe_video_codec *templat,
-                                            struct radeon_winsys* ws,
-                                            rvce_get_buffer get_buffer);
+struct pipe_video_codec *si_vce_create_encoder(struct pipe_context *context,
+                                              const struct pipe_video_codec *templat,
+                                              struct radeon_winsys* ws,
+                                              rvce_get_buffer get_buffer);
 
-bool rvce_is_fw_version_supported(struct r600_common_screen *rscreen);
+bool si_vce_is_fw_version_supported(struct si_screen *sscreen);
 
-void rvce_add_buffer(struct rvce_encoder *enc, struct pb_buffer *buf,
-                    enum radeon_bo_usage usage, enum radeon_bo_domain domain,
-                    signed offset);
+void si_vce_add_buffer(struct rvce_encoder *enc, struct pb_buffer *buf,
+                      enum radeon_bo_usage usage, enum radeon_bo_domain domain,
+                      signed offset);
 
 /* init vce fw 40.2.2 specific callbacks */
-void radeon_vce_40_2_2_init(struct rvce_encoder *enc);
+void si_vce_40_2_2_init(struct rvce_encoder *enc);
 
 /* init vce fw 50 specific callbacks */
-void radeon_vce_50_init(struct rvce_encoder *enc);
+void si_vce_50_init(struct rvce_encoder *enc);
 
 /* init vce fw 52 specific callbacks */
-void radeon_vce_52_init(struct rvce_encoder *enc);
+void si_vce_52_init(struct rvce_encoder *enc);
+
+/* version specific function for getting parameters */
+void (*si_get_pic_param)(struct rvce_encoder *enc,
+                      struct pipe_h264_enc_picture_desc *pic);
+
+/* get parameters for vce 40.2.2 */
+void si_vce_40_2_2_get_param(struct rvce_encoder *enc,
+                            struct pipe_h264_enc_picture_desc *pic);
+
+/* get parameters for vce 50 */
+void si_vce_50_get_param(struct rvce_encoder *enc,
+                        struct pipe_h264_enc_picture_desc *pic);
+
+/* get parameters for vce 52 */
+void si_vce_52_get_param(struct rvce_encoder *enc,
+                        struct pipe_h264_enc_picture_desc *pic);
 
 #endif