Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vulkan #1

Closed
wants to merge 8 commits into from
Closed

Vulkan #1

wants to merge 8 commits into from

Commits on Oct 27, 2019

  1. avutil/hwcontext: Add support for HW -> HW transfers

    We are beginning to consider scenarios where a given HW Context
    may be able to transfer frames to another HW Context without
    passing via system memory - this would usually be when two
    contexts represent different APIs on the same device (eg: Vulkan
    and CUDA).
    
    This is modelled as a transfer, as we have today, but where both
    the src and the dst are hardware frames with hw contexts. We need
    to be careful to ensure the contexts are compatible - particularly,
    we cannot do transfers where one of the frames has been mapped via
    a derived frames context - we can only do transfers for frames that
    were directly allocated by the specified context.
    
    Additionally, as we have two hardware contexts, the transfer function
    could be implemented by either (or indeed both). To handle this
    uncertainty, we explicitly look for ENOSYS as an indicator to try
    the transfer in the other direction before giving up.
    philipl authored and cyanreg committed Oct 27, 2019
    Configuration menu
    Copy the full SHA
    75ef8d8 View commit details
    Browse the repository at this point in the history
  2. lavu: add Vulkan hwcontext code

    This commit adds the necessary code to initialize and use a Vulkan device
    within the hwcontext libavutil framework.
    Currently direct mapping to VAAPI and DRM frames is functional, as well as
    transfers to CUDA frames and native frames is supported.
    cyanreg committed Oct 27, 2019
    Configuration menu
    Copy the full SHA
    c682e3b View commit details
    Browse the repository at this point in the history
  3. avfilter/vf_hwupload: Add support for HW -> HW transfers

    As we find ourselves wanting a way to transfer frames between
    HW devices (or more realistically, between APIs on the same device),
    it's desirable to have a way to describe the relationship. While
    we could imagine introducing a `hwtransfer` filter, there is
    almost no difference from `hwupload`. The main new feature we need
    is a way to specify the target device. Having a single device
    for the filter chain is obviously insufficient if we're dealing
    with two devices.
    
    So let's add a way to specify the upload target device, and if none
    is specified, continue with the existing behaviour.
    
    We must also correctly preserve the sw_format on such a transfer.
    philipl authored and cyanreg committed Oct 27, 2019
    Configuration menu
    Copy the full SHA
    a0c1ca4 View commit details
    Browse the repository at this point in the history
  4. lavfi: add Vulkan filtering framework

    This commit adds a Vulkan filtering infrastructure for libavfilter.
    It attempts to abstract as much as possible of the Vulkan API from filters.
    cyanreg committed Oct 27, 2019
    Configuration menu
    Copy the full SHA
    2db5acd View commit details
    Browse the repository at this point in the history
  5. lavfi: add an scale_vulkan filter

    This commit adds a basic, non-converting Vulkan scaling filter.
    cyanreg committed Oct 27, 2019
    Configuration menu
    Copy the full SHA
    75d227a View commit details
    Browse the repository at this point in the history
  6. lavfi: add an overlay_vulkan filter

    This commit adds a basic, non-converting overlay filter for Vulkan.
    cyanreg committed Oct 27, 2019
    Configuration menu
    Copy the full SHA
    19382e1 View commit details
    Browse the repository at this point in the history
  7. lavfi: add an avgblur_vulkan filter

    This commit adds a fast avgblur Vulkan filter.
    This will reset Intel GPUs on Windows due to a known, year-old driver bug.
    cyanreg committed Oct 27, 2019
    Configuration menu
    Copy the full SHA
    821079b View commit details
    Browse the repository at this point in the history
  8. lavfi: add an chromaber_vulkan filter

    This commit adds a chromatic aberration filter for Vulkan that attempts to
    emulate a lens chromatic aberration effect.
    For a YUV frame it will instead shift chroma slightly, providing an
    approximation to what would otherwise be an accurate emulation.
    cyanreg committed Oct 27, 2019
    Configuration menu
    Copy the full SHA
    97ea53d View commit details
    Browse the repository at this point in the history