diff --git a/src/gallium/frontends/vdpau/query.c b/src/gallium/frontends/vdpau/query.c index 701d9f220c4..a1e67e315b4 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 8719b1f8376..e26f73fe1ce 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