Vulkan-docs: What is the definition of NVX extension?

Created on 27 Sep 2018  路  7Comments  路  Source: KhronosGroup/Vulkan-Docs

@jeffbolznv @pdaniell-nv
Does NVX prefix have a special meaning?

For comparison KHX used to be defined as:

They may: change their interfaces and behavior in significant ways as a
result of feedback, and may: be withdrawn or replaced with stable KHR or
core functionality at any time.

In other words KHX extensions may break compatibility. Which makes me wonder if NVX works the same.

In the meantime KHX prefix was abandoned, and instead _Provisional_ flag appears, which seems to mean the same thing KHX used to. In the case it is resolved NVX means the same as KHX, should NVX also be marked as Provisional?

All 7 comments

For NVIDIA NVX means experimental. We use it for extensions that should not be used for production apps because the extension may change over time, may have bugs, may not be thoroughly tested and may disappear in the future. We publish these extensions to get feedback from developers. Once it has served its purpose it will be removed and often replaced with an NV, EXT or KHR extension, or even core functionality, which can be used in production apps.

may change over time

Regular Extensions cannot change over time. Unless you mean re-releasing under a different name.
So I assume it is the same as Provisional Extension (and should be marked as such)?

If we changed the NVX extension we would bump the version number, but we retain the possibility that it would change in an incompatible way. Obviously we would avoid doing that without merit. With an NV extension we would not make incompatible changes.

There is indeed a lot of overlap between NVX and provisional. NVX extensions probably should be marked provisional. The notion of "provisional" was added to Vulkan right around the same time as this most recent NVX extension, and we didn't consider the interaction.

The first clause of the quoted language definitely sounds like overlap between NVX/KHX and "provisional":

They may: change their interfaces and behavior in significant ways as a
result of feedback,

However, the second clause does apply to NVX but does not necessarily imply that the NVX extension itself would have an interface change:

may: be withdrawn or replaced with stable KHR or
core functionality at any time.

@oddhack I am not sure what the resolution to this Issue is exactly.
I guess it is clear intuitively what NVX means, but it does not seem to be coded in the spec.

Especially:

If we changed the NVX extension we would bump the version number, but we retain the possibility that it would change in an incompatible way.

goes directly against:

specVersion is the version of this extension. It is an integer, incremented with backward compatible changes.

I think the resolution is that we're probably going to stop using the NVX prefix in favor of using provisional extensions in the future, but it's not practical to rename the existing NVX extensions or to call them provisional after not being considered provisional for so long.

Was this page helpful?
0 / 5 - 0 ratings