Hi Julien, On 25 November 2015 at 09:07, Julien Isorce <julien.iso...@gmail.com> wrote: > From: Julien Isorce <julien.iso...@gmail.com> > > In general max_references cannot be based on num_render_targets. > > This patch allow to allocate accurate sizes for buffers. > For other codecs it is a fixed value to 2. > > This is similar behaviour as vaapi/vdpau-driver. > > XXX: do the same for HEVC > > Signed-off-by: Julien Isorce <j.iso...@samsung.com> > --- > src/gallium/state_trackers/va/context.c | 41 > ++++++++++++++-------------- > src/gallium/state_trackers/va/picture.c | 37 ++++++++++++++++++------- > src/gallium/state_trackers/va/picture_h264.c | 29 +++++++++++++++++++- > src/gallium/state_trackers/va/va_private.h | 4 +-- > 4 files changed, 78 insertions(+), 33 deletions(-) > > diff --git a/src/gallium/state_trackers/va/context.c > b/src/gallium/state_trackers/va/context.c > index f0051e5..985007b 100644 > --- a/src/gallium/state_trackers/va/context.c > +++ b/src/gallium/state_trackers/va/context.c
> + /* Can only create decoders for which max_references is known. */ > + if (u_reduce_video_profile(context->templat.profile) != > + PIPE_VIDEO_FORMAT_MPEG4_AVC) { > + context->decoder = drv->pipe->create_video_codec(drv->pipe, > + &context->templat); > + if (!context->decoder) { > + FREE(context); > + return VA_STATUS_ERROR_ALLOCATION_FAILED; > + } > } What is the benefit of delaying only h264 ? Won't this make things less obvious and you'll have more subtle checks throughout ? > --- a/src/gallium/state_trackers/va/picture.c > +++ b/src/gallium/state_trackers/va/picture.c > @@ -60,6 +60,12 @@ vlVaBeginPicture(VADriverContextP ctx, VAContextID > context_id, VASurfaceID rende > > context->target = surf->buffer; > if (!context->decoder) { > + /* Decoder creation is delayed until max_references is set. */ > + if (u_reduce_video_profile(context->templat.profile) == > + PIPE_VIDEO_FORMAT_MPEG4_AVC) > + return context->templat.max_references == 0 ? > + VA_STATUS_SUCCESS : VA_STATUS_ERROR_INVALID_CONTEXT; > + Can we really hit the VA_STATUS_ERROR_INVALID_CONTEXT case here ? The only way that I can think of is consecutive BeginPicture calls without a EndPicture - surely that can cause issues even without this patch. -Emil _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev