[Libva] [PATCH Libva-intel-driver] Add one option of bypassing rendering function to test decoding

Zhao Yakui yakui.zhao at intel.com
Thu May 8 01:24:39 PDT 2014


On Thu, 2014-05-08 at 02:14 -0600, Yuan, Shengquan wrote:
> Yes, va_x11.c has the code. It looks I just checked a wrong file.

It doesn't matter.

> 
> I think its application's responsibility to call vaSyncSurface to make sure the decoding on the surface is completed before it calls vaPutSurface for display.

Understand your concern.
But in fact most application doesn't care the sync between decoding and
vaPutSurface and they won't call the vaSyncSurface explicitly. Instead
the low level driver can handle the sync(And the sync is implicitly
handled).
So my proposal is to call the vaSyncSurface for the dummy vaPutSurface.

Thanks.
    Yakui

> 
> Thanks
> -Austin
> 
> 
> -----Original Message-----
> From: Libva [mailto:libva-bounces at lists.freedesktop.org] On Behalf Of Zhao Yakui
> Sent: Thursday, May 08, 2014 4:10 PM
> To: Yuan, Shengquan
> Cc: libva at lists.freedesktop.org
> Subject: Re: [Libva] [PATCH Libva-intel-driver] Add one option of bypassing rendering function to test decoding
> 
> On Thu, 2014-05-08 at 01:09 -0600, Yuan, Shengquan wrote:
> > export LIBVA_FOOL_POSTP=1
> > 
> > Unfortunately, it is not handled in x11/va_x11.c: vaPutSurface
> > 
> > We may need similar codes as android/va_androi.c:vaPutSurface for 
> > va_x11.c:vaPutSurface
> > 
> >     if (fool_postp)
> >         return VA_STATUS_SUCCESS;
> 
> Thanks for your suggestion. 
> Now the "LIBVA_FOOL_POSTP=1" can be used for bypassing vaPutSurface in x11/va_x11.c and android/va_android.c. 
> 
> Of course IMO it will make sense that the vaSyncSurface is also called instead of real dummy vaPutSurface when the LIBVA_FOOL_POSTP is set.
> (This is to assure that the previous decoding is finished).
> 
> Thanks.
>     Yakui
> 
> > 
> > Thanks
> > -Austin
> > 
> > 
> > -----Original Message-----
> > From: Libva [mailto:libva-bounces at lists.freedesktop.org] On Behalf Of 
> > Zhao Yakui
> > Sent: Tuesday, May 06, 2014 12:50 PM
> > To: Xu, Guangxin
> > Cc: Zhao at freedesktop.org; libva at lists.freedesktop.org
> > Subject: Re: [Libva] [PATCH Libva-intel-driver] Add one option of 
> > bypassing rendering function to test decoding
> > 
> > On Mon, 2014-05-05 at 22:44 -0600, Xu, Guangxin wrote:
> > > Hi Yakui
> > > This will introduce side effect to normal case. It will search string in environment list. No matter INTEL_DECODE_BENCH defined or not.
> > 
> > Maybe the getenv("INTEL_DECODE_BENCH") will cost some time as it searches env list. But compared with the time of rendering/decoding operation, the cost time can almost be ignored. 
> > 
> > > 
> > > 
> > > -----Original Message-----
> > > From: Libva [mailto:libva-bounces at lists.freedesktop.org] On Behalf 
> > > Of Zhao Yakui
> > > Sent: Tuesday, May 6, 2014 12:36 PM
> > > To: Xiang, Haihao
> > > Cc: Zhao at freedesktop.org; libva at lists.freedesktop.org
> > > Subject: Re: [Libva] [PATCH Libva-intel-driver] Add one option of 
> > > bypassing rendering function to test decoding
> > > 
> > > On Mon, 2014-05-05 at 22:19 -0600, Xiang, Haihao wrote:
> > > > It would be better not to call vaPutSurface() in your benchmark if 
> > > > you want to ignore rendering.
> > > 
> > > Thanks for your review.
> > > 
> > > It is also one solution. Currently the bench test is based on the mplayer-vaapi. In such case it is not easy to bypass the vaPutSurface.
> > > At the same time it also needs to add the function of waiting for the completion of decoding.
> > > 
> > > > 
> > > > Thanks
> > > > Haihao
> > > > 
> > > > 
> > > > > From: Zhao Yakui <yakui.zhao at intel.com>
> > > > > 
> > > > > Signed-off-by: Zhao Yakui <yakui.zhao at intel.com>
> > > > > ---
> > > > >  src/i965_drv_video.h  | 3 +++
> > > > >  src/i965_output_dri.c | 4 ++++
> > > > >  2 files changed, 7 insertions(+)
> > > > > 
> > > > > diff --git a/src/i965_drv_video.h b/src/i965_drv_video.h index
> > > > > 0e32f7d..70755d2 100644
> > > > > --- a/src/i965_drv_video.h
> > > > > +++ b/src/i965_drv_video.h
> > > > > @@ -432,6 +432,9 @@ extern VAStatus i965_CreateSurfaces(VADriverContextP ctx,
> > > > >                      int format,
> > > > >                      int num_surfaces,
> > > > >                      VASurfaceID *surfaces);
> > > > > +extern VAStatus i965_SyncSurface(VADriverContextP ctx,
> > > > > +                                 VASurfaceID render_target);
> > > > > +
> > > > >  
> > > > >  #define I965_SURFACE_MEM_NATIVE             0
> > > > >  #define I965_SURFACE_MEM_GEM_FLINK          1
> > > > > diff --git a/src/i965_output_dri.c b/src/i965_output_dri.c index
> > > > > 717ee9a..645a7d1 100644
> > > > > --- a/src/i965_output_dri.c
> > > > > +++ b/src/i965_output_dri.c
> > > > > @@ -140,6 +140,10 @@ i965_put_surface_dri(
> > > > >      if (!obj_surface || !obj_surface->bo)
> > > > >          return VA_STATUS_SUCCESS;
> > > > >  
> > > > > +    if (getenv("INTEL_DECODE_BENCH")) {
> > > > > +        i965_SyncSurface(ctx, surface);
> > > > > +        return VA_STATUS_SUCCESS;
> > > > > +    }
> > > > >      _i965LockMutex(&i965->render_mutex);
> > > > >  
> > > > >      dri_drawable = dri_vtable->get_drawable(ctx, 
> > > > > (Drawable)draw);
> > > > 
> > > > 
> > > 
> > > 
> > > _______________________________________________
> > > Libva mailing list
> > > Libva at lists.freedesktop.org
> > > http://lists.freedesktop.org/mailman/listinfo/libva
> > 
> > 
> > _______________________________________________
> > Libva mailing list
> > Libva at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/libva
> 
> 
> _______________________________________________
> Libva mailing list
> Libva at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/libva




More information about the Libva mailing list