-
-
Notifications
You must be signed in to change notification settings - Fork 11.4k
CI windows vulkan update #8925
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
CI windows vulkan update #8925
Conversation
|
Thank you Vincent! I merged this as f77f68a (with changelog and minor shallow tweaks of comments) Tho I have to admit I am not 100% satisfied by this, since the process of downloading a ZIP file seems generally simpler, even though the new SDK are about ~14 MB (due to pdb). For the records can you clarify "there was issue unzipping the archive" ? Let's run with your changes for now! But in case it ends up more brittle due to past/future Vulkan SDK changes I may backtrack to use a ZIP. In theory I would find it valuable to ensure that we can change the tag to any version number, but do we know if the same build process/paths works with old VulkanSDK etc? In practice it may not matter so much.. let's see how it goes. |
|
@ocornut yeah it's not the bestest, but I tried to strike the balance between cleanness ease to update the sdk version. So I tried to avoid to have to upload a custom zip somewhere at all cost, as it's just too much friciton. I originally tried to pull down the sdk straight from https://vulkan.lunarg.com/sdk/home and 2 issues came up quickly. The headers are only in the sdk installer, and while 7zip can pull out the files from it without actually installing, I couldn't force powershell to uncompress it in place. The only zip you can get (the 14mb) only has the loader and not the headers. Arguably you could get away with just the headers, and dynamically load the loader dll, so you don't even need to get the loader and build it. Afaik the build process and tag scheme has been fairly stable for a while, but we are never guaranteed for it to not change. Although in that case, it wouldn't break CI, but just need to massage things a bit to upgrade to whatever version. |
|
This is failing: FYI i am also watching a CI run the new steps are fairly long. |
|
Oh this is a 32bit build. Those weren't running the other day when I made the PR. |
Ah yeah. |
|
Looking at this now. Official SDK don't even have a 32bit loader pre-built anymore, so going to have to build my own |
|
I'm still iterating on this, but here is a proposal:
|
|
See https://github.com/yaz0r/imgui/actions/runs/17718430439 for the result of the workflow and generated .zip |
|
Thanks for the update!
I would prefer to run this manually and occasionally anyhow. To be honest we may even be better off with a simple powershell batch file copying the same commands? There isn't a strong need to be updating often, mostly if a SDK specific problem occurs. Once we have those zip we can consider tweaking CI to build twice, one with oldest supported SDK, one with a recent one. The previously updated zip was ~434 KB (https://github.com/ocornut/imgui/files/3789205/vulkan-sdk-1.1.121.2.zip) because it only carried headers + lib, not actual dll (as we don't run on the CI server) let alone pdb. Nowadays if I strip those files it goes down to ~1.5 MB. I'd probably strip them from the copying script/batch file. |
|
@ocornut yaz0r@546a55e It moves the bulk of the logic to a standalone ps1 script. I left it as a workflow that can be triggered manually and generate a file of the format vulkan_windows_libs_$($env:VULKAN_TAG) |
|
Also, trimmed to minimal .lib files. I reverted the build step to your old zip, as I'm not sure how you uploaded it in the first place. |
4805534 to
d4f722d
Compare
|
@ocornut updated the PR with the changes |
|
Attachment: |
|
Thank you! GitHub upload urls changed so new urls look less adequate for what we are doing here, but I reckon we are not going to look at this very often, so I believe our problem is nicely solved now. Thank you very much! |
This reworks the way vulkan sdk is pulled, to hopefully simplify the burden of updating vulkan sdk
Also provide help for #8778
The general idea is to grab the minimal bits we need from the khronos repo with a specific tag. We only pull 2 things:
This treats the vulkan-header as the "vulkan sdk" folder, as it allow us to not have to copy out all the headers after unzip.
The loader require a minimal build to generate the .lib/dll required. This is done by just invoking cmake in the vulkan-load folder, and copying those out to the "vulkan sdk" folder.
For convenience, a $vulkanVersion is provided to target whatever release of the sdk we want to build against, and simplify the burden of updating.
Note: an initial attempt was done by pulling the sdk zip from lunarg, but that turned into a much longer download process, and there was issue unzipping the archive. This is way faster to just download the header/loader and use that for builds.