KhronosGroup / KhronosGroup/SPIRV-LLVM-Translator

Revisions for extension's versions

Open
#1,856 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
LLVM
Stars
625
Forks
279
Avg merge
3d 5h
Merged PRs (30d)
34

Description

The idea appeared from development and review of #1835

Sometimes the extension specification introduces backward-incompatible changes in its new revision. If we just update the existing implementation to the such new revision, it will affect SPIR-V consumers which are not yet ready for such changes.

The suggestion is to introduce mechanism that will allow to set the certain revision for the extension, if there is more than one supported by translator. Obviously, we won't support every single revision, but a "bunch" of them at once when drastic changes have happened. The translation for different revisions will be done in accordance to the spec, and by default we'll take the "lowest" revision available for extension if it's not set specifically.

The usage example:
```
--spirv-ext=+[EXT_NAME]:[EXT_VERSION]
// e.g.:
--spirv-ext=+SPV_INTEL_tensor_float32_conversion:5
```

To sum up, this will allow to introduce backward-incompatible changes to the SPIR-V consumers more smoothly.
Want to get feedback on how helpful the improvement looks, and is it useful enough to be implemented.

Contributor guide

Open the contributing guide

Research direction

Review the context from #1835 and the extension specification changes described in this issue. The proposed entry point is the --spirv-ext option, including its revision syntax; first clarify the supported-revision policy and how backward-incompatible revisions should be selected. Done means an agreed design and implementation that preserves older consumers while translating each supported revision according to its specification.

Written by the indexing model from the issue text.

Assessment

Domain
cli, compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.