On 25 November 2015 at 15:04, Emil Velikov <emil.l.veli...@gmail.com> wrote:
> 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 ? > Good idea, I had a try and indeed it is much easier. > > > --- 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. > You are right, I'll remove this :) Thx > > -Emil >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev