Skip to content

afmf-linux v0.3.0

Choose a tag to compare

@github-actions github-actions released this 15 Sep 11:00
· 92 commits to main since this release
v0.3.0
9ad3755

First public release.

Added

  • Presentation thread per swapchain: the application's thread returns right after the layer's
    submit; both presents, the spare refill and the pacing hold run on the thread.
  • Half-frame pacing (AFMF_PACING, on by default): the real frame is held back half the
    smoothed frame time so the generated frame lands evenly in between, the same half-frame of added
    latency AMD's implementation has.
  • Shared compute queue: when the application took every compute queue (vkd3d-proton asks for all
    of RADV's), the layer works on the application's last one and serialises the application's own
    submits on it.
  • Spare image acquired a frame ahead with a fence, never waited for in the present hook
    (AFMF_ACQUIRE_TIMEOUT_US defaults to 0).
  • Host-side profile (AFMF_PROFILE=1): real fps, microseconds spent in the hook and on the
    thread, pacing hold; surfaces log their window system (Wayland, X11, headless).
  • vkAcquireNextImage(2)KHR and vkDeviceWaitIdle hooks, serialised with the thread.
  • Present chains carried to the thread: VkPresentIdKHR, VkSwapchainPresentModeInfoEXT,
    VkSwapchainPresentFenceInfoEXT, VkPresentTimingsInfoEXT; anything else presents inline.
  • AFMF_SEARCH_MODE=auto picks 5 pyramid levels at half flow resolution, 7 at full.
  • Headless test variants: shared queue (AFMF_TEST_ALL_QUEUES), paced presents
    (AFMF_TEST_FRAME_MS, AFMF_TEST_FRAMES).

Changed

  • Barriers between compute passes no longer name the transfer stage; the pyramid and the scene
    change histogram run without a barrier between them (493 -> 434 us per frame at 3440x1440).