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 <imirkin@alum.mit.edu>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10677>
This commit is contained in:
Ilia Mirkin
2021-05-06 21:13:46 -04:00
committed by Marge Bot
parent c7e877b0bf
commit d50e43c8a1
2 changed files with 7 additions and 2 deletions

View File

@@ -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;

View File

@@ -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