[Mesa-dev] 10bit HEVC decoding for RadeonSI v2

Philipp Kerling pkerling at casix.org
Sun Feb 11 10:35:08 UTC 2018


Hi,

2018-02-11 (日) の 11:02 +0100 に Christian König さんは書きました:
> Am 09.02.2018 um 21:35 schrieb Philipp Kerling:
> > Hi,
> > 
> > resurrecting this thread again since there's been some progress on
> > the
> > Kodi side.
> > 
> > > For the EGL part, see <https://github.com/01org/libva/pull/125>
> > > and <https://lists.freedesktop.org/archives/mesa-dev/2017-October
> > > /171246.html>.
> > 
> > We recently started testing vaExportSurfaceHandle support, so we
> > will
> > have this covered soon.
> > 
> > > I have been testing with mpv and ffmpeg; any thoughts from the
> > > Kodi point of view would be most welcome.
> > 
> > It generally works quite well, but we still have the unresolved
> > vaSyncSurface problem.
> > To recap: vaExportSurfaceHandle requires calling vaSyncSurface to
> > make
> > sure that the decode is actually finished and the buffer is usable
> > before rendering the frame. However, vaSyncSurface was largely
> > unimplemented on mesa back then and it was unclear how to proceed
> > with
> > regard to decode (VAAPI)/present (EGL+GL) synchronization.
> > 
> > So on to the question: Is this still the case, or has there been
> > progress on implementing vaSyncSurface in mesa? In either case, do
> > we
> > need that support or does this syncing work implicitly somehow on
> > AMD?
> > 
> > I've noticed that mpv does not seem to call vaSyncSurface, although
> > it
> > technically should.
> 
> Actually the mpv approach is correct.
> 
> Calling vaSyncSurface is unnecessary and undesired for AMD hardware 
> because it moves synchronization to the CPU while it should happen
> on 
> the GPU and/or GPU scheduler.
> 
> E.g. our 3D pipeline can wait for hardware video decoding to finish 
> before starting the rendering. We even have some implementations
> which 
> allow the 3D pipeline to start when only the first halve of the
> picture 
> is decoded etc..
> 
> If we don't do this the 3D pipeline runs dry between frame decoding 
> which leads to problems with power management.
Thanks for the explanation! To verify: For AMD hardware, all of this is
taken care of implicitly when we use the DRMPRIME buffer from
vaExportSurfaceHandle in EGL/GL? We don't need to wait for anything?

> We should probably add a flag or bit or feature or something like
> this 
> to note that the application explicitly should NOT call
> vaSyncSurface 
> before exporting the surface.
Doesn't this also depend on how the surface is going to be used? What
happens if I mmap the dma-buf fd and copy from the buffer via CPU? Does
this also sync implicitly at some point?

Regards,
Philipp


More information about the mesa-dev mailing list