Repository navigation
Description
Exanite's Tracking Issue
This tracks miscellaneous tasks that I accumulated while working on Silk.NET 3.0.
If you see anything you're interested in working on, please let me know!
A task being here on this tracker does not mean it is guaranteed to be completed.
This tracker's goal is so we do not accidentally forget tasks and any tasks not completed are intentionally left uncompleted.
In-progress
Tasks in progress will be moved to the corresponding pull request.
Uncategorized
This section contains informal reports, suggestions, or complaints about Silk.NET 3.0.
I'm logging them here so they don't get forgotten about until I either open a formal issue or address them.
From Aqua:
- Go through the thread Aqua has made: https://discord.com/channels/521092042781229087/1512914692853465088
From Ethereal:
- SilkTouch generator takes an immense amount of RAM: https://discord.com/channels/521092042781229087/607634593201520651/1513592461493145601
- I need to also check with Curin to see how much RAM their device has. If their device doesn't have enough RAM, this might explain why the Microsoft job takes so long (aside from it already processing a lot of data).
- Run the Microsoft job locally and see how much RAM it takes on my device.
Bindings and feature requests
From Nolram (https://discord.com/channels/521092042781229087/607634593201520651/1524213012402147348):
- Add Imgui bindings
- Nolram recommended https://github.com/dearimgui/dear_bindings over cimgui (https://github.com/cimgui/cimgui)
- Investigate whether direct P/Invoke and static linking works in Silk.NET 3.0 and how we want to support it.
- From what I can tell, it involves some configuration, providing static builds,
and maybe switching over to LibraryImport over DllImport.
- From what I can tell, it involves some configuration, providing static builds,
From dfkeenan:
- Add SDL shadercross support: https://discord.com/channels/521092042781229087/587346162802229298/1543100984270520340
- My opinion on this: Shadercross is worth doing, worth considering the rest of the SDL addons as well, since Silk 3 leans much more heavily on SDL.
High priority
Currently empty. See PR plans below.
Medium priority
Currently empty. See PR plans below.
Low priority
ABI compat proposal:
- Verify that we can create and modify a ref assembly to hide the Silk 2 to Silk 3 remappings. This is important for IDE performance since otherwise IDEs will still perform slow in Silk 3. See https://discord.com/channels/521092042781229087/1560213833249726474/1561333409127604256
Bindings usage:
- Add option to configure which vendor suffixes
KhronosNonExclusiveVendorcan identify. Eg: For OpenGL, this should be onlyARB.- See conversation here: https://discord.com/channels/521092042781229087/587346162802229298/1531416150565453924
- I'm thinking of dropping this task since it's low reward.
IDE / Metadata:
- Ensure SupportedApiProfiles attributes are correct
- Properly resolve API profiles for Flags/FlagBits types
- Prefer name from
NativeNamefor resolving API profiles - Note: I'm in favor of not doing this. If it were up to me, I'd rather drop the entire SupportedApiProfiles feature entirely.
- Consider optimizing
NativeNameattributes.- This should involve renaming
StripAttributestoCleanupAttributesand adding an option in its config to optimizeNativeNameattributes. - Note: I'm in favor of not doing this since this seems excessive and unnecessary since almost every name differs (non-optimizeable), it's confusing to drop the string/attribute for users, whether this is done doesn't affect the bindings, and SupportedApiProfiles uses a magnitude more strings.
- Also see: [3.0] Implement name-related improvements identified in previous Vulkan PR #2503 (comment)
- This should involve renaming
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsIn Progress
Activity
Exanite commentedon Jun 17, 2026
PR Plan
More CI improvements
.cmd/.shones) to use cross-platform PowerShell and combine into a single script per libraryAdd missing bindings test projects
Generator cleanup
Update ClangSharp
Multi-platform generation, continued
Platform integrations:
Validation:
Nonemember.Remaining bindings I plan to work on
MoltenVK would just be a native build. 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).
Khronos bindings improvements
clGetExtensionFunctionAddressForPlatformlimits our OpenCL bindings to OpenCL v1.2.XrPerfSettingsNotificationLevelEXTneeds a prefix override for proper shared prefix identification. I know the type name affects it, but I thought that was a fallback case.XrStructureTypeandXrSceneMarkerQRCodeSymbolTypeMSFT1St,2NdBindings polish (multiple PRs)
Bindings cleanup (good for new contributors):
nullptrconstant:nullptr. Seems like a nice QOL feature.nullptrconstant does not work. It fails to resolve to anything.SilkTouch job definitions:
InlineArrays (needs discussion first and may be dropped):
InlineArrayN<T>types provided by .NET? Should we use them?API object devirtualization (needs discussion first and may be dropped):
GL<T>whereTis anINativeContextto remove one level ofcallvirt: https://discord.com/channels/521092042781229087/587346162802229298/1541090497185980478Namespaced extension methods (needs discussion first and may be dropped):
Array parameter transformation:
GetPlatformIDs,GetDeviceIDs, and likely more functions do not have singularGetPlatformIDequivalents. This should be handled by our function transformer so I'm guessing the XML metadata is missing. See [3.0] Add OpenCL and OpenXR bindings #2590 (comment).API contexts:
OpenAL context should be disposable
channels/521092042781229087/1514735149915439274/1519099432442794150
From me (Exanite), as part of my OpenCL example program:
Silk.NET/examples/CSharp/OpenCL/Tutorial001.SimpleKernel/Program.cs
Lines 75 to 80 in 021738d
LoadFunction(functionName, libraryNameHint), but I liked how Silk 2 only required the function name.ExtractEnumConstantsdoes not preserve attributes placed on extracted constants (needs verification).LoaderInterface hook:
RegisterHookin both Vk (defined in a manual file) and Vk.DllImport (defined in a generated file).Generated files:
<auto-generated/>comment to start of each generated file. This has the effect of disabling IDE/linter/etc checks, which means less noise and performance cost of working in the Silk repo.Enum typedefs are not preserved by ClangSharp. This is intended behavior by ClangSharp since there's no real way to automatically handle these consistently, but does mean we need to manually remap enum types. Vulkan/OpenXR already has some of these remappings done automatically, but we need to ensure every set of bindings has these remappings done.
void DrawElements(uint mode, uint count, uint type, void* indices);uint.uintis used instead ofMaybeBool<uint>.CLong:
CLongwhere possible in the bindings.Constant<CLong, EnumHere>, and theoretically it should work.Search paths:
Native binaries:
file libSDL3.sosayslibSDL3.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, with debug_info, not stripped, so definitely because the binary was not strippedRelease Preview 1
Preview 1 will likely be sometime around here, maybe earlier if the more urgent polishing tasks are completed earlier.
Before releasing, do read the other tracking issues for Silk 3.0 and ensure the required or relevant tasks are done.
Additional polish
Ensure no repeated bugs:
Vulkan struct chaining
Image format utils
Needs discussion first and may be dropped:
Documentation
nullptr)Finalize SilkTouch API
This likely will be fairly late in the preview phases.
Finalize SilkTouch generator API:
Cleanup todos in OpenCL example program
[3.0] Add OpenCL and OpenXR bindings (#2590)
Exanite commentedon Nov 7, 2026
Completed/canceled tasks
Details
After maintaining this section for a bit, I'll only list tasks not obviously related to a PR. Otherwise, it means that I'm tracking the same task in two places, which can get confusing.
Completed during #2588:
develop/3.0. Might be related to the error I saw half a year ago. If so, likely can be fixed by simply updating CSharpier. CSharpier has updated their Roslyn package since then.Completed during #2591:
--onlyoption from Curin's branch so I don't need to specify--skipfor all but one jobCompleted or planned to be completed during #2590 (not yet merged):
.gen.cs.csfiles during theGenerated Bindings OutputsectionalSourceRewindvandalSourceRewind. ThedinRewindcan be mistaken as a data type suffix, so we add it to theEndingsNotToTrimregex. However, thedvinRewindvalso has the same problem.WordsNotToTrimIntothanEndingsNotToTrim.AddVTablesin the mod MD docs.Completed in dotnet/ClangSharp#699
SDL_MAX_SINT64generation on Linuxpublic const nint SDL_MAX_SINT64 = unchecked(0x7FFFFFFFFFFFFFFF);does not compileCompleted outside of a PR:
DrawElements/etc, check if the pointer to 0 issue present in Silk 2 still exists in Silk 3Not doing
For transparency and for reference, I'll move any tasks I don't plan on doing here.
Figure out how to handle CLA properly. Currently native builds will block CLA due to the use of a bot account.Differentiate between smoke tests and actual tutorials/examples. I would categorize the current SDL/OpenAL "tutorials" in Silk 3 to be smoke tests since they really shouldn't be referenced as sources of best practices.Quality:
Sdl.PropGpuDeviceCreateDebugmodeBooleanare technically correct (native name isSDL_PROP_GPU_DEVICE_CREATE_DEBUGMODE_BOOLEAN, soDebugmodeis "one" word), but we could have an audit tool that checks for these non-ideal cases so we can add manual overrides. Worth the effort? Probably not unless we care about perfecting the bindings.Completed/cancelled PRs
Details
Khronos vendor suffixesReconsider the usage of KhronosImpliedVendor suffixesAlso tempted to remove KhronosNonExclusiveVendors since I find this behavior to be more incorrect than it is helpful. It also lets me delete a lot of code (yay!).