diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c index f37deb9bda5..5cca2a8590d 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c @@ -3132,10 +3132,9 @@ struct pipe_video_codec *radeon_create_decoder(struct pipe_context *context, if (dec->stream_type == RDECODE_CODEC_JPEG) { - if (sctx->vcn_ip_ver == VCN_2_5_0 || sctx->vcn_ip_ver == VCN_2_6_0) - dec->njctx = 2; - else if (sctx->vcn_ip_ver == VCN_4_0_3) - dec->njctx = 24; + if (((struct si_screen*)dec->screen)->info.ip[AMD_IP_VCN_JPEG].num_queues > 1 && + ((struct si_screen*)dec->screen)->info.ip[AMD_IP_VCN_JPEG].num_queues <= MAX_JPEG_INST) + dec->njctx = ((struct si_screen*)dec->screen)->info.ip[AMD_IP_VCN_JPEG].num_queues; else dec->njctx = 1; diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_dec.h b/src/gallium/drivers/radeonsi/radeon_vcn_dec.h index 1be65c7ded8..a8d099d28ad 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_dec.h +++ b/src/gallium/drivers/radeonsi/radeon_vcn_dec.h @@ -15,6 +15,7 @@ #include "ac_vcn_dec.h" #define NUM_BUFFERS 4 +#define MAX_JPEG_INST 64 struct rvcn_dec_dynamic_dpb_t2 { struct list_head list;