1. 23 Nov, 2018 3 commits
  2. 22 Nov, 2018 2 commits
  3. 21 Nov, 2018 7 commits
    • Niklas Haas's avatar
      vulkan: add test case for pl_sync · 95d826f5
      Niklas Haas authored
      Just use some dirty hacks to signal the VkSemaphore, for lack of any
      actual external API usage here.
      95d826f5
    • Niklas Haas's avatar
      vulkan: don't error when creating useless images · 04331ebe
      Niklas Haas authored
      Edge case that can arise in the test suite.
      04331ebe
    • Niklas Haas's avatar
      gpu: add pl_tex_export, replacing pl_vulkan_hold_external · 5d2be6e5
      Niklas Haas authored
      This is similar to the old vulkan hold/release_external but more
      generalized and more powerful. It also cleans up some of the semantics
      related to external image interop. To avoid headaches, just delete the
      old vulkan interop code in the same commit.
      
      To make sure we don't keep around references to destroyed sync objects,
      we refcount them. (This also means we don't need a lazy destructor,
      since a sync object that's not in use can be destroyed immediately -
      whereas a sync object that's in use will only be deref'd when the cmd
      callback fires)
      5d2be6e5
    • Philip Langdale's avatar
      vulkan: implement pl_sync · 2f5a19dc
      Philip Langdale authored
      These must eventually be ref-counted once we start using them to
      synchronize access to actual GPU resources.
      2f5a19dc
    • Philip Langdale's avatar
      gpu: add pl_sync (a semaphore pair) · b0fddcc5
      Philip Langdale authored
      This change introduces the generic definition of an exported semaphore
      pair. Such a pair can be imported by an external API for signalling and
      waiting, and will be passable to _hold() and _release() methods once
      those get introduced.
      
      Semaphores for internal use should just be created directly.
      b0fddcc5
    • Philip Langdale's avatar
      gpu: refactor shared memory handle API · 5198e156
      Philip Langdale authored
      When we introduce exportable semaphores, we'll have handles which are
      not memory-backed. To avoid a sloppy API, let's explicitly separate the
      two ideas. This also presents an opportunity to pull the object offset
      within the memory into the mem_handle definition. We also refactor the
      way the handle caps are presented to the user, to allow distinguishing
      between caps for shared memory and those for semaphores.
      
      We also turn the struct pl_gpu_handle into a union, since in practice,
      it is not going to be useful to export a given resource as multiple
      types of external handle - it will just one or another type. (This is
      mostly a simple substitution, but we must also note that vk_slabs must
      also carry the handle type explicitly, as we can no longer look at which
      field(s) are set in a pl_gpu_handle.)
      
      This is obviously an API break for any external usage of buffers or
      textures.
      5198e156
    • Philip Langdale's avatar
      gpu: assert texture ext_handles are supported by gpu caps · a07caf54
      Philip Langdale authored
      I missed this assertion when I added support for exportable textures.
      a07caf54
  4. 19 Nov, 2018 3 commits
    • Niklas Haas's avatar
      vulkan: avoid another risky PL_ALIGN2 · 76b707ff
      Niklas Haas authored
      Forgot this one in the previous commit.
      76b707ff
    • Niklas Haas's avatar
      vulkan: avoid risky/wrong alignment macro · e9eb74d7
      Niklas Haas authored
      I'm not 100% sure that this is guaranteed to be a power of two - and
      even if it is currently, it may not be after some unlucky refactor in
      the future. Just do the safe thing and waste the 1 CPU cycle in order to
      avoid blowing up under unforeseen circumstances.
      e9eb74d7
    • Niklas Haas's avatar
      swapchain: improve latency consistency and documentation · 52c21bbc
      Niklas Haas authored
      This mirrors a similar change in mpv, which helped reduce vsync jitter
      measurements by including the time of frame acquisition in the
      `swap_buffers` call. In general, doing things this way around is nicer
      for the user. In typical swapchain implementations, it also "does the
      right thing" w.r.t actually blocking until the buffer swap.
      
      As a side effect of the necessary internal cache metadata, we also make
      the vulkan swapchain more robust against API misuse (especially
      out-of-order / non-lockstepped swapchain calls).
      52c21bbc
  5. 18 Nov, 2018 3 commits
  6. 17 Nov, 2018 3 commits
    • Niklas Haas's avatar
      gpu: move pl_buffer_var from gpu.h to shaders.h · 573cf43c
      Niklas Haas authored
      This makes no real sense in gpu.h, since the pl_gpu doesn't actually
      need this information in any way. It's only needed for the shader header
      generation inside dispatch.h, so having it in shaders.h is the right
      place.
      
      Makes some code arguably a bit uglier, but whatever.
      573cf43c
    • Niklas Haas's avatar
      dispatch: cosmetic · a0781c25
      Niklas Haas authored
      No reason to have the space inside the string.
      a0781c25
    • Niklas Haas's avatar
      gpu: fix typo · 7a80dfd4
      Niklas Haas authored
      7a80dfd4
  7. 16 Nov, 2018 7 commits
  8. 13 Nov, 2018 2 commits
  9. 12 Nov, 2018 3 commits
  10. 10 Nov, 2018 1 commit
    • Niklas Haas's avatar
      meson: link glslang against pthread where needed · a7d2fc51
      Niklas Haas authored
      See the justification in the comments. Works around build issues on some
      platforms. Not the cleanest implementation, but then again, C linking is
      not the cleanest topic. (Actually not giving meson the blame here)
      a7d2fc51
  11. 07 Nov, 2018 4 commits
  12. 06 Nov, 2018 2 commits