1. 01 Aug, 2021 1 commit
  2. 27 Jul, 2021 6 commits
  3. 23 Jul, 2021 3 commits
  4. 19 Jul, 2021 9 commits
  5. 16 Jul, 2021 6 commits
  6. 15 Jul, 2021 3 commits
  7. 02 Jul, 2021 2 commits
    • James Ross-Gowan's avatar
      d3d11: add initial implementation · be32ca68
      James Ross-Gowan authored
      Add a pl_gpu implementation that uses Direct3D 11. This uses SPIRV-Cross
      to translate shaders from GLSL to HLSL. In its current state, plplay
      works and the test suite passes with feature level 10_0 and up. (9_x is
      unlikely to ever pass due to runtime-enforced shader complexity limits.)
      Missing features include emulated texture formats, cached_program,
      `pl_gpu_limits.thread_safe`, and HDR/high bit depth support in
      pl_swapchain, though these shouldn't be too hard to implement.
      This also updates the GLFW demos to be able to use Direct3D 11 through
      Closes #18
    • Niklas Haas's avatar
      glsl: refactor spirv compilation · 480dc28f
      Niklas Haas authored
      Rather than fixing/determining the pl_glsl_version at compiler creation
      time, this is now taken dynamically as a compilation parameter. In
      addition to this, the exact API / target version to compile against will
      be inferred from the GLSL description, rather than set explicitly. This
      allows us to take into account some of these limits during shader
      Move stuff into the common glsl/ subdir, mostly to allow the creation of
      glsl/utils.h which contains shared helpers between C and C++ that can't
      be placed into spirv.h directly due to C99/C++ incompatibility.
      Finally, rename some usage sites for consistency, enabling `stage` to
      always refer to the shader stage, `shader` to refer to the shader
      itself, and `glsl` to refer to the pl_glsl_version struct.
      Requires bumping the shaderc dependency. Fortunately, none of the usual
      candidates (debian stable etc.) even *package* ubuntu, so we're fine.
  8. 27 Jun, 2021 2 commits
    • James Ross-Gowan's avatar
      gpu: only invalidate pl_pass_run_params.target in a raster pass · 7acd201d
      James Ross-Gowan authored
      `pl_pass_run_params.target` should only be used for PL_PASS_RASTER and
      ignored for PL_PASS_COMPUTE, however pl_pass_run was invalidating the
      texture for both types of passes.
      This was found because `pl_dispatch_finish` unconditionally sets
      `target` for both types of passes. That should be harmless, but since
      `load_target` only gets set for raster passes, it resulted in
      `pl_dispatch_params.target` always being invalidated for compute passes.
    • Niklas Haas's avatar
      tests/libav: explicitly test only LE variants · 58de4668
      Niklas Haas authored
      Since our libav helpers rejects BE formats, using the NE-dependent
      aliases here is wrong. This makes the test framework pass on BE
      platforms. Though I'm not very convinced that the code actually works
      correctly, it's probably impossible to test in the absence of BE GPUs to
      test against.
      Closes #160
  9. 15 Jun, 2021 1 commit
  10. 14 Jun, 2021 2 commits
    • Niklas Haas's avatar
      demos/plplay: add pass stats · e341dad3
      Niklas Haas authored
      Not entirely happy with the presentation, but I also can't particularly
      be bothered to prettify it. It serves its purpose of illustrating this
    • Niklas Haas's avatar
      renderer: add info callback mechanism · b3a910f0
      Niklas Haas authored
      Forwards the information from the dispatch to the renderer API user, in
      the most transparent way, while also adding metadata about what "kind"
      of operation we're performing (frame rendering or blending).
      Closes #156
  11. 13 Jun, 2021 2 commits
  12. 10 Jun, 2021 1 commit
  13. 05 Jun, 2021 1 commit
  14. 03 Jun, 2021 1 commit
    • Niklas Haas's avatar
      vulkan: add checks for per-stage descriptor count limits · 7553c7a1
      Niklas Haas authored
      This prevents undefined behavior in the hypothetical case of these
      limits being very low.
      Technically this omits some limits such as checking against
      maxPerStageDescriptorSamplers for PL_DESC_SAMPLED_TEX, but I'm going out
      on a limb here and assuming that maxPerStageDescriptorSampledImages will
      never be lower than maxPerStageDescriptorSamplers.