Skip to content

[3.0] Add rest of Khronos bindings#2590

Draft
Exanite wants to merge 12 commits into
develop/3.0from
feature/khronos-bindings
Draft

[3.0] Add rest of Khronos bindings#2590
Exanite wants to merge 12 commits into
develop/3.0from
feature/khronos-bindings

Conversation

@Exanite

@Exanite Exanite commented Jun 12, 2026

Copy link
Copy Markdown
Member

Summary of the PR

This is going to be a mega-PR for all of the remaining Khronos bindings and Assimp.
Whether this is a good idea remains to be seen, but my current reasoning is that these are similar and I want to work on them together in bulk. I don't want to finish one and realize I didn't account for something in the next.

I'm also adding MoltenVK native builds and VMA to this PR. MoltenVK is just because it's Khronos-related. VMA is not on the tracking issue, but we already discussed that we want this to be in Silk 3 (and I want it for my personal projects as well).

To keep things manageable, I will NOT be testing the bindings in this specific PR. I'll be writing smoke tests for each of the bindings here (where possible; eg: I don't have VR equipment) in a separate PR.

Related issues, Discord discussions, or proposals

Discord thread for this PR: https://discord.com/channels/521092042781229087/1514735149915439274

Further Comments

Tasks

  • Port back the option to only run selected jobs. Done during [3.0] Add --only option to SilkTouch #2591.
  • Check the tracking issue and figure out what APIs are part of this
  • Add required submodules
    • OpenXR
    • OpenCL
    • Assimp
    • SPIRV Reflect
    • SPIRV Cross
    • SPIRV Tools
    • SPIRV Headers
    • Shaderc
    • MoltenVK
    • GLSLang
    • VMA
  • Set submodules to their latest tagged commit
  • Update existing Khronos submodules and regenerate
  • Reconsider the usage of KhronosImpliedVendor suffixes
    • Apparently aliased enums are simply replaced when bindings are updated. This means that users will naturally replace usages of those enums to point to their new versions. Eg: EXT to KHR. Issue is, with implied vendors, this also means that users might accidentally use the wrong enum member since the KHR version of the enum member now takes the name of the old EXT enum member. It might be better to forgo prettiness in favor of correctness here.
  • Generate bindings
    • OpenXR
    • OpenCL
    • Assimp
    • SPIRV Reflect
    • SPIRV Cross
    • SPIRV Tools
    • Shaderc
    • VMA
  • Native builds
    • Assimp
    • SPIRV Reflect
    • SPIRV Cross
    • SPIRV Tools
    • Shaderc
    • VMA
  • Review generated bindings
    • To keep things manageable, I'm reviewing every change as they come in, so I don't have to review 5k+ files at the end. This task will track any APIs I haven't fully reviewed (or rather, skimmed over).
    • Review note: Structs are usually fine. Functions and enums are usually where issues occur.
  • Fix any issues found
    • Move out of scope issues into backlog if necessary
  • Ensure native builds are up to date
    • Assimp
    • SPIRV Reflect
    • SPIRV Cross
    • SPIRV Tools
    • Shaderc
    • VMA
    • OpenAL
  • Update docs
    • Generator usage docs
      • CLI options
      • Clarify that non .gen.cs .cs files do not get modified by SilkTouch
      • Verify usage against my experience during this PR
    • Any mod changes
    • Add new bindings to changelog
  • Rebase onto develop/3.0
  • Generate using Windows for consistency

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

File Coverage
All files 20%

Minimum allowed coverage is 0%

Generated by 🐒 cobertura-action against 2fda682

Exanite added 2 commits June 12, 2026 12:47
commit cafaccf
Merge: b9cabce b994a1f
Author: William Chen <exanite78012@gmail.com>
Date:   Fri Jun 12 09:38:49 2026 -0400

    Merge branch 'develop/3.0' into feature/update-dependencies

commit b9cabce
Merge: c401b91 89841e7
Author: William Chen <exanite78012@gmail.com>
Date:   Fri Jun 12 03:06:29 2026 -0400

    Merge branch 'develop/3.0' into feature/update-dependencies

commit c401b91
Author: William Chen <exanite78012@gmail.com>
Date:   Thu Jun 11 10:57:28 2026 -0400

    Update solution path in generator.json

commit 5229ecc
Author: William Chen <exanite78012@gmail.com>
Date:   Thu Jun 11 08:57:13 2026 -0400

    Revert update to System.CommandLine

    The code copied verbatim from ClangSharp uses an old version of System.CommandLine (v2.0.0-beta3.22114.1).
    Since this code is copied verbatim, I don't want to update it to compile with the new version of System.CommandLine (v2.0.9).
    This commit reverts the package to use v2.0.0-beta4.22272.1, which is the one we used before this PR.

commit 61fe9d5
Author: William Chen <exanite78012@gmail.com>
Date:   Thu Jun 11 08:49:52 2026 -0400

    Fix error caused by updating Microsoft.Build.Locator

    Error in question:
    Microsoft.Build.Locator.targets(19,5): Error MSBL001 : A PackageReference to the package 'Microsoft.NET.StringTools' at version '18.7.1' is present in this project without ExcludeAssets="runtime" and PrivateAssets="all" set. This can cause errors at run-time due to MSBuild assembly-loading.

    I'm not sure what's the proper way to solve this, but I also had this error in my personal repos and this was how I solved it there.

commit f3077d6
Author: William Chen <exanite78012@gmail.com>
Date:   Thu Jun 11 08:44:26 2026 -0400

    Update rest of dependencies in Directory.Packages.props

commit 44e2078
Author: William Chen <exanite78012@gmail.com>
Date:   Thu Jun 11 08:29:30 2026 -0400

    Update Nuke and build system dependencies

commit 7df9f3a
Author: William Chen <exanite78012@gmail.com>
Date:   Thu Jun 11 08:24:24 2026 -0400

    Remove .sln version of the solution file

    Note: The Silk.NET.sln.DotSettings files must not be renamed. Rider still looks for the .sln version.

commit 0ef164d
Author: William Chen <exanite78012@gmail.com>
Date:   Thu Jun 11 08:16:08 2026 -0400

    Generate SLNX using Rider's save as SLNX feature

commit 3322066
Author: William Chen <exanite78012@gmail.com>
Date:   Thu Jun 11 07:57:20 2026 -0400

    Update CSharpier and Roslyn packages

commit 06a8484
Author: William Chen <exanite78012@gmail.com>
Date:   Thu Jun 11 07:26:59 2026 -0400

    Start of feature/update-dependencies branch
@Exanite Exanite force-pushed the feature/khronos-bindings branch from f22575c to d3c7136 Compare June 12, 2026 16:47
@github-actions

Copy link
Copy Markdown
Contributor

Some of the native library builds modified in this PR were not referenced in the PR description. Please ensure that the PR description contains /build-native OpenAL-Soft. These libraries won't be rebuilt without this being specified. If you believe this is in error, then please write a comment explaining why and ignore this suggestion. This comment will be automatically updated if rectified.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

1 participant