tu/kgsl: timeline-based queue and sync primitives#75
Draft
lfdevs wants to merge 4 commits into
Draft
Conversation
Pull profiling and perfetto integration out of the KGSL queue submit implementation and into helper struct and functions, making it reusabl in other KGSL submit variants. Signed-off-by: Zan Dobersek <zdobersek@igalia.com>
Use timeline-based queue submit and sync primitives if the KGSL kernel supports them. When supported, a timeline-based vk_sync_type implementation will be used by default, with a binary sync type emulated on top of it. For submits, a queue-specific timeline object is used to track submit completion. This enables a fast path that can be used when no command buffers or binds are submitted, with any waits and signals handled through simple ioctls. When that's not possible, waits are done on the first submitted command, and signals are handled through auxilliary commands. Signed-off-by: Zan Dobersek <zdobersek@igalia.com>
|
On Adreno 725/730 at least this does improve vulkan performance greatly. |
C++ designated initializers require fields to appear in the same order as they are declared in the struct. In vk_sync_type, 'signal' is declared before 'reset', so reorder the initializer accordingly. Fixes: compilation error with -Werror=reorder-init-list
|
Strangely, this change currently causes a significant performance regression on Adreno 740. tu/kgsl: timeline-based queue and sync primitives |
Owner
Author
|
Based on my testing, on Adreno 730, this PR currently only improves the performance of Turnip + Zink slightly, but in scenarios where only Turnip is used (such as vkmark and Minecraft Vulkan), the driver performance has decreased.
Test details
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The code is from an unmerged & draft MR of upstream: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39751
It may improve Turnip's performance.
Build artifacts: https://github.com/lfdevs/mesa-for-android-container/actions/runs/27422113017?pr=75#artifacts
It is worth mentioning that the directly downloaded file is a .zip archive, which needs to be unzipped once to get the .tar.gz installation package.