Skip to content

Support VK_EXT_frame_boundary in addition to vkQueuePresent #36

Closed

Description

@solidpixel

We currently only detect frames when the application submits to a present queue. For some use cases, including headless test builds on llvmpipe, this never happens. To support these use cases we should expose the VK_EXT_frame_boundary extension to allow applications to manually indicate frame boundaries.

Activity

  1. solidpixel commented on Dec 8, 2025

    @solidpixel
    ContributorAuthor

    Summary of required changes.

    The layer needs to expose the extension availability via vkGetPhysicalDeviceFeatures2(), storing whether the driver supported it in the layer per-instance config, and overriding the value return to the driver to indicate that it's enabled even if the driver doesn't support it.

    On calls to vkCreateDevice(), if the underlying driver did not support the extension, we must remove the extension enable structure from the list passed to the driver by editing safe-struct copy of the create info that we then pass to the driver.

    On calls to vkCreateDevice(), if the underlying driver did not support the extension, we must remove the extension enable structure from the list passed to the driver by editing safe-struct copy of the create info that we then pass to the driver.

    On calls to vkQueueSubmit(), vkQueueSubmit2() (and KHR version), vkQueuePresentKHR(), and vkQueueBindSparse(), we need to monitor the frame ID and use that to trigger frame boundaries in the layer. If the driver did not expose support for the frame boundary extension, we must remove the extension structure from the parameter structure passed down to the driver.

    Note, the current protocol for Mali Timeline assumes that frames are monotonically increasing, and cannot handle multiple in-flight frames that are concurrently using Vulkan from different threads.

  2. linked a pull request that will close this issueSupport VK_EXT_frame_boundary #160on Dec 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions