Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • mesa mesa
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 3.4k
    • Issues 3.4k
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 1.1k
    • Merge requests 1.1k
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Artifacts
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
    • Model experiments
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

Admin message

Due to an influx of spam, we have had to impose restrictions on new accounts. Please see this wiki page for instructions on how to get full permissions. Sorry for the inconvenience.

  • MesaMesa
  • mesamesa
  • Issues
  • #1193

Bugs in RadeonSI VAAPI implementation

I attempted to play a H.264 video using VLC 3.0.8, with hardware acceleration using AMD's VAAPI driver in Mesa, but it fails to work correctly.

I checked the error output for VLC, and this is what's printed:

[00007f34cc001f50] glconv_vaapi_x11 gl error: vaDeriveImage: operation failed
[00007f34dc003320] main video output error: video output creation failed
[00007f34e8d8ada0] main decoder error: failed to create video output

VLC calls vaCreateSurfaces to create a bunch of surfaces, and then uses vaDeriveImage to check if it can get an image object (and hence a buffer object) that represents the surface, so that it can then be accessed via vaAcquireBufferHandle.

VLC's approach works with Intel's VAAPI driver (https://github.com/intel/intel-vaapi-driver), but doesn't work with AMD's VAAPI implementation in Mesa.

I looked at the AMD VAAPI implementation in Mesa, and it looks like there are bugs in the implementation. vaCreateSurfaces creates surfaces with the NV12 format for H.264 video, and also marks the surfaces as interlaced. However, in vaDeriveImage, it returns VA_STATUS_ERROR_OPERATION_FAILED if the surface is interlaced, and it also doesn't handle NV12 format (which is the only kind of surface that vaCreateSurfaces will create in the first place).

That seems like a bug to me.

Edited Dec 04, 2019 by Pierre-Eric Pelloux-Prayer
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking