amd: update headers to support decode software ring
authorJames Zhu <James.Zhu@amd.com>
Sun, 20 Feb 2022 16:39:45 +0000 (11:39 -0500)
committerMarge Bot <emma+marge@anholt.net>
Tue, 10 May 2022 04:29:55 +0000 (04:29 +0000)
Update headers to support decode software ring.

Signed-off-by: James Zhu <James.Zhu@amd.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16328>

src/amd/common/ac_vcn_dec.h
src/gallium/drivers/radeonsi/radeon_vcn_dec.h

index d520f39..7276275 100644 (file)
    (RDECODE_PKT_REG_J(reg) | RDECODE_PKT_RES_J(0) | RDECODE_PKT_COND_J(cond) |                     \
     RDECODE_PKT_TYPE_J(type))
 
+#define RDECODE_IB_PARAM_DECODE_BUFFER                               (0x00000001)
+#define RDECODE_IB_PARAM_QUERY_BUFFER                                (0x00000002)
+#define RDECODE_IB_PARAM_PREDICATION_BUFFER                          (0x00000003)
+#define RDECODE_IB_PARAM_UMD_64BIT_FENCE                             (0x00000005)
+#define RDECODE_IB_PARAM_UMD_RECORD_TIMESTAMP                        (0x00000006)
+#define RDECODE_IB_PARAM_UMD_REPORT_EVENT_STATUS                     (0x00000007)
+#define RDECODE_IB_PARAM_UMD_COPY_MEMORY                             (0x00000008)
+#define RDECODE_IB_PARAM_UMD_WRITE_MEMORY                            (0x00000009)
+#define RDECODE_IB_PARAM_FEEDBACK_BUFFER                             (0x0000000A)
+
+#define RDECODE_CMDBUF_FLAGS_MSG_BUFFER                              (0x00000001)
+#define RDECODE_CMDBUF_FLAGS_DPB_BUFFER                              (0x00000002)
+#define RDECODE_CMDBUF_FLAGS_BITSTREAM_BUFFER                        (0x00000004)
+#define RDECODE_CMDBUF_FLAGS_DECODING_TARGET_BUFFER                  (0x00000008)
+#define RDECODE_CMDBUF_FLAGS_FEEDBACK_BUFFER                         (0x00000010)
+#define RDECODE_CMDBUF_FLAGS_PICTURE_PARAM_BUFFER                    (0x00000020)
+#define RDECODE_CMDBUF_FLAGS_MB_CONTROL_BUFFER                       (0x00000040)
+#define RDECODE_CMDBUF_FLAGS_IDCT_COEF_BUFFER                        (0x00000080)
+#define RDECODE_CMDBUF_FLAGS_PREEMPT_BUFFER                          (0x00000100)
+#define RDECODE_CMDBUF_FLAGS_IT_SCALING_BUFFER                       (0x00000200)
+#define RDECODE_CMDBUF_FLAGS_SCALER_TARGET_BUFFER                    (0x00000400)
+#define RDECODE_CMDBUF_FLAGS_CONTEXT_BUFFER                          (0x00000800)
+#define RDECODE_CMDBUF_FLAGS_PROB_TBL_BUFFER                         (0x00001000)
+#define RDECODE_CMDBUF_FLAGS_QUERY_BUFFER                            (0x00002000)
+#define RDECODE_CMDBUF_FLAGS_PREDICATION_BUFFER                      (0x00004000)
+#define RDECODE_CMDBUF_FLAGS_SCLR_COEF_BUFFER                        (0x00008000)
+#define RDECODE_CMDBUF_FLAGS_RECORD_TIMESTAMP                        (0x00010000)
+#define RDECODE_CMDBUF_FLAGS_REPORT_EVENT_STATUS                     (0x00020000)
+#define RDECODE_CMDBUF_FLAGS_RESERVED_SIZE_INFO_BUFFER               (0x00040000)
+#define RDECODE_CMDBUF_FLAGS_LUMA_HIST_BUFFER                        (0x00080000)
+#define RDECODE_CMDBUF_FLAGS_SESSION_CONTEXT_BUFFER                  (0x00100000)
+
 #define RDECODE_CMD_MSG_BUFFER                              0x00000000
 #define RDECODE_CMD_DPB_BUFFER                              0x00000001
 #define RDECODE_CMD_DECODING_TARGET_BUFFER                  0x00000002
 #define RDECODE_FRAME_HDR_INFO_AV1_DISABLE_CDF_UPDATE_MASK            (0x00000002)
 #define RDECODE_FRAME_HDR_INFO_AV1_SHOW_FRAME_MASK                    (0x00000001)
 
+typedef struct rvcn_decode_buffer_s {
+   unsigned int valid_buf_flag;
+   unsigned int msg_buffer_address_hi;
+   unsigned int msg_buffer_address_lo;
+   unsigned int dpb_buffer_address_hi;
+   unsigned int dpb_buffer_address_lo;
+   unsigned int target_buffer_address_hi;
+   unsigned int target_buffer_address_lo;
+   unsigned int session_contex_buffer_address_hi;
+   unsigned int session_contex_buffer_address_lo;
+   unsigned int bitstream_buffer_address_hi;
+   unsigned int bitstream_buffer_address_lo;
+   unsigned int context_buffer_address_hi;
+   unsigned int context_buffer_address_lo;
+   unsigned int feedback_buffer_address_hi;
+   unsigned int feedback_buffer_address_lo;
+   unsigned int luma_hist_buffer_address_hi;
+   unsigned int luma_hist_buffer_address_lo;
+   unsigned int prob_tbl_buffer_address_hi;
+   unsigned int prob_tbl_buffer_address_lo;
+   unsigned int sclr_coeff_buffer_address_hi;
+   unsigned int sclr_coeff_buffer_address_lo;
+   unsigned int it_sclr_table_buffer_address_hi;
+   unsigned int it_sclr_table_buffer_address_lo;
+   unsigned int sclr_target_buffer_address_hi;
+   unsigned int sclr_target_buffer_address_lo;
+   unsigned int reserved_size_info_buffer_address_hi;
+   unsigned int reserved_size_info_buffer_address_lo;
+   unsigned int mpeg2_pic_param_buffer_address_hi;
+   unsigned int mpeg2_pic_param_buffer_address_lo;
+   unsigned int mpeg2_mb_control_buffer_address_hi;
+   unsigned int mpeg2_mb_control_buffer_address_lo;
+   unsigned int mpeg2_idct_coeff_buffer_address_hi;
+   unsigned int mpeg2_idct_coeff_buffer_address_lo;
+} rvcn_decode_buffer_t;
+
+typedef struct rvcn_decode_ib_package_s {
+   unsigned int package_size;
+   unsigned int package_type;
+} rvcn_decode_ib_package_t;
+
 typedef struct rvcn_dec_message_index_s {
    unsigned int message_id;
    unsigned int offset;
index 0299e60..b436083 100644 (file)
@@ -61,6 +61,8 @@ struct radeon_decoder {
    uint8_t *it;
    uint8_t *probs;
    void *bs_ptr;
+   rvcn_decode_buffer_t *decode_buffer;
+   bool vcn_dec_sw_ring;
 
    struct rvid_buffer msg_fb_it_probs_buffers[NUM_BUFFERS];
    struct rvid_buffer bs_buffers[NUM_BUFFERS];