diff --git a/.pick_status.json b/.pick_status.json index a763cff1af1..baab176c698 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -854,7 +854,7 @@ "description": "radeonsi: fix video processing path without VPE enabled", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "6b441ef6ab1e89da5560cd31711feb499a9cd8ff", "notes": null diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c index 495e91365c8..93c9606fc62 100644 --- a/src/gallium/drivers/radeonsi/si_get.c +++ b/src/gallium/drivers/radeonsi/si_get.c @@ -575,12 +575,9 @@ static int si_get_video_param(struct pipe_screen *screen, enum pipe_video_profil /* Return the capability of Video Post Processor. * Have to determine the HW version of VPE. * Have to check the HW limitation and + * Check if the VPE exists and is valid */ - if (entrypoint == PIPE_VIDEO_ENTRYPOINT_PROCESSING) { - /* Check if the VPE exists and is valid */ - if (!sscreen->info.ip[AMD_IP_VPE].num_queues) { - return false; - } + if (sscreen->info.ip[AMD_IP_VPE].num_queues && entrypoint == PIPE_VIDEO_ENTRYPOINT_PROCESSING) { switch(param) { case PIPE_VIDEO_CAP_SUPPORTED: @@ -1011,7 +1008,7 @@ static bool si_vid_is_format_supported(struct pipe_screen *screen, enum pipe_for { struct si_screen *sscreen = (struct si_screen *)screen; - if (entrypoint == PIPE_VIDEO_ENTRYPOINT_PROCESSING) { + if (sscreen->info.ip[AMD_IP_VPE].num_queues && entrypoint == PIPE_VIDEO_ENTRYPOINT_PROCESSING) { /* Todo: * Unable to confirm whether it is asking for an input or output type * Have to modify va frontend for solving this problem diff --git a/src/gallium/drivers/radeonsi/si_uvd.c b/src/gallium/drivers/radeonsi/si_uvd.c index d7f944c7069..3f01b6f5591 100644 --- a/src/gallium/drivers/radeonsi/si_uvd.c +++ b/src/gallium/drivers/radeonsi/si_uvd.c @@ -115,7 +115,8 @@ struct pipe_video_codec *si_uvd_create_decoder(struct pipe_context *context, else return si_vce_create_encoder(context, templ, ctx->ws, si_vce_get_buffer); } - } else if (templ->entrypoint == PIPE_VIDEO_ENTRYPOINT_PROCESSING) + } else if (((struct si_screen *)(context->screen))->info.ip[AMD_IP_VPE].num_queues && + templ->entrypoint == PIPE_VIDEO_ENTRYPOINT_PROCESSING) return si_vpe_create_processor(context, templ); if (ctx->vcn_ip_ver == VCN_4_0_0)