-
-
Notifications
You must be signed in to change notification settings - Fork 21.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for vk graphics pipeline library extension #72682
base: master
Are you sure you want to change the base?
Support for vk graphics pipeline library extension #72682
Conversation
For future readers. This is a very new Vulkan extension (less than 1 year old) and is only supported by a few devices (GPUinfo reports 5.46% coverage so far. While that number is biased as most samples were reported before the extension was made it highlights that this is quite new). That being said, its a very exciting change to the Vulkan spec that hopefully will help further reduce pipeline compilation stalls. |
Do you know if this is an hardware limitation or if there will also be some driver (e.g. Mesa) implementations, if they're even possible? |
Mesa team is working on a RADV GPL implementation. I believe it works but doesn't have shader cache mechanism implemented yet. |
40f6513
to
0a69464
Compare
Getting hashing to work was a bit tedious and painful. Might be due to my inexperience of making custom hash-able classes but I finally got pipeline stages caching to work🥳 (I at least hope so). The journey hasn't ended yet but I think that this is a good opportunity to ask for some battle testing to make sure that everything works like before. If anyone can find bugs that might be related to graphics pipeline library caching, let me know. Best way to know if it is related to pipeline caching is comparing renderdoc captures between each other with graphics pipeline library enabled and without it. Example: |
Quickly made an update that reduced amount of cached elements. |
4151382
to
d24f44b
Compare
This is a first draft of graphics pipeline library extension support in Godot. This extension allows splitting graphics pipeline creation into 4 different stages vertex input, vertex shader (It includes geometry and tesselation), fragment shader and fragment output which in turn allows re-usage of different stages when for example creating a new pipeline with similar permutations. In addition, extension allows PSOs to be compiled in creation time.
There are still things that need to be resolved before merging the PR.
More info about the extension