1 /************************************************************************** 2 * 3 * Copyright 2017 Advanced Micro Devices, Inc. 4 * 5 * SPDX-License-Identifier: MIT 6 * 7 **************************************************************************/ 8 9 #ifndef _AC_VCN_DEC_H 10 #define _AC_VCN_DEC_H 11 12 /* VCN programming information shared between gallium/vulkan */ 13 #define RDECODE_PKT_TYPE_S(x) (((unsigned)(x)&0x3) << 30) 14 #define RDECODE_PKT_TYPE_G(x) (((x) >> 30) & 0x3) 15 #define RDECODE_PKT_TYPE_C 0x3FFFFFFF 16 #define RDECODE_PKT_COUNT_S(x) (((unsigned)(x)&0x3FFF) << 16) 17 #define RDECODE_PKT_COUNT_G(x) (((x) >> 16) & 0x3FFF) 18 #define RDECODE_PKT_COUNT_C 0xC000FFFF 19 #define RDECODE_PKT0_BASE_INDEX_S(x) (((unsigned)(x)&0xFFFF) << 0) 20 #define RDECODE_PKT0_BASE_INDEX_G(x) (((x) >> 0) & 0xFFFF) 21 #define RDECODE_PKT0_BASE_INDEX_C 0xFFFF0000 22 #define RDECODE_PKT0(index, count) \ 23 (RDECODE_PKT_TYPE_S(0) | RDECODE_PKT0_BASE_INDEX_S(index) | RDECODE_PKT_COUNT_S(count)) 24 25 #define RDECODE_PKT2() (RDECODE_PKT_TYPE_S(2)) 26 27 #define RDECODE_PKT_REG_J(x) ((unsigned)(x)&0x3FFFF) 28 #define RDECODE_PKT_RES_J(x) (((unsigned)(x)&0x3F) << 18) 29 #define RDECODE_PKT_COND_J(x) (((unsigned)(x)&0xF) << 24) 30 #define RDECODE_PKT_TYPE_J(x) (((unsigned)(x)&0xF) << 28) 31 #define RDECODE_PKTJ(reg, cond, type) \ 32 (RDECODE_PKT_REG_J(reg) | RDECODE_PKT_RES_J(0) | RDECODE_PKT_COND_J(cond) | \ 33 RDECODE_PKT_TYPE_J(type)) 34 35 #define RDECODE_IB_PARAM_DECODE_BUFFER (0x00000001) 36 #define RDECODE_IB_PARAM_QUERY_BUFFER (0x00000002) 37 #define RDECODE_IB_PARAM_PREDICATION_BUFFER (0x00000003) 38 #define RDECODE_IB_PARAM_UMD_64BIT_FENCE (0x00000005) 39 #define RDECODE_IB_PARAM_UMD_RECORD_TIMESTAMP (0x00000006) 40 #define RDECODE_IB_PARAM_UMD_REPORT_EVENT_STATUS (0x00000007) 41 #define RDECODE_IB_PARAM_UMD_COPY_MEMORY (0x00000008) 42 #define RDECODE_IB_PARAM_UMD_WRITE_MEMORY (0x00000009) 43 #define RDECODE_IB_PARAM_FEEDBACK_BUFFER (0x0000000A) 44 45 #define RDECODE_CMDBUF_FLAGS_MSG_BUFFER (0x00000001) 46 #define RDECODE_CMDBUF_FLAGS_DPB_BUFFER (0x00000002) 47 #define RDECODE_CMDBUF_FLAGS_BITSTREAM_BUFFER (0x00000004) 48 #define RDECODE_CMDBUF_FLAGS_DECODING_TARGET_BUFFER (0x00000008) 49 #define RDECODE_CMDBUF_FLAGS_FEEDBACK_BUFFER (0x00000010) 50 #define RDECODE_CMDBUF_FLAGS_PICTURE_PARAM_BUFFER (0x00000020) 51 #define RDECODE_CMDBUF_FLAGS_MB_CONTROL_BUFFER (0x00000040) 52 #define RDECODE_CMDBUF_FLAGS_IDCT_COEF_BUFFER (0x00000080) 53 #define RDECODE_CMDBUF_FLAGS_PREEMPT_BUFFER (0x00000100) 54 #define RDECODE_CMDBUF_FLAGS_IT_SCALING_BUFFER (0x00000200) 55 #define RDECODE_CMDBUF_FLAGS_SCALER_TARGET_BUFFER (0x00000400) 56 #define RDECODE_CMDBUF_FLAGS_CONTEXT_BUFFER (0x00000800) 57 #define RDECODE_CMDBUF_FLAGS_PROB_TBL_BUFFER (0x00001000) 58 #define RDECODE_CMDBUF_FLAGS_QUERY_BUFFER (0x00002000) 59 #define RDECODE_CMDBUF_FLAGS_PREDICATION_BUFFER (0x00004000) 60 #define RDECODE_CMDBUF_FLAGS_SCLR_COEF_BUFFER (0x00008000) 61 #define RDECODE_CMDBUF_FLAGS_RECORD_TIMESTAMP (0x00010000) 62 #define RDECODE_CMDBUF_FLAGS_REPORT_EVENT_STATUS (0x00020000) 63 #define RDECODE_CMDBUF_FLAGS_RESERVED_SIZE_INFO_BUFFER (0x00040000) 64 #define RDECODE_CMDBUF_FLAGS_LUMA_HIST_BUFFER (0x00080000) 65 #define RDECODE_CMDBUF_FLAGS_SESSION_CONTEXT_BUFFER (0x00100000) 66 67 #define RDECODE_CMD_MSG_BUFFER 0x00000000 68 #define RDECODE_CMD_DPB_BUFFER 0x00000001 69 #define RDECODE_CMD_DECODING_TARGET_BUFFER 0x00000002 70 #define RDECODE_CMD_FEEDBACK_BUFFER 0x00000003 71 #define RDECODE_CMD_PROB_TBL_BUFFER 0x00000004 72 #define RDECODE_CMD_SESSION_CONTEXT_BUFFER 0x00000005 73 #define RDECODE_CMD_BITSTREAM_BUFFER 0x00000100 74 #define RDECODE_CMD_IT_SCALING_TABLE_BUFFER 0x00000204 75 #define RDECODE_CMD_CONTEXT_BUFFER 0x00000206 76 #define RDECODE_CMD_WRITE_MEMORY 0x00000800 77 78 #define RDECODE_MSG_CREATE 0x00000000 79 #define RDECODE_MSG_DECODE 0x00000001 80 #define RDECODE_MSG_DESTROY 0x00000002 81 82 #define RDECODE_CODEC_H264 0x00000000 83 #define RDECODE_CODEC_VC1 0x00000001 84 #define RDECODE_CODEC_MPEG2_VLD 0x00000003 85 #define RDECODE_CODEC_MPEG4 0x00000004 86 #define RDECODE_CODEC_H264_PERF 0x00000007 87 #define RDECODE_CODEC_JPEG 0x00000008 88 #define RDECODE_CODEC_H265 0x00000010 89 #define RDECODE_CODEC_VP9 0x00000011 90 #define RDECODE_CODEC_AV1 0x00000013 91 #define RDECODE_MESSAGE_HEVC_DIRECT_REF_LIST 0x00000015 92 93 #define RDECODE_ARRAY_MODE_LINEAR 0x00000000 94 #define RDECODE_ARRAY_MODE_MACRO_LINEAR_MICRO_TILED 0x00000001 95 #define RDECODE_ARRAY_MODE_1D_THIN 0x00000002 96 #define RDECODE_ARRAY_MODE_2D_THIN 0x00000004 97 #define RDECODE_ARRAY_MODE_MACRO_TILED_MICRO_LINEAR 0x00000004 98 #define RDECODE_ARRAY_MODE_MACRO_TILED_MICRO_TILED 0x00000005 99 100 #define RDECODE_ARRAY_MODE_ADDRLIB_SEL_GFX10 0x00000000 101 #define RDECODE_ARRAY_MODE_ADDRLIB_SEL_GFX9 0x00000001 102 #define RDECODE_ARRAY_MODE_ADDRLIB_SEL_GFX8 0x00000002 103 #define RDECODE_ARRAY_MODE_ADDRLIB_SEL_GFX11 0x00000003 104 105 #define RDECODE_H264_PROFILE_BASELINE 0x00000000 106 #define RDECODE_H264_PROFILE_MAIN 0x00000001 107 #define RDECODE_H264_PROFILE_HIGH 0x00000002 108 #define RDECODE_H264_PROFILE_STEREO_HIGH 0x00000003 109 #define RDECODE_H264_PROFILE_MVC 0x00000004 110 111 #define RDECODE_VC1_PROFILE_SIMPLE 0x00000000 112 #define RDECODE_VC1_PROFILE_MAIN 0x00000001 113 #define RDECODE_VC1_PROFILE_ADVANCED 0x00000002 114 115 #define RDECODE_SW_MODE_LINEAR 0x00000000 116 /* for legacy VCN generations */ 117 #define RDECODE_256B_S 0x00000001 118 #define RDECODE_256B_D 0x00000002 119 #define RDECODE_4KB_S 0x00000005 120 #define RDECODE_4KB_D 0x00000006 121 #define RDECODE_64KB_S 0x00000009 122 #define RDECODE_64KB_D 0x0000000A 123 #define RDECODE_4KB_S_X 0x00000015 124 #define RDECODE_4KB_D_X 0x00000016 125 #define RDECODE_64KB_S_X 0x00000019 126 #define RDECODE_64KB_D_X 0x0000001A 127 /* for VCN5 */ 128 #define RDECODE_VCN5_256B_D 0x00000001 129 130 #define RDECODE_TILE_LINEAR 0x00000000 131 #define RDECODE_TILE_8X4 0x00000001 132 #define RDECODE_TILE_8X8 0x00000002 133 #define RDECODE_TILE_32AS8 0x00000003 134 135 #define RDECODE_MESSAGE_NOT_SUPPORTED 0x00000000 136 #define RDECODE_MESSAGE_CREATE 0x00000001 137 #define RDECODE_MESSAGE_DECODE 0x00000002 138 #define RDECODE_MESSAGE_DRM 0x00000003 139 #define RDECODE_MESSAGE_AVC 0x00000006 140 #define RDECODE_MESSAGE_VC1 0x00000007 141 #define RDECODE_MESSAGE_MPEG2_VLD 0x0000000A 142 #define RDECODE_MESSAGE_MPEG4_ASP_VLD 0x0000000B 143 #define RDECODE_MESSAGE_HEVC 0x0000000D 144 #define RDECODE_MESSAGE_VP9 0x0000000E 145 #define RDECODE_MESSAGE_DYNAMIC_DPB 0x00000010 146 #define RDECODE_MESSAGE_AV1 0x00000011 147 148 #define RDECODE_FEEDBACK_PROFILING 0x00000001 149 150 #define RDECODE_SPS_INFO_H264_EXTENSION_SUPPORT_FLAG_SHIFT 7 151 152 #define RDECODE_VP9_PROBS_DATA_SIZE 2304 153 154 /* *** decode flags *** */ 155 #define RDECODE_FLAGS_USE_DYNAMIC_DPB_MASK 0x00000001 156 #define RDECODE_FLAGS_USE_PAL_MASK 0x00000008 157 #define RDECODE_FLAGS_DPB_RESIZE_MASK 0x00000100 158 159 #define mmUVD_JPEG_CNTL 0x0200 160 #define mmUVD_JPEG_CNTL_BASE_IDX 1 161 #define mmUVD_JPEG_RB_BASE 0x0201 162 #define mmUVD_JPEG_RB_BASE_BASE_IDX 1 163 #define mmUVD_JPEG_RB_WPTR 0x0202 164 #define mmUVD_JPEG_RB_WPTR_BASE_IDX 1 165 #define mmUVD_JPEG_RB_RPTR 0x0203 166 #define mmUVD_JPEG_RB_RPTR_BASE_IDX 1 167 #define mmUVD_JPEG_RB_SIZE 0x0204 168 #define mmUVD_JPEG_RB_SIZE_BASE_IDX 1 169 #define mmUVD_JPEG_TIER_CNTL2 0x021a 170 #define mmUVD_JPEG_TIER_CNTL2_BASE_IDX 1 171 #define mmUVD_JPEG_UV_TILING_CTRL 0x021c 172 #define mmUVD_JPEG_UV_TILING_CTRL_BASE_IDX 1 173 #define mmUVD_JPEG_TILING_CTRL 0x021e 174 #define mmUVD_JPEG_TILING_CTRL_BASE_IDX 1 175 #define mmUVD_JPEG_OUTBUF_RPTR 0x0220 176 #define mmUVD_JPEG_OUTBUF_RPTR_BASE_IDX 1 177 #define mmUVD_JPEG_OUTBUF_WPTR 0x0221 178 #define mmUVD_JPEG_OUTBUF_WPTR_BASE_IDX 1 179 #define mmUVD_JPEG_PITCH 0x0222 180 #define mmUVD_JPEG_PITCH_BASE_IDX 1 181 #define mmUVD_JPEG_INT_EN 0x0229 182 #define mmUVD_JPEG_INT_EN_BASE_IDX 1 183 #define mmUVD_JPEG_UV_PITCH 0x022b 184 #define mmUVD_JPEG_UV_PITCH_BASE_IDX 1 185 #define mmUVD_JPEG_INDEX 0x023e 186 #define mmUVD_JPEG_INDEX_BASE_IDX 1 187 #define mmUVD_JPEG_DATA 0x023f 188 #define mmUVD_JPEG_DATA_BASE_IDX 1 189 #define mmUVD_LMI_JPEG_WRITE_64BIT_BAR_HIGH 0x0438 190 #define mmUVD_LMI_JPEG_WRITE_64BIT_BAR_HIGH_BASE_IDX 1 191 #define mmUVD_LMI_JPEG_WRITE_64BIT_BAR_LOW 0x0439 192 #define mmUVD_LMI_JPEG_WRITE_64BIT_BAR_LOW_BASE_IDX 1 193 #define mmUVD_LMI_JPEG_READ_64BIT_BAR_HIGH 0x045a 194 #define mmUVD_LMI_JPEG_READ_64BIT_BAR_HIGH_BASE_IDX 1 195 #define mmUVD_LMI_JPEG_READ_64BIT_BAR_LOW 0x045b 196 #define mmUVD_LMI_JPEG_READ_64BIT_BAR_LOW_BASE_IDX 1 197 #define mmUVD_CTX_INDEX 0x0528 198 #define mmUVD_CTX_INDEX_BASE_IDX 1 199 #define mmUVD_CTX_DATA 0x0529 200 #define mmUVD_CTX_DATA_BASE_IDX 1 201 #define mmUVD_SOFT_RESET 0x05a0 202 #define mmUVD_SOFT_RESET_BASE_IDX 1 203 204 #define vcnipUVD_JPEG_DEC_SOFT_RST 0x402f 205 #define vcnipUVD_JRBC_IB_COND_RD_TIMER 0x408e 206 #define vcnipUVD_JRBC_IB_REF_DATA 0x408f 207 #define vcnipUVD_LMI_JPEG_READ_64BIT_BAR_HIGH 0x40e1 208 #define vcnipUVD_LMI_JPEG_READ_64BIT_BAR_LOW 0x40e0 209 #define vcnipUVD_JPEG_RB_BASE 0x4001 210 #define vcnipUVD_JPEG_RB_SIZE 0x4004 211 #define vcnipUVD_JPEG_RB_WPTR 0x4002 212 #define vcnipUVD_JPEG_PITCH 0x401f 213 #define vcnipUVD_JPEG_UV_PITCH 0x4020 214 #define vcnipJPEG_DEC_ADDR_MODE 0x4027 215 #define vcnipJPEG_DEC_Y_GFX10_TILING_SURFACE 0x4024 216 #define vcnipJPEG_DEC_UV_GFX10_TILING_SURFACE 0x4025 217 #define vcnipUVD_LMI_JPEG_WRITE_64BIT_BAR_HIGH 0x40e3 218 #define vcnipUVD_LMI_JPEG_WRITE_64BIT_BAR_LOW 0x40e2 219 #define vcnipUVD_JPEG_INDEX 0x402c 220 #define vcnipUVD_JPEG_DATA 0x402d 221 #define vcnipUVD_JPEG_TIER_CNTL2 0x400f 222 #define vcnipUVD_JPEG_OUTBUF_RPTR 0x401e 223 #define vcnipUVD_JPEG_OUTBUF_CNTL 0x401c 224 #define vcnipUVD_JPEG_INT_EN 0x400a 225 #define vcnipUVD_JPEG_CNTL 0x4000 226 #define vcnipUVD_JPEG_RB_RPTR 0x4003 227 #define vcnipUVD_JPEG_OUTBUF_WPTR 0x401d 228 #define vcnipUVD_JPEG_DEC_SOFT_RST_1 0x4051 229 #define vcnipUVD_JPEG_PITCH_1 0x4043 230 #define vcnipUVD_JPEG_UV_PITCH_1 0x4044 231 #define vcnipJPEG_DEC_ADDR_MODE_1 0x404B 232 #define vcnipUVD_JPEG_TIER_CNTL2_1 0x400E 233 #define vcnipUVD_JPEG_OUTBUF_CNTL_1 0x4040 234 #define vcnipUVD_JPEG_OUTBUF_WPTR_1 0x4041 235 #define vcnipUVD_JPEG_OUTBUF_RPTR_1 0x4042 236 #define vcnipUVD_JPEG_LUMA_BASE0_0 0x41C0 237 #define vcnipUVD_JPEG_CHROMA_BASE0_0 0x41C1 238 #define vcnipUVD_JPEG_CHROMAV_BASE0_0 0x41C2 239 #define vcnipJPEG_DEC_Y_GFX10_TILING_SURFACE_1 0x4048 240 #define vcnipJPEG_DEC_UV_GFX10_TILING_SURFACE_1 0x4049 241 #define vcnipUVD_LMI_JPEG_WRITE_64BIT_BAR_HIGH_1 0x40B5 242 #define vcnipUVD_LMI_JPEG_WRITE_64BIT_BAR_LOW_1 0x40B4 243 #define vcnipUVD_LMI_JPEG_READ_64BIT_BAR_HIGH_1 0x40B3 244 #define vcnipUVD_LMI_JPEG_READ_64BIT_BAR_LOW_1 0x40B2 245 #define vcnipUVD_JPEG_ROI_CROP_POS_START 0x401B 246 #define vcnipUVD_JPEG_ROI_CROP_POS_STRIDE 0x401C 247 #define vcnipUVD_JPEG_INT_STAT 0x400B 248 #define vcnipUVD_JPEG_FC_SPS_INFO 0x4052 249 #define vcnipUVD_JPEG_SPS_INFO 0x4006 250 #define vcnipUVD_JPEG_FC_R_COEF 0x4018 251 #define vcnipUVD_JPEG_FC_G_COEF 0x4019 252 #define vcnipUVD_JPEG_FC_B_COEF 0x401A 253 #define vcnipUVD_JPEG_FC_VUP_COEF_CNTL0 0x4010 254 #define vcnipUVD_JPEG_FC_VUP_COEF_CNTL1 0x4011 255 #define vcnipUVD_JPEG_FC_VUP_COEF_CNTL2 0x4012 256 #define vcnipUVD_JPEG_FC_VUP_COEF_CNTL3 0x4013 257 #define vcnipUVD_JPEG_FC_HUP_COEF_CNTL0 0x4014 258 #define vcnipUVD_JPEG_FC_HUP_COEF_CNTL1 0x4015 259 #define vcnipUVD_JPEG_FC_HUP_COEF_CNTL2 0x4016 260 #define vcnipUVD_JPEG_FC_HUP_COEF_CNTL3 0x4017 261 #define vcnipUVD_JPEG_FC_TMEOUT_CNT 0x4183 262 #define vcnipUVD_JPEG_SPS1_INFO 0x4007 263 264 #define UVD_BASE_INST0_SEG0 0x00007800 265 #define UVD_BASE_INST0_SEG1 0x00007E00 266 #define UVD_BASE_INST0_SEG2 0 267 #define UVD_BASE_INST0_SEG3 0 268 #define UVD_BASE_INST0_SEG4 0 269 270 #define SOC15_REG_ADDR(reg) (UVD_BASE_INST0_SEG1 + reg) 271 272 #define COND0 0 273 #define COND1 1 274 #define COND2 2 275 #define COND3 3 276 #define COND4 4 277 #define COND5 5 278 #define COND6 6 279 #define COND7 7 280 281 #define TYPE0 0 282 #define TYPE1 1 283 #define TYPE2 2 284 #define TYPE3 3 285 #define TYPE4 4 286 #define TYPE5 5 287 #define TYPE6 6 288 #define TYPE7 7 289 290 /* VP9 Frame header flags */ 291 #define RDECODE_FRAME_HDR_INFO_VP9_USE_UNCOMPRESSED_HEADER_SHIFT (14) 292 #define RDECODE_FRAME_HDR_INFO_VP9_USE_PREV_IN_FIND_MV_REFS_SHIFT (13) 293 #define RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_UPDATE_SHIFT (12) 294 #define RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_ENABLED_SHIFT (11) 295 #define RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_UPDATE_DATA_SHIFT (10) 296 #define RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_TEMPORAL_UPDATE_SHIFT (9) 297 #define RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_UPDATE_MAP_SHIFT (8) 298 #define RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_ENABLED_SHIFT (7) 299 #define RDECODE_FRAME_HDR_INFO_VP9_FRAME_PARALLEL_DECODING_MODE_SHIFT (6) 300 #define RDECODE_FRAME_HDR_INFO_VP9_REFRESH_FRAME_CONTEXT_SHIFT (5) 301 #define RDECODE_FRAME_HDR_INFO_VP9_ALLOW_HIGH_PRECISION_MV_SHIFT (4) 302 #define RDECODE_FRAME_HDR_INFO_VP9_INTRA_ONLY_SHIFT (3) 303 #define RDECODE_FRAME_HDR_INFO_VP9_ERROR_RESILIENT_MODE_SHIFT (2) 304 #define RDECODE_FRAME_HDR_INFO_VP9_FRAME_TYPE_SHIFT (1) 305 #define RDECODE_FRAME_HDR_INFO_VP9_SHOW_EXISTING_FRAME_SHIFT (0) 306 307 308 #define RDECODE_FRAME_HDR_INFO_VP9_USE_UNCOMPRESSED_HEADER_MASK (0x00004000) 309 #define RDECODE_FRAME_HDR_INFO_VP9_USE_PREV_IN_FIND_MV_REFS_MASK (0x00002000) 310 #define RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_UPDATE_MASK (0x00001000) 311 #define RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_ENABLED_MASK (0x00000800) 312 #define RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_UPDATE_DATA_MASK (0x00000400) 313 #define RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_TEMPORAL_UPDATE_MASK (0x00000200) 314 #define RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_UPDATE_MAP_MASK (0x00000100) 315 #define RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_ENABLED_MASK (0x00000080) 316 #define RDECODE_FRAME_HDR_INFO_VP9_FRAME_PARALLEL_DECODING_MODE_MASK (0x00000040) 317 #define RDECODE_FRAME_HDR_INFO_VP9_REFRESH_FRAME_CONTEXT_MASK (0x00000020) 318 #define RDECODE_FRAME_HDR_INFO_VP9_ALLOW_HIGH_PRECISION_MV_MASK (0x00000010) 319 #define RDECODE_FRAME_HDR_INFO_VP9_INTRA_ONLY_MASK (0x00000008) 320 #define RDECODE_FRAME_HDR_INFO_VP9_ERROR_RESILIENT_MODE_MASK (0x00000004) 321 #define RDECODE_FRAME_HDR_INFO_VP9_FRAME_TYPE_MASK (0x00000002) 322 #define RDECODE_FRAME_HDR_INFO_VP9_SHOW_EXISTING_FRAME_MASK (0x00000001) 323 324 /* Drm definitions */ 325 #define DRM_CMD_KEY_SHIFT 0 326 #define DRM_CMD_CNT_KEY_SHIFT 1 327 #define DRM_CMD_CNT_DATA_SHIFT 2 328 #define DRM_CMD_OFFSET_SHIFT 3 329 #define DRM_CMD_SESSION_SEL_SHIFT 4 330 #define DRM_CMD_UNWRAP_KEY_SHIFT 8 331 #define DRM_CMD_GEN_MASK_SHIFT 9 332 #define DRM_CMD_ALGORITHM_SHIFT 10 333 #define DRM_CMD_BYTE_MASK_SHIFT 16 334 #define DRM_CMD_DRM_BYPASS_SHIFT 31 335 336 #define DRM_CMD_KEY_MASK (0x00000001) 337 #define DRM_CMD_CNT_KEY_MASK (0x00000002) 338 #define DRM_CMD_CNT_DATA_MASK (0x00000004) 339 #define DRM_CMD_OFFSET_MASK (0x00000008) 340 #define DRM_CMD_SESSION_SEL_MASK (0x000000F0) 341 #define DRM_CMD_UNWRAP_KEY_MASK (0x00000100) 342 #define DRM_CMD_GEN_MASK_MASK (0x00000200) 343 #define DRM_CMD_ALGORITHM_MASK (0x00000C00) 344 #define DRM_CMD_BYTE_MASK_MASK (0x00FF0000) 345 #define DRM_CMD_DRM_BYPASS_MASK (0x80000000) 346 347 /* Drm_cntl definitions */ 348 #define DRM_CNTL_ENC_BYTECNT_SHIFT (6) 349 #define DRM_CNTL_CLR_BYTECNT_SHIFT (16) 350 #define DRM_CNTL_BYPASS_SHIFT (24) 351 #define DRM_CNTL_PARTIAL_MODE_SHIFT (25) 352 #define DRM_CNTL_OFFSET_MODE_SHIFT (26) 353 #define DRM_CNTL_HEADER_MODE_SHIFT (27) 354 #define DRM_CNTL_HEADER_BYTECNT_SHIFT (28) 355 356 #define DRM_CNTL_ENC_BYTECNT_MASK (0x00000FC0) 357 #define DRM_CNTL_CLR_BYTECNT_MASK (0x003F0000) 358 #define DRM_CNTL_BYPASS_MASK (0x01000000) 359 #define DRM_CNTL_PARTIAL_MODE_MASK (0x02000000) 360 #define DRM_CNTL_OFFSET_MODE_MASK (0x04000000) 361 #define DRM_CNTL_HEADER_MODE_MASK (0x08000000) 362 #define DRM_CNTL_HEADER_BYTECNT_MASK (0xF0000000) 363 364 #define SAMU_DRM_DISABLE 0x00000000 365 #define SAMU_DRM_ENABLE 0x00000001 366 367 /* AV1 Frame header flags */ 368 #define RDECODE_FRAME_HDR_INFO_AV1_DISABLE_REF_FRAME_MVS_SHIFT (31) 369 #define RDECODE_FRAME_HDR_INFO_AV1_SKIP_REFERENCE_UPDATE_SHIFT (30) 370 #define RDECODE_FRAME_HDR_INFO_AV1_SWITCHABLE_SKIP_MODE_SHIFT (29) 371 #define RDECODE_FRAME_HDR_INFO_AV1_DELTA_LF_MULTI_SHIFT (28) 372 #define RDECODE_FRAME_HDR_INFO_AV1_SEGMENTATION_TEMPORAL_UPDATE_SHIFT (27) 373 #define RDECODE_FRAME_HDR_INFO_AV1_SEGMENTATION_UPDATE_MAP_SHIFT (26) 374 #define RDECODE_FRAME_HDR_INFO_AV1_SEGMENTATION_ENABLED_SHIFT (25) 375 #define RDECODE_FRAME_HDR_INFO_AV1_REDUCED_TX_SET_USED_SHIFT (24) 376 #define RDECODE_FRAME_HDR_INFO_AV1_DELTA_LF_PRESENT_FLAG_SHIFT (23) 377 #define RDECODE_FRAME_HDR_INFO_AV1_DELTA_Q_PRESENT_FLAG_SHIFT (22) 378 #define RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_UPDATE_SHIFT (21) 379 #define RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_ENABLED_SHIFT (20) 380 #define RDECODE_FRAME_HDR_INFO_AV1_CUR_FRAME_FORCE_INTEGER_MV_SHIFT (19) 381 #define RDECODE_FRAME_HDR_INFO_AV1_ALLOW_SCREEN_CONTENT_TOOLS_SHIFT (18) 382 #define RDECODE_FRAME_HDR_INFO_AV1_ALLOW_REF_FRAME_MVS_SHIFT (17) 383 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_JNT_COMP_SHIFT (16) 384 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_ORDER_HINT_SHIFT (15) 385 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_DUAL_FILTER_SHIFT (14) 386 #define RDECODE_FRAME_HDR_INFO_AV1_ALLOW_WARPED_MOTION_SHIFT (13) 387 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_MASKED_COMPOUND_SHIFT (12) 388 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_INTERINTRA_COMPOUND_SHIFT (11) 389 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_INTRA_EDGE_FILTER_SHIFT (10) 390 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_FILTER_INTRA_SHIFT (9) 391 #define RDECODE_FRAME_HDR_INFO_AV1_USING_QMATRIX_SHIFT (8) 392 #define RDECODE_FRAME_HDR_INFO_AV1_SKIP_MODE_FLAG_SHIFT (7) 393 #define RDECODE_FRAME_HDR_INFO_AV1_MONOCHROME_SHIFT (6) 394 #define RDECODE_FRAME_HDR_INFO_AV1_ALLOW_HIGH_PRECISION_MV_SHIFT (5) 395 #define RDECODE_FRAME_HDR_INFO_AV1_ALLOW_INTRABC_SHIFT (4) 396 #define RDECODE_FRAME_HDR_INFO_AV1_INTRA_ONLY_SHIFT (3) 397 #define RDECODE_FRAME_HDR_INFO_AV1_REFRESH_FRAME_CONTEXT_SHIFT (2) 398 #define RDECODE_FRAME_HDR_INFO_AV1_DISABLE_CDF_UPDATE_SHIFT (1) 399 #define RDECODE_FRAME_HDR_INFO_AV1_SHOW_FRAME_SHIFT (0) 400 401 #define RDECODE_FRAME_HDR_INFO_AV1_DISABLE_REF_FRAME_MVS_MASK (0x80000000) 402 #define RDECODE_FRAME_HDR_INFO_AV1_SKIP_REFERENCE_UPDATE_MASK (0x40000000) 403 #define RDECODE_FRAME_HDR_INFO_AV1_SWITCHABLE_SKIP_MODE_MASK (0x20000000) 404 #define RDECODE_FRAME_HDR_INFO_AV1_DELTA_LF_MULTI_MASK (0x10000000) 405 #define RDECODE_FRAME_HDR_INFO_AV1_SEGMENTATION_TEMPORAL_UPDATE_MASK (0x08000000) 406 #define RDECODE_FRAME_HDR_INFO_AV1_SEGMENTATION_UPDATE_MAP_MASK (0x04000000) 407 #define RDECODE_FRAME_HDR_INFO_AV1_SEGMENTATION_ENABLED_MASK (0x02000000) 408 #define RDECODE_FRAME_HDR_INFO_AV1_REDUCED_TX_SET_USED_MASK (0x01000000) 409 #define RDECODE_FRAME_HDR_INFO_AV1_DELTA_LF_PRESENT_FLAG_MASK (0x00800000) 410 #define RDECODE_FRAME_HDR_INFO_AV1_DELTA_Q_PRESENT_FLAG_MASK (0x00400000) 411 #define RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_UPDATE_MASK (0x00200000) 412 #define RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_ENABLED_MASK (0x00100000) 413 #define RDECODE_FRAME_HDR_INFO_AV1_CUR_FRAME_FORCE_INTEGER_MV_MASK (0x00080000) 414 #define RDECODE_FRAME_HDR_INFO_AV1_ALLOW_SCREEN_CONTENT_TOOLS_MASK (0x00040000) 415 #define RDECODE_FRAME_HDR_INFO_AV1_ALLOW_REF_FRAME_MVS_MASK (0x00020000) 416 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_JNT_COMP_MASK (0x00010000) 417 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_ORDER_HINT_MASK (0x00008000) 418 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_DUAL_FILTER_MASK (0x00004000) 419 #define RDECODE_FRAME_HDR_INFO_AV1_ALLOW_WARPED_MOTION_MASK (0x00002000) 420 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_MASKED_COMPOUND_MASK (0x00001000) 421 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_INTERINTRA_COMPOUND_MASK (0x00000800) 422 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_INTRA_EDGE_FILTER_MASK (0x00000400) 423 #define RDECODE_FRAME_HDR_INFO_AV1_ENABLE_FILTER_INTRA_MASK (0x00000200) 424 #define RDECODE_FRAME_HDR_INFO_AV1_USING_QMATRIX_MASK (0x00000100) 425 #define RDECODE_FRAME_HDR_INFO_AV1_SKIP_MODE_FLAG_MASK (0x00000080) 426 #define RDECODE_FRAME_HDR_INFO_AV1_MONOCHROME_MASK (0x08000040) 427 #define RDECODE_FRAME_HDR_INFO_AV1_ALLOW_HIGH_PRECISION_MV_MASK (0x00000020) 428 #define RDECODE_FRAME_HDR_INFO_AV1_ALLOW_INTRABC_MASK (0x00000010) 429 #define RDECODE_FRAME_HDR_INFO_AV1_INTRA_ONLY_MASK (0x00000008) 430 #define RDECODE_FRAME_HDR_INFO_AV1_REFRESH_FRAME_CONTEXT_MASK (0x00000004) 431 #define RDECODE_FRAME_HDR_INFO_AV1_DISABLE_CDF_UPDATE_MASK (0x00000002) 432 #define RDECODE_FRAME_HDR_INFO_AV1_SHOW_FRAME_MASK (0x00000001) 433 434 #define RDECODE_AV1_VER_0 0 435 #define RDECODE_AV1_VER_1 1 436 #define RDECODE_AV1_VER_2 2 437 438 typedef struct rvcn_decode_buffer_s { 439 unsigned int valid_buf_flag; 440 unsigned int msg_buffer_address_hi; 441 unsigned int msg_buffer_address_lo; 442 unsigned int dpb_buffer_address_hi; 443 unsigned int dpb_buffer_address_lo; 444 unsigned int target_buffer_address_hi; 445 unsigned int target_buffer_address_lo; 446 unsigned int session_contex_buffer_address_hi; 447 unsigned int session_contex_buffer_address_lo; 448 unsigned int bitstream_buffer_address_hi; 449 unsigned int bitstream_buffer_address_lo; 450 unsigned int context_buffer_address_hi; 451 unsigned int context_buffer_address_lo; 452 unsigned int feedback_buffer_address_hi; 453 unsigned int feedback_buffer_address_lo; 454 unsigned int luma_hist_buffer_address_hi; 455 unsigned int luma_hist_buffer_address_lo; 456 unsigned int prob_tbl_buffer_address_hi; 457 unsigned int prob_tbl_buffer_address_lo; 458 unsigned int sclr_coeff_buffer_address_hi; 459 unsigned int sclr_coeff_buffer_address_lo; 460 unsigned int it_sclr_table_buffer_address_hi; 461 unsigned int it_sclr_table_buffer_address_lo; 462 unsigned int sclr_target_buffer_address_hi; 463 unsigned int sclr_target_buffer_address_lo; 464 unsigned int reserved_size_info_buffer_address_hi; 465 unsigned int reserved_size_info_buffer_address_lo; 466 unsigned int mpeg2_pic_param_buffer_address_hi; 467 unsigned int mpeg2_pic_param_buffer_address_lo; 468 unsigned int mpeg2_mb_control_buffer_address_hi; 469 unsigned int mpeg2_mb_control_buffer_address_lo; 470 unsigned int mpeg2_idct_coeff_buffer_address_hi; 471 unsigned int mpeg2_idct_coeff_buffer_address_lo; 472 } rvcn_decode_buffer_t; 473 474 typedef struct rvcn_decode_ib_package_s { 475 unsigned int package_size; 476 unsigned int package_type; 477 } rvcn_decode_ib_package_t; 478 479 typedef struct rvcn_dec_message_index_s { 480 unsigned int message_id; 481 unsigned int offset; 482 unsigned int size; 483 unsigned int filled; 484 } rvcn_dec_message_index_t; 485 486 typedef struct rvcn_dec_message_header_s { 487 unsigned int header_size; 488 unsigned int total_size; 489 unsigned int num_buffers; 490 unsigned int msg_type; 491 unsigned int stream_handle; 492 unsigned int status_report_feedback_number; 493 494 rvcn_dec_message_index_t index[1]; 495 } rvcn_dec_message_header_t; 496 497 typedef struct rvcn_dec_message_create_s { 498 unsigned int stream_type; 499 unsigned int session_flags; 500 unsigned int width_in_samples; 501 unsigned int height_in_samples; 502 } rvcn_dec_message_create_t; 503 504 typedef struct rvcn_dec_message_decode_s { 505 unsigned int stream_type; 506 unsigned int decode_flags; 507 unsigned int width_in_samples; 508 unsigned int height_in_samples; 509 510 unsigned int bsd_size; 511 unsigned int dpb_size; 512 unsigned int dt_size; 513 unsigned int sct_size; 514 unsigned int sc_coeff_size; 515 unsigned int hw_ctxt_size; 516 unsigned int sw_ctxt_size; 517 unsigned int pic_param_size; 518 unsigned int mb_cntl_size; 519 unsigned int reserved0[4]; 520 unsigned int decode_buffer_flags; 521 522 unsigned int db_pitch; 523 unsigned int db_aligned_height; 524 unsigned int db_tiling_mode; 525 unsigned int db_swizzle_mode; 526 unsigned int db_array_mode; 527 unsigned int db_field_mode; 528 unsigned int db_surf_tile_config; 529 530 unsigned int dt_pitch; 531 unsigned int dt_uv_pitch; 532 unsigned int dt_tiling_mode; 533 unsigned int dt_swizzle_mode; 534 unsigned int dt_array_mode; 535 unsigned int dt_field_mode; 536 unsigned int dt_out_format; 537 unsigned int dt_surf_tile_config; 538 unsigned int dt_uv_surf_tile_config; 539 unsigned int dt_luma_top_offset; 540 unsigned int dt_luma_bottom_offset; 541 unsigned int dt_chroma_top_offset; 542 unsigned int dt_chroma_bottom_offset; 543 unsigned int dt_chromaV_top_offset; 544 unsigned int dt_chromaV_bottom_offset; 545 546 unsigned int mif_wrc_en; 547 unsigned int db_pitch_uv; 548 549 unsigned char reserved1[20]; 550 } rvcn_dec_message_decode_t; 551 552 typedef struct rvcn_dec_message_drm_s { 553 unsigned int drm_key[4]; 554 unsigned int drm_counter[4]; 555 unsigned int drm_wrapped_key[4]; 556 unsigned int drm_offset; 557 unsigned int drm_cmd; 558 unsigned int drm_cntl; 559 unsigned int drm_reserved; 560 } rvcn_dec_message_drm_t; 561 562 typedef struct rvcn_dec_message_dynamic_dpb_s { 563 unsigned int dpbConfigFlags; 564 unsigned int dpbLumaPitch; 565 unsigned int dpbLumaAlignedHeight; 566 unsigned int dpbLumaAlignedSize; 567 unsigned int dpbChromaPitch; 568 unsigned int dpbChromaAlignedHeight; 569 unsigned int dpbChromaAlignedSize; 570 571 unsigned char dpbArraySize; 572 unsigned char dpbCurArraySlice; 573 unsigned char dpbRefArraySlice[16]; 574 unsigned char dpbReserved0[2]; 575 576 unsigned int dpbCurrOffset; 577 unsigned int dpbAddrOffset[16]; 578 } rvcn_dec_message_dynamic_dpb_t; 579 580 typedef struct rvcn_dec_message_dynamic_dpb_t2_s { 581 unsigned int dpbConfigFlags; 582 unsigned int dpbLumaPitch; 583 unsigned int dpbLumaAlignedHeight; 584 unsigned int dpbLumaAlignedSize; 585 unsigned int dpbChromaPitch; 586 unsigned int dpbChromaAlignedHeight; 587 unsigned int dpbChromaAlignedSize; 588 unsigned int dpbArraySize; 589 590 unsigned int dpbCurrLo; 591 unsigned int dpbCurrHi; 592 unsigned int dpbAddrLo[16]; 593 unsigned int dpbAddrHi[16]; 594 } rvcn_dec_message_dynamic_dpb_t2_t; 595 596 typedef struct rvcn_dec_message_hevc_direct_ref_list_s { 597 unsigned int num_direct_reflist; 598 unsigned char multi_direct_reflist[128][2][15]; 599 } rvcn_dec_message_hevc_direct_ref_list_t; 600 601 typedef struct { 602 unsigned short viewOrderIndex; 603 unsigned short viewId; 604 unsigned short numOfAnchorRefsInL0; 605 unsigned short viewIdOfAnchorRefsInL0[15]; 606 unsigned short numOfAnchorRefsInL1; 607 unsigned short viewIdOfAnchorRefsInL1[15]; 608 unsigned short numOfNonAnchorRefsInL0; 609 unsigned short viewIdOfNonAnchorRefsInL0[15]; 610 unsigned short numOfNonAnchorRefsInL1; 611 unsigned short viewIdOfNonAnchorRefsInL1[15]; 612 } radeon_mvcElement_t; 613 614 typedef struct rvcn_dec_message_avc_s { 615 unsigned int profile; 616 unsigned int level; 617 618 unsigned int sps_info_flags; 619 unsigned int pps_info_flags; 620 unsigned char chroma_format; 621 unsigned char bit_depth_luma_minus8; 622 unsigned char bit_depth_chroma_minus8; 623 unsigned char log2_max_frame_num_minus4; 624 625 unsigned char pic_order_cnt_type; 626 unsigned char log2_max_pic_order_cnt_lsb_minus4; 627 unsigned char num_ref_frames; 628 unsigned char reserved_8bit; 629 630 signed char pic_init_qp_minus26; 631 signed char pic_init_qs_minus26; 632 signed char chroma_qp_index_offset; 633 signed char second_chroma_qp_index_offset; 634 635 unsigned char num_slice_groups_minus1; 636 unsigned char slice_group_map_type; 637 unsigned char num_ref_idx_l0_active_minus1; 638 unsigned char num_ref_idx_l1_active_minus1; 639 640 unsigned short slice_group_change_rate_minus1; 641 unsigned short reserved_16bit_1; 642 643 unsigned char scaling_list_4x4[6][16]; 644 unsigned char scaling_list_8x8[2][64]; 645 646 unsigned int frame_num; 647 unsigned int frame_num_list[16]; 648 int curr_field_order_cnt_list[2]; 649 int field_order_cnt_list[16][2]; 650 651 unsigned int decoded_pic_idx; 652 unsigned int curr_pic_ref_frame_num; 653 unsigned char ref_frame_list[16]; 654 655 unsigned int reserved[122]; 656 657 struct { 658 unsigned int numViews; 659 unsigned int viewId0; 660 radeon_mvcElement_t mvcElements[1]; 661 } mvc; 662 663 unsigned short non_existing_frame_flags; 664 unsigned int used_for_reference_flags; 665 } rvcn_dec_message_avc_t; 666 667 typedef struct rvcn_dec_message_vc1_s { 668 unsigned int profile; 669 unsigned int level; 670 unsigned int sps_info_flags; 671 unsigned int pps_info_flags; 672 unsigned int pic_structure; 673 unsigned int chroma_format; 674 unsigned short decoded_pic_idx; 675 unsigned short deblocked_pic_idx; 676 unsigned short forward_ref_idx; 677 unsigned short backward_ref_idx; 678 unsigned int cached_frame_flag; 679 } rvcn_dec_message_vc1_t; 680 681 typedef struct rvcn_dec_message_mpeg2_vld_s { 682 unsigned int decoded_pic_idx; 683 unsigned int forward_ref_pic_idx; 684 unsigned int backward_ref_pic_idx; 685 686 unsigned char load_intra_quantiser_matrix; 687 unsigned char load_nonintra_quantiser_matrix; 688 unsigned char reserved_quantiser_alignement[2]; 689 unsigned char intra_quantiser_matrix[64]; 690 unsigned char nonintra_quantiser_matrix[64]; 691 692 unsigned char profile_and_level_indication; 693 unsigned char chroma_format; 694 695 unsigned char picture_coding_type; 696 697 unsigned char reserved_1; 698 699 unsigned char f_code[2][2]; 700 unsigned char intra_dc_precision; 701 unsigned char pic_structure; 702 unsigned char top_field_first; 703 unsigned char frame_pred_frame_dct; 704 unsigned char concealment_motion_vectors; 705 unsigned char q_scale_type; 706 unsigned char intra_vlc_format; 707 unsigned char alternate_scan; 708 } rvcn_dec_message_mpeg2_vld_t; 709 710 typedef struct rvcn_dec_message_mpeg4_asp_vld_s { 711 unsigned int decoded_pic_idx; 712 unsigned int forward_ref_pic_idx; 713 unsigned int backward_ref_pic_idx; 714 715 unsigned int variant_type; 716 unsigned char profile_and_level_indication; 717 718 unsigned char video_object_layer_verid; 719 unsigned char video_object_layer_shape; 720 721 unsigned char reserved_1; 722 723 unsigned short video_object_layer_width; 724 unsigned short video_object_layer_height; 725 726 unsigned short vop_time_increment_resolution; 727 728 unsigned short reserved_2; 729 730 struct { 731 unsigned int short_video_header : 1; 732 unsigned int obmc_disable : 1; 733 unsigned int interlaced : 1; 734 unsigned int load_intra_quant_mat : 1; 735 unsigned int load_nonintra_quant_mat : 1; 736 unsigned int quarter_sample : 1; 737 unsigned int complexity_estimation_disable : 1; 738 unsigned int resync_marker_disable : 1; 739 unsigned int data_partitioned : 1; 740 unsigned int reversible_vlc : 1; 741 unsigned int newpred_enable : 1; 742 unsigned int reduced_resolution_vop_enable : 1; 743 unsigned int scalability : 1; 744 unsigned int is_object_layer_identifier : 1; 745 unsigned int fixed_vop_rate : 1; 746 unsigned int newpred_segment_type : 1; 747 unsigned int reserved_bits : 16; 748 }; 749 750 unsigned char quant_type; 751 unsigned char reserved_3[3]; 752 unsigned char intra_quant_mat[64]; 753 unsigned char nonintra_quant_mat[64]; 754 755 struct { 756 unsigned char sprite_enable; 757 758 unsigned char reserved_4[3]; 759 760 unsigned short sprite_width; 761 unsigned short sprite_height; 762 short sprite_left_coordinate; 763 short sprite_top_coordinate; 764 765 unsigned char no_of_sprite_warping_points; 766 unsigned char sprite_warping_accuracy; 767 unsigned char sprite_brightness_change; 768 unsigned char low_latency_sprite_enable; 769 } sprite_config; 770 771 struct { 772 struct { 773 unsigned int check_skip : 1; 774 unsigned int switch_rounding : 1; 775 unsigned int t311 : 1; 776 unsigned int reserved_bits : 29; 777 }; 778 779 unsigned char vol_mode; 780 781 unsigned char reserved_5[3]; 782 } divx_311_config; 783 784 struct { 785 unsigned char vop_data_present; 786 unsigned char vop_coding_type; 787 unsigned char vop_quant; 788 unsigned char vop_coded; 789 unsigned char vop_rounding_type; 790 unsigned char intra_dc_vlc_thr; 791 unsigned char top_field_first; 792 unsigned char alternate_vertical_scan_flag; 793 unsigned char vop_fcode_forward; 794 unsigned char vop_fcode_backward; 795 unsigned int TRB[2]; 796 unsigned int TRD[2]; 797 } vop; 798 799 } rvcn_dec_message_mpeg4_asp_vld_t; 800 801 typedef struct rvcn_dec_message_hevc_s { 802 unsigned int sps_info_flags; 803 unsigned int pps_info_flags; 804 unsigned char chroma_format; 805 unsigned char bit_depth_luma_minus8; 806 unsigned char bit_depth_chroma_minus8; 807 unsigned char log2_max_pic_order_cnt_lsb_minus4; 808 809 unsigned char sps_max_dec_pic_buffering_minus1; 810 unsigned char log2_min_luma_coding_block_size_minus3; 811 unsigned char log2_diff_max_min_luma_coding_block_size; 812 unsigned char log2_min_transform_block_size_minus2; 813 814 unsigned char log2_diff_max_min_transform_block_size; 815 unsigned char max_transform_hierarchy_depth_inter; 816 unsigned char max_transform_hierarchy_depth_intra; 817 unsigned char pcm_sample_bit_depth_luma_minus1; 818 819 unsigned char pcm_sample_bit_depth_chroma_minus1; 820 unsigned char log2_min_pcm_luma_coding_block_size_minus3; 821 unsigned char log2_diff_max_min_pcm_luma_coding_block_size; 822 unsigned char num_extra_slice_header_bits; 823 824 unsigned char num_short_term_ref_pic_sets; 825 unsigned char num_long_term_ref_pic_sps; 826 unsigned char num_ref_idx_l0_default_active_minus1; 827 unsigned char num_ref_idx_l1_default_active_minus1; 828 829 signed char pps_cb_qp_offset; 830 signed char pps_cr_qp_offset; 831 signed char pps_beta_offset_div2; 832 signed char pps_tc_offset_div2; 833 834 unsigned char diff_cu_qp_delta_depth; 835 unsigned char num_tile_columns_minus1; 836 unsigned char num_tile_rows_minus1; 837 unsigned char log2_parallel_merge_level_minus2; 838 839 unsigned short column_width_minus1[19]; 840 unsigned short row_height_minus1[21]; 841 842 signed char init_qp_minus26; 843 unsigned char num_delta_pocs_ref_rps_idx; 844 unsigned char curr_idx; 845 unsigned char reserved[1]; 846 int curr_poc; 847 unsigned char ref_pic_list[16]; 848 int poc_list[16]; 849 unsigned char ref_pic_set_st_curr_before[8]; 850 unsigned char ref_pic_set_st_curr_after[8]; 851 unsigned char ref_pic_set_lt_curr[8]; 852 853 unsigned char ucScalingListDCCoefSizeID2[6]; 854 unsigned char ucScalingListDCCoefSizeID3[2]; 855 856 unsigned char highestTid; 857 unsigned char isNonRef; 858 859 unsigned char p010_mode; 860 unsigned char msb_mode; 861 unsigned char luma_10to8; 862 unsigned char chroma_10to8; 863 864 unsigned char hevc_reserved[2]; 865 866 unsigned char direct_reflist[2][15]; 867 unsigned int st_rps_bits; 868 unsigned char reserved_1[15]; 869 } rvcn_dec_message_hevc_t; 870 871 typedef struct rvcn_dec_message_vp9_s { 872 unsigned int frame_header_flags; 873 874 unsigned char frame_context_idx; 875 unsigned char reset_frame_context; 876 877 unsigned char curr_pic_idx; 878 unsigned char interp_filter; 879 880 unsigned char filter_level; 881 unsigned char sharpness_level; 882 unsigned char lf_adj_level[8][4][2]; 883 unsigned char base_qindex; 884 signed char y_dc_delta_q; 885 signed char uv_ac_delta_q; 886 signed char uv_dc_delta_q; 887 888 unsigned char log2_tile_cols; 889 unsigned char log2_tile_rows; 890 unsigned char tx_mode; 891 unsigned char reference_mode; 892 unsigned char chroma_format; 893 894 unsigned char ref_frame_map[8]; 895 896 unsigned char frame_refs[3]; 897 unsigned char ref_frame_sign_bias[3]; 898 unsigned char frame_to_show; 899 unsigned char bit_depth_luma_minus8; 900 unsigned char bit_depth_chroma_minus8; 901 902 unsigned char p010_mode; 903 unsigned char msb_mode; 904 unsigned char luma_10to8; 905 unsigned char chroma_10to8; 906 907 unsigned int vp9_frame_size; 908 unsigned int compressed_header_size; 909 unsigned int uncompressed_header_size; 910 unsigned char reserved[2]; 911 } rvcn_dec_message_vp9_t; 912 913 typedef enum { 914 RVCN_DEC_AV1_IDENTITY = 0, 915 RVCN_DEC_AV1_TRANSLATION = 1, 916 RVCN_DEC_AV1_ROTZOOM = 2, 917 RVCN_DEC_AV1_AFFINE = 3, 918 RVCN_DEC_AV1_HORTRAPEZOID = 4, 919 RVCN_DEC_AV1_VERTRAPEZOID = 5, 920 RVCN_DEC_AV1_HOMOGRAPHY = 6, 921 RVCN_DEC_AV1_TRANS_TYPES = 7, 922 } rvcn_dec_transformation_type_e; 923 924 typedef struct { 925 rvcn_dec_transformation_type_e wmtype; 926 int wmmat[8]; 927 short alpha, beta, gamma, delta; 928 } rvcn_dec_warped_motion_params_t; 929 930 typedef struct { 931 unsigned char apply_grain; 932 unsigned char scaling_points_y[14][2]; 933 unsigned char num_y_points; 934 unsigned char scaling_points_cb[10][2]; 935 unsigned char num_cb_points; 936 unsigned char scaling_points_cr[10][2]; 937 unsigned char num_cr_points; 938 unsigned char scaling_shift; 939 unsigned char ar_coeff_lag; 940 signed char ar_coeffs_y[24]; 941 signed char ar_coeffs_cb[25]; 942 signed char ar_coeffs_cr[25]; 943 unsigned char ar_coeff_shift; 944 unsigned char cb_mult; 945 unsigned char cb_luma_mult; 946 unsigned short cb_offset; 947 unsigned char cr_mult; 948 unsigned char cr_luma_mult; 949 unsigned short cr_offset; 950 unsigned char overlap_flag; 951 unsigned char clip_to_restricted_range; 952 unsigned char bit_depth_minus_8; 953 unsigned char chroma_scaling_from_luma; 954 unsigned char grain_scale_shift; 955 unsigned short random_seed; 956 } rvcn_dec_film_grain_params_t; 957 958 typedef struct rvcn_dec_av1_tile_info_s { 959 unsigned int offset; 960 unsigned int size; 961 } rvcn_dec_av1_tile_info_t; 962 963 typedef struct rvcn_dec_message_av1_s { 964 unsigned int frame_header_flags; 965 unsigned int current_frame_id; 966 unsigned int frame_offset; 967 968 unsigned char profile; 969 unsigned char is_annexb; 970 unsigned char frame_type; 971 unsigned char primary_ref_frame; 972 unsigned char curr_pic_idx; 973 974 unsigned char sb_size; 975 unsigned char interp_filter; 976 unsigned char filter_level[2]; 977 unsigned char filter_level_u; 978 unsigned char filter_level_v; 979 unsigned char sharpness_level; 980 signed char ref_deltas[8]; 981 signed char mode_deltas[2]; 982 unsigned char base_qindex; 983 signed char y_dc_delta_q; 984 signed char u_dc_delta_q; 985 signed char v_dc_delta_q; 986 signed char u_ac_delta_q; 987 signed char v_ac_delta_q; 988 signed char qm_y; 989 signed char qm_u; 990 signed char qm_v; 991 signed char delta_q_res; 992 signed char delta_lf_res; 993 994 unsigned char tile_cols; 995 unsigned char tile_rows; 996 unsigned char tx_mode; 997 unsigned char reference_mode; 998 unsigned char chroma_format; 999 unsigned int tile_size_bytes; 1000 unsigned int context_update_tile_id; 1001 unsigned int tile_col_start_sb[65]; 1002 unsigned int tile_row_start_sb[65]; 1003 unsigned int max_width; 1004 unsigned int max_height; 1005 unsigned int width; 1006 unsigned int height; 1007 unsigned int superres_upscaled_width; 1008 unsigned char superres_scale_denominator; 1009 unsigned char order_hint_bits; 1010 1011 unsigned char ref_frame_map[8]; 1012 unsigned int ref_frame_offset[8]; 1013 unsigned char frame_refs[7]; 1014 unsigned char ref_frame_sign_bias[7]; 1015 1016 unsigned char bit_depth_luma_minus8; 1017 unsigned char bit_depth_chroma_minus8; 1018 1019 int feature_data[8][8]; 1020 unsigned char feature_mask[8]; 1021 1022 unsigned char cdef_damping; 1023 unsigned char cdef_bits; 1024 unsigned short cdef_strengths[16]; 1025 unsigned short cdef_uv_strengths[16]; 1026 unsigned char frame_restoration_type[3]; 1027 unsigned char log2_restoration_unit_size_minus5[3]; 1028 1029 unsigned char p010_mode; 1030 unsigned char msb_mode; 1031 unsigned char luma_10to8; 1032 unsigned char chroma_10to8; 1033 unsigned char preskip_segid; 1034 unsigned char last_active_segid; 1035 unsigned char seg_lossless_flag; 1036 unsigned char coded_lossless; 1037 rvcn_dec_film_grain_params_t film_grain; 1038 unsigned int uncompressed_header_size; 1039 rvcn_dec_warped_motion_params_t global_motion[8]; 1040 rvcn_dec_av1_tile_info_t tile_info[256]; 1041 unsigned char reserved[3]; 1042 } rvcn_dec_message_av1_t; 1043 1044 typedef struct rvcn_dec_feature_index_s { 1045 unsigned int feature_id; 1046 unsigned int offset; 1047 unsigned int size; 1048 unsigned int filled; 1049 } rvcn_dec_feature_index_t; 1050 1051 typedef struct rvcn_dec_feedback_header_s { 1052 unsigned int header_size; 1053 unsigned int total_size; 1054 unsigned int num_buffers; 1055 unsigned int status_report_feedback_number; 1056 unsigned int status; 1057 unsigned int value; 1058 unsigned int errorBits; 1059 rvcn_dec_feature_index_t index[1]; 1060 } rvcn_dec_feedback_header_t; 1061 1062 typedef struct rvcn_dec_feedback_profiling_s { 1063 unsigned int size; 1064 1065 unsigned int decodingTime; 1066 unsigned int decodePlusOverhead; 1067 unsigned int masterTimerHits; 1068 unsigned int uvdLBSIREWaitCount; 1069 1070 unsigned int avgMPCMemLatency; 1071 unsigned int maxMPCMemLatency; 1072 unsigned int uvdMPCLumaHits; 1073 unsigned int uvdMPCLumaHitPend; 1074 unsigned int uvdMPCLumaSearch; 1075 unsigned int uvdMPCChromaHits; 1076 unsigned int uvdMPCChromaHitPend; 1077 unsigned int uvdMPCChromaSearch; 1078 1079 unsigned int uvdLMIPerfCountLo; 1080 unsigned int uvdLMIPerfCountHi; 1081 unsigned int uvdLMIAvgLatCntrEnvHit; 1082 unsigned int uvdLMILatCntr; 1083 1084 unsigned int frameCRC0; 1085 unsigned int frameCRC1; 1086 unsigned int frameCRC2; 1087 unsigned int frameCRC3; 1088 1089 unsigned int uvdLMIPerfMonCtrl; 1090 unsigned int uvdLMILatCtrl; 1091 unsigned int uvdMPCCntl; 1092 unsigned int reserved0[4]; 1093 unsigned int decoderID; 1094 unsigned int codec; 1095 1096 unsigned int dmaHwCrc32Enable; 1097 unsigned int dmaHwCrc32Value; 1098 unsigned int dmaHwCrc32Value2; 1099 } rvcn_dec_feedback_profiling_t; 1100 1101 typedef struct rvcn_dec_vp9_nmv_ctx_mask_s { 1102 unsigned short classes_mask[2]; 1103 unsigned short bits_mask[2]; 1104 unsigned char joints_mask; 1105 unsigned char sign_mask[2]; 1106 unsigned char class0_mask[2]; 1107 unsigned char class0_fp_mask[2]; 1108 unsigned char fp_mask[2]; 1109 unsigned char class0_hp_mask[2]; 1110 unsigned char hp_mask[2]; 1111 unsigned char reserve[11]; 1112 } rvcn_dec_vp9_nmv_ctx_mask_t; 1113 1114 typedef struct rvcn_dec_vp9_nmv_component_s { 1115 unsigned char sign; 1116 unsigned char classes[10]; 1117 unsigned char class0[1]; 1118 unsigned char bits[10]; 1119 unsigned char class0_fp[2][3]; 1120 unsigned char fp[3]; 1121 unsigned char class0_hp; 1122 unsigned char hp; 1123 } rvcn_dec_vp9_nmv_component_t; 1124 1125 typedef struct rvcn_dec_vp9_probs_s { 1126 rvcn_dec_vp9_nmv_ctx_mask_t nmvc_mask; 1127 unsigned char coef_probs[4][2][2][6][6][3]; 1128 unsigned char y_mode_prob[4][9]; 1129 unsigned char uv_mode_prob[10][9]; 1130 unsigned char single_ref_prob[5][2]; 1131 unsigned char switchable_interp_prob[4][2]; 1132 unsigned char partition_prob[16][3]; 1133 unsigned char inter_mode_probs[7][3]; 1134 unsigned char mbskip_probs[3]; 1135 unsigned char intra_inter_prob[4]; 1136 unsigned char comp_inter_prob[5]; 1137 unsigned char comp_ref_prob[5]; 1138 unsigned char tx_probs_32x32[2][3]; 1139 unsigned char tx_probs_16x16[2][2]; 1140 unsigned char tx_probs_8x8[2][1]; 1141 unsigned char mv_joints[3]; 1142 rvcn_dec_vp9_nmv_component_t mv_comps[2]; 1143 } rvcn_dec_vp9_probs_t; 1144 1145 typedef struct rvcn_dec_vp9_probs_segment_s { 1146 union { 1147 rvcn_dec_vp9_probs_t probs; 1148 unsigned char probs_data[RDECODE_VP9_PROBS_DATA_SIZE]; 1149 }; 1150 1151 union { 1152 struct { 1153 unsigned int feature_data[8]; 1154 unsigned char tree_probs[7]; 1155 unsigned char pred_probs[3]; 1156 unsigned char abs_delta; 1157 unsigned char feature_mask[8]; 1158 } seg; 1159 unsigned char segment_data[256]; 1160 }; 1161 } rvcn_dec_vp9_probs_segment_t; 1162 1163 typedef struct rvcn_dec_av1_fg_init_buf_s { 1164 short luma_grain_block[64][96]; 1165 short cb_grain_block[32][48]; 1166 short cr_grain_block[32][48]; 1167 short scaling_lut_y[256]; 1168 short scaling_lut_cb[256]; 1169 short scaling_lut_cr[256]; 1170 unsigned short temp_tile_left_seed[256]; 1171 } rvcn_dec_av1_fg_init_buf_t; 1172 1173 typedef struct rvcn_dec_av1_segment_fg_s { 1174 union { 1175 struct { 1176 unsigned char feature_data[128]; 1177 unsigned char feature_mask[8]; 1178 } seg; 1179 unsigned char segment_data[256]; 1180 }; 1181 rvcn_dec_av1_fg_init_buf_t fg_buf; 1182 } rvcn_dec_av1_segment_fg_t; 1183 1184 struct jpeg_params { 1185 unsigned bsd_size; 1186 unsigned dt_pitch; 1187 unsigned dt_uv_pitch; 1188 unsigned dt_luma_top_offset; 1189 unsigned dt_chroma_top_offset; 1190 unsigned dt_chromav_top_offset; 1191 unsigned dt_addr_mode; 1192 unsigned dt_swizzle_mode; 1193 uint16_t crop_x; 1194 uint16_t crop_y; 1195 uint16_t crop_width; 1196 uint16_t crop_height; 1197 }; 1198 1199 #define RDECODE_VCN1_GPCOM_VCPU_CMD 0x2070c 1200 #define RDECODE_VCN1_GPCOM_VCPU_DATA0 0x20710 1201 #define RDECODE_VCN1_GPCOM_VCPU_DATA1 0x20714 1202 #define RDECODE_VCN1_ENGINE_CNTL 0x20718 1203 1204 #define RDECODE_VCN2_GPCOM_VCPU_CMD (0x503 << 2) 1205 #define RDECODE_VCN2_GPCOM_VCPU_DATA0 (0x504 << 2) 1206 #define RDECODE_VCN2_GPCOM_VCPU_DATA1 (0x505 << 2) 1207 #define RDECODE_VCN2_GPCOM_VCPU_DATA2 (0x54C << 2) 1208 #define RDECODE_VCN2_ENGINE_CNTL (0x506 << 2) 1209 1210 #define RDECODE_VCN2_5_GPCOM_VCPU_CMD 0x3c 1211 #define RDECODE_VCN2_5_GPCOM_VCPU_DATA0 0x40 1212 #define RDECODE_VCN2_5_GPCOM_VCPU_DATA1 0x44 1213 #define RDECODE_VCN2_5_GPCOM_VCPU_DATA2 0x1A0 1214 #define RDECODE_VCN2_5_ENGINE_CNTL 0x9b4 1215 1216 #define RDECODE_SESSION_CONTEXT_SIZE (128 * 1024) 1217 1218 unsigned ac_vcn_dec_calc_ctx_size_av1(unsigned av1_version); 1219 void ac_vcn_av1_init_probs(unsigned av1_version, uint8_t *prob); 1220 void ac_vcn_av1_init_film_grain_buffer(unsigned av1_version, rvcn_dec_film_grain_params_t *fg_params, rvcn_dec_av1_fg_init_buf_t *fg_buf); 1221 1222 #endif 1223