From: Ilia Mirkin Date: Fri, 7 May 2021 01:13:46 +0000 (-0400) Subject: vdpau: allow state tracker to report a lower number of macroblocks X-Git-Tag: upstream/21.2.3~2419 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d50e43c8a17184d5f9dd4fa039e4f1dbea0c9067;p=platform%2Fupstream%2Fmesa.git vdpau: allow state tracker to report a lower number of macroblocks NVIDIA hardware can process tall or wide videos, but not both at the same time (for some gens). This limit is provided in units of macroblocks. Signed-off-by: Ilia Mirkin Reviewed-by: Leo Liu Part-of: --- diff --git a/src/gallium/frontends/vdpau/query.c b/src/gallium/frontends/vdpau/query.c index 701d9f2..a1e67e3 100644 --- a/src/gallium/frontends/vdpau/query.c +++ b/src/gallium/frontends/vdpau/query.c @@ -205,7 +205,11 @@ vlVdpDecoderQueryCapabilities(VdpDevice device, VdpDecoderProfile profile, PIPE_VIDEO_CAP_MAX_HEIGHT); *max_level = pscreen->get_video_param(pscreen, p_profile, PIPE_VIDEO_ENTRYPOINT_BITSTREAM, PIPE_VIDEO_CAP_MAX_LEVEL); - *max_macroblocks = (*max_width/16)*(*max_height/16); + *max_macroblocks = pscreen->get_video_param(pscreen, p_profile, PIPE_VIDEO_ENTRYPOINT_BITSTREAM, + PIPE_VIDEO_CAP_MAX_MACROBLOCKS); + if (*max_macroblocks == 0) { + *max_macroblocks = (*max_width/16)*(*max_height/16); + } } else { *max_width = 0; *max_height = 0; diff --git a/src/gallium/include/pipe/p_video_enums.h b/src/gallium/include/pipe/p_video_enums.h index 8719b1f..e26f73f 100644 --- a/src/gallium/include/pipe/p_video_enums.h +++ b/src/gallium/include/pipe/p_video_enums.h @@ -88,7 +88,8 @@ enum pipe_video_cap PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE = 6, PIPE_VIDEO_CAP_SUPPORTS_INTERLACED = 7, PIPE_VIDEO_CAP_MAX_LEVEL = 8, - PIPE_VIDEO_CAP_STACKED_FRAMES = 9 + PIPE_VIDEO_CAP_STACKED_FRAMES = 9, + PIPE_VIDEO_CAP_MAX_MACROBLOCKS = 10, }; enum pipe_video_entrypoint