-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Add hint to specify Vulkan API version to use #14204
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
base: main
Are you sure you want to change the base?
Conversation
This adds SDL_HINT_VULKAN_REQUEST_API_VERSION to allow requesting a specific API version when SDL creates the Vulkan instance.
The patch version shouldn't be relevant to the API and a new major version will likely require an entirely new renderer anyway. The benefit of this approach is that it massively simplifies parsing of the hint.
We hardcode to 1.0 to provide maximum driver compatibility. I'm totally fine with allowing an opt-in to higher versions. |
include/SDL3/SDL_hints.h
Outdated
* This hint should be set before creating a Vulkan window. Expects a positive | ||
* integer. E.g. 3 for Vulkan 1.3. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's reasonable to allow specifying the full version and will be more intuitive for users. This is easily implemented with, e.g.
if (SDL_sscanf(hint, "%d.%d", &major, &minor) == 2) {
...
} else {
// Parse error...
}
Co-authored-by: Sam Lantinga <slouken@libsdl.org>
This reverts commit 6c4d2c0.
This needs a bit more time in the oven, I think. |
* Specify the Vulkan API version to create the instance with. | ||
* | ||
* This hint should be set before creating a Vulkan window. Expects a | ||
* version string delimited by underscores. E.g. 1_0_0 or 1_3_0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The string should be delimited by .
so it looks like a natural version number.
Currently
SDL_gpu_vulkan.c
hardcodes API version 1.0 when creating the Vulkan instance for the program. This creates a problem for my use-case.I'd like to use Slang for shader development, but SPIR-V 1.0 support is experimental. I tried two solutions and both work:
I looked at the Vulkan documentation (specifically this and this). It says "Deprecated items will still work in current Vulkan implementations", which makes me prefer option 2. A Vulkan application requesting 1.3, but using only 1.0 features should work just fine. And using a hint doesn't change SDL's default behavior.
Since I don't know why this was hardcoded, I figured I'd first ask if there's any chance of this merge request going anywhere. Before I waste time cleaning something up that's not going to be merged for reasons I didn't know of.