Skip to content

spirv: Vulkan SDK based versioning #225

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

Closed
msiglreith opened this issue Nov 22, 2021 · 6 comments
Closed

spirv: Vulkan SDK based versioning #225

msiglreith opened this issue Nov 22, 2021 · 6 comments

Comments

@msiglreith
Copy link
Contributor

The current SPIR-V version used is 1.5.4 which is almost 1 year old. With the latest Vulkan SDK, SPIR-V headers are tagged with the SDK version, which should update more regularly. This couples it more with the Vulkan version scheme tho.

Latest: https://github.com/KhronosGroup/SPIRV-Headers/releases/tag/sdk-1.2.198.0

@MarijnS95
Copy link
Collaborator

@msiglreith Thanks! Blame KhronosGroup/SPIRV-Headers#199 for not being pinged about this release! I have sneakily been keeping this up to date in #226 - still needs one clippy/check fix, but it's already usable.

@MarijnS95
Copy link
Collaborator

This couples it more with the Vulkan version scheme tho.

As for basing our version on the SDK, we've intentionally not done that when restarting with the spirv crate because of #196 - we cannot restart counting all over again for the rspirv crate either. The main problem here is that our API (what we generate and write by hand) may change regardless of what changed in the SDK release. Hence we use "version metadata" to indicate what version it is generated against.

(Unless you were merely mentioning that SPIR-V is now following SDK versioning, and are solely requesting rspirv to update)

@msiglreith
Copy link
Contributor Author

The last part was mostly related to tying it closer to Vulkan as main consumer/driving force for SPIR-V modules, in case this is not desired. As the current version scheme is more general purpose (ie OpenCL).
For me the sdk-1.2.198 is fine - happy to have access to some newer SPIR-V operands :)

@MarijnS95
Copy link
Collaborator

I personally don't really mind, just happy SPIRV-Headers finally starts tagging their commits after a massive period of silence.

For (r)spirv we'll just keep following the semver we got going already, with the +sdk-1.2.182 version metadata appended :)

@MarijnS95
Copy link
Collaborator

@msiglreith This issue is resolved now that we moved from spirv_headers to spirv, right? We have our own versioning scheme now so that breaking changes on the Rust side are properly separated from the SPIR-V headers (we'll have to do a breaking bump when they do a breaking bump though), and the version metadata "field" is used to relay the SPIR-V version a particular Rust spirv release was generated from.

Unfortunately the requested release of the first SDK regen in #226 hasn't made it into a release yet, but I'm not sure if this issue is just requesting a release anymore, or was only raising awareness about finally getting newer SPIRV-Headers tags.

@msiglreith
Copy link
Contributor Author

Right thanks, this was more about keeping the source more in-sync with the SPIRV changes given the SPIRV release cycle were very long

MarijnS95 added a commit that referenced this issue Nov 5, 2024
Since inheriting the `spirv` crate and dropping the `spirv_headers`
crate in #204, and following up on a choice in #197 to no longer have
the SPIR-V major/minor version in our crate version which disallows us
from making any breaking changes to the crate, we reset the version to
`0.1.0` and embedded the SPIR-V version via _version metadata_ instead.
This stale comment in the README was still indicating as such though,
confusing users in e.g. #252 that our `spirv` crate was somehow exposing
SPIR-V 1.3 (should have been 0.3 by that logic which is the current
latest version).  Remove it entirely.

Note also that since #225 / #226 our version metadata is no longer the
SPIR-V version/revision but the Vulkan SDK tag that it was released
with.  The SPIR-V version isn't bumped often enough to match extensions
in new SDK releases, making the SDK tag more indicative of the included
API surface instead.
MarijnS95 added a commit that referenced this issue Dec 28, 2024
Since inheriting the `spirv` crate and dropping the `spirv_headers`
crate in #204, and following up on a choice in #197 to no longer have
the SPIR-V major/minor version in our crate version which disallows us
from making any breaking changes to the crate, we reset the version to
`0.1.0` and embedded the SPIR-V version via _version metadata_ instead.
This stale comment in the README was still indicating as such though,
confusing users in e.g. #252 that our `spirv` crate was somehow exposing
SPIR-V 1.3 (should have been 0.3 by that logic which is the current
latest version).  Remove it entirely.

Note also that since #225 / #226 our version metadata is no longer the
SPIR-V version/revision but the Vulkan SDK tag that it was released
with.  The SPIR-V version isn't bumped often enough to match extensions
in new SDK releases, making the SDK tag more indicative of the included
API surface instead.
MarijnS95 added a commit that referenced this issue Dec 28, 2024
Since inheriting the `spirv` crate and dropping the `spirv_headers`
crate in #204, and following up on a choice in #197 to no longer have
the SPIR-V major/minor version in our crate version which disallows us
from making any breaking changes to the crate, we reset the version to
`0.1.0` and embedded the SPIR-V version via _version metadata_ instead.
This stale comment in the README was still indicating as such though,
confusing users in e.g. #252 that our `spirv` crate was somehow exposing
SPIR-V 1.3 (should have been 0.3 by that logic which is the current
latest version).  Remove it entirely.

Note also that since #225 / #226 our version metadata is no longer the
SPIR-V version/revision but the Vulkan SDK tag that it was released
with.  The SPIR-V version isn't bumped often enough to match extensions
in new SDK releases, making the SDK tag more indicative of the included
API surface instead.
MarijnS95 added a commit that referenced this issue Mar 28, 2025
Since inheriting the `spirv` crate and dropping the `spirv_headers`
crate in #204, and following up on a choice in #197 to no longer have
the SPIR-V major/minor version in our crate version which disallows us
from making any breaking changes to the crate, we reset the version to
`0.1.0` and embedded the SPIR-V version via _version metadata_ instead.
This stale comment in the README was still indicating as such though,
confusing users in e.g. #252 that our `spirv` crate was somehow exposing
SPIR-V 1.3 (should have been 0.3 by that logic which is the current
latest version).  Remove it entirely.

Note also that since #225 / #226 our version metadata is no longer the
SPIR-V version/revision but the Vulkan SDK tag that it was released
with.  The SPIR-V version isn't bumped often enough to match extensions
in new SDK releases, making the SDK tag more indicative of the included
API surface instead.
MarijnS95 added a commit that referenced this issue Mar 28, 2025
Since inheriting the `spirv` crate and dropping the `spirv_headers`
crate in #204, and following up on a choice in #197 to no longer have
the SPIR-V major/minor version in our crate version which disallows us
from making any breaking changes to the crate, we reset the version to
`0.1.0` and embedded the SPIR-V version via _version metadata_ instead.
This stale comment in the README was still indicating as such though,
confusing users in e.g. #252 that our `spirv` crate was somehow exposing
SPIR-V 1.3 (should have been 0.3 by that logic which is the current
latest version).  Remove it entirely.

Note also that since #225 / #226 our version metadata is no longer the
SPIR-V version/revision but the Vulkan SDK tag that it was released
with.  The SPIR-V version isn't bumped often enough to match extensions
in new SDK releases, making the SDK tag more indicative of the included
API surface instead.
MarijnS95 added a commit that referenced this issue Mar 28, 2025
Since inheriting the `spirv` crate and dropping the `spirv_headers`
crate in #204, and following up on a choice in #197 to no longer have
the SPIR-V major/minor version in our crate version which disallows us
from making any breaking changes to the crate, we reset the version to
`0.1.0` and embedded the SPIR-V version via _version metadata_ instead.
This stale comment in the README was still indicating as such though,
confusing users in e.g. #252 that our `spirv` crate was somehow exposing
SPIR-V 1.3 (should have been 0.3 by that logic which is the current
latest version).  Remove it entirely.

Note also that since #225 / #226 our version metadata is no longer the
SPIR-V version/revision but the Vulkan SDK tag that it was released
with.  The SPIR-V version isn't bumped often enough to match extensions
in new SDK releases, making the SDK tag more indicative of the included
API surface instead.
MarijnS95 added a commit that referenced this issue Mar 28, 2025
Since inheriting the `spirv` crate and dropping the `spirv_headers`
crate in #204, and following up on a choice in #197 to no longer have
the SPIR-V major/minor version in our crate version which disallows us
from making any breaking changes to the crate, we reset the version to
`0.1.0` and embedded the SPIR-V version via _version metadata_ instead.
This stale comment in the README was still indicating as such though,
confusing users in e.g. #252 that our `spirv` crate was somehow exposing
SPIR-V 1.3 (should have been 0.3 by that logic which is the current
latest version).  Remove it entirely.

Note also that since #225 / #226 our version metadata is no longer the
SPIR-V version/revision but the Vulkan SDK tag that it was released
with.  The SPIR-V version isn't bumped often enough to match extensions
in new SDK releases, making the SDK tag more indicative of the included
API surface instead.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants