decode->sw_ctxt_size = RDECODE_SESSION_CONTEXT_SIZE;
decode->db_pitch = align(dec->base.width, dec->db_alignment);
- if (((struct si_screen*)dec->screen)->info.family >= CHIP_NAVI21 &&
+ if ((((struct si_screen*)dec->screen)->info.family >= CHIP_NAVI21 ||
+ ((struct si_screen*)dec->screen)->info.family == CHIP_GFX940) &&
(dec->stream_type == RDECODE_CODEC_VP9 || dec->stream_type == RDECODE_CODEC_AV1 ||
dec->base.profile == PIPE_VIDEO_PROFILE_HEVC_MAIN_10))
decode->db_aligned_height = align(dec->base.height, 64);
dec->ws = ws;
if (u_reduce_video_profile(templ->profile) != PIPE_VIDEO_FORMAT_JPEG &&
- sctx->gfx_level >= GFX11) {
+ (sctx->gfx_level >= GFX11 || sctx->family == CHIP_GFX940)) {
dec->vcn_dec_sw_ring = true;
ring = AMD_IP_VCN_UNIFIED;
}
for (i = 0; i < ARRAY_SIZE(dec->render_pic_list); i++)
dec->render_pic_list[i] = NULL;
- if (sctx->family >= CHIP_NAVI21 && (stream_type == RDECODE_CODEC_H264_PERF)) {
+ if ((sctx->family >= CHIP_NAVI21 || sctx->family == CHIP_GFX940) &&
+ (stream_type == RDECODE_CODEC_H264_PERF)) {
for (i = 0; i < ARRAY_SIZE(dec->h264_valid_ref_num); i++)
dec->h264_valid_ref_num[i] = (unsigned) -1;
for (i = 0; i < ARRAY_SIZE(dec->h264_valid_poc_num); i++)
}
}
- if (sctx->family >= CHIP_NAVI21 &&
+ if ((sctx->family >= CHIP_NAVI21 || sctx->family == CHIP_GFX940) &&
(stream_type == RDECODE_CODEC_VP9 ||
stream_type == RDECODE_CODEC_AV1 ||
((stream_type == RDECODE_CODEC_H265) && templ->expect_chunked_decode) ||
break;
case CHIP_GFX940:
dec->jpg_reg.version = RDECODE_JPEG_REG_VER_V3;
+ dec->addr_gfx_mode = RDECODE_ARRAY_MODE_ADDRLIB_SEL_GFX9;
+ dec->av1_version = RDECODE_AV1_VER_1;
break;
case CHIP_GFX1100:
case CHIP_GFX1101: