diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c index 3c1c00073dc..05bc4620ab2 100644 --- a/src/amd/common/ac_gpu_info.c +++ b/src/amd/common/ac_gpu_info.c @@ -966,6 +966,9 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info, case VCN_IP_VERSION(5, 0, 0): info->vcn_ip_version = VCN_5_0_0; break; + case VCN_IP_VERSION(5, 0, 1): + info->vcn_ip_version = VCN_5_0_1; + break; default: info->vcn_ip_version = VCN_UNKNOWN; } diff --git a/src/amd/common/amd_family.h b/src/amd/common/amd_family.h index d9d67a2b57d..99726f45aa9 100644 --- a/src/amd/common/amd_family.h +++ b/src/amd/common/amd_family.h @@ -214,6 +214,7 @@ enum vcn_version{ VCN_4_0_6, VCN_5_0_0, + VCN_5_0_1, }; #define SDMA_VERSION_VALUE(major, minor) (((major) << 8) | (minor)) diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c index b3dc3a6a308..6555bbbb445 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c @@ -2954,6 +2954,11 @@ struct pipe_video_codec *radeon_create_decoder(struct pipe_context *context, dec->addr_gfx_mode = RDECODE_ARRAY_MODE_ADDRLIB_SEL_GFX11; dec->av1_version = RDECODE_AV1_VER_1; break; + case VCN_5_0_1: + 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; default: RADEON_DEC_ERR("VCN is not supported.\n"); goto error; diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c index 0a988fd9f30..a83e63b54cf 100644 --- a/src/gallium/drivers/radeonsi/si_get.c +++ b/src/gallium/drivers/radeonsi/si_get.c @@ -664,7 +664,8 @@ static int si_get_video_param(struct pipe_screen *screen, enum pipe_video_profil sscreen->info.ip[AMD_IP_VCN_ENC].num_queues)) return 0; - if (sscreen->info.vcn_ip_version == VCN_4_0_3) + if (sscreen->info.vcn_ip_version == VCN_4_0_3 || + sscreen->info.vcn_ip_version == VCN_5_0_1) return 0; switch (param) { @@ -1148,7 +1149,8 @@ static bool si_vid_is_format_supported(struct pipe_screen *screen, enum pipe_for (sscreen->info.vcn_ip_version >= VCN_2_0_0)) || ((profile == PIPE_VIDEO_PROFILE_AV1_MAIN) && (sscreen->info.vcn_ip_version >= VCN_4_0_0 && - sscreen->info.vcn_ip_version != VCN_4_0_3)))) + sscreen->info.vcn_ip_version != VCN_4_0_3 && + sscreen->info.vcn_ip_version != VCN_5_0_1)))) return (format == PIPE_FORMAT_P010 || format == PIPE_FORMAT_NV12);