From 184cc4cfe53fc808539d959fb74179753e6234a7 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 20:03:01 -0400 Subject: [PATCH 01/93] Initial commit for feature/silktouch-config-overhaul From 3405c81e1ea9209c58586d408cc3e6b6090a6b0e Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 19:37:11 -0400 Subject: [PATCH 02/93] Add Autofac and adapt the existing IServiceCollection code to use it --- Directory.Packages.props | 2 + sources/SilkTouch/SilkTouch/Program.cs | 43 +++++++++++-------- .../SilkTouch/Silk.NET.SilkTouch.csproj | 2 + 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 6a64c60210..2a635eb496 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -21,6 +21,8 @@ + + diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index af32921b38..d0ac2f0c36 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.CommandLine; +using Autofac; +using Autofac.Extensions.DependencyInjection; using Microsoft.Build.Locator; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -88,22 +90,29 @@ public static async Task Main(string[] args) // Register MSBuild MSBuildLocator.RegisterDefaults(); - var sp = new ServiceCollection() - .AddLogging(builder => - { - builder.AddSimpleConsole(opts => + ILifetimeScope container; + { + var services = new ServiceCollection() + .AddLogging(builder => { - opts.SingleLine = true; - opts.ColorBehavior = Console.IsOutputRedirected - ? LoggerColorBehavior.Disabled - : LoggerColorBehavior.Default; - opts.IncludeScopes = false; - }); - builder.SetMinimumLevel(ctx.ParseResult.GetValueForOption(LoggingOption)); - }) - .AddOptions() - .AddSilkTouch(config) - .BuildServiceProvider(); + builder.AddSimpleConsole(opts => + { + opts.SingleLine = true; + opts.ColorBehavior = Console.IsOutputRedirected + ? LoggerColorBehavior.Disabled + : LoggerColorBehavior.Default; + opts.IncludeScopes = false; + }); + builder.SetMinimumLevel(ctx.ParseResult.GetValueForOption(LoggingOption)); + }) + .AddOptions() + .AddSilkTouch(config); + + var builder = new ContainerBuilder(); + builder.Populate(services); + + container = builder.Build(); + } var jobsToRun = new HashSet( ctx.ParseResult.GetValueForOption(OnlyOption) ?? [], @@ -115,8 +124,8 @@ public static async Task Main(string[] args) StringComparer.OrdinalIgnoreCase ); - var logger = sp.GetRequiredService>(); - var generator = sp.GetRequiredService(); + var logger = container.Resolve>(); + var generator = container.Resolve(); await Parallel.ForEachAsync( config diff --git a/sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.csproj b/sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.csproj index f8e9022dd4..a29df0b7e8 100644 --- a/sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.csproj +++ b/sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.csproj @@ -9,6 +9,8 @@ + + From a2ea2517b4c32faa0606cecf6f582636e2d6f847 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 19:40:31 -0400 Subject: [PATCH 03/93] Remove EvaluatedConstant since this is old code and we can evaluate using Roslyn now --- .../Mods/Common/EvaluatedConstant.cs | 103 ------------------ 1 file changed, 103 deletions(-) delete mode 100644 sources/SilkTouch/SilkTouch/Mods/Common/EvaluatedConstant.cs diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/EvaluatedConstant.cs b/sources/SilkTouch/SilkTouch/Mods/Common/EvaluatedConstant.cs deleted file mode 100644 index ca8497cddd..0000000000 --- a/sources/SilkTouch/SilkTouch/Mods/Common/EvaluatedConstant.cs +++ /dev/null @@ -1,103 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Numerics; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; -using Microsoft.CodeAnalysis.CSharp.Syntax; - -namespace Silk.NET.SilkTouch.Mods; - -#if false -public readonly struct EvaluatedConstant -{ - private byte Flags { get; init; } - public bool IsSigned - { - get => (Flags & 1) == 1; - init => Flags = (byte)(value ? Flags | 1 : Flags & 0xFE); - } - - public int Size - { - get => 1 << ((Flags & (2 | 4)) >> 1); - init - { - if (BitOperations.PopCount(unchecked((uint)value)) != 1 || value > 8) - { - throw new ArgumentException("Invalid value, must be 1, 2, 4, or 8.", nameof(value)); - } - - Flags = (byte)((Flags & ~(2 | 4)) | (BitOperations.TrailingZeroCount(value) << 1)); - } - } - - public bool IsLiteral - { - get => (Flags & 8) == 8; - init => Flags = (byte)((Flags & ~8) | (value ? 8 : 0)); - } - - public ulong UnsignedValue { get; init; } - public long SignedValue - { - get => unchecked((long)UnsignedValue); - init => UnsignedValue = unchecked((ulong)value); - } - - public EvaluatedConstant( - ExpressionSyntax syntax, - int contextualSize = 0, - bool? contextualSigned = false, - bool checkedCtx = true - ) - { - var goAgain = false; - do - { - goAgain = false; - if (syntax is LiteralExpressionSyntax { Token: var tok }) - { - (IsSigned, Size, UnsignedValue) = tok.Value switch - { - // Recall that C# has the weird thing where everything is an int/long/uint/ulong until told - // otherwise - sbyte sb => (true, 4, unchecked((ulong)sb)), - short s => (true, 4, unchecked((ulong)s)), - int i => (true, 4, unchecked((ulong)i)), - long l and > int.MaxValue => (true, 8, unchecked((ulong)l)), - long l => (true, 8, unchecked((ulong)l)), - byte b => (false, 4, b), - ushort us => (false, 4, us), - uint ui => (false, 4, ui), - ulong ul => (false, 8, ul), - _ => throw new InvalidOperationException("Unexpected literal type.") - }; - IsLiteral = true; - } - else if (syntax is PrefixUnaryExpressionSyntax unary) - { - - } - else if (syntax is BinaryExpressionSyntax binary) { } - else if (syntax is ParenthesizedExpressionSyntax) - { - goAgain = true; - } - else if ( - syntax is CheckedExpressionSyntax ce - && syntax.IsKind(SyntaxKind.UncheckedExpression) - ) - { - this = new EvaluatedConstant( - ce.Expression, - contextualSize, - contextualSigned, - false - ); - } - } while (goAgain); - } -} -#endif From f80e35eebdf03d1f81f13ee90bc3597a5341d2cd Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 19:44:54 -0400 Subject: [PATCH 04/93] Begin removing keyed resolution and JSON config reading code --- .../SilkTouch/SilkTouch/Clang/ClangScraper.cs | 1 - .../SilkTouch/Mods/AddApiProfiles.cs | 1 - .../SilkTouch/SilkTouch/Mods/AddIncludes.cs | 1 - .../SilkTouch/Mods/AddOpaqueStructs.cs | 1 - .../SilkTouch/SilkTouch/Mods/AddVTables.cs | 1 - .../SilkTouch/Mods/BakeSourceSets.cs | 1 - .../SilkTouch/Mods/ChangeNamespace.cs | 1 - .../SilkTouch/Mods/ChangeNativeClass.cs | 1 - .../SilkTouch/SilkTouch/Mods/Common/IMod.cs | 8 ++- .../SilkTouch/Mods/Common/IModConfigBinder.cs | 18 ------- .../SilkTouch/Mods/Common/IModContext.cs | 1 - .../Mods/Common/MSBuildModContext.cs | 2 +- .../Mods/Common/ModCSharpSyntaxRewriter.cs | 3 -- .../Mods/Common/ModConfigurationAttribute.cs | 50 ------------------- .../SilkTouch/Mods/Common/ModLoader.cs | 46 ----------------- .../SilkTouch/Mods/IdentifySharedPrefixes.cs | 1 - .../Mods/InterceptNativeFunctions.cs | 1 - .../SilkTouch/Mods/MixKhronosData.cs | 2 - .../SilkTouch/SilkTouch/Mods/PrettifyNames.cs | 1 - .../SilkTouch/Mods/StripAttributes.cs | 1 - .../SilkTouch/Mods/TransformEnums.cs | 1 - .../SilkTouch/Mods/TransformFunctions.cs | 1 - .../SilkTouch/Mods/TransformHandles.cs | 1 - .../SilkTouch/Mods/TransformProperties.cs | 1 - .../SilkTouch/SilkTouchConfiguration.cs | 2 - .../SilkTouch/SilkTouch/SilkTouchGenerator.cs | 5 -- 26 files changed, 4 insertions(+), 149 deletions(-) delete mode 100644 sources/SilkTouch/SilkTouch/Mods/Common/IModConfigBinder.cs delete mode 100644 sources/SilkTouch/SilkTouch/Mods/Common/ModConfigurationAttribute.cs delete mode 100644 sources/SilkTouch/SilkTouch/Mods/Common/ModLoader.cs diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index bd889440ae..e7a9658493 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -31,7 +31,6 @@ namespace Silk.NET.SilkTouch.Clang; /// The input resolver to use. /// The mods that modify response files before they are fed to ClangSharp. /// The cache provider into which ClangSharp outputs are cached. -[ModConfiguration] public sealed class ClangScraper( ResponseFileHandler rspHandler, IOptionsSnapshot config, diff --git a/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs b/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs index 112f864038..57d3e3c963 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs @@ -24,7 +24,6 @@ namespace Silk.NET.SilkTouch.Mods; /// The logger to use. /// The configuration snapshot. /// The version providers. -[ModConfiguration] public class AddApiProfiles( ILogger logger, IOptionsSnapshot config, diff --git a/sources/SilkTouch/SilkTouch/Mods/AddIncludes.cs b/sources/SilkTouch/SilkTouch/Mods/AddIncludes.cs index daf48d9d59..58dd51ce90 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddIncludes.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddIncludes.cs @@ -20,7 +20,6 @@ namespace Silk.NET.SilkTouch.Mods; /// The standard include resolver. /// The user path input resolver. /// The mod configuration options snapshot. -[ModConfiguration] public class AddIncludes( IStdIncludeResolver stdResolver, IInputResolver inputResolver, diff --git a/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs b/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs index 5ed2e0afdb..6fe7609b84 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs @@ -21,7 +21,6 @@ namespace Silk.NET.SilkTouch.Mods; /// /// Adds opaque structs. /// -[ModConfiguration] public class AddOpaqueStructs( ILogger logger, IOptionsSnapshot config diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index 330937d3ee..c1d418da5e 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -37,7 +37,6 @@ namespace Silk.NET.SilkTouch.Mods; /// -based partial class implementation of the static interface. However, in some cases this /// could be any other implementation such as the implementation. /// -[ModConfiguration] public class AddVTables(IOptionsSnapshot config) : IMod { /// diff --git a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs index 6c8b169df2..383eb93bb1 100644 --- a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs +++ b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs @@ -26,7 +26,6 @@ namespace Silk.NET.SilkTouch.Mods; /// /// The available bake strategies. The actual strategy to use is determined from the configuration. /// -[ModConfiguration] public class BakeSourceSets( ILogger logger, IOptionsSnapshot config, diff --git a/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs b/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs index 561da09fe2..6fe302c360 100644 --- a/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs +++ b/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs @@ -22,7 +22,6 @@ namespace Silk.NET.SilkTouch.Mods; /// A mod that changes namespaces in response files. It is assumed that there will be no other sources of variance with /// regards to namespaces. /// -[ModConfiguration] public class ChangeNamespace(IOptionsSnapshot config) : IMod, IResponseFileMod diff --git a/sources/SilkTouch/SilkTouch/Mods/ChangeNativeClass.cs b/sources/SilkTouch/SilkTouch/Mods/ChangeNativeClass.cs index 0437b88db0..36d4f23363 100644 --- a/sources/SilkTouch/SilkTouch/Mods/ChangeNativeClass.cs +++ b/sources/SilkTouch/SilkTouch/Mods/ChangeNativeClass.cs @@ -28,7 +28,6 @@ namespace Silk.NET.SilkTouch.Mods; /// /// The logger. /// The configuration options. -[ModConfiguration] public class ChangeNativeClass( ILogger log, IOptionsSnapshot options diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/IMod.cs b/sources/SilkTouch/SilkTouch/Mods/Common/IMod.cs index 6b0736789d..3a83085161 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/IMod.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/IMod.cs @@ -1,9 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Threading; -using System.Threading.Tasks; - namespace Silk.NET.SilkTouch.Mods; /// @@ -22,7 +19,8 @@ public interface IMod /// /// The generation job context. /// The cancellation token. - Task InitializeAsync(IModContext ctx, CancellationToken ct = default) => Task.CompletedTask; + public Task InitializeAsync(IModContext ctx, CancellationToken ct = default) => + Task.CompletedTask; /// /// Executes the mod as originally initialised for the given job context asynchronously. @@ -33,5 +31,5 @@ public interface IMod /// /// Always preceded by . /// - Task ExecuteAsync(IModContext ctx, CancellationToken ct = default); + public Task ExecuteAsync(IModContext ctx, CancellationToken ct = default); } diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/IModConfigBinder.cs b/sources/SilkTouch/SilkTouch/Mods/Common/IModConfigBinder.cs deleted file mode 100644 index ea8f3886fa..0000000000 --- a/sources/SilkTouch/SilkTouch/Mods/Common/IModConfigBinder.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.Extensions.Configuration; - -namespace Silk.NET.SilkTouch.Mods; - -/// -/// A mod that customises the binding of its configuration. -/// -public interface IModConfigBinder : IMod -{ - /// - /// Used to configure the Used to configure the . - /// - /// The options to configure. - static abstract void Configure(BinderOptions options); -} diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs b/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs index 4adca0ae1a..e0f68e06fa 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; using Microsoft.CodeAnalysis; namespace Silk.NET.SilkTouch.Mods; diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs index 43ab524ef2..755d56a26e 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs @@ -118,7 +118,7 @@ public async Task InitializeAsync() } } - private string ObtainCacheKey() + private string ObtainCacheKey() // TODO: This code is never used { // Obtain a cache key for the job, should the mods want to cache any artifacts. var cacheKey = string.Join(',', cfg.AsEnumerable().OrderBy(x => x.Key)); diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs b/sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs index 6015da3809..145d822e84 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs @@ -1,9 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Generic; -using System.Linq; -using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/ModConfigurationAttribute.cs b/sources/SilkTouch/SilkTouch/Mods/Common/ModConfigurationAttribute.cs deleted file mode 100644 index 1f697d2551..0000000000 --- a/sources/SilkTouch/SilkTouch/Mods/Common/ModConfigurationAttribute.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Diagnostics.CodeAnalysis; -using System.Reflection; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; - -namespace Silk.NET.SilkTouch.Mods; - -/// -/// Annotates the configuration type for this mod - this is used to call -/// -/// with the appropriate type. -/// -[AttributeUsage(AttributeTargets.Class)] -[RequiresUnreferencedCode("Uses reflection to get attributes on a given mod type.")] -[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] -public class ModConfigurationAttribute< - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TOptions -> : Attribute { } - -/// -/// Contains helper functions for . -/// -public static class ModConfigurationAttribute -{ - /// - /// Gets the configuration type (if applicable) on the given type as indicated by this attribute. - /// - /// The mod type to check. - /// The type, or null if no configuration is specified. - public static Type? GetConfigurationType(Type modType) - { - var attribute = modType.GetCustomAttribute( - typeof(ModConfigurationAttribute<>), - inherit: false - ); - if ( - attribute is not null - && attribute.GetType().GetGenericTypeDefinition() == typeof(ModConfigurationAttribute<>) - ) - { - return attribute.GetType().GetGenericArguments()[0]; - } - - return null; - } -} diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/ModLoader.cs b/sources/SilkTouch/SilkTouch/Mods/Common/ModLoader.cs deleted file mode 100644 index de46c23c34..0000000000 --- a/sources/SilkTouch/SilkTouch/Mods/Common/ModLoader.cs +++ /dev/null @@ -1,46 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using Silk.NET.SilkTouch.Clang; - -namespace Silk.NET.SilkTouch.Mods; - -/// -/// Loads s based on strings contained within the configuration file. -/// -public class ModLoader -{ - /// - /// Gets a mod from the given name/string. - /// - /// The name. - /// The loaded mod if the mod was found, null otherwise. - public static Type? LoadModByName(string name) => - name switch - { - nameof(AddApiProfiles) => typeof(AddApiProfiles), - nameof(AddIncludes) => typeof(AddIncludes), - nameof(AddOpaqueStructs) => typeof(AddOpaqueStructs), - nameof(AddVTables) => typeof(AddVTables), - nameof(BakeSourceSets) => typeof(BakeSourceSets), - nameof(ChangeNamespace) => typeof(ChangeNamespace), - nameof(ChangeNativeClass) => typeof(ChangeNativeClass), - nameof(ClangScraper) => typeof(ClangScraper), - nameof(ExtractEnumConstants) => typeof(ExtractEnumConstants), - nameof(ExtractFunctionPointers) => typeof(ExtractFunctionPointers), - nameof(ExtractHandles) => typeof(ExtractHandles), - nameof(ExtractNestedTypes) => typeof(ExtractNestedTypes), - nameof(IdentifySharedPrefixes) => typeof(IdentifySharedPrefixes), - nameof(InterceptNativeFunctions) => typeof(InterceptNativeFunctions), - nameof(MarkNativeNames) => typeof(MarkNativeNames), - nameof(MixKhronosData) => typeof(MixKhronosData), - nameof(PrettifyNames) => typeof(PrettifyNames), - nameof(StripAttributes) => typeof(StripAttributes), - nameof(TransformEnums) => typeof(TransformEnums), - nameof(TransformFunctions) => typeof(TransformFunctions), - nameof(TransformHandles) => typeof(TransformHandles), - nameof(TransformProperties) => typeof(TransformProperties), - _ => null, - }; -} diff --git a/sources/SilkTouch/SilkTouch/Mods/IdentifySharedPrefixes.cs b/sources/SilkTouch/SilkTouch/Mods/IdentifySharedPrefixes.cs index fa36866f91..029da2b594 100644 --- a/sources/SilkTouch/SilkTouch/Mods/IdentifySharedPrefixes.cs +++ b/sources/SilkTouch/SilkTouch/Mods/IdentifySharedPrefixes.cs @@ -17,7 +17,6 @@ namespace Silk.NET.SilkTouch.Mods; /// These are identified as [NameAffix] attributes that /// and other mods can then process further. /// -[ModConfiguration] public class IdentifySharedPrefixes(IOptionsSnapshot config) : IMod { diff --git a/sources/SilkTouch/SilkTouch/Mods/InterceptNativeFunctions.cs b/sources/SilkTouch/SilkTouch/Mods/InterceptNativeFunctions.cs index 0c36df137a..fb3bcc6aa7 100644 --- a/sources/SilkTouch/SilkTouch/Mods/InterceptNativeFunctions.cs +++ b/sources/SilkTouch/SilkTouch/Mods/InterceptNativeFunctions.cs @@ -16,7 +16,6 @@ namespace Silk.NET.SilkTouch.Mods; /// suffix. /// /// The configuration for the mod. -[ModConfiguration] public class InterceptNativeFunctions( IOptionsSnapshot options ) : IMod diff --git a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs index 11bec771a7..774ed713e0 100644 --- a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs +++ b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs @@ -24,8 +24,6 @@ namespace Silk.NET.SilkTouch.Mods; /// /// The logger. /// The configuration. -[ModConfiguration] -public partial class MixKhronosData( ILogger logger, IOptionsSnapshot cfg ) diff --git a/sources/SilkTouch/SilkTouch/Mods/PrettifyNames.cs b/sources/SilkTouch/SilkTouch/Mods/PrettifyNames.cs index d1ec8cbfcd..9ddc1e65ff 100644 --- a/sources/SilkTouch/SilkTouch/Mods/PrettifyNames.cs +++ b/sources/SilkTouch/SilkTouch/Mods/PrettifyNames.cs @@ -21,7 +21,6 @@ namespace Silk.NET.SilkTouch.Mods; /// Does not support nested types. Please use before this mod. /// Note that despite this, some initial work has been done to add nested type support so that it can be added when necessary. /// -[ModConfiguration] public class PrettifyNames( ILogger logger, IOptionsSnapshot config diff --git a/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs b/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs index c043f71293..5fb407e013 100644 --- a/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs +++ b/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs @@ -11,7 +11,6 @@ namespace Silk.NET.SilkTouch.Mods; /// /// Strips matching attributes from the generated bindings. /// -[ModConfiguration] public class StripAttributes(IOptionsSnapshot cfg) : IMod { /// diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformEnums.cs b/sources/SilkTouch/SilkTouch/Mods/TransformEnums.cs index ffcf892258..a3eb5fd047 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformEnums.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformEnums.cs @@ -14,7 +14,6 @@ namespace Silk.NET.SilkTouch.Mods; /// /// Contains various transformations related to enums. /// -[ModConfiguration] public class TransformEnums(IOptionsSnapshot cfg) : IMod { /// diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs index e106d5ad98..dba8f8f633 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs @@ -11,7 +11,6 @@ namespace Silk.NET.SilkTouch.Mods; /// /// Mods the bindings to use the Silk.NET.Core pointer types. /// -[ModConfiguration] public class TransformFunctions(FunctionTransformer ft) : ModCSharpSyntaxRewriter, IMod { private ThreadLocal _jobKey = new(); diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs b/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs index a8f223aa22..045b4f7bd0 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs @@ -28,7 +28,6 @@ namespace Silk.NET.SilkTouch.Mods; /// /// The `Handle` suffix is not applied until executes. /// -[ModConfiguration] public class TransformHandles( IOptionsSnapshot config, ILogger logger diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformProperties.cs b/sources/SilkTouch/SilkTouch/Mods/TransformProperties.cs index 55ee816c4b..289922d7d8 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformProperties.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformProperties.cs @@ -25,7 +25,6 @@ namespace Silk.NET.SilkTouch.Mods; /// to be akin to booleans to use the MaybeBool type. /// This functionality is based on . /// -[ModConfiguration] public class TransformProperties(IOptionsSnapshot cfg) : IMod { /// diff --git a/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs b/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs index 0f082b22f4..48960417f3 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Generic; - namespace Silk.NET.SilkTouch; /// diff --git a/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs b/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs index 83b97ad0e1..b15ba1824b 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs @@ -4,15 +4,10 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Silk.NET.SilkTouch.Mods; using Silk.NET.SilkTouch.Sources; -using Diagnostic = ClangSharp.Diagnostic; namespace Silk.NET.SilkTouch; From b9ae2659fc69163a9b1e04575c2f6a209a09a63f Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 20:01:37 -0400 Subject: [PATCH 05/93] Remove IJobDependency/JobDependencies --- sources/SilkTouch/SilkTouch/IJobDependency.cs | 20 ----------- .../SilkTouch/SilkTouch/JobDependencies.cs | 36 ------------------- 2 files changed, 56 deletions(-) delete mode 100644 sources/SilkTouch/SilkTouch/IJobDependency.cs delete mode 100644 sources/SilkTouch/SilkTouch/JobDependencies.cs diff --git a/sources/SilkTouch/SilkTouch/IJobDependency.cs b/sources/SilkTouch/SilkTouch/IJobDependency.cs deleted file mode 100644 index 89fbe2fbd2..0000000000 --- a/sources/SilkTouch/SilkTouch/IJobDependency.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Collections.Generic; - -namespace Silk.NET.SilkTouch; - -/// -/// A dependency injection helper that can be used to load dependency injection registered types that may or may not be -/// applicable depending on the job configuration. -/// -public interface IJobDependency -{ - /// - /// Gets all instances of for the given job key. - /// - /// The job key. - /// The instances. - IEnumerable Get(string? jobKey); -} diff --git a/sources/SilkTouch/SilkTouch/JobDependencies.cs b/sources/SilkTouch/SilkTouch/JobDependencies.cs deleted file mode 100644 index ce16e0f6eb..0000000000 --- a/sources/SilkTouch/SilkTouch/JobDependencies.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; - -namespace Silk.NET.SilkTouch; - -internal class JobDependencies(Dictionary loadedMods, IServiceProvider sp) -{ - private Dictionary Loaded { get; } = loadedMods; - private IServiceProvider Services { get; } = sp; - - public class Global(IEnumerable diProvidedInstances) : IJobDependency - { - public IEnumerable Get(string? key) => diProvidedInstances; - } - - public class Mod(JobDependencies deps, IOptionsSnapshot job) - : IJobDependency - { - public IEnumerable Get(string? key) => - job.Get(key).Mods is { Length: > 0 } applicable - ? applicable - .Select(x => - deps.Loaded.TryGetValue(x, out var m) && m.IsAssignableTo(typeof(T)) - ? deps.Services.GetRequiredService(m) - : null - ) - .OfType() - : []; - } -} From a1946590c0dc982833377bd65a26a65fbe56ec2d Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 20:01:55 -0400 Subject: [PATCH 06/93] Begin reworking SilkTouchGenerator --- .../SilkTouch/SilkTouch/SilkTouchGenerator.cs | 94 ++++++++++--------- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs b/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs index b15ba1824b..81005f87ed 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs @@ -1,10 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; using System.Diagnostics; -using Microsoft.Extensions.Configuration; +using Autofac; using Microsoft.Extensions.Logging; using Silk.NET.SilkTouch.Mods; using Silk.NET.SilkTouch.Sources; @@ -14,92 +12,98 @@ namespace Silk.NET.SilkTouch; /// /// The main entry-point class for SilkTouch. /// -/// The logger. -/// The mods to use. -/// The provider of s. -/// The user path input resolver. -public class SilkTouchGenerator( - ILogger logger, - IEnumerable mods, - IModContextProvider modContextProvider, - IInputResolver inputResolver -) +public class SilkTouchGenerator { - private AsyncLocal _jobConfig = new(); + private readonly ILifetimeScope container; + + private readonly string _jobKey; + private readonly SilkTouchConfiguration _jobConfig; + private readonly ILogger _logger; + private readonly IInputResolver _inputResolver; /// /// Gets the loaded mods for this generator instance. /// - public IReadOnlyList Mods { get; } = mods.ToArray(); + public IReadOnlyList Mods { get; } /// - /// The current job. + /// The main entry-point class for SilkTouch. /// - public SilkTouchConfiguration? Current => _jobConfig.Value; + /// + /// // TODO + /// + /// + public SilkTouchGenerator( + string jobKey, + SilkTouchConfiguration jobConfig, + ILifetimeScope parentContainer, + Action build + ) + { + // TODO: Maybe have each mod provide a Register(ILifetimeScope container, Mod.Configuration configuration) method + container = parentContainer.BeginLifetimeScope(builder => + { + // TODO: Decide whether we should register job config here or not + builder.RegisterInstance(jobConfig).SingleInstance(); + + build.Invoke(builder); + }); + + _jobKey = jobKey; + _jobConfig = jobConfig; + _logger = container.Resolve>(); + _inputResolver = container.Resolve(); + Mods = container.Resolve(); + } /// /// Generates binding syntax trees per the given configuration. /// - /// The name of the current job (used as a configuration key). - /// The configuration, expected to be stored as Jobs:{key}. - /// Cancellation token (if any) - /// The generated bindings' syntax trees. - public async Task RunAsync( - string key, - IConfigurationSection jobConfig, - CancellationToken ct = default - ) + public async Task RunAsync(CancellationToken ct = default) { var sw = Stopwatch.StartNew(); - var job = - jobConfig.Get() - ?? throw new InvalidOperationException("Configuration was null"); // Resolve any relative paths in the job configuration. - job = await inputResolver.Resolve(job); - _jobConfig.Value = job; + _jobConfig = await _inputResolver.Resolve(_jobConfig); // TODO: This creates a new instance so need to be careful // Prepare the mods - var jobMods = - job.Mods?.Select(x => Mods.First(y => y.GetType().Name == x)).ToArray() - ?? Array.Empty(); - - var ctx = await modContextProvider.GetContextAsync(key, jobConfig, ct); + var ctx = await modContextProvider.GetContextAsync(_jobKey, _jobConfig, ct); // Just in case a mod gets naughty and tries to modify at the initialization stage. var srcProj = ctx.SourceProject; var testProj = ctx.TestProject; // Initialize the mods - foreach (var jobMod in jobMods) + foreach (var mod in Mods) { - logger.LogDebug("Using mod {0} for {1}", jobMod.GetType().Name, key); - await jobMod.InitializeAsync(ctx, ct); + _logger.LogDebug("Using mod {0} for {1}", mod.GetType().Name, _jobKey); + await mod.InitializeAsync(ctx, ct); if (ctx.SourceProject != srcProj || ctx.TestProject != testProj) { throw new InvalidOperationException( - $"{jobMod.GetType().Name} illegally generated code at the initialization stage." + $"{mod.GetType().Name} illegally generated code at the initialization stage." ); } } - foreach (var jobMod in jobMods) + foreach (var mod in Mods) { - logger.LogInformation("Executing {} for {}...", jobMod.GetType().Name, key); - await jobMod.ExecuteAsync(ctx, ct); + _logger.LogInformation("Executing {} for {}...", mod.GetType().Name, _jobKey); + await mod.ExecuteAsync(ctx, ct); } // Manually dispose so that we don't do this when generation fails (await using is too clever). await ctx.DisposeAsync(); // Output the generated bindings - logger.LogInformation( + _logger.LogInformation( "Bindings generation for {} completed in {} seconds.", - key, + _jobKey, sw.Elapsed.TotalSeconds ); } + // TODO: Why is this here? internal static string GetLongestCommonPrefix(string[] s) { var k = s[0].Length; From f0231805847bab84b1415a09d16069f20bb037f2 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 20:19:53 -0400 Subject: [PATCH 07/93] Combine IModContextProvider and IModContext because Provider's main job is to handle keyed resolution --- .../SilkTouch/SilkTouch/Clang/ClangScraper.cs | 4 +- .../SilkTouch/Mods/Common/IModContext.cs | 2 +- .../Mods/Common/IModContextProvider.cs | 27 -- .../Mods/Common/MSBuildModContext.cs | 246 +++++++++++++++--- .../Mods/Common/MSBuildModContextProvider.cs | 237 ----------------- tests/SilkTouch/SilkTouch/DummyModContext.cs | 2 +- 6 files changed, 215 insertions(+), 303 deletions(-) delete mode 100644 sources/SilkTouch/SilkTouch/Mods/Common/IModContextProvider.cs delete mode 100644 sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextProvider.cs diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index e7a9658493..2f16d40f37 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -370,7 +370,7 @@ await tree.GetRootAsync(ct), /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - if (ctx.ConfigurationDirectory is null) + if (ctx.WorkingDirectory is null) { throw new NotSupportedException("I/O not available."); } @@ -406,7 +406,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) // Read the response files. logger.LogInformation("Reading response files for {}, please wait...", ctx.JobKey); var rsps = rspHandler - .ReadResponseFiles(ctx.ConfigurationDirectory, cfg.ClangSharpResponseFiles) + .ReadResponseFiles(ctx.WorkingDirectory, cfg.ClangSharpResponseFiles) .ToList(); // Apply modifications. This is done before the cache key as modifications to the rsps result in different diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs b/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs index e0f68e06fa..ebfd11a9e5 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs @@ -19,7 +19,7 @@ public interface IModContext : IAsyncDisposable /// Gets the directory in which the configuration file is contained. May be null if I/O is banned in the current /// generator form factor (e.g. the SilkTouch framework is running as a source generator). /// - public string? ConfigurationDirectory { get; } + public string? WorkingDirectory { get; } /// /// The current compilation for the generation outputs. diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/IModContextProvider.cs b/sources/SilkTouch/SilkTouch/Mods/Common/IModContextProvider.cs deleted file mode 100644 index 05f65ddf8e..0000000000 --- a/sources/SilkTouch/SilkTouch/Mods/Common/IModContextProvider.cs +++ /dev/null @@ -1,27 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Extensions.Configuration; - -namespace Silk.NET.SilkTouch.Mods; - -/// -/// Creates for use throughout a job. -/// -public interface IModContextProvider -{ - /// - /// Creates a new mod context. - /// - /// The job key. - /// The generator configuration. - /// The cancellation token. - /// The mod context. - Task GetContextAsync( - string key, - IConfigurationSection cfg, - CancellationToken ct = default - ); -} diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs index 755d56a26e..01eef03e9e 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs @@ -8,33 +8,41 @@ using System.Text; using CSharpier.Core; using CSharpier.Core.CSharp; +using Microsoft.Build.Framework; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; -using Microsoft.Extensions.Configuration; +using Microsoft.CodeAnalysis.MSBuild; using Microsoft.Extensions.Logging; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; using EndOfLine = CSharpier.Core.EndOfLine; +using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Silk.NET.SilkTouch.Mods; -internal class MSBuildModContext( - MSBuildModContextProvider parent, - IConfigurationSection cfg, - ILogger logger -) : IModContext +internal class MSBuildModContext(string jobKey, SilkTouchConfiguration jobConfig, ILogger logger) + : IModContext, + IProgress, + Microsoft.Build.Framework.ILogger { private Project? _srcProject, _testProject; - private SilkTouchConfiguration? _cfg = cfg.Get(); - public string JobKey { get; } = cfg.Key; - public string ConfigurationDirectory { get; init; } = Environment.CurrentDirectory; + public string JobKey => jobKey; + + public string WorkingDirectory { get; init; } = Environment.CurrentDirectory; + + /// + public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Detailed; + + /// + public string? Parameters { get; set; } = string.Empty; public Project? SourceProject { get => _srcProject; set => Assign(ref _srcProject, ref _testProject, value, nameof(TestProject)); } + public Project? TestProject { get => _testProject; @@ -75,27 +83,21 @@ private static void Assign( public async Task InitializeAsync() { - if (_cfg?.Solution is null) - { - throw new InvalidOperationException("No solution provided in configuration."); - } - - var solution = await parent.OpenSolutionAsync( - Path.GetFullPath(_cfg.Solution, ConfigurationDirectory) - ); + logger.LogInformation("Opening solution at {}...", WorkingDirectory); + var solution = await MSBuildWorkspace + .Create() + .OpenSolutionAsync(WorkingDirectory, this, this); - if (_cfg?.SourceProject is null) + if (jobConfig.SourceProject is null) { throw new InvalidOperationException("No source project provided in configuration."); } // First locate the source project - var projectFile = Path.GetFullPath(_cfg.SourceProject, ConfigurationDirectory); + var projectFile = Path.GetFullPath(jobConfig.SourceProject, WorkingDirectory); _srcProject = solution .Projects.Where(x => x.FilePath is not null) - .FirstOrDefault(x => - Path.GetFullPath(x.FilePath!, ConfigurationDirectory) == projectFile - ); + .FirstOrDefault(x => Path.GetFullPath(x.FilePath!, WorkingDirectory) == projectFile); if (_srcProject is null) { throw new InvalidOperationException("Failed to locate source project."); @@ -105,27 +107,19 @@ public async Task InitializeAsync() // TODO maybe one day we'll lift this restriction? I couldn't think of a reason not to have it, but there's also not many to have it. SourceProject = _srcProject.RemoveDocuments([.. _srcProject.DocumentIds]); solution = _srcProject.Solution; - if (_cfg.TestProject is not null) + if (jobConfig.TestProject is not null) { - var testProjectFile = Path.GetFullPath(_cfg.TestProject, ConfigurationDirectory); + var testProjectFile = Path.GetFullPath(jobConfig.TestProject, WorkingDirectory); _testProject = solution .Projects.Where(x => x.FilePath is not null) .FirstOrDefault(x => - Path.GetFullPath(x.FilePath!, ConfigurationDirectory) == testProjectFile + Path.GetFullPath(x.FilePath!, WorkingDirectory) == testProjectFile ); TestProject = _testProject?.RemoveDocuments([.. _testProject.DocumentIds]); solution = _testProject?.Solution ?? solution; } } - private string ObtainCacheKey() // TODO: This code is never used - { - // Obtain a cache key for the job, should the mods want to cache any artifacts. - var cacheKey = string.Join(',', cfg.AsEnumerable().OrderBy(x => x.Key)); - logger.LogDebug("Cache key for job (before hashing): {}", cacheKey); - return Convert.ToHexString(XxHash64.Hash(Encoding.UTF8.GetBytes(cacheKey))); - } - public async ValueTask DisposeAsync() { IEnumerable? existingFiles = null; @@ -149,9 +143,9 @@ public async ValueTask DisposeAsync() var existingFileGate = 0; var sw = Stopwatch.StartNew(); logger.LogInformation("Writing {} to disk...", JobKey); - var defaultLicenseHeaderTrivia = _cfg?.DefaultLicenseHeader is null + var defaultLicenseHeaderTrivia = jobConfig.DefaultLicenseHeader is null ? null - : (await File.ReadAllLinesAsync(_cfg.DefaultLicenseHeader)) + : (await File.ReadAllLinesAsync(jobConfig.DefaultLicenseHeader)) .Where(x => x.Length == 0 || x.StartsWith("//")) .Select(x => Comment(x.Trim())) .ToArray(); @@ -307,4 +301,186 @@ private static async Task ToNormalisedStringAsync( var result = await CSharpFormatter.FormatAsync(normalizedRoot.SyntaxTree, _opts, ct); return !result.ErrorDiagnostics.Any() ? result.Code : normalizedRoot.ToFullString(); } + + /// + public void Report(ProjectLoadProgress value) => + logger.LogDebug( + "{0}: {1}({2}) - elapsed {3}", + value.Operation, + value.FilePath, + value.TargetFramework, + value.ElapsedTime + ); + + private IEventSource? _eventSource; + + /// + public void Initialize(IEventSource eventSource) + { + if (_eventSource is not null) + { + throw new InvalidOperationException("Already initialised."); + } + + _eventSource = eventSource; + _eventSource.BuildStarted += EventSourceOnBuildStarted; + _eventSource.AnyEventRaised += EventSourceOnAnyEventRaised; + _eventSource.BuildFinished += EventSourceOnBuildFinished; + _eventSource.ErrorRaised += EventSourceOnErrorRaised; + _eventSource.MessageRaised += EventSourceOnMessageRaised; + _eventSource.ProjectFinished += EventSourceOnProjectFinished; + _eventSource.ProjectStarted += EventSourceOnProjectStarted; + _eventSource.TargetFinished += EventSourceOnTargetFinished; + _eventSource.TargetStarted += EventSourceOnTargetStarted; + _eventSource.TaskFinished += EventSourceOnTaskFinished; + _eventSource.TaskStarted += EventSourceOnTaskStarted; + _eventSource.WarningRaised += EventSourceOnWarningRaised; + _eventSource.CustomEventRaised += EventSourceOnCustomEventRaised; + _eventSource.StatusEventRaised += EventSourceOnStatusEventRaised; + } + + private void EventSourceOnStatusEventRaised(object sender, BuildStatusEventArgs e) => + logger.LogTrace( + "At {0} {1} raised status event: {2} ({3})", + e.Timestamp, + e.SenderName, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnCustomEventRaised(object sender, CustomBuildEventArgs e) => + logger.LogTrace( + "At {0} {1} raised custom event: {2} ({3})", + e.Timestamp, + e.SenderName, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnWarningRaised(object sender, BuildWarningEventArgs e) => + logger.LogWarning( + "{0}:{1}:{2} : warning {3}: {4} ({5})", + e.File, + e.LineNumber, + e.ColumnNumber, + e.Code, + e.Message, + e.ProjectFile + ); + + private void EventSourceOnTaskStarted(object sender, TaskStartedEventArgs e) => + logger.LogTrace( + "At {0} {1} started task {2} from {3}, message: {4} ({5})", + e.Timestamp, + e.SenderName, + e.TaskName, + e.TaskFile, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnTaskFinished(object sender, TaskFinishedEventArgs e) => + logger.LogTrace( + "At {0} {1} finished task {2} from {3}, message: {4} ({5})", + e.Timestamp, + e.SenderName, + e.TaskName, + e.TaskFile, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnTargetStarted(object sender, TargetStartedEventArgs e) => + logger.LogTrace( + "At {0} {1} started target {2} from {3}, message: {4} ({5})", + e.Timestamp, + e.SenderName, + e.TargetName, + e.TargetFile, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnTargetFinished(object sender, TargetFinishedEventArgs e) => + logger.LogTrace( + "At {0} {1} finished target {2} from {3}, message: {4} ({5})", + e.Timestamp, + e.SenderName, + e.TargetName, + e.TargetFile, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnProjectStarted(object sender, ProjectStartedEventArgs e) => + logger.LogTrace("MSBuild started processing project {0}: {1}", e.ProjectFile, e.Message); + + private void EventSourceOnProjectFinished(object sender, ProjectFinishedEventArgs e) => + logger.LogTrace("MSBuild finished processing project {0}: {1}", e.ProjectFile, e.Message); + + private void EventSourceOnMessageRaised(object sender, BuildMessageEventArgs e) => + logger.LogTrace( + "{0}:{1}:{2} : message {3}: {4} ({5})", + e.File, + e.LineNumber, + e.ColumnNumber, + e.Code, + e.Message, + e.ProjectFile + ); + + private void EventSourceOnErrorRaised(object sender, BuildErrorEventArgs e) => + logger.LogError( + "{0}:{1}:{2} : error {3}: {4} ({5})", + e.File, + e.LineNumber, + e.ColumnNumber, + e.Code, + e.Message, + e.ProjectFile + ); + + private void EventSourceOnBuildFinished(object sender, BuildFinishedEventArgs e) + // was going to be a LogDebug/LogError but it seems this happens in some cases anyway? + => + logger.LogDebug( + e.Succeeded ? "MSBuild completed successfully" : "MSBuild failed (might be okay?)" + ); + + private void EventSourceOnAnyEventRaised(object sender, BuildEventArgs e) => + logger.LogTrace( + "At {0} {1} raised event: {2} ({3})", + e.Timestamp, + e.SenderName, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnBuildStarted(object sender, BuildStartedEventArgs e) => + logger.LogDebug("MSBuild started."); + + /// + public void Shutdown() + { + if (_eventSource is null) + { + return; + } + + _eventSource.BuildStarted -= EventSourceOnBuildStarted; + _eventSource.AnyEventRaised -= EventSourceOnAnyEventRaised; + _eventSource.BuildFinished -= EventSourceOnBuildFinished; + _eventSource.ErrorRaised -= EventSourceOnErrorRaised; + _eventSource.MessageRaised -= EventSourceOnMessageRaised; + _eventSource.ProjectFinished -= EventSourceOnProjectFinished; + _eventSource.ProjectStarted -= EventSourceOnProjectStarted; + _eventSource.TargetFinished -= EventSourceOnTargetFinished; + _eventSource.TargetStarted -= EventSourceOnTargetStarted; + _eventSource.TaskFinished -= EventSourceOnTaskFinished; + _eventSource.TaskStarted -= EventSourceOnTaskStarted; + _eventSource.WarningRaised -= EventSourceOnWarningRaised; + _eventSource.CustomEventRaised -= EventSourceOnCustomEventRaised; + _eventSource.StatusEventRaised -= EventSourceOnStatusEventRaised; + _eventSource = null; + } } diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextProvider.cs b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextProvider.cs deleted file mode 100644 index 6e7bea39da..0000000000 --- a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextProvider.cs +++ /dev/null @@ -1,237 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Build.Framework; -using Microsoft.Build.Locator; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.MSBuild; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Logging; - -namespace Silk.NET.SilkTouch.Mods; - -/// -/// A that uses an MSBuild workspace and writes the modified files to disk (without -/// project modifications) upon disposal of the returned contexts. -/// -public class MSBuildModContextProvider(ILogger logger) - : IModContextProvider, - IProgress, - Microsoft.Build.Framework.ILogger -{ - private readonly ConcurrentDictionary> _solutions = []; - - internal Task OpenSolutionAsync(string file) => - _solutions.GetOrAdd( - file, - async x => - { - logger.LogInformation("Opening solution at {}...", x); - return await MSBuildWorkspace.Create().OpenSolutionAsync(x, this, this); - } - ); - - /// - public async Task GetContextAsync( - string key, - IConfigurationSection cfg, - CancellationToken ct = default - ) - { - var ret = new MSBuildModContext(this, cfg, logger); - await ret.InitializeAsync(); - return ret; - } - - /// - public void Report(ProjectLoadProgress value) => - logger.LogDebug( - "{0}: {1}({2}) - elapsed {3}", - value.Operation, - value.FilePath, - value.TargetFramework, - value.ElapsedTime - ); - - private IEventSource? _eventSource; - - /// - public void Initialize(IEventSource eventSource) - { - if (_eventSource is not null) - { - throw new InvalidOperationException("Already initialised."); - } - - _eventSource = eventSource; - _eventSource.BuildStarted += EventSourceOnBuildStarted; - _eventSource.AnyEventRaised += EventSourceOnAnyEventRaised; - _eventSource.BuildFinished += EventSourceOnBuildFinished; - _eventSource.ErrorRaised += EventSourceOnErrorRaised; - _eventSource.MessageRaised += EventSourceOnMessageRaised; - _eventSource.ProjectFinished += EventSourceOnProjectFinished; - _eventSource.ProjectStarted += EventSourceOnProjectStarted; - _eventSource.TargetFinished += EventSourceOnTargetFinished; - _eventSource.TargetStarted += EventSourceOnTargetStarted; - _eventSource.TaskFinished += EventSourceOnTaskFinished; - _eventSource.TaskStarted += EventSourceOnTaskStarted; - _eventSource.WarningRaised += EventSourceOnWarningRaised; - _eventSource.CustomEventRaised += EventSourceOnCustomEventRaised; - _eventSource.StatusEventRaised += EventSourceOnStatusEventRaised; - } - - private void EventSourceOnStatusEventRaised(object sender, BuildStatusEventArgs e) => - logger.LogTrace( - "At {0} {1} raised status event: {2} ({3})", - e.Timestamp, - e.SenderName, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnCustomEventRaised(object sender, CustomBuildEventArgs e) => - logger.LogTrace( - "At {0} {1} raised custom event: {2} ({3})", - e.Timestamp, - e.SenderName, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnWarningRaised(object sender, BuildWarningEventArgs e) => - logger.LogWarning( - "{0}:{1}:{2} : warning {3}: {4} ({5})", - e.File, - e.LineNumber, - e.ColumnNumber, - e.Code, - e.Message, - e.ProjectFile - ); - - private void EventSourceOnTaskStarted(object sender, TaskStartedEventArgs e) => - logger.LogTrace( - "At {0} {1} started task {2} from {3}, message: {4} ({5})", - e.Timestamp, - e.SenderName, - e.TaskName, - e.TaskFile, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnTaskFinished(object sender, TaskFinishedEventArgs e) => - logger.LogTrace( - "At {0} {1} finished task {2} from {3}, message: {4} ({5})", - e.Timestamp, - e.SenderName, - e.TaskName, - e.TaskFile, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnTargetStarted(object sender, TargetStartedEventArgs e) => - logger.LogTrace( - "At {0} {1} started target {2} from {3}, message: {4} ({5})", - e.Timestamp, - e.SenderName, - e.TargetName, - e.TargetFile, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnTargetFinished(object sender, TargetFinishedEventArgs e) => - logger.LogTrace( - "At {0} {1} finished target {2} from {3}, message: {4} ({5})", - e.Timestamp, - e.SenderName, - e.TargetName, - e.TargetFile, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnProjectStarted(object sender, ProjectStartedEventArgs e) => - logger.LogTrace("MSBuild started processing project {0}: {1}", e.ProjectFile, e.Message); - - private void EventSourceOnProjectFinished(object sender, ProjectFinishedEventArgs e) => - logger.LogTrace("MSBuild finished processing project {0}: {1}", e.ProjectFile, e.Message); - - private void EventSourceOnMessageRaised(object sender, BuildMessageEventArgs e) => - logger.LogTrace( - "{0}:{1}:{2} : message {3}: {4} ({5})", - e.File, - e.LineNumber, - e.ColumnNumber, - e.Code, - e.Message, - e.ProjectFile - ); - - private void EventSourceOnErrorRaised(object sender, BuildErrorEventArgs e) => - logger.LogError( - "{0}:{1}:{2} : error {3}: {4} ({5})", - e.File, - e.LineNumber, - e.ColumnNumber, - e.Code, - e.Message, - e.ProjectFile - ); - - private void EventSourceOnBuildFinished(object sender, BuildFinishedEventArgs e) - // was going to be a LogDebug/LogError but it seems this happens in some cases anyway? - => - logger.LogDebug( - e.Succeeded ? "MSBuild completed successfully" : "MSBuild failed (might be okay?)" - ); - - private void EventSourceOnAnyEventRaised(object sender, BuildEventArgs e) => - logger.LogTrace( - "At {0} {1} raised event: {2} ({3})", - e.Timestamp, - e.SenderName, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnBuildStarted(object sender, BuildStartedEventArgs e) => - logger.LogDebug("MSBuild started."); - - /// - public void Shutdown() - { - if (_eventSource is null) - { - return; - } - - _eventSource.BuildStarted -= EventSourceOnBuildStarted; - _eventSource.AnyEventRaised -= EventSourceOnAnyEventRaised; - _eventSource.BuildFinished -= EventSourceOnBuildFinished; - _eventSource.ErrorRaised -= EventSourceOnErrorRaised; - _eventSource.MessageRaised -= EventSourceOnMessageRaised; - _eventSource.ProjectFinished -= EventSourceOnProjectFinished; - _eventSource.ProjectStarted -= EventSourceOnProjectStarted; - _eventSource.TargetFinished -= EventSourceOnTargetFinished; - _eventSource.TargetStarted -= EventSourceOnTargetStarted; - _eventSource.TaskFinished -= EventSourceOnTaskFinished; - _eventSource.TaskStarted -= EventSourceOnTaskStarted; - _eventSource.WarningRaised -= EventSourceOnWarningRaised; - _eventSource.CustomEventRaised -= EventSourceOnCustomEventRaised; - _eventSource.StatusEventRaised -= EventSourceOnStatusEventRaised; - _eventSource = null; - } - - /// - public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Detailed; - - /// - public string? Parameters { get; set; } = string.Empty; -} diff --git a/tests/SilkTouch/SilkTouch/DummyModContext.cs b/tests/SilkTouch/SilkTouch/DummyModContext.cs index 1ce9b55a70..978a417504 100644 --- a/tests/SilkTouch/SilkTouch/DummyModContext.cs +++ b/tests/SilkTouch/SilkTouch/DummyModContext.cs @@ -11,7 +11,7 @@ public class DummyModContext : IModContext public ValueTask DisposeAsync() => ValueTask.CompletedTask; public string JobKey { get; set; } = string.Empty; - public string? ConfigurationDirectory { get; set; } + public string? WorkingDirectory { get; set; } public Project? SourceProject { get; set; } public Project? TestProject { get; set; } } From 9ac4f73da6c84bac02b0a71b74e8bc76c7802fd5 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 20:32:46 -0400 Subject: [PATCH 08/93] Update mods to not use IOptionsSnapshot nor IJobDependency --- .../SilkTouch/SilkTouch/Clang/ClangScraper.cs | 24 ++++++++------- .../SilkTouch/Mods/AddApiProfiles.cs | 25 ++++------------ .../SilkTouch/SilkTouch/Mods/AddIncludes.cs | 29 +++++++++---------- .../SilkTouch/Mods/AddOpaqueStructs.cs | 12 ++------ .../SilkTouch/SilkTouch/Mods/AddVTables.cs | 22 +++++--------- .../SilkTouch/Mods/BakeSourceSets.cs | 25 +++++----------- .../SilkTouch/Mods/ChangeNamespace.cs | 14 ++------- .../SilkTouch/Mods/ChangeNativeClass.cs | 11 ++----- .../SilkTouch/Mods/IdentifySharedPrefixes.cs | 11 +++---- .../Mods/InterceptNativeFunctions.cs | 13 +++------ .../SilkTouch/Mods/MixKhronosData.cs | 24 +++++++-------- .../SilkTouch/SilkTouch/Mods/PrettifyNames.cs | 16 ++++------ .../SilkTouch/Mods/StripAttributes.cs | 5 +--- .../SilkTouch/Mods/TransformEnums.cs | 4 +-- .../SilkTouch/Mods/TransformHandles.cs | 9 ++---- .../SilkTouch/Mods/TransformProperties.cs | 5 +--- .../Mods/Transformation/BoolTransformer.cs | 11 +++---- .../Transformation/FunctionTransformer.cs | 7 ++--- 18 files changed, 90 insertions(+), 177 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index 2f16d40f37..693e528642 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -3,15 +3,12 @@ using System.Collections.Concurrent; using System.Diagnostics; -using System.IO.Hashing; -using System.Runtime.InteropServices; using ClangSharp; using ClangSharp.Interop; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Text; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using Silk.NET.SilkTouch.Caching; using Silk.NET.SilkTouch.Mods; using Silk.NET.SilkTouch.Sources; @@ -33,11 +30,11 @@ namespace Silk.NET.SilkTouch.Clang; /// The cache provider into which ClangSharp outputs are cached. public sealed class ClangScraper( ResponseFileHandler rspHandler, - IOptionsSnapshot config, + ClangScraper.Configuration config, ILogger logger, IInputResolver inputResolver, ICacheProvider? cacheProvider = null, - IEnumerable>? responseFileMods = null + IEnumerable? responseFileMods = null ) : IMod { // TODO add Windows SDK and Xcode configuration @@ -401,26 +398,31 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) }; // Read the configuration. - var cfg = await inputResolver.Resolve(config.Get(ctx.JobKey)); + var resolvedConfig = await inputResolver.Resolve(config); // Read the response files. logger.LogInformation("Reading response files for {}, please wait...", ctx.JobKey); var rsps = rspHandler - .ReadResponseFiles(ctx.WorkingDirectory, cfg.ClangSharpResponseFiles) + .ReadResponseFiles(ctx.WorkingDirectory, resolvedConfig.ClangSharpResponseFiles) .ToList(); // Apply modifications. This is done before the cache key as modifications to the rsps result in different // outputs. - foreach (var mod in responseFileMods?.SelectMany(x => x.Get(ctx.JobKey)) ?? []) + if (responseFileMods != null) { - rsps = await mod.BeforeScrapeAsync(ctx.JobKey, rsps); + foreach (var mod in responseFileMods) + { + rsps = await mod.BeforeScrapeAsync(ctx.JobKey, rsps); + } } // Resolve any foreign paths referenced in the response files await inputResolver.ResolveInPlace(rsps); // Should we completely skip running ClangSharp (e.g. we can't get Windows SDK bindings on macOS) - var skip = (cfg.SkipScrapeIf?.Any(applicableSkipIfs.Contains)).GetValueOrDefault(); + var skip = ( + resolvedConfig.SkipScrapeIf?.Any(applicableSkipIfs.Contains) + ).GetValueOrDefault(); var cacheKey = $"{ctx.JobKey}-ClangSharp"; Exception? innerException = null; try @@ -428,7 +430,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) if (!skip) { // Run the scraper over the response files - await ScrapeBindingsAsync(rsps, ctx, cfg, cacheKey, ct); + await ScrapeBindingsAsync(rsps, ctx, resolvedConfig, cacheKey, ct); } } catch (Exception e) diff --git a/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs b/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs index 57d3e3c963..9ecee80233 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs @@ -1,18 +1,11 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; using System.Diagnostics; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; -using Silk.NET.Core; using Silk.NET.SilkTouch.Mods.Metadata; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; @@ -26,10 +19,8 @@ namespace Silk.NET.SilkTouch.Mods; /// The version providers. public class AddApiProfiles( ILogger logger, - IOptionsSnapshot config, - IEnumerable< - IJobDependency>> - > versionProviders + AddApiProfiles.Configuration config, + IEnumerable>> versionProviders ) : IMod { /// @@ -218,11 +209,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) return; } - var cfg = config.Get(ctx.JobKey); - var rewriter = new Rewriter( - ctx.JobKey, - versionProviders.SelectMany(x => x.Get(ctx.JobKey)).ToArray() - ); + var rewriter = new Rewriter(ctx.JobKey, versionProviders); foreach (var docId in ctx.SourceProject.DocumentIds) { var doc = @@ -241,7 +228,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) } var root = await tree.GetRootAsync(ct); - rewriter.Profile = cfg + rewriter.Profile = config .Profiles?.Where(x => path.StartsWith(x.SourceSubdirectory, StringComparison.OrdinalIgnoreCase) ) @@ -249,8 +236,8 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) if ( rewriter.Profile is null && !( - cfg.SearchAllFiles.GetValueOrDefault() - || (cfg.SearchAllFiles is null && cfg.Profiles is null or { Length: 0 }) + config.SearchAllFiles.GetValueOrDefault() + || (config.SearchAllFiles is null && config.Profiles is null or { Length: 0 }) ) ) { diff --git a/sources/SilkTouch/SilkTouch/Mods/AddIncludes.cs b/sources/SilkTouch/SilkTouch/Mods/AddIncludes.cs index 58dd51ce90..4770eb28c0 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddIncludes.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddIncludes.cs @@ -1,13 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; using Microsoft.Extensions.FileSystemGlobbing; -using Microsoft.Extensions.Options; using Silk.NET.SilkTouch.Clang; using Silk.NET.SilkTouch.Sources; @@ -19,11 +13,11 @@ namespace Silk.NET.SilkTouch.Mods; /// /// The standard include resolver. /// The user path input resolver. -/// The mod configuration options snapshot. +/// The mod configuration. public class AddIncludes( IStdIncludeResolver stdResolver, IInputResolver inputResolver, - IOptionsSnapshot options + AddIncludes.Configuration config ) : IMod, IResponseFileMod { /// @@ -60,7 +54,6 @@ public record Configuration /// public async Task> BeforeScrapeAsync(string key, List rsps) { - var cfg = options.Get(key); for (var i = 0; i < rsps.Count; i++) { var rsp = rsps[i]; @@ -68,20 +61,24 @@ public async Task> BeforeScrapeAsync(string key, List $"--include-directory={x}") ?? [] + config.PriorityIncludes?.Select(x => $"--include-directory={x}") ?? [] ); cmdLineArgs.AddRange( - cfg.AdditionalIncludes?.Select(x => $"--include-directory={x}") ?? [] + config.AdditionalIncludes?.Select(x => $"--include-directory={x}") ?? [] ); - if (!cfg.SuppressStdIncludes) + if (!config.SuppressStdIncludes) { cmdLineArgs.AddRange(stdResolver.GetStandardIncludes()); } var matcher = new Matcher(); - matcher.AddIncludePatterns(cfg.RemoveMatchingIncludes?.Where(x => x[0] != '!') ?? []); - matcher.AddExcludePatterns(cfg.RemoveMatchingIncludes?.Where(x => x[0] == '!') ?? []); + matcher.AddIncludePatterns( + config.RemoveMatchingIncludes?.Where(x => x[0] != '!') ?? [] + ); + matcher.AddExcludePatterns( + config.RemoveMatchingIncludes?.Where(x => x[0] == '!') ?? [] + ); for (var j = 0; j < cmdLineArgs.Count; j++) { string? path = null; @@ -117,9 +114,9 @@ public async Task> BeforeScrapeAsync(string key, List 0 } + config.RemoveMatchingIncludes is { Length: > 0 } && matcher.Match(path).HasMatches ) ) diff --git a/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs b/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs index 6fe7609b84..d6dcd224c1 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs @@ -1,18 +1,11 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; using System.Collections.Concurrent; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using Silk.NET.SilkTouch.Clang; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; @@ -23,7 +16,7 @@ namespace Silk.NET.SilkTouch.Mods; /// public class AddOpaqueStructs( ILogger logger, - IOptionsSnapshot config + AddOpaqueStructs.Configuration config ) : IMod, IResponseFileMod { private readonly ConcurrentDictionary _defaultNamespaces = new(); @@ -59,7 +52,6 @@ public Task> BeforeScrapeAsync(string key, List /// public Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - var cfg = config.Get(ctx.JobKey); var proj = ctx.SourceProject; if ( proj?.FilePath is null @@ -70,7 +62,7 @@ public Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) return Task.CompletedTask; } - foreach (var fullyQualifiedName in cfg.Names ?? Array.Empty()) + foreach (var fullyQualifiedName in config.Names ?? Array.Empty()) { var lastPeriodIndex = fullyQualifiedName.LastIndexOf('.'); var ns = diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index c1d418da5e..7ad5b6c6c9 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -1,20 +1,12 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; using System.Diagnostics; -using System.IO; -using System.Linq; using System.Text.Json.Serialization; -using System.Threading; -using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Options; -using Silk.NET.SilkTouch.Clang; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Silk.NET.SilkTouch.Mods; @@ -37,7 +29,7 @@ namespace Silk.NET.SilkTouch.Mods; /// -based partial class implementation of the static interface. However, in some cases this /// could be any other implementation such as the implementation. /// -public class AddVTables(IOptionsSnapshot config) : IMod +public class AddVTables(AddVTables.Configuration config) : IMod { /// /// Base class for VTable configurations. @@ -1407,17 +1399,17 @@ public void Reset() /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - var cfg = config.Get(ctx.JobKey); VTable[]? vTables = null; - if (cfg.VTables is not null) + if (config.VTables is not null) { - vTables = new VTable[cfg.VTables.Length]; - for (var i = 0; i < cfg.VTables.Length; i++) + vTables = new VTable[config.VTables.Length]; + for (var i = 0; i < config.VTables.Length; i++) { vTables[i] = (VTable)( - cfg.VTables[i] + config + .VTables[i] .Get( - cfg.VTables[i].GetValue("Kind") switch + config.VTables[i].GetValue("Kind") switch { nameof(DllImport) => typeof(DllImport), nameof(StaticWrapper) => typeof(StaticWrapper), diff --git a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs index 383eb93bb1..f068d83d30 100644 --- a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs +++ b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs @@ -1,18 +1,11 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; using System.Configuration; -using System.IO; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using Silk.NET.SilkTouch.Mods.Bakery; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; @@ -28,8 +21,8 @@ namespace Silk.NET.SilkTouch.Mods; /// public class BakeSourceSets( ILogger logger, - IOptionsSnapshot config, - IEnumerable> strategies + BakeSourceSets.Configuration config, + IEnumerable strategies ) : Mod { /// @@ -310,15 +303,11 @@ public override async Task ExecuteAsync(IModContext ctx, CancellationToken ct = return; } - var cfg = config.Get(ctx.JobKey); - // Locate the bake strategy the user's after. - var strategy = strategies - .SelectMany(x => x.Get(ctx.JobKey)) - .FirstOrDefault(x => - x.Name == cfg.Strategy - || (cfg.Strategy is null && x.GetType() == typeof(DefaultBakeStrategy)) - ); + var strategy = strategies.FirstOrDefault(x => + x.Name == config.Strategy + || (config.Strategy is null && x.GetType() == typeof(DefaultBakeStrategy)) + ); if (strategy is null) { throw new ConfigurationErrorsException( @@ -348,7 +337,7 @@ public override async Task ExecuteAsync(IModContext ctx, CancellationToken ct = } var root = await tree.GetRootAsync(ct); - var srcSet = cfg + var srcSet = config .SourceSets.Where(x => path.StartsWith(x.Key, StringComparison.OrdinalIgnoreCase)) .MaxBy(x => x.Key.Length); rewriter.SourceSet = srcSet.Key; diff --git a/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs b/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs index 6fe302c360..186d2ecf19 100644 --- a/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs +++ b/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs @@ -1,18 +1,10 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; using System.Text.RegularExpressions; -using System.Threading; -using System.Threading.Tasks; -using ClangSharp; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Extensions.Options; using Silk.NET.SilkTouch.Clang; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; @@ -22,9 +14,7 @@ namespace Silk.NET.SilkTouch.Mods; /// A mod that changes namespaces in response files. It is assumed that there will be no other sources of variance with /// regards to namespaces. /// -public class ChangeNamespace(IOptionsSnapshot config) - : IMod, - IResponseFileMod +public class ChangeNamespace(ChangeNamespace.Configuration config) : IMod, IResponseFileMod { private readonly Dictionary, IReadOnlyList<(Regex, string)>)> _jobs = new(); @@ -44,7 +34,7 @@ public class ChangeNamespace(IOptionsSnapshot con public Task> BeforeScrapeAsync(string key, List rsps) { var regexes = - config.Get(key).Mappings?.Select(kvp => (new Regex(kvp.Key), kvp.Value)).ToArray() + config.Mappings?.Select(kvp => (new Regex(kvp.Key), kvp.Value)).ToArray() ?? Array.Empty<(Regex, string)>(); for (var i = 0; i < rsps.Count; i++) { diff --git a/sources/SilkTouch/SilkTouch/Mods/ChangeNativeClass.cs b/sources/SilkTouch/SilkTouch/Mods/ChangeNativeClass.cs index 36d4f23363..4c71ee599b 100644 --- a/sources/SilkTouch/SilkTouch/Mods/ChangeNativeClass.cs +++ b/sources/SilkTouch/SilkTouch/Mods/ChangeNativeClass.cs @@ -9,8 +9,6 @@ using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; -using Silk.NET.Core; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Silk.NET.SilkTouch.Mods; @@ -27,10 +25,10 @@ namespace Silk.NET.SilkTouch.Mods; /// . Nested types are not supported at this time. Only static members are moved. /// /// The logger. -/// The configuration options. +/// The configuration options. public class ChangeNativeClass( ILogger log, - IOptionsSnapshot options + ChangeNativeClass.Configuration config ) : IMod { /// @@ -48,11 +46,8 @@ public class Configuration /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - // Get the config. - var cfg = options.Get(ctx.JobKey); - // Compile all the patterns - var patterns = cfg + var patterns = config .NewClasses.Select(x => (Regex: new Regex(x.Key, RegexOptions.Compiled), x.Value)) .ToList(); var finder = new MatchFinder(patterns); diff --git a/sources/SilkTouch/SilkTouch/Mods/IdentifySharedPrefixes.cs b/sources/SilkTouch/SilkTouch/Mods/IdentifySharedPrefixes.cs index 029da2b594..802ae5b4f4 100644 --- a/sources/SilkTouch/SilkTouch/Mods/IdentifySharedPrefixes.cs +++ b/sources/SilkTouch/SilkTouch/Mods/IdentifySharedPrefixes.cs @@ -4,7 +4,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Extensions.Options; using Silk.NET.SilkTouch.Naming; namespace Silk.NET.SilkTouch.Mods; @@ -17,8 +16,7 @@ namespace Silk.NET.SilkTouch.Mods; /// These are identified as [NameAffix] attributes that /// and other mods can then process further. /// -public class IdentifySharedPrefixes(IOptionsSnapshot config) - : IMod +public class IdentifySharedPrefixes(IdentifySharedPrefixes.Configuration config) : IMod { /// /// This was from the original NameTrimmer code @@ -56,7 +54,6 @@ public record Configuration /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - var configuration = config.Get(ctx.JobKey); var project = ctx.SourceProject; if (project is null) { @@ -65,9 +62,9 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) // Sort the hints from large to small // This makes it so that we prefer longer prefixes - var hints = configuration.GlobalPrefixHints.ToList(); + var hints = config.GlobalPrefixHints.ToList(); hints.Sort((x, y) => -x.Length.CompareTo(y.Length)); - configuration = configuration with { GlobalPrefixHints = hints }; + config = config with { GlobalPrefixHints = hints }; // Gather all the names var visitor = new Visitor(); @@ -80,7 +77,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) var results = new Dictionary>(); foreach (var (scope, members) in visitor.Scopes) { - var prefixes = IdentifyPrefixes(scope, members, visitor.NonDeterminant, configuration); + var prefixes = IdentifyPrefixes(scope, members, visitor.NonDeterminant, config); if (prefixes == null) { continue; diff --git a/sources/SilkTouch/SilkTouch/Mods/InterceptNativeFunctions.cs b/sources/SilkTouch/SilkTouch/Mods/InterceptNativeFunctions.cs index fb3bcc6aa7..d1c27c11f0 100644 --- a/sources/SilkTouch/SilkTouch/Mods/InterceptNativeFunctions.cs +++ b/sources/SilkTouch/SilkTouch/Mods/InterceptNativeFunctions.cs @@ -4,7 +4,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Extensions.Options; using Silk.NET.SilkTouch.Naming; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; @@ -15,10 +14,7 @@ namespace Silk.NET.SilkTouch.Mods; /// to intercept the function call with custom logic. The original implementation is available with an Internal /// suffix. /// -/// The configuration for the mod. -public class InterceptNativeFunctions( - IOptionsSnapshot options -) : IMod +public class InterceptNativeFunctions(InterceptNativeFunctions.Configuration config) : IMod { /// /// The configuration for the mod. @@ -34,13 +30,12 @@ public class Configuration /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - var cfg = options.Get(ctx.JobKey); - if (cfg.NativeFunctionNames is not { Count: > 0 }) + if (config.NativeFunctionNames is not { Count: > 0 }) { return; } - var rewriter = new Rewriter(cfg); + var rewriter = new Rewriter(config); var proj = ctx.SourceProject; foreach (var docId in proj?.DocumentIds ?? []) { @@ -71,7 +66,7 @@ class Rewriter(Configuration cfg) : CSharpSyntaxRewriter return ret; } - public override SyntaxNode? VisitMethodDeclaration(MethodDeclarationSyntax node) + public override SyntaxNode VisitMethodDeclaration(MethodDeclarationSyntax node) { if ( ( diff --git a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs index 774ed713e0..2e48538bfa 100644 --- a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs +++ b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs @@ -10,7 +10,6 @@ using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using Silk.NET.SilkTouch.Clang; using Silk.NET.SilkTouch.Mods.Metadata; using Silk.NET.SilkTouch.Mods.Transformation; @@ -23,9 +22,9 @@ namespace Silk.NET.SilkTouch.Mods; /// A mod that reads Khronos specifications to influence codegen. /// /// The logger. -/// The configuration. +public partial class MixKhronosData( ILogger logger, - IOptionsSnapshot cfg + MixKhronosData.Configuration config ) : IMod, IResponseFileMod, @@ -263,13 +262,12 @@ public record Configuration /// public async Task InitializeAsync(IModContext ctx, CancellationToken ct = default) { - var currentConfig = cfg.Get(ctx.JobKey); - var specPath = currentConfig.SpecPath; + var specPath = config.SpecPath; var job = Jobs[ctx.JobKey] = new JobData { - Configuration = currentConfig, - TypeMap = currentConfig.TypeMap is not null - ? new Dictionary(currentConfig.TypeMap) + Configuration = config, + TypeMap = config.TypeMap is not null + ? new Dictionary(config.TypeMap) : [], }; job.TypeMap.TryAdd("int8_t", "sbyte"); @@ -308,7 +306,7 @@ .. xml.Element("registry") ?.Elements("tag") .Attributes("name") .Select(x => x.Value) ?? [], - .. currentConfig.NonStandardExtensionNomenclature + .. config.NonStandardExtensionNomenclature ? [] : xml.Element("registry") ?.Element("extensions") @@ -325,7 +323,7 @@ .. currentConfig.NonStandardExtensionNomenclature // Extract the second part from the extension name // Eg: GL_NV_command_list -> NV .Select(name => name.Value.Split('_')[1].ToUpper()) ?? [], - .. currentConfig.Vendors ?? [], + .. config.Vendors ?? [], ] ); @@ -354,7 +352,7 @@ .. currentConfig.NonStandardExtensionNomenclature // We want Flags as the output, but in order to generate everything correctly, // we need to first map Flags to FlagBits, then rename FlagBits back to Flags (this is done in the rewriters). // Without this, ClangSharp will output the Flags types as the integral storage type instead of the enum - var flagsTypesSet = currentConfig.FlagsTypes.ToHashSet(); + var flagsTypesSet = config.FlagsTypes.ToHashSet(); foreach (var typeElement in xml.Elements("registry").Elements("types").Elements("type")) { var typedef = typeElement.Element("type")?.Value; @@ -375,7 +373,7 @@ .. currentConfig.NonStandardExtensionNomenclature } // Gather information about struct structure type enums - if (currentConfig.StructureTypes.Count != 0) + if (config.StructureTypes.Count != 0) { foreach ( var typeElement in xml.Elements("registry") @@ -398,7 +396,7 @@ var typeElement in xml.Elements("registry") continue; } - if (currentConfig.StructureTypes.Contains(memberType)) + if (config.StructureTypes.Contains(memberType)) { var memberName = memberElement.Element("name")?.Value; if (memberName == null) diff --git a/sources/SilkTouch/SilkTouch/Mods/PrettifyNames.cs b/sources/SilkTouch/SilkTouch/Mods/PrettifyNames.cs index 9ddc1e65ff..2619df9c02 100644 --- a/sources/SilkTouch/SilkTouch/Mods/PrettifyNames.cs +++ b/sources/SilkTouch/SilkTouch/Mods/PrettifyNames.cs @@ -3,12 +3,10 @@ using System.Diagnostics; using System.Diagnostics.CodeAnalysis; -using System.Text; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using Silk.NET.SilkTouch.Clang; using Silk.NET.SilkTouch.Naming; @@ -21,10 +19,9 @@ namespace Silk.NET.SilkTouch.Mods; /// Does not support nested types. Please use before this mod. /// Note that despite this, some initial work has been done to add nested type support so that it can be added when necessary. /// -public class PrettifyNames( - ILogger logger, - IOptionsSnapshot config -) : IMod, IResponseFileMod +public class PrettifyNames(ILogger logger, PrettifyNames.Configuration config) + : IMod, + IResponseFileMod { /// /// The configuration for the mod. @@ -111,7 +108,6 @@ public record NameAffixConfiguration /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - var cfg = config.Get(ctx.JobKey); if (ctx.SourceProject is null) { return; @@ -127,15 +123,15 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) // Process the names var nameProcessorContext = new NameProcessorContext(visitor); { - var namePrettifier = new NamePrettifier(cfg.LongAcronymThreshold); + var namePrettifier = new NamePrettifier(config.LongAcronymThreshold); // Define name processors var nameProcessors = new INameProcessor[] { - new HandleOverridesProcessor(cfg.NameOverrides), + new HandleOverridesProcessor(config.NameOverrides), new StripAffixesProcessor(visitor), new PrettifyProcessor(namePrettifier), - new ReapplyAffixesProcessor(visitor, namePrettifier, cfg.Affixes), + new ReapplyAffixesProcessor(visitor, namePrettifier, config.Affixes), new PrefixIfStartsWithNumberProcessor(), new ResolveConflictsProcessor(visitor, logger), new OutputFinalNamesProcessor(), diff --git a/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs b/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs index 5fb407e013..45ca3d0323 100644 --- a/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs +++ b/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs @@ -3,7 +3,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Extensions.Options; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Silk.NET.SilkTouch.Mods; @@ -11,7 +10,7 @@ namespace Silk.NET.SilkTouch.Mods; /// /// Strips matching attributes from the generated bindings. /// -public class StripAttributes(IOptionsSnapshot cfg) : IMod +public class StripAttributes(StripAttributes.Configuration config) : IMod { /// /// mod configuration. @@ -27,8 +26,6 @@ public record Configuration /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - var config = cfg.Get(ctx.JobKey); - var proj = ctx.SourceProject; if (proj == null) { diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformEnums.cs b/sources/SilkTouch/SilkTouch/Mods/TransformEnums.cs index a3eb5fd047..3e1b8d8fa7 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformEnums.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformEnums.cs @@ -6,7 +6,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Extensions.Options; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Silk.NET.SilkTouch.Mods; @@ -14,7 +13,7 @@ namespace Silk.NET.SilkTouch.Mods; /// /// Contains various transformations related to enums. /// -public class TransformEnums(IOptionsSnapshot cfg) : IMod +public class TransformEnums(TransformEnums.Configuration config) : IMod { /// /// The preferred backing type for enums. @@ -168,7 +167,6 @@ public bool IsMemberMatch(ISymbol? enumMember) /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - var config = cfg.Get(ctx.JobKey); var removeMemberFilters = config .RemoveMembers.Select(c => new EnumMemberFilter(c)) .ToList(); diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs b/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs index 045b4f7bd0..90a9bff230 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs @@ -28,10 +28,8 @@ namespace Silk.NET.SilkTouch.Mods; /// /// The `Handle` suffix is not applied until executes. /// -public class TransformHandles( - IOptionsSnapshot config, - ILogger logger -) : IMod +public class TransformHandles(TransformHandles.Config config, ILogger logger) + : IMod { /// /// The configuration for the mod. @@ -47,7 +45,6 @@ public class Config /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - var cfg = config.Get(ctx.JobKey); var project = ctx.SourceProject; if (project == null) { @@ -99,7 +96,7 @@ [new PointerDimensionReductionTransformer()], project = ctx.SourceProject; // Use document IDs from earlier - var handleTypeRewriter = new HandleTypeRewriter(cfg.UseDsl); + var handleTypeRewriter = new HandleTypeRewriter(config.UseDsl); foreach (var documentId in handleTypeDocumentIds) { var document = diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformProperties.cs b/sources/SilkTouch/SilkTouch/Mods/TransformProperties.cs index 289922d7d8..f9d26dc4c3 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformProperties.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformProperties.cs @@ -4,7 +4,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Extensions.Options; using Silk.NET.SilkTouch.Mods.Transformation; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; @@ -25,7 +24,7 @@ namespace Silk.NET.SilkTouch.Mods; /// to be akin to booleans to use the MaybeBool type. /// This functionality is based on . /// -public class TransformProperties(IOptionsSnapshot cfg) : IMod +public class TransformProperties(TransformProperties.Configuration config) : IMod { /// /// Configuration for the . @@ -41,8 +40,6 @@ public class Configuration /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - var config = cfg.Get(ctx.JobKey); - var rw = new Rewriter(config); var proj = ctx.SourceProject; foreach (var docId in ctx.SourceProject?.DocumentIds ?? []) diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/BoolTransformer.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/BoolTransformer.cs index bfba52c913..6b97289bfe 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/BoolTransformer.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/BoolTransformer.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Extensions.Options; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Silk.NET.SilkTouch.Mods.Transformation; @@ -10,8 +9,7 @@ namespace Silk.NET.SilkTouch.Mods.Transformation; /// /// A transformer transforming parameters that are recognised to be akin to booleans to use the MaybeBool type. /// -public class BoolTransformer(IOptionsSnapshot options) - : IFunctionTransformer +public class BoolTransformer(TransformFunctions.Configuration config) : IFunctionTransformer { /// public void Transform( @@ -21,13 +19,12 @@ Action next ) { var ogCurrent = current; - var cfg = options.Get(ctx.JobKey); string? retBoolScheme = null; TypeSyntax? newRetType = null; var retNative = current.GetNativeReturnTypeName() ?? current.ReturnType.ToString(); if ( - (current.ReturnType.IsInteger() && cfg.IntReturnsMaybeBool) - || cfg.BoolTypes.TryGetValue(retNative, out retBoolScheme) + (current.ReturnType.IsInteger() && config.IntReturnsMaybeBool) + || config.BoolTypes.TryGetValue(retNative, out retBoolScheme) || (retNative == "bool" && current.ReturnType.ToString().Trim() != "bool") // stdbool.h, hopefully... ) { @@ -45,7 +42,7 @@ Action next paramNative is not null && param.Type is not null && ( - cfg.BoolTypes.TryGetValue(paramNative, out paramBoolScheme) + config.BoolTypes.TryGetValue(paramNative, out paramBoolScheme) || (paramNative == "bool" && param.Type.ToString().Trim() != "bool") // stdbool.h, hopefully... ) ) diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs index 8b5b0e15ff..306b139dd8 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs @@ -1,9 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; -using System.Linq; using System.Runtime.InteropServices; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; @@ -20,7 +17,7 @@ namespace Silk.NET.SilkTouch.Mods.Transformation; /// The function transformers. /// The logger. public class FunctionTransformer( - IEnumerable> transformers, + IEnumerable transformers, ILogger logger ) { @@ -48,7 +45,7 @@ public IEnumerable GetTransformedFunctions( var discrims = new HashSet(); // Aggregate all the transformers into one delegate - ctx.Transformers = transformers.SelectMany(x => x.Get(key)).ToArray(); + ctx.Transformers = transformers.ToArray(); var transform = ctx.Transformers.Aggregate< IFunctionTransformer, Action From 6f8e8e542de757ec964149b66253f2211364bf33 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 20:39:59 -0400 Subject: [PATCH 09/93] Trim ServiceCollectionExtensions to isolate the code I need to keep --- .../SilkTouch/ServiceCollectionExtensions.cs | 147 +----------------- 1 file changed, 1 insertion(+), 146 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/ServiceCollectionExtensions.cs b/sources/SilkTouch/SilkTouch/ServiceCollectionExtensions.cs index 47e9c85fb4..3d0b1294b2 100644 --- a/sources/SilkTouch/SilkTouch/ServiceCollectionExtensions.cs +++ b/sources/SilkTouch/SilkTouch/ServiceCollectionExtensions.cs @@ -1,20 +1,14 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; -using Microsoft.Extensions.Options; using Silk.NET.SilkTouch.Caching; using Silk.NET.SilkTouch.Clang; using Silk.NET.SilkTouch.Mods; using Silk.NET.SilkTouch.Mods.Bakery; using Silk.NET.SilkTouch.Mods.Transformation; -using Silk.NET.SilkTouch.Naming; using Silk.NET.SilkTouch.Sources; namespace Silk.NET.SilkTouch; @@ -24,67 +18,6 @@ namespace Silk.NET.SilkTouch; /// public static class ServiceCollectionExtensions { - private static readonly MethodInfo s_configure; - - static ServiceCollectionExtensions() - { - var cnf = typeof(OptionsConfigurationServiceCollectionExtensions).GetMethod( - nameof(OptionsConfigurationServiceCollectionExtensions.Configure), - 1, - new[] { typeof(IServiceCollection), typeof(string), typeof(IConfiguration) } - ); - - s_configure = - cnf - ?? throw new TypeAccessException( - $"Could not access the {nameof(OptionsConfigurationServiceCollectionExtensions.Configure)} method on " - + nameof(OptionsConfigurationServiceCollectionExtensions) - ); - } - - /// - /// Adds a singleton (and its dependencies) to the given - /// , using the root SilkTouch configuration provided. - /// - /// - /// It is expected that and - /// is used before this call. - /// - /// - /// The service collection to make the SilkTouch types available on. The service collection shall have the following - /// types added to it: - /// - /// - /// - /// - /// An appropriate implementation of - /// Mod implementations referenced in the configurations - /// - /// - /// types for and the - /// s for any of the loaded mods. - /// - /// - /// - /// - /// - /// A configuration structure that: - /// - /// - /// - /// Contains a root "Jobs" section, representing a dictionary of string keys to - /// values. - /// - /// - /// - /// - /// In each within "Jobs", contains a subsection for each of the - /// referenced that has a . - /// - /// - /// - /// - /// The modified service collection (for chaining purposes). public static IServiceCollection AddSilkTouch( this IServiceCollection services, IConfiguration config @@ -99,13 +32,9 @@ IConfiguration config services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); - services.TryAddSingleton(s => - s.GetRequiredService() - ); + services.AddSingleton(); // TODO services.AddSingleton(); services.AddSingleton(s => s.GetRequiredService()); - services.AddSingleton(typeof(IJobDependency<>), typeof(JobDependencies.Global<>)); services.TryAddSingleton(); services.AddSingleton(); services.AddSingleton(); @@ -126,80 +55,6 @@ IConfiguration config services.AddSingleton(); } - // First pass to build the config and load the mods - var loadedMods = new Dictionary(); - foreach (var job in config.GetSection("Jobs").GetChildren()) - { - var mods = job.GetSection("Mods").Get() ?? Array.Empty(); - services.Configure(job.Key, job); - foreach (var m in mods) - { - var loadedMod = ModLoader.LoadModByName(m); - if (loadedMod is null || services.Any(x => x.ImplementationType == loadedMod)) - { - continue; - } - - loadedMods[m] = loadedMod; - // TODO else log? - - if (ModConfigurationAttribute.GetConfigurationType(loadedMod) is { } cfgType) - { - s_configure - .MakeGenericMethod(cfgType) - .Invoke(null, new object?[] { services, job.Key, job.GetSection(m) }); - } - } - } - - // Second pass to register the mods and generator with DI - // "order is important" according to this blog post: - // https://andrewlock.net/configuring-named-options-using-iconfigurenamedoptions-and-configureall/ - services.AddSingleton(); - foreach (var job in config.GetSection("Jobs").GetChildren()) - { - var mods = job.GetSection("Mods").Get() ?? Array.Empty(); - foreach (var m in mods) - { - services.AddSingleton(loadedMods[m]); - services.AddSingleton(s => (IMod)s.GetRequiredService(loadedMods[m])); - } - } - - // Some dependencies being made available are conditional to whether they've been specified in the config file. - // We use JobDependencies as indirection so that we can retrieve the service provider and loadedMods from the - // Mod subclass. This then allows DI to make a generic instantiation of the Mod subclass without requiring a - // factory. - services.AddSingleton(s => new JobDependencies(loadedMods, s)); - services.AddSingleton(typeof(IJobDependency<>), typeof(JobDependencies.Mod<>)); - - // Third pass to add the IConfigureOptions/IConfigureNamedOptions - foreach (var job in config.GetSection("Jobs").GetChildren()) - { - var mods = job.GetSection("Mods").Get() ?? Array.Empty(); - foreach (var m in mods) - { - if ( - ModConfigurationAttribute.GetConfigurationType(loadedMods[m]) is not { } cfgType - ) - { - continue; - } - - var cfgOpts = typeof(IConfigureOptions<>).MakeGenericType(cfgType); - if (loadedMods[m].IsAssignableTo(cfgOpts)) - { - services.AddSingleton(cfgOpts, s => (IMod)s.GetRequiredService(loadedMods[m])); - } - - cfgOpts = typeof(IConfigureNamedOptions<>).MakeGenericType(cfgType); - if (loadedMods[m].IsAssignableTo(cfgOpts)) - { - services.AddSingleton(cfgOpts, s => (IMod)s.GetRequiredService(loadedMods[m])); - } - } - } - return services; } } From 3063d6b4d63e40a1ec39b84ecec20780702027da Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 20:48:41 -0400 Subject: [PATCH 10/93] Work on new composition root --- sources/SilkTouch/SilkTouch/Program.cs | 86 ++++++++----------- .../SilkTouch/ServiceCollectionExtensions.cs | 60 ------------- .../SilkTouch/SilkTouch/SilkTouchGenerator.cs | 37 ++++---- 3 files changed, 54 insertions(+), 129 deletions(-) delete mode 100644 sources/SilkTouch/SilkTouch/ServiceCollectionExtensions.cs diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index d0ac2f0c36..985ecb3799 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -7,9 +7,15 @@ using Microsoft.Build.Locator; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Console; using Silk.NET.SilkTouch.Caching; +using Silk.NET.SilkTouch.Clang; +using Silk.NET.SilkTouch.Mods; +using Silk.NET.SilkTouch.Mods.Bakery; +using Silk.NET.SilkTouch.Mods.Transformation; +using Silk.NET.SilkTouch.Sources; namespace Silk.NET.SilkTouch; @@ -32,21 +38,6 @@ internal class Program Arity = ArgumentArity.ZeroOrMore, }; - private static Argument ConfigsArgument { get; } = - new("configs") - { - Description = "Path(s) to JSON SilkTouch configuration(s)", - Arity = ArgumentArity.OneOrMore, - }; - - private static Argument ConfigOverridesArgument { get; } = - new("overrides", Array.Empty) - { - Description = - "Arguments recognisable by Microsoft.Extensions.Configuration.CommandLine to override JSON configuration items.", - Arity = ArgumentArity.ZeroOrMore, - }; - private static Option JobsOption { get; } = new(new[] { "--max-jobs", "-j" }, () => Environment.ProcessorCount) { @@ -55,38 +46,10 @@ internal class Program public static async Task Main(string[] args) { - var rootCommand = new RootCommand - { - LoggingOption, - SkipOption, - OnlyOption, - ConfigsArgument, - ConfigOverridesArgument, - JobsOption, - }; + var rootCommand = new RootCommand { LoggingOption, SkipOption, OnlyOption, JobsOption }; rootCommand.SetHandler(async ctx => { - // Create the ConfigurationBuilder with support for env var & command line overrides - var cb = new ConfigurationBuilder() - .AddEnvironmentVariables(source => source.Prefix = "SILKDOTNET_") - .AddCommandLine(ctx.ParseResult.GetValueForArgument(ConfigOverridesArgument)); - - // Add the JSON files to the ConfigurationBuilder - var jsons = ctx.ParseResult.GetValueForArgument(ConfigsArgument); - cb = jsons.Aggregate( - cb, - (current, file) => current.AddJsonFile(Path.GetFullPath(file)) - ); - var config = cb.Build(); - if (jsons.Length == 1) - { - FileSystemCacheProvider.CommonDir = Path.GetFullPath( - (Path.GetDirectoryName(jsons[0]) is (null or not "") and var path ? path : ".") - ?? Environment.CurrentDirectory - ); - } - // Register MSBuild MSBuildLocator.RegisterDefaults(); @@ -105,8 +68,36 @@ public static async Task Main(string[] args) }); builder.SetMinimumLevel(ctx.ParseResult.GetValueForOption(LoggingOption)); }) - .AddOptions() - .AddSilkTouch(config); + .AddOptions(); + + // TODO: Cleanup. Probably move into a SilkTouchHost class. + { + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(s => + s.GetRequiredService() + ); + services.TryAddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.TryAddSingleton(); + if (OperatingSystem.IsWindows()) + { + services.AddSingleton(); + } + else if (OperatingSystem.IsMacOS()) + { + services.AddSingleton(); + } + else + { + services.AddSingleton(); + } + } var builder = new ContainerBuilder(); builder.Populate(services); @@ -124,7 +115,6 @@ public static async Task Main(string[] args) StringComparer.OrdinalIgnoreCase ); - var logger = container.Resolve>(); var generator = container.Resolve(); await Parallel.ForEachAsync( @@ -143,8 +133,6 @@ await Parallel.ForEachAsync( async (job, ct) => { await generator.RunAsync( - job.Key, - job, // TODO parallelism configuration // ctx.ParseResult.GetValueForOption(jobs), ct diff --git a/sources/SilkTouch/SilkTouch/ServiceCollectionExtensions.cs b/sources/SilkTouch/SilkTouch/ServiceCollectionExtensions.cs deleted file mode 100644 index 3d0b1294b2..0000000000 --- a/sources/SilkTouch/SilkTouch/ServiceCollectionExtensions.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; -using Silk.NET.SilkTouch.Caching; -using Silk.NET.SilkTouch.Clang; -using Silk.NET.SilkTouch.Mods; -using Silk.NET.SilkTouch.Mods.Bakery; -using Silk.NET.SilkTouch.Mods.Transformation; -using Silk.NET.SilkTouch.Sources; - -namespace Silk.NET.SilkTouch; - -/// -/// Provides the method. -/// -public static class ServiceCollectionExtensions -{ - public static IServiceCollection AddSilkTouch( - this IServiceCollection services, - IConfiguration config - ) - { - // References for our use of Microsoft.Extensions.Configuration/DependencyInjection: - // - https://stevetalkscode.co.uk/using-iconfigureoptions - // - https://stevetalkscode.co.uk/configuration-bridging-part-2 - // - https://andrewlock.net/configuring-named-options-using-iconfigurenamedoptions-and-configureall/ - // - https://andrewlock.net/how-to-register-a-service-with-multiple-interfaces-for-in-asp-net-core-di/ - // - https://discordapp.com/channels/143867839282020352/663803973119115264/1129546023388332075 (C# Discord) - - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); // TODO - services.AddSingleton(); - services.AddSingleton(s => s.GetRequiredService()); - services.TryAddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.TryAddSingleton(); - if (OperatingSystem.IsWindows()) - { - services.AddSingleton(); - } - else if (OperatingSystem.IsMacOS()) - { - services.AddSingleton(); - } - else - { - services.AddSingleton(); - } - - return services; - } -} diff --git a/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs b/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs index 81005f87ed..631748a011 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs @@ -12,12 +12,12 @@ namespace Silk.NET.SilkTouch; /// /// The main entry-point class for SilkTouch. /// -public class SilkTouchGenerator +public class SilkTouchGenerator : IDisposable { private readonly ILifetimeScope container; private readonly string _jobKey; - private readonly SilkTouchConfiguration _jobConfig; + private SilkTouchConfiguration _jobConfig; private readonly ILogger _logger; private readonly IInputResolver _inputResolver; @@ -40,19 +40,14 @@ public SilkTouchGenerator( Action build ) { - // TODO: Maybe have each mod provide a Register(ILifetimeScope container, Mod.Configuration configuration) method - container = parentContainer.BeginLifetimeScope(builder => - { - // TODO: Decide whether we should register job config here or not - builder.RegisterInstance(jobConfig).SingleInstance(); + _logger = parentContainer.Resolve>(); + _inputResolver = parentContainer.Resolve(); - build.Invoke(builder); - }); + // TODO: Maybe have each mod provide a Register(ILifetimeScope container, Mod.Configuration configuration) method + container = parentContainer.BeginLifetimeScope(build); _jobKey = jobKey; _jobConfig = jobConfig; - _logger = container.Resolve>(); - _inputResolver = container.Resolve(); Mods = container.Resolve(); } @@ -64,21 +59,21 @@ public async Task RunAsync(CancellationToken ct = default) var sw = Stopwatch.StartNew(); // Resolve any relative paths in the job configuration. - _jobConfig = await _inputResolver.Resolve(_jobConfig); // TODO: This creates a new instance so need to be careful + _jobConfig = await _inputResolver.Resolve(_jobConfig); - // Prepare the mods - var ctx = await modContextProvider.GetContextAsync(_jobKey, _jobConfig, ct); + // Prepare the context + var context = new MSBuildModContext(_jobKey, _jobConfig, _logger); // Just in case a mod gets naughty and tries to modify at the initialization stage. - var srcProj = ctx.SourceProject; - var testProj = ctx.TestProject; + var srcProj = context.SourceProject; + var testProj = context.TestProject; // Initialize the mods foreach (var mod in Mods) { _logger.LogDebug("Using mod {0} for {1}", mod.GetType().Name, _jobKey); - await mod.InitializeAsync(ctx, ct); - if (ctx.SourceProject != srcProj || ctx.TestProject != testProj) + await mod.InitializeAsync(context, ct); + if (context.SourceProject != srcProj || context.TestProject != testProj) { throw new InvalidOperationException( $"{mod.GetType().Name} illegally generated code at the initialization stage." @@ -89,11 +84,11 @@ public async Task RunAsync(CancellationToken ct = default) foreach (var mod in Mods) { _logger.LogInformation("Executing {} for {}...", mod.GetType().Name, _jobKey); - await mod.ExecuteAsync(ctx, ct); + await mod.ExecuteAsync(context, ct); } // Manually dispose so that we don't do this when generation fails (await using is too clever). - await ctx.DisposeAsync(); + await context.DisposeAsync(); // Output the generated bindings _logger.LogInformation( @@ -133,4 +128,6 @@ internal static string GetLongestCommonPath(IEnumerable s) Debug.Assert(Directory.Exists(ret)); return ret; } + + public void Dispose() => container.Dispose(); } From 7ac194bcafab07353949520e5c516bf4eda01bf6 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 20:53:14 -0400 Subject: [PATCH 11/93] Get new setup roughly implemented and fix all compile errors --- .../SilkTouch/SilkTouch/Clang/ClangScraper.cs | 4 +- sources/SilkTouch/SilkTouch/Program.cs | 37 +++++++++----- ...{SilkTouchGenerator.cs => SilkTouchJob.cs} | 48 +++++++++++-------- 3 files changed, 57 insertions(+), 32 deletions(-) rename sources/SilkTouch/SilkTouch/{SilkTouchGenerator.cs => SilkTouchJob.cs} (80%) diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index 693e528642..c7c0496157 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -235,12 +235,12 @@ private async Task ScrapeBindingsAsync( // Figure out what the common root is so we can aggregate the file paths without collisions var srcRoot = cfg.InputSourceRoot - ?? SilkTouchGenerator.GetLongestCommonPath( + ?? SilkTouchJob.GetLongestCommonPath( rsps.Select(x => x.GeneratorConfiguration.OutputLocation) ); var testRoot = cfg.InputTestRoot - ?? SilkTouchGenerator.GetLongestCommonPath( + ?? SilkTouchJob.GetLongestCommonPath( rsps.Select(x => x.GeneratorConfiguration.TestOutputLocation) ); srcRoot = Path.GetFullPath(srcRoot); diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index 985ecb3799..3e5afe2a5a 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -115,21 +115,36 @@ public static async Task Main(string[] args) StringComparer.OrdinalIgnoreCase ); - var generator = container.Resolve(); + // TODO: Refactor as fluent builder + var allJobs = new List() + { + new( + "Vulkan", + new SilkTouchConfiguration + { + Solution = "TODO", // TODO + SourceProject = "null", + TestProject = "null", + Mods = new string[] { }, + DefaultLicenseHeader = "null", + }, + container, + builder => { } + ), + }; + + var generator = container.Resolve(); await Parallel.ForEachAsync( - config - .GetSection("Jobs") - .GetChildren() - .Where(section => + allJobs.Where(job => + { + if (jobsToSkip.Contains(job.Key)) { - if (jobsToSkip.Contains(section.Key)) - { - return false; - } + return false; + } - return jobsToRun.Count == 0 || jobsToRun.Contains(section.Key); - }), + return jobsToRun.Count == 0 || jobsToRun.Contains(job.Key); + }), async (job, ct) => { await generator.RunAsync( diff --git a/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs similarity index 80% rename from sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs rename to sources/SilkTouch/SilkTouch/SilkTouchJob.cs index 631748a011..34dcb60d1f 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchGenerator.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs @@ -10,44 +10,53 @@ namespace Silk.NET.SilkTouch; /// -/// The main entry-point class for SilkTouch. +/// TODO /// -public class SilkTouchGenerator : IDisposable +public class SilkTouchJob : IDisposable { private readonly ILifetimeScope container; - private readonly string _jobKey; - private SilkTouchConfiguration _jobConfig; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IInputResolver _inputResolver; + /// + /// TODO + /// + public string Key { get; } + + /// + /// TODO + /// + public SilkTouchConfiguration Config { get; private set; } + /// /// Gets the loaded mods for this generator instance. /// public IReadOnlyList Mods { get; } /// - /// The main entry-point class for SilkTouch. + /// TODO /// - /// - /// // TODO + /// + /// // TODO /// /// - public SilkTouchGenerator( - string jobKey, - SilkTouchConfiguration jobConfig, + public SilkTouchJob( + string key, + SilkTouchConfiguration config, ILifetimeScope parentContainer, Action build ) { - _logger = parentContainer.Resolve>(); + this.Key = key; + this.Config = config; + + _logger = parentContainer.Resolve>(); _inputResolver = parentContainer.Resolve(); // TODO: Maybe have each mod provide a Register(ILifetimeScope container, Mod.Configuration configuration) method container = parentContainer.BeginLifetimeScope(build); - _jobKey = jobKey; - _jobConfig = jobConfig; Mods = container.Resolve(); } @@ -59,10 +68,10 @@ public async Task RunAsync(CancellationToken ct = default) var sw = Stopwatch.StartNew(); // Resolve any relative paths in the job configuration. - _jobConfig = await _inputResolver.Resolve(_jobConfig); + Config = await _inputResolver.Resolve(Config); // Prepare the context - var context = new MSBuildModContext(_jobKey, _jobConfig, _logger); + var context = new MSBuildModContext(Key, Config, _logger); // Just in case a mod gets naughty and tries to modify at the initialization stage. var srcProj = context.SourceProject; @@ -71,7 +80,7 @@ public async Task RunAsync(CancellationToken ct = default) // Initialize the mods foreach (var mod in Mods) { - _logger.LogDebug("Using mod {0} for {1}", mod.GetType().Name, _jobKey); + _logger.LogDebug("Using mod {0} for {1}", mod.GetType().Name, Key); await mod.InitializeAsync(context, ct); if (context.SourceProject != srcProj || context.TestProject != testProj) { @@ -83,7 +92,7 @@ public async Task RunAsync(CancellationToken ct = default) foreach (var mod in Mods) { - _logger.LogInformation("Executing {} for {}...", mod.GetType().Name, _jobKey); + _logger.LogInformation("Executing {} for {}...", mod.GetType().Name, Key); await mod.ExecuteAsync(context, ct); } @@ -93,7 +102,7 @@ public async Task RunAsync(CancellationToken ct = default) // Output the generated bindings _logger.LogInformation( "Bindings generation for {} completed in {} seconds.", - _jobKey, + Key, sw.Elapsed.TotalSeconds ); } @@ -129,5 +138,6 @@ internal static string GetLongestCommonPath(IEnumerable s) return ret; } + /// public void Dispose() => container.Dispose(); } From b9eb8662edec79a6a91b9978a97536bd61b319c2 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 20:54:07 -0400 Subject: [PATCH 12/93] Remove old generator Resolve call --- sources/SilkTouch/SilkTouch/Program.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index 3e5afe2a5a..a4b05cef2f 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -5,14 +5,12 @@ using Autofac; using Autofac.Extensions.DependencyInjection; using Microsoft.Build.Locator; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Console; using Silk.NET.SilkTouch.Caching; using Silk.NET.SilkTouch.Clang; -using Silk.NET.SilkTouch.Mods; using Silk.NET.SilkTouch.Mods.Bakery; using Silk.NET.SilkTouch.Mods.Transformation; using Silk.NET.SilkTouch.Sources; @@ -133,8 +131,6 @@ public static async Task Main(string[] args) ), }; - var generator = container.Resolve(); - await Parallel.ForEachAsync( allJobs.Where(job => { @@ -147,7 +143,7 @@ await Parallel.ForEachAsync( }), async (job, ct) => { - await generator.RunAsync( + await job.RunAsync( // TODO parallelism configuration // ctx.ParseResult.GetValueForOption(jobs), ct From 8c538e8597befe775710e686328e7ea4f1bcdab5 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 21:03:13 -0400 Subject: [PATCH 13/93] Removes jobs from SilkTouchConfiguration and fix private field naming --- sources/SilkTouch/SilkTouch/Program.cs | 3 +-- sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs | 6 ------ sources/SilkTouch/SilkTouch/SilkTouchJob.cs | 8 ++++---- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index a4b05cef2f..88e52b1037 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -39,7 +39,7 @@ internal class Program private static Option JobsOption { get; } = new(new[] { "--max-jobs", "-j" }, () => Environment.ProcessorCount) { - Description = "Maximum number of parallel ClangSharp executions.", + Description = "Maximum number of parallel jobs.", }; public static async Task Main(string[] args) @@ -123,7 +123,6 @@ public static async Task Main(string[] args) Solution = "TODO", // TODO SourceProject = "null", TestProject = "null", - Mods = new string[] { }, DefaultLicenseHeader = "null", }, container, diff --git a/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs b/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs index 48960417f3..06795bb60f 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs @@ -23,12 +23,6 @@ public record SilkTouchConfiguration /// public string? TestProject { get; init; } - /// - /// The mods to load for generation. If there are no mods, this tool is basically equivalent to running - /// ClangSharpPInvokeGenerator directly. - /// - public string[]? Mods { get; init; } - /// /// A path to the license header to use if one wasn't added by other means (e.g. a license header specified in a /// response file) diff --git a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs index 34dcb60d1f..f7095ab621 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs @@ -14,7 +14,7 @@ namespace Silk.NET.SilkTouch; /// public class SilkTouchJob : IDisposable { - private readonly ILifetimeScope container; + private readonly ILifetimeScope _container; private readonly ILogger _logger; private readonly IInputResolver _inputResolver; @@ -55,9 +55,9 @@ Action build _inputResolver = parentContainer.Resolve(); // TODO: Maybe have each mod provide a Register(ILifetimeScope container, Mod.Configuration configuration) method - container = parentContainer.BeginLifetimeScope(build); + _container = parentContainer.BeginLifetimeScope(build); - Mods = container.Resolve(); + Mods = _container.Resolve(); } /// @@ -139,5 +139,5 @@ internal static string GetLongestCommonPath(IEnumerable s) } /// - public void Dispose() => container.Dispose(); + public void Dispose() => _container.Dispose(); } From ad3bee4c747ec5bf683a0c150be447bc33ff55e7 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 21:04:03 -0400 Subject: [PATCH 14/93] Remove unhelpful doc --- sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs index 2e48538bfa..9768b9413d 100644 --- a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs +++ b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs @@ -21,7 +21,6 @@ namespace Silk.NET.SilkTouch.Mods; /// /// A mod that reads Khronos specifications to influence codegen. /// -/// The logger. public partial class MixKhronosData( ILogger logger, MixKhronosData.Configuration config From 349287eb1cb1e162b92a46f36914f10f05d5ede1 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 21:16:11 -0400 Subject: [PATCH 15/93] Add ModRegistrationExtensions --- .../SilkTouch/ModRegistrationExtensions.cs | 263 ++++++++++++++++++ .../SilkTouch/Mods/TransformHandles.cs | 10 +- .../SilkTouch/TransformHandlesTests.cs | 12 +- 3 files changed, 275 insertions(+), 10 deletions(-) create mode 100644 sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs diff --git a/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs new file mode 100644 index 0000000000..22822fb47d --- /dev/null +++ b/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Autofac; +using Silk.NET.SilkTouch.Mods; + +namespace Silk.NET.SilkTouch; + +/// +/// Extension methods for simplifying the registration of SilkTouch mods. +/// +public static class ModRegistrationExtensions +{ + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterAddApiProfiles( + this ContainerBuilder builder, + AddApiProfiles.Configuration config + ) + { + // TODO: Need to add a register mod helper since we need to register interfaces, base classes, and the concrete type + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterAddIncludes( + this ContainerBuilder builder, + AddIncludes.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterAddOpaqueStructs( + this ContainerBuilder builder, + AddOpaqueStructs.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterAddVTables( + this ContainerBuilder builder, + AddVTables.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterBakeSourceSets( + this ContainerBuilder builder, + BakeSourceSets.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterChangeNamespace( + this ContainerBuilder builder, + ChangeNamespace.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterChangeNativeClass( + this ContainerBuilder builder, + ChangeNativeClass.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterExtractEnumConstants(this ContainerBuilder builder) + { + builder.RegisterType().SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterExtractFunctionPointers(this ContainerBuilder builder) + { + builder.RegisterType().SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterExtractHandles(this ContainerBuilder builder) + { + builder.RegisterType().SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterExtractNestedTypes(this ContainerBuilder builder) + { + builder.RegisterType().SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterIdentifySharedPrefixes( + this ContainerBuilder builder, + IdentifySharedPrefixes.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterInterceptNativeFunctions( + this ContainerBuilder builder, + InterceptNativeFunctions.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterMarkNativeNames(this ContainerBuilder builder) + { + builder.RegisterType().SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterMixKhronosData( + this ContainerBuilder builder, + MixKhronosData.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterPrettifyNames( + this ContainerBuilder builder, + PrettifyNames.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterStripAttributes( + this ContainerBuilder builder, + StripAttributes.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterTransformEnums( + this ContainerBuilder builder, + TransformEnums.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterTransformFunctions(this ContainerBuilder builder) + { + builder.RegisterType().SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterTransformHandles( + this ContainerBuilder builder, + TransformHandles.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterTransformProperties( + this ContainerBuilder builder, + TransformProperties.Configuration config + ) + { + builder.RegisterType().SingleInstance(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } +} diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs b/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs index 90a9bff230..fba11374b6 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformHandles.cs @@ -28,13 +28,15 @@ namespace Silk.NET.SilkTouch.Mods; /// /// The `Handle` suffix is not applied until executes. /// -public class TransformHandles(TransformHandles.Config config, ILogger logger) - : IMod +public class TransformHandles( + TransformHandles.Configuration configuration, + ILogger logger +) : IMod { /// /// The configuration for the mod. /// - public class Config + public class Configuration { /// /// Whether the DSL (i.e. nullptr) should be usable with handle types. @@ -96,7 +98,7 @@ [new PointerDimensionReductionTransformer()], project = ctx.SourceProject; // Use document IDs from earlier - var handleTypeRewriter = new HandleTypeRewriter(config.UseDsl); + var handleTypeRewriter = new HandleTypeRewriter(configuration.UseDsl); foreach (var documentId in handleTypeDocumentIds) { var document = diff --git a/tests/SilkTouch/SilkTouch/TransformHandlesTests.cs b/tests/SilkTouch/SilkTouch/TransformHandlesTests.cs index 6e8ffb6154..7f96cf6d8e 100644 --- a/tests/SilkTouch/SilkTouch/TransformHandlesTests.cs +++ b/tests/SilkTouch/SilkTouch/TransformHandlesTests.cs @@ -41,8 +41,8 @@ public static extern VkResult vkCreateInstance( var context = new DummyModContext() { SourceProject = project }; var transformHandles = new TransformHandles( - new DummyOptions( - new TransformHandles.Config() { UseDsl = false } + new DummyOptions( + new TransformHandles.Configuration() { UseDsl = false } ), NullLogger.Instance ); @@ -77,8 +77,8 @@ public static extern VkResult vkCreateInstance( var context = new DummyModContext() { SourceProject = project }; var transformHandles = new TransformHandles( - new DummyOptions( - new TransformHandles.Config() { UseDsl = true } + new DummyOptions( + new TransformHandles.Configuration() { UseDsl = true } ), NullLogger.Instance ); @@ -114,8 +114,8 @@ public static extern VkResult vkCreateInstance( var context = new DummyModContext() { SourceProject = project }; var transformHandles = new TransformHandles( - new DummyOptions( - new TransformHandles.Config() { UseDsl = true } + new DummyOptions( + new TransformHandles.Configuration() { UseDsl = true } ), NullLogger.Instance ); From da27c07bf667dc4b141c2032736fb8aa9c845b5c Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 21:20:31 -0400 Subject: [PATCH 16/93] Add RegisterMod helper --- .../SilkTouch/ModRegistrationExtensions.cs | 60 ++++++++++++------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs index 22822fb47d..abe798cb0b 100644 --- a/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs @@ -19,8 +19,7 @@ public static ContainerBuilder RegisterAddApiProfiles( AddApiProfiles.Configuration config ) { - // TODO: Need to add a register mod helper since we need to register interfaces, base classes, and the concrete type - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -33,7 +32,7 @@ public static ContainerBuilder RegisterAddIncludes( AddIncludes.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -46,7 +45,7 @@ public static ContainerBuilder RegisterAddOpaqueStructs( AddOpaqueStructs.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -59,7 +58,7 @@ public static ContainerBuilder RegisterAddVTables( AddVTables.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -72,7 +71,7 @@ public static ContainerBuilder RegisterBakeSourceSets( BakeSourceSets.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -85,7 +84,7 @@ public static ContainerBuilder RegisterChangeNamespace( ChangeNamespace.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -98,7 +97,7 @@ public static ContainerBuilder RegisterChangeNativeClass( ChangeNativeClass.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -108,7 +107,7 @@ ChangeNativeClass.Configuration config /// public static ContainerBuilder RegisterExtractEnumConstants(this ContainerBuilder builder) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); return builder; } @@ -117,7 +116,7 @@ public static ContainerBuilder RegisterExtractEnumConstants(this ContainerBuilde /// public static ContainerBuilder RegisterExtractFunctionPointers(this ContainerBuilder builder) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); return builder; } @@ -126,7 +125,7 @@ public static ContainerBuilder RegisterExtractFunctionPointers(this ContainerBui /// public static ContainerBuilder RegisterExtractHandles(this ContainerBuilder builder) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); return builder; } @@ -135,7 +134,7 @@ public static ContainerBuilder RegisterExtractHandles(this ContainerBuilder buil /// public static ContainerBuilder RegisterExtractNestedTypes(this ContainerBuilder builder) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); return builder; } @@ -147,7 +146,7 @@ public static ContainerBuilder RegisterIdentifySharedPrefixes( IdentifySharedPrefixes.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -160,7 +159,7 @@ public static ContainerBuilder RegisterInterceptNativeFunctions( InterceptNativeFunctions.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -170,7 +169,7 @@ InterceptNativeFunctions.Configuration config /// public static ContainerBuilder RegisterMarkNativeNames(this ContainerBuilder builder) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); return builder; } @@ -182,7 +181,7 @@ public static ContainerBuilder RegisterMixKhronosData( MixKhronosData.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -195,7 +194,7 @@ public static ContainerBuilder RegisterPrettifyNames( PrettifyNames.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -208,7 +207,7 @@ public static ContainerBuilder RegisterStripAttributes( StripAttributes.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -221,7 +220,7 @@ public static ContainerBuilder RegisterTransformEnums( TransformEnums.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -231,7 +230,7 @@ TransformEnums.Configuration config /// public static ContainerBuilder RegisterTransformFunctions(this ContainerBuilder builder) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); return builder; } @@ -243,7 +242,7 @@ public static ContainerBuilder RegisterTransformHandles( TransformHandles.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } @@ -256,8 +255,25 @@ public static ContainerBuilder RegisterTransformProperties( TransformProperties.Configuration config ) { - builder.RegisterType().SingleInstance(); + builder.RegisterMod(); builder.RegisterInstance(config).SingleInstance(); return builder; } + + private static void RegisterMod(this ContainerBuilder builder) + where T : IMod + { + var type = typeof(T); + var typesToRegister = new HashSet(); + typesToRegister.UnionWith(type.GetInterfaces()); + + var current = type; + while (current != null) + { + typesToRegister.Add(current); + current = current.BaseType; + } + + builder.RegisterType().As(typesToRegister.ToArray()).SingleInstance(); + } } From e2c3c1e87c587d61f116690ba07be35bfea24c90 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 21:32:00 -0400 Subject: [PATCH 17/93] Add RegisterClangScraper --- .../SilkTouch/ModRegistrationExtensions.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs index abe798cb0b..c99e43f208 100644 --- a/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Autofac; +using Silk.NET.SilkTouch.Clang; using Silk.NET.SilkTouch.Mods; namespace Silk.NET.SilkTouch; @@ -24,6 +25,19 @@ AddApiProfiles.Configuration config return builder; } + /// + /// Registers the mod. + /// + public static ContainerBuilder RegisterClangScraper( + this ContainerBuilder builder, + ClangScraper.Configuration config + ) + { + builder.RegisterMod(); + builder.RegisterInstance(config).SingleInstance(); + return builder; + } + /// /// Registers the mod. /// From a238c05061e1f06d99cd31c7fa4eab10b200a2f6 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 21:35:06 -0400 Subject: [PATCH 18/93] Use collection expressions for CLI option definitions --- sources/SilkTouch/SilkTouch/Program.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index 88e52b1037..886337e5ab 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -30,14 +30,14 @@ internal class Program }; private static Option OnlyOption { get; } = - new(new[] { "--only", "-o" }, Array.Empty) + new(["--only", "-o"], Array.Empty) { Description = "A list of job names to run.", Arity = ArgumentArity.ZeroOrMore, }; private static Option JobsOption { get; } = - new(new[] { "--max-jobs", "-j" }, () => Environment.ProcessorCount) + new(["--max-jobs", "-j"], () => Environment.ProcessorCount) { Description = "Maximum number of parallel jobs.", }; From fa374bb5272ee43df4dd191cc12e0b0e5b6ff0d9 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 21:35:36 -0400 Subject: [PATCH 19/93] Fix Program class not being static --- sources/SilkTouch/SilkTouch/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index 886337e5ab..7046885235 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -17,7 +17,7 @@ namespace Silk.NET.SilkTouch; -internal class Program +internal static class Program { private static Option LoggingOption { get; } = new(["--log-level", "-l"], () => LogLevel.Information); From 5c936195fdfd5d1a75e55d473b2ec21b0b61b913 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 21:36:14 -0400 Subject: [PATCH 20/93] Implement generator job parallelism setting --- sources/SilkTouch/SilkTouch/Program.cs | 32 ++++++++++++++------------ 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index 7046885235..8f40bfa66d 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -103,12 +103,12 @@ public static async Task Main(string[] args) container = builder.Build(); } - var jobsToRun = new HashSet( + var jobKeysToRun = new HashSet( ctx.ParseResult.GetValueForOption(OnlyOption) ?? [], StringComparer.OrdinalIgnoreCase ); - var jobsToSkip = new HashSet( + var jobKeysToSkip = new HashSet( ctx.ParseResult.GetValueForOption(SkipOption) ?? [], StringComparer.OrdinalIgnoreCase ); @@ -130,23 +130,25 @@ public static async Task Main(string[] args) ), }; - await Parallel.ForEachAsync( - allJobs.Where(job => + var jobsToRun = allJobs.Where(job => + { + if (jobKeysToSkip.Contains(job.Key)) { - if (jobsToSkip.Contains(job.Key)) - { - return false; - } + return false; + } - return jobsToRun.Count == 0 || jobsToRun.Contains(job.Key); - }), + return jobKeysToRun.Count == 0 || jobKeysToRun.Contains(job.Key); + }); + + await Parallel.ForEachAsync( + jobsToRun, + new ParallelOptions + { + MaxDegreeOfParallelism = ctx.ParseResult.GetValueForOption(JobsOption), + }, async (job, ct) => { - await job.RunAsync( - // TODO parallelism configuration - // ctx.ParseResult.GetValueForOption(jobs), - ct - ); + await job.RunAsync(ct); } ); From a1dca274d924cb18df75180980b93e9696b2104d Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 21:43:41 -0400 Subject: [PATCH 21/93] Work on registration API --- .../SilkTouch/ModRegistrationExtensions.cs | 219 ++++++++++-------- 1 file changed, 121 insertions(+), 98 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs index c99e43f208..0b4108b9da 100644 --- a/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs @@ -12,266 +12,284 @@ namespace Silk.NET.SilkTouch; /// public static class ModRegistrationExtensions { + /// + /// Creates a . + /// + public static SilkTouchRegistrationContext SilkTouch(this ContainerBuilder builder) => + new(builder); + /// /// Registers the mod. /// - public static ContainerBuilder RegisterAddApiProfiles( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext AddApiProfiles( + this SilkTouchRegistrationContext context, AddApiProfiles.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterClangScraper( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext ClangScraper( + this SilkTouchRegistrationContext context, ClangScraper.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterAddIncludes( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext AddIncludes( + this SilkTouchRegistrationContext context, AddIncludes.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterAddOpaqueStructs( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext AddOpaqueStructs( + this SilkTouchRegistrationContext context, AddOpaqueStructs.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterAddVTables( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext AddVTables( + this SilkTouchRegistrationContext context, AddVTables.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterBakeSourceSets( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext BakeSourceSets( + this SilkTouchRegistrationContext context, BakeSourceSets.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterChangeNamespace( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext ChangeNamespace( + this SilkTouchRegistrationContext context, ChangeNamespace.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterChangeNativeClass( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext ChangeNativeClass( + this SilkTouchRegistrationContext context, ChangeNativeClass.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterExtractEnumConstants(this ContainerBuilder builder) + public static SilkTouchRegistrationContext ExtractEnumConstants( + this SilkTouchRegistrationContext context + ) { - builder.RegisterMod(); - return builder; + context.Builder.RegisterMod(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterExtractFunctionPointers(this ContainerBuilder builder) + public static SilkTouchRegistrationContext ExtractFunctionPointers( + this SilkTouchRegistrationContext context + ) { - builder.RegisterMod(); - return builder; + context.Builder.RegisterMod(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterExtractHandles(this ContainerBuilder builder) + public static SilkTouchRegistrationContext ExtractHandles( + this SilkTouchRegistrationContext context + ) { - builder.RegisterMod(); - return builder; + context.Builder.RegisterMod(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterExtractNestedTypes(this ContainerBuilder builder) + public static SilkTouchRegistrationContext ExtractNestedTypes( + this SilkTouchRegistrationContext context + ) { - builder.RegisterMod(); - return builder; + context.Builder.RegisterMod(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterIdentifySharedPrefixes( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext IdentifySharedPrefixes( + this SilkTouchRegistrationContext context, IdentifySharedPrefixes.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterInterceptNativeFunctions( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext InterceptNativeFunctions( + this SilkTouchRegistrationContext context, InterceptNativeFunctions.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterMarkNativeNames(this ContainerBuilder builder) + public static SilkTouchRegistrationContext MarkNativeNames( + this SilkTouchRegistrationContext context + ) { - builder.RegisterMod(); - return builder; + context.Builder.RegisterMod(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterMixKhronosData( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext MixKhronosData( + this SilkTouchRegistrationContext context, MixKhronosData.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterPrettifyNames( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext PrettifyNames( + this SilkTouchRegistrationContext context, PrettifyNames.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterStripAttributes( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext StripAttributes( + this SilkTouchRegistrationContext context, StripAttributes.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterTransformEnums( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext TransformEnums( + this SilkTouchRegistrationContext context, TransformEnums.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterTransformFunctions(this ContainerBuilder builder) + public static SilkTouchRegistrationContext TransformFunctions( + this SilkTouchRegistrationContext context + ) { - builder.RegisterMod(); - return builder; + context.Builder.RegisterMod(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterTransformHandles( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext TransformHandles( + this SilkTouchRegistrationContext context, TransformHandles.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } /// /// Registers the mod. /// - public static ContainerBuilder RegisterTransformProperties( - this ContainerBuilder builder, + public static SilkTouchRegistrationContext TransformProperties( + this SilkTouchRegistrationContext context, TransformProperties.Configuration config ) { - builder.RegisterMod(); - builder.RegisterInstance(config).SingleInstance(); - return builder; + context.Builder.RegisterMod(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } private static void RegisterMod(this ContainerBuilder builder) @@ -290,4 +308,9 @@ private static void RegisterMod(this ContainerBuilder builder) builder.RegisterType().As(typesToRegister.ToArray()).SingleInstance(); } + + /// + /// Helper for registering SilkTouch mods to a + /// + public record struct SilkTouchRegistrationContext(ContainerBuilder Builder); } From 7dabae1a1a9ea5faa671d5cf61ae88ccbba4caf1 Mon Sep 17 00:00:00 2001 From: William Chen Date: Fri, 9 Oct 2026 21:48:11 -0400 Subject: [PATCH 22/93] Translate Vulkan job JSON into C# --- sources/SilkTouch/SilkTouch/Program.cs | 150 +++++++++++++++++++++++-- 1 file changed, 143 insertions(+), 7 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index 8f40bfa66d..9577fc0431 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -11,6 +11,7 @@ using Microsoft.Extensions.Logging.Console; using Silk.NET.SilkTouch.Caching; using Silk.NET.SilkTouch.Clang; +using Silk.NET.SilkTouch.Mods; using Silk.NET.SilkTouch.Mods.Bakery; using Silk.NET.SilkTouch.Mods.Transformation; using Silk.NET.SilkTouch.Sources; @@ -79,7 +80,7 @@ public static async Task Main(string[] args) services.TryAddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); + services.AddSingleton(); // TODO: Move to RegisterTransformFunctions services.AddSingleton(); services.AddSingleton(); services.TryAddSingleton(); @@ -113,20 +114,155 @@ public static async Task Main(string[] args) StringComparer.OrdinalIgnoreCase ); - // TODO: Refactor as fluent builder + // TODO: Move to separate project/single file app var allJobs = new List() { new( "Vulkan", new SilkTouchConfiguration { - Solution = "TODO", // TODO - SourceProject = "null", - TestProject = "null", - DefaultLicenseHeader = "null", + Solution = "Silk.NET.slnx", + SourceProject = "sources/Vulkan/Vulkan/Silk.NET.Vulkan.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", }, container, - builder => { } + builder => + { + builder + .SilkTouch() + .AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = + [ + "eng/silktouch/vulkan/**/generate.rsp", + ], + InputSourceRoot = "sources/Vulkan", + InputTestRoot = "tests/Vulkan", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", + Namespace = "Silk.NET.Vulkan", + StructureTypes = ["VkStructureType"], + FlagsTypes = ["VkFlags", "VkFlags64"], + ExcludeVendorSuffixIdentification = + [ + "VK_VENDOR_ID_VIV", + "VK_VENDOR_ID_VSI", + "VK_VENDOR_ID_MESA", + ], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "vulkan", SourceSubdirectory = "vulkan" }, + ], + } + ) + .InterceptNativeFunctions( + new() + { + NativeFunctionNames = ["vkCreateInstance", "vkCreateDevice"], + } + ) + .TransformFunctions( + // TODO: + // "TransformFunctions": { + // "BoolTypes": { + // "VkBool32": null + // } + // }, + ) + .TransformProperties( + new() { BoolTypes = new() { ["VkBool32"] = null } } + ) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["PFN_vk", "vk"], + PrefixOverrides = new() + { + ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", + ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", + ["VkMemoryDecompressionMethodFlagsEXT"] = + "VK_MEMORY_DECOMPRESSION_METHOD", + }, + } + ) + .PrettifyNames( + new() + { + NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosHandleType"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() + { + AddNoneMemberToFlags = true, + RemoveMembers = + [ + new() + { + MemberName = "MaxEnum", + MemberValue = "0x7FFFFFFF", + }, + new() + { + MemberName = "Invalid", + MemberValue = "0x7FFFFFFF", + }, + ], + CoerceBackingTypes = TransformEnums + .EnumBackingTypePreference + .PreferSigned, + RewriteMemberValues = true, + } + ) + .AddVTables( + new() + { + // TODO: + // "VTables": [ + // { + // "Kind": "DllImport" + // }, + // { + // "Kind": "StaticWrapper" + // }, + // { + // "Kind": "ThisThread", + // "IsDefault": true, + // "GenerateFactoryPartial": true + // } + // ] + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ); + } ), }; From 2f544d3b13412b5bc59353d96e0ae5f159298eef Mon Sep 17 00:00:00 2001 From: William Chen Date: Sat, 10 Oct 2026 18:06:45 -0400 Subject: [PATCH 23/93] Replace RegisterMod helper with AsHierarchyAndInterfaces --- .../SilkTouch/ModRegistrationExtensions.cs | 71 ++++++++++--------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs index 0b4108b9da..8333d070c6 100644 --- a/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Autofac; +using Autofac.Builder; using Silk.NET.SilkTouch.Clang; using Silk.NET.SilkTouch.Mods; @@ -26,7 +27,7 @@ public static SilkTouchRegistrationContext AddApiProfiles( AddApiProfiles.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -39,7 +40,7 @@ public static SilkTouchRegistrationContext ClangScraper( ClangScraper.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -52,7 +53,7 @@ public static SilkTouchRegistrationContext AddIncludes( AddIncludes.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -65,7 +66,7 @@ public static SilkTouchRegistrationContext AddOpaqueStructs( AddOpaqueStructs.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -78,7 +79,7 @@ public static SilkTouchRegistrationContext AddVTables( AddVTables.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -91,7 +92,7 @@ public static SilkTouchRegistrationContext BakeSourceSets( BakeSourceSets.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -104,7 +105,7 @@ public static SilkTouchRegistrationContext ChangeNamespace( ChangeNamespace.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -117,7 +118,7 @@ public static SilkTouchRegistrationContext ChangeNativeClass( ChangeNativeClass.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -129,7 +130,7 @@ public static SilkTouchRegistrationContext ExtractEnumConstants( this SilkTouchRegistrationContext context ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -140,7 +141,7 @@ public static SilkTouchRegistrationContext ExtractFunctionPointers( this SilkTouchRegistrationContext context ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -151,7 +152,7 @@ public static SilkTouchRegistrationContext ExtractHandles( this SilkTouchRegistrationContext context ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -162,7 +163,7 @@ public static SilkTouchRegistrationContext ExtractNestedTypes( this SilkTouchRegistrationContext context ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -174,7 +175,7 @@ public static SilkTouchRegistrationContext IdentifySharedPrefixes( IdentifySharedPrefixes.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -187,7 +188,7 @@ public static SilkTouchRegistrationContext InterceptNativeFunctions( InterceptNativeFunctions.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -199,7 +200,7 @@ public static SilkTouchRegistrationContext MarkNativeNames( this SilkTouchRegistrationContext context ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -211,7 +212,7 @@ public static SilkTouchRegistrationContext MixKhronosData( MixKhronosData.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -224,7 +225,7 @@ public static SilkTouchRegistrationContext PrettifyNames( PrettifyNames.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -237,7 +238,7 @@ public static SilkTouchRegistrationContext StripAttributes( StripAttributes.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -250,7 +251,7 @@ public static SilkTouchRegistrationContext TransformEnums( TransformEnums.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -262,7 +263,7 @@ public static SilkTouchRegistrationContext TransformFunctions( this SilkTouchRegistrationContext context ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -274,7 +275,7 @@ public static SilkTouchRegistrationContext TransformHandles( TransformHandles.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } @@ -287,26 +288,28 @@ public static SilkTouchRegistrationContext TransformProperties( TransformProperties.Configuration config ) { - context.Builder.RegisterMod(); + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); context.Builder.RegisterInstance(config).SingleInstance(); return context; } - private static void RegisterMod(this ContainerBuilder builder) - where T : IMod + extension(IRegistrationBuilder registration) where TConcreteActivatorData : IConcreteActivatorData { - var type = typeof(T); - var typesToRegister = new HashSet(); - typesToRegister.UnionWith(type.GetInterfaces()); - - var current = type; - while (current != null) + private IRegistrationBuilder AsHierarchyAndInterfaces() { - typesToRegister.Add(current); - current = current.BaseType; - } + var type = registration.ActivatorData.Activator.LimitType; + var typesToRegister = new HashSet(); + typesToRegister.UnionWith(type.GetInterfaces()); - builder.RegisterType().As(typesToRegister.ToArray()).SingleInstance(); + var current = type; + while (current != null) + { + typesToRegister.Add(current); + current = current.BaseType; + } + + return registration.As(typesToRegister.ToArray()); + } } /// From 1addf94e8cb982649fca918cd1dd80f4e97c2b76 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sat, 10 Oct 2026 18:14:46 -0400 Subject: [PATCH 24/93] Add separate SilkTouchModRegistrationContext for registering mods --- .../SilkTouch/ModRegistrationExtensions.cs | 319 ------------------ sources/SilkTouch/SilkTouch/Program.cs | 267 ++++++++------- .../SilkTouchRegistrationExtensions.cs | 317 +++++++++++++++++ 3 files changed, 459 insertions(+), 444 deletions(-) delete mode 100644 sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs create mode 100644 sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs diff --git a/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs deleted file mode 100644 index 8333d070c6..0000000000 --- a/sources/SilkTouch/SilkTouch/ModRegistrationExtensions.cs +++ /dev/null @@ -1,319 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Autofac; -using Autofac.Builder; -using Silk.NET.SilkTouch.Clang; -using Silk.NET.SilkTouch.Mods; - -namespace Silk.NET.SilkTouch; - -/// -/// Extension methods for simplifying the registration of SilkTouch mods. -/// -public static class ModRegistrationExtensions -{ - /// - /// Creates a . - /// - public static SilkTouchRegistrationContext SilkTouch(this ContainerBuilder builder) => - new(builder); - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext AddApiProfiles( - this SilkTouchRegistrationContext context, - AddApiProfiles.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext ClangScraper( - this SilkTouchRegistrationContext context, - ClangScraper.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext AddIncludes( - this SilkTouchRegistrationContext context, - AddIncludes.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext AddOpaqueStructs( - this SilkTouchRegistrationContext context, - AddOpaqueStructs.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext AddVTables( - this SilkTouchRegistrationContext context, - AddVTables.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext BakeSourceSets( - this SilkTouchRegistrationContext context, - BakeSourceSets.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext ChangeNamespace( - this SilkTouchRegistrationContext context, - ChangeNamespace.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext ChangeNativeClass( - this SilkTouchRegistrationContext context, - ChangeNativeClass.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext ExtractEnumConstants( - this SilkTouchRegistrationContext context - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext ExtractFunctionPointers( - this SilkTouchRegistrationContext context - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext ExtractHandles( - this SilkTouchRegistrationContext context - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext ExtractNestedTypes( - this SilkTouchRegistrationContext context - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext IdentifySharedPrefixes( - this SilkTouchRegistrationContext context, - IdentifySharedPrefixes.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext InterceptNativeFunctions( - this SilkTouchRegistrationContext context, - InterceptNativeFunctions.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext MarkNativeNames( - this SilkTouchRegistrationContext context - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext MixKhronosData( - this SilkTouchRegistrationContext context, - MixKhronosData.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext PrettifyNames( - this SilkTouchRegistrationContext context, - PrettifyNames.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext StripAttributes( - this SilkTouchRegistrationContext context, - StripAttributes.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext TransformEnums( - this SilkTouchRegistrationContext context, - TransformEnums.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext TransformFunctions( - this SilkTouchRegistrationContext context - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext TransformHandles( - this SilkTouchRegistrationContext context, - TransformHandles.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - /// - /// Registers the mod. - /// - public static SilkTouchRegistrationContext TransformProperties( - this SilkTouchRegistrationContext context, - TransformProperties.Configuration config - ) - { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); - return context; - } - - extension(IRegistrationBuilder registration) where TConcreteActivatorData : IConcreteActivatorData - { - private IRegistrationBuilder AsHierarchyAndInterfaces() - { - var type = registration.ActivatorData.Activator.LimitType; - var typesToRegister = new HashSet(); - typesToRegister.UnionWith(type.GetInterfaces()); - - var current = type; - while (current != null) - { - typesToRegister.Add(current); - current = current.BaseType; - } - - return registration.As(typesToRegister.ToArray()); - } - } - - /// - /// Helper for registering SilkTouch mods to a - /// - public record struct SilkTouchRegistrationContext(ContainerBuilder Builder); -} diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index 9577fc0431..c45c1805f2 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -130,137 +130,154 @@ public static async Task Main(string[] args) { builder .SilkTouch() - .AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/vulkan/**/generate.rsp", - ], - InputSourceRoot = "sources/Vulkan", - InputTestRoot = "tests/Vulkan", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", - Namespace = "Silk.NET.Vulkan", - StructureTypes = ["VkStructureType"], - FlagsTypes = ["VkFlags", "VkFlags64"], - ExcludeVendorSuffixIdentification = - [ - "VK_VENDOR_ID_VIV", - "VK_VENDOR_ID_VSI", - "VK_VENDOR_ID_MESA", - ], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .AddApiProfiles( - new() - { - Profiles = - [ - new() { Profile = "vulkan", SourceSubdirectory = "vulkan" }, - ], - } - ) - .InterceptNativeFunctions( - new() - { - NativeFunctionNames = ["vkCreateInstance", "vkCreateDevice"], - } - ) - .TransformFunctions( - // TODO: - // "TransformFunctions": { - // "BoolTypes": { - // "VkBool32": null - // } - // }, - ) - .TransformProperties( - new() { BoolTypes = new() { ["VkBool32"] = null } } - ) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["PFN_vk", "vk"], - PrefixOverrides = new() - { - ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", - ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", - ["VkMemoryDecompressionMethodFlagsEXT"] = - "VK_MEMORY_DECOMPRESSION_METHOD", - }, - } - ) - .PrettifyNames( - new() - { - NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosHandleType"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() - { - AddNoneMemberToFlags = true, - RemoveMembers = - [ + .Mods(context => + context + .AddIncludes(new()) + .ClangScraper( new() { - MemberName = "MaxEnum", - MemberValue = "0x7FFFFFFF", - }, + ClangSharpResponseFiles = + [ + "eng/silktouch/vulkan/**/generate.rsp", + ], + InputSourceRoot = "sources/Vulkan", + InputTestRoot = "tests/Vulkan", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .MixKhronosData( new() { - MemberName = "Invalid", - MemberValue = "0x7FFFFFFF", - }, - ], - CoerceBackingTypes = TransformEnums - .EnumBackingTypePreference - .PreferSigned, - RewriteMemberValues = true, - } - ) - .AddVTables( - new() - { + SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", + Namespace = "Silk.NET.Vulkan", + StructureTypes = ["VkStructureType"], + FlagsTypes = ["VkFlags", "VkFlags64"], + ExcludeVendorSuffixIdentification = + [ + "VK_VENDOR_ID_VIV", + "VK_VENDOR_ID_VSI", + "VK_VENDOR_ID_MESA", + ], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .AddApiProfiles( + new() + { + Profiles = + [ + new() + { + Profile = "vulkan", + SourceSubdirectory = "vulkan", + }, + ], + } + ) + .InterceptNativeFunctions( + new() + { + NativeFunctionNames = + [ + "vkCreateInstance", + "vkCreateDevice", + ], + } + ) + .TransformFunctions( // TODO: - // "VTables": [ - // { - // "Kind": "DllImport" - // }, - // { - // "Kind": "StaticWrapper" - // }, - // { - // "Kind": "ThisThread", - // "IsDefault": true, - // "GenerateFactoryPartial": true + // "TransformFunctions": { + // "BoolTypes": { + // "VkBool32": null // } - // ] - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + // }, + ) + .TransformProperties( + new() { BoolTypes = new() { ["VkBool32"] = null } } + ) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["PFN_vk", "vk"], + PrefixOverrides = new() + { + ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", + ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", + ["VkMemoryDecompressionMethodFlagsEXT"] = + "VK_MEMORY_DECOMPRESSION_METHOD", + }, + } + ) + .PrettifyNames( + new() + { + NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() + { + Order = 1, + }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosHandleType"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() + { + AddNoneMemberToFlags = true, + RemoveMembers = + [ + new() + { + MemberName = "MaxEnum", + MemberValue = "0x7FFFFFFF", + }, + new() + { + MemberName = "Invalid", + MemberValue = "0x7FFFFFFF", + }, + ], + CoerceBackingTypes = TransformEnums + .EnumBackingTypePreference + .PreferSigned, + RewriteMemberValues = true, + } + ) + .AddVTables( + new() + { + // TODO: + // "VTables": [ + // { + // "Kind": "DllImport" + // }, + // { + // "Kind": "StaticWrapper" + // }, + // { + // "Kind": "ThisThread", + // "IsDefault": true, + // "GenerateFactoryPartial": true + // } + // ] + } + ) + .StripAttributes( + new() + { + Remove = ["NativeTypeName", "NameAffix", "Transformed"], + } + ) ); } ), diff --git a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs new file mode 100644 index 0000000000..2d0d2adf5a --- /dev/null +++ b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs @@ -0,0 +1,317 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Autofac; +using Autofac.Builder; +using Silk.NET.SilkTouch.Clang; +using Silk.NET.SilkTouch.Mods; + +namespace Silk.NET.SilkTouch; + +/// +/// Extension methods for simplifying the registration of SilkTouch mods. +/// +public static class SilkTouchRegistrationExtensions +{ + /// + /// Begins a . + /// + public static SilkTouchRegistrationContext SilkTouch(this ContainerBuilder builder) => + new(builder); + + extension(SilkTouchRegistrationContext context) + { + /// + /// Begins a . + /// + public SilkTouchModRegistrationContext Mods() => + new(context.Builder); + + /// + /// Begins a . + /// + public SilkTouchRegistrationContext Mods(Action build) + { + build.Invoke(new SilkTouchModRegistrationContext(context.Builder)); + return context; + } + } + + extension(SilkTouchModRegistrationContext context) + { + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext AddApiProfiles( + AddApiProfiles.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext ClangScraper( + ClangScraper.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext AddIncludes( + AddIncludes.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext AddOpaqueStructs( + AddOpaqueStructs.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext AddVTables( + AddVTables.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext BakeSourceSets( + BakeSourceSets.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext ChangeNamespace( + ChangeNamespace.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext ChangeNativeClass( + ChangeNativeClass.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext ExtractEnumConstants() + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext ExtractFunctionPointers() + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext ExtractHandles() + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext ExtractNestedTypes() + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext IdentifySharedPrefixes( + IdentifySharedPrefixes.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext InterceptNativeFunctions( + InterceptNativeFunctions.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext MarkNativeNames() + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext MixKhronosData( + MixKhronosData.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext PrettifyNames( + PrettifyNames.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext StripAttributes( + StripAttributes.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext TransformEnums( + TransformEnums.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext TransformFunctions() + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext TransformHandles( + TransformHandles.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + + /// + /// Registers the mod. + /// + public SilkTouchModRegistrationContext TransformProperties( + TransformProperties.Configuration config + ) + { + context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context.Builder.RegisterInstance(config).SingleInstance(); + return context; + } + } + + extension(IRegistrationBuilder registration) where TConcreteActivatorData : IConcreteActivatorData + { + private IRegistrationBuilder AsHierarchyAndInterfaces() + { + var type = registration.ActivatorData.Activator.LimitType; + var typesToRegister = new HashSet(); + typesToRegister.UnionWith(type.GetInterfaces()); + + var current = type; + while (current != null) + { + typesToRegister.Add(current); + current = current.BaseType; + } + + return registration.As(typesToRegister.ToArray()); + } + } + + /// + /// Helper for registering SilkTouch to a + /// + public record struct SilkTouchRegistrationContext(ContainerBuilder Builder); + + /// + /// Helper for registering SilkTouch mods to a + /// + public record struct SilkTouchModRegistrationContext(ContainerBuilder Builder); +} From dc09ae0e084d57741e74185fad66e396c7864530 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sat, 10 Oct 2026 18:20:11 -0400 Subject: [PATCH 25/93] Move function transformer registrations to TransformFunctions registration method --- sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs | 2 +- sources/SilkTouch/SilkTouch/Program.cs | 10 +--------- .../SilkTouch/SilkTouchRegistrationExtensions.cs | 10 +++++++++- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs index dba8f8f633..3ad556729c 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs @@ -23,7 +23,7 @@ public class Configuration /// /// Whether all integer return types should be treated as potentially boolean. /// - public required bool IntReturnsMaybeBool { get; init; } + public bool IntReturnsMaybeBool { get; init; } /// /// Types to treat as boolean and their boolean schemes if different from the default. diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index c45c1805f2..edcc937b63 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -80,9 +80,6 @@ public static async Task Main(string[] args) services.TryAddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); // TODO: Move to RegisterTransformFunctions - services.AddSingleton(); - services.AddSingleton(); services.TryAddSingleton(); if (OperatingSystem.IsWindows()) { @@ -189,12 +186,7 @@ public static async Task Main(string[] args) } ) .TransformFunctions( - // TODO: - // "TransformFunctions": { - // "BoolTypes": { - // "VkBool32": null - // } - // }, + new() { BoolTypes = new() { ["VkBool32"] = null } } ) .TransformProperties( new() { BoolTypes = new() { ["VkBool32"] = null } } diff --git a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs index 2d0d2adf5a..6e2555d5eb 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs @@ -5,6 +5,7 @@ using Autofac.Builder; using Silk.NET.SilkTouch.Clang; using Silk.NET.SilkTouch.Mods; +using Silk.NET.SilkTouch.Mods.Transformation; namespace Silk.NET.SilkTouch; @@ -255,9 +256,16 @@ TransformEnums.Configuration config /// /// Registers the mod. /// - public SilkTouchModRegistrationContext TransformFunctions() + public SilkTouchModRegistrationContext TransformFunctions(TransformFunctions.Configuration config) { context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + + context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); + context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); + context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); + + context.Builder.RegisterInstance(config).SingleInstance(); + return context; } From c5922a7aae3127821c70f4d74d8f3cb3d28a51ae Mon Sep 17 00:00:00 2001 From: William Chen Date: Sat, 10 Oct 2026 18:22:43 -0400 Subject: [PATCH 26/93] Also register FunctionTransformer alongside TransformFunctions --- sources/SilkTouch/SilkTouch/Program.cs | 1 - .../SilkTouch/SilkTouchRegistrationExtensions.cs | 12 +++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index edcc937b63..ecf7c96ebf 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -72,7 +72,6 @@ public static async Task Main(string[] args) // TODO: Cleanup. Probably move into a SilkTouchHost class. { services.AddSingleton(); - services.AddSingleton(); services.AddSingleton(); services.AddSingleton(s => s.GetRequiredService() diff --git a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs index 6e2555d5eb..01327ece48 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs @@ -260,9 +260,15 @@ public SilkTouchModRegistrationContext TransformFunctions(TransformFunctions.Con { context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); - context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); - context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); + // These probably can be moved to their own registration methods, but keeping it here since we have no reason to exclude any transformers right now + // Also, BoolTransformer relies on TransformFunctions.Configuration, which is tech debt + { + context.Builder.RegisterType().SingleInstance(); + + context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); + context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); + context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); + } context.Builder.RegisterInstance(config).SingleInstance(); From 01ebbd857a05dedd59dc1c47806adbea277e0451 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sat, 10 Oct 2026 18:36:06 -0400 Subject: [PATCH 27/93] Use WithParameter to specifically inject the config param into each mod instead of registering it separately Mods shouldn't peek into other mod configs and this lets us register multiple of the same mod more easily. --- .../SilkTouchRegistrationExtensions.cs | 53 +++++++------------ 1 file changed, 18 insertions(+), 35 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs index 01327ece48..2ec45efbb4 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs @@ -47,8 +47,8 @@ public SilkTouchModRegistrationContext AddApiProfiles( AddApiProfiles.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(AddApiProfiles.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + return context; } @@ -59,8 +59,7 @@ public SilkTouchModRegistrationContext ClangScraper( ClangScraper.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(ClangScraper.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -71,8 +70,7 @@ public SilkTouchModRegistrationContext AddIncludes( AddIncludes.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(AddIncludes.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -83,8 +81,7 @@ public SilkTouchModRegistrationContext AddOpaqueStructs( AddOpaqueStructs.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(AddOpaqueStructs.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -95,8 +92,7 @@ public SilkTouchModRegistrationContext AddVTables( AddVTables.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(AddVTables.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -107,8 +103,7 @@ public SilkTouchModRegistrationContext BakeSourceSets( BakeSourceSets.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(BakeSourceSets.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -119,8 +114,7 @@ public SilkTouchModRegistrationContext ChangeNamespace( ChangeNamespace.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(ChangeNamespace.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -131,8 +125,7 @@ public SilkTouchModRegistrationContext ChangeNativeClass( ChangeNativeClass.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(ChangeNativeClass.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -179,8 +172,7 @@ public SilkTouchModRegistrationContext IdentifySharedPrefixes( IdentifySharedPrefixes.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(IdentifySharedPrefixes.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -191,8 +183,7 @@ public SilkTouchModRegistrationContext InterceptNativeFunctions( InterceptNativeFunctions.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(InterceptNativeFunctions.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -212,8 +203,7 @@ public SilkTouchModRegistrationContext MixKhronosData( MixKhronosData.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(MixKhronosData.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -224,8 +214,7 @@ public SilkTouchModRegistrationContext PrettifyNames( PrettifyNames.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(PrettifyNames.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -236,8 +225,7 @@ public SilkTouchModRegistrationContext StripAttributes( StripAttributes.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(StripAttributes.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -248,8 +236,7 @@ public SilkTouchModRegistrationContext TransformEnums( TransformEnums.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(TransformEnums.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -266,12 +253,10 @@ public SilkTouchModRegistrationContext TransformFunctions(TransformFunctions.Con context.Builder.RegisterType().SingleInstance(); context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); - context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(TransformFunctions.Configuration), config)).AsImplementedInterfaces().SingleInstance(); context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); } - context.Builder.RegisterInstance(config).SingleInstance(); - return context; } @@ -282,8 +267,7 @@ public SilkTouchModRegistrationContext TransformHandles( TransformHandles.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(TransformHandles.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } @@ -294,8 +278,7 @@ public SilkTouchModRegistrationContext TransformProperties( TransformProperties.Configuration config ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); - context.Builder.RegisterInstance(config).SingleInstance(); + context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(TransformProperties.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); return context; } } From 3e34bea20cb7aee4a0c33f1bc5aba0d8856888f6 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sat, 10 Oct 2026 18:42:36 -0400 Subject: [PATCH 28/93] Update CSharpier tool --- .config/dotnet-tools.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 03efa87b74..6e2e244c47 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,10 +3,11 @@ "isRoot": true, "tools": { "csharpier": { - "version": "0.29.2", + "version": "1.3.0", "commands": [ - "dotnet-csharpier" - ] + "csharpier" + ], + "rollForward": false } } } \ No newline at end of file From f9f94efeb68934202dc192a05d48ec9734153883 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sat, 10 Oct 2026 18:42:46 -0400 Subject: [PATCH 29/93] Format SilkTouchRegistrationExtensions --- .../SilkTouchRegistrationExtensions.cs | 208 +++++++++++++----- 1 file changed, 148 insertions(+), 60 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs index 2ec45efbb4..ab1bee691b 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs @@ -25,8 +25,7 @@ public static SilkTouchRegistrationContext SilkTouch(this ContainerBuilder build /// /// Begins a . /// - public SilkTouchModRegistrationContext Mods() => - new(context.Builder); + public SilkTouchModRegistrationContext Mods() => new(context.Builder); /// /// Begins a . @@ -43,11 +42,13 @@ public SilkTouchRegistrationContext Mods(Action /// /// Registers the mod. /// - public SilkTouchModRegistrationContext AddApiProfiles( - AddApiProfiles.Configuration config - ) + public SilkTouchModRegistrationContext AddApiProfiles(AddApiProfiles.Configuration config) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(AddApiProfiles.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(AddApiProfiles.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } @@ -55,22 +56,26 @@ AddApiProfiles.Configuration config /// /// Registers the mod. /// - public SilkTouchModRegistrationContext ClangScraper( - ClangScraper.Configuration config - ) + public SilkTouchModRegistrationContext ClangScraper(ClangScraper.Configuration config) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(ClangScraper.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(ClangScraper.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } /// /// Registers the mod. /// - public SilkTouchModRegistrationContext AddIncludes( - AddIncludes.Configuration config - ) + public SilkTouchModRegistrationContext AddIncludes(AddIncludes.Configuration config) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(AddIncludes.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(AddIncludes.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } @@ -81,40 +86,50 @@ public SilkTouchModRegistrationContext AddOpaqueStructs( AddOpaqueStructs.Configuration config ) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(AddOpaqueStructs.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(AddOpaqueStructs.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } /// /// Registers the mod. /// - public SilkTouchModRegistrationContext AddVTables( - AddVTables.Configuration config - ) + public SilkTouchModRegistrationContext AddVTables(AddVTables.Configuration config) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(AddVTables.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(AddVTables.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } /// /// Registers the mod. /// - public SilkTouchModRegistrationContext BakeSourceSets( - BakeSourceSets.Configuration config - ) + public SilkTouchModRegistrationContext BakeSourceSets(BakeSourceSets.Configuration config) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(BakeSourceSets.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(BakeSourceSets.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } /// /// Registers the mod. /// - public SilkTouchModRegistrationContext ChangeNamespace( - ChangeNamespace.Configuration config - ) + public SilkTouchModRegistrationContext ChangeNamespace(ChangeNamespace.Configuration config) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(ChangeNamespace.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(ChangeNamespace.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } @@ -125,7 +140,11 @@ public SilkTouchModRegistrationContext ChangeNativeClass( ChangeNativeClass.Configuration config ) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(ChangeNativeClass.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(ChangeNativeClass.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } @@ -134,7 +153,10 @@ ChangeNativeClass.Configuration config /// public SilkTouchModRegistrationContext ExtractEnumConstants() { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } @@ -143,7 +165,10 @@ public SilkTouchModRegistrationContext ExtractEnumConstants() /// public SilkTouchModRegistrationContext ExtractFunctionPointers() { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } @@ -152,7 +177,10 @@ public SilkTouchModRegistrationContext ExtractFunctionPointers() /// public SilkTouchModRegistrationContext ExtractHandles() { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } @@ -161,7 +189,10 @@ public SilkTouchModRegistrationContext ExtractHandles() /// public SilkTouchModRegistrationContext ExtractNestedTypes() { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } @@ -172,7 +203,13 @@ public SilkTouchModRegistrationContext IdentifySharedPrefixes( IdentifySharedPrefixes.Configuration config ) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(IdentifySharedPrefixes.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter( + new TypedParameter(typeof(IdentifySharedPrefixes.Configuration), config) + ) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } @@ -183,7 +220,13 @@ public SilkTouchModRegistrationContext InterceptNativeFunctions( InterceptNativeFunctions.Configuration config ) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(InterceptNativeFunctions.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter( + new TypedParameter(typeof(InterceptNativeFunctions.Configuration), config) + ) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } @@ -192,69 +235,97 @@ InterceptNativeFunctions.Configuration config /// public SilkTouchModRegistrationContext MarkNativeNames() { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } /// /// Registers the mod. /// - public SilkTouchModRegistrationContext MixKhronosData( - MixKhronosData.Configuration config - ) + public SilkTouchModRegistrationContext MixKhronosData(MixKhronosData.Configuration config) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(MixKhronosData.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(MixKhronosData.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } /// /// Registers the mod. /// - public SilkTouchModRegistrationContext PrettifyNames( - PrettifyNames.Configuration config - ) + public SilkTouchModRegistrationContext PrettifyNames(PrettifyNames.Configuration config) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(PrettifyNames.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(PrettifyNames.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } /// /// Registers the mod. /// - public SilkTouchModRegistrationContext StripAttributes( - StripAttributes.Configuration config - ) + public SilkTouchModRegistrationContext StripAttributes(StripAttributes.Configuration config) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(StripAttributes.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(StripAttributes.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } /// /// Registers the mod. /// - public SilkTouchModRegistrationContext TransformEnums( - TransformEnums.Configuration config - ) + public SilkTouchModRegistrationContext TransformEnums(TransformEnums.Configuration config) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(TransformEnums.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(TransformEnums.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } /// /// Registers the mod. /// - public SilkTouchModRegistrationContext TransformFunctions(TransformFunctions.Configuration config) + public SilkTouchModRegistrationContext TransformFunctions( + TransformFunctions.Configuration config + ) { - context.Builder.RegisterType().AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .AsHierarchyAndInterfaces() + .SingleInstance(); // These probably can be moved to their own registration methods, but keeping it here since we have no reason to exclude any transformers right now // Also, BoolTransformer relies on TransformFunctions.Configuration, which is tech debt { context.Builder.RegisterType().SingleInstance(); - context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(TransformFunctions.Configuration), config)).AsImplementedInterfaces().SingleInstance(); - context.Builder.RegisterType().AsImplementedInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .AsImplementedInterfaces() + .SingleInstance(); + context + .Builder.RegisterType() + .WithParameter( + new TypedParameter(typeof(TransformFunctions.Configuration), config) + ) + .AsImplementedInterfaces() + .SingleInstance(); + context + .Builder.RegisterType() + .AsImplementedInterfaces() + .SingleInstance(); } return context; @@ -267,7 +338,11 @@ public SilkTouchModRegistrationContext TransformHandles( TransformHandles.Configuration config ) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(TransformHandles.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter(new TypedParameter(typeof(TransformHandles.Configuration), config)) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } @@ -278,14 +353,27 @@ public SilkTouchModRegistrationContext TransformProperties( TransformProperties.Configuration config ) { - context.Builder.RegisterType().WithParameter(new TypedParameter(typeof(TransformProperties.Configuration), config)).AsHierarchyAndInterfaces().SingleInstance(); + context + .Builder.RegisterType() + .WithParameter( + new TypedParameter(typeof(TransformProperties.Configuration), config) + ) + .AsHierarchyAndInterfaces() + .SingleInstance(); return context; } } - extension(IRegistrationBuilder registration) where TConcreteActivatorData : IConcreteActivatorData + extension( + IRegistrationBuilder registration + ) + where TConcreteActivatorData : IConcreteActivatorData { - private IRegistrationBuilder AsHierarchyAndInterfaces() + private IRegistrationBuilder< + TLimit, + TConcreteActivatorData, + SingleRegistrationStyle + > AsHierarchyAndInterfaces() { var type = registration.ActivatorData.Activator.LimitType; var typesToRegister = new HashSet(); From 0ab9db2b4689014af61f1ade25b392add578e167 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sat, 10 Oct 2026 18:45:56 -0400 Subject: [PATCH 30/93] Add extra spacing since CSharpier formatting is hard to read with fluent chains --- .../SilkTouchRegistrationExtensions.cs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs index ab1bee691b..ddd6371c07 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs @@ -63,6 +63,7 @@ public SilkTouchModRegistrationContext ClangScraper(ClangScraper.Configuration c .WithParameter(new TypedParameter(typeof(ClangScraper.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -76,6 +77,7 @@ public SilkTouchModRegistrationContext AddIncludes(AddIncludes.Configuration con .WithParameter(new TypedParameter(typeof(AddIncludes.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -91,6 +93,7 @@ AddOpaqueStructs.Configuration config .WithParameter(new TypedParameter(typeof(AddOpaqueStructs.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -104,6 +107,7 @@ public SilkTouchModRegistrationContext AddVTables(AddVTables.Configuration confi .WithParameter(new TypedParameter(typeof(AddVTables.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -117,6 +121,7 @@ public SilkTouchModRegistrationContext BakeSourceSets(BakeSourceSets.Configurati .WithParameter(new TypedParameter(typeof(BakeSourceSets.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -130,6 +135,7 @@ public SilkTouchModRegistrationContext ChangeNamespace(ChangeNamespace.Configura .WithParameter(new TypedParameter(typeof(ChangeNamespace.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -145,6 +151,7 @@ ChangeNativeClass.Configuration config .WithParameter(new TypedParameter(typeof(ChangeNativeClass.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -157,6 +164,7 @@ public SilkTouchModRegistrationContext ExtractEnumConstants() .Builder.RegisterType() .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -169,6 +177,7 @@ public SilkTouchModRegistrationContext ExtractFunctionPointers() .Builder.RegisterType() .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -181,6 +190,7 @@ public SilkTouchModRegistrationContext ExtractHandles() .Builder.RegisterType() .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -193,6 +203,7 @@ public SilkTouchModRegistrationContext ExtractNestedTypes() .Builder.RegisterType() .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -210,6 +221,7 @@ IdentifySharedPrefixes.Configuration config ) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -227,6 +239,7 @@ InterceptNativeFunctions.Configuration config ) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -239,6 +252,7 @@ public SilkTouchModRegistrationContext MarkNativeNames() .Builder.RegisterType() .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -252,6 +266,7 @@ public SilkTouchModRegistrationContext MixKhronosData(MixKhronosData.Configurati .WithParameter(new TypedParameter(typeof(MixKhronosData.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -265,6 +280,7 @@ public SilkTouchModRegistrationContext PrettifyNames(PrettifyNames.Configuration .WithParameter(new TypedParameter(typeof(PrettifyNames.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -278,6 +294,7 @@ public SilkTouchModRegistrationContext StripAttributes(StripAttributes.Configura .WithParameter(new TypedParameter(typeof(StripAttributes.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -291,6 +308,7 @@ public SilkTouchModRegistrationContext TransformEnums(TransformEnums.Configurati .WithParameter(new TypedParameter(typeof(TransformEnums.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -315,6 +333,7 @@ TransformFunctions.Configuration config .Builder.RegisterType() .AsImplementedInterfaces() .SingleInstance(); + context .Builder.RegisterType() .WithParameter( @@ -322,6 +341,7 @@ TransformFunctions.Configuration config ) .AsImplementedInterfaces() .SingleInstance(); + context .Builder.RegisterType() .AsImplementedInterfaces() @@ -343,6 +363,7 @@ TransformHandles.Configuration config .WithParameter(new TypedParameter(typeof(TransformHandles.Configuration), config)) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } @@ -360,6 +381,7 @@ TransformProperties.Configuration config ) .AsHierarchyAndInterfaces() .SingleInstance(); + return context; } } From 0670ebc7fd0da3082e28632c483c5d567f4cb06f Mon Sep 17 00:00:00 2001 From: William Chen Date: Sat, 10 Oct 2026 18:47:27 -0400 Subject: [PATCH 31/93] Remove "DON'T USE CONSTRUCTOR-STYLE RECORDS" warning comments, no longer relevant --- sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs | 2 +- sources/SilkTouch/SilkTouch/Mods/AddVTables.cs | 5 +++-- sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs b/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs index d6dcd224c1..4b1d714191 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs @@ -24,7 +24,7 @@ AddOpaqueStructs.Configuration config /// /// The configuration for the opaque structs mod. /// - public record Configuration // DON'T USE CONSTRUCTOR-STYLE RECORDS! Needs a default ctor. + public record Configuration { /// /// Opaque struct names. diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index 7ad5b6c6c9..01fa9e77e2 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -504,7 +504,7 @@ public override ClassDeclarationSyntax AddMethod(in VTableContext ctx) /// /// The mod's configuration. /// - public record Configuration // DON'T USE CONSTRUCTOR-STYLE RECORDS! Needs a default ctor. + public record Configuration { /// /// The various VTable types to generate. @@ -993,7 +993,8 @@ is not (SyntaxKind.ExternKeyword or SyntaxKind.PartialKeyword) && x.ChildTokens() .FirstOrDefault(y => y.IsKind(SyntaxKind.IdentifierToken)) .ToString() == tok.ToString() - ) ?? false + ) + ?? false ) ) { diff --git a/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs b/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs index 186d2ecf19..f50bc15345 100644 --- a/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs +++ b/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs @@ -22,7 +22,7 @@ public class ChangeNamespace(ChangeNamespace.Configuration config) : IMod, IResp /// /// The configuration for the change namespace mod. /// - public record Configuration // DON'T USE CONSTRUCTOR-STYLE RECORDS! Needs a default ctor. + public record Configuration { /// /// A mapping of namespace regexes to replacements. From b5efbb627170e64251a265d074b202928b590c30 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sat, 10 Oct 2026 18:51:40 -0400 Subject: [PATCH 32/93] Change AddVTables Configuration to accept VTable types instead of IConfigurationSection --- .../SilkTouch/SilkTouch/Mods/AddVTables.cs | 43 +++---------------- sources/SilkTouch/SilkTouch/Program.cs | 25 +++++------ 2 files changed, 16 insertions(+), 52 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index 01fa9e77e2..522ce96c15 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -2,11 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics; -using System.Text.Json.Serialization; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.Extensions.Configuration; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Silk.NET.SilkTouch.Mods; @@ -34,10 +32,6 @@ public class AddVTables(AddVTables.Configuration config) : IMod /// /// Base class for VTable configurations. /// - [JsonPolymorphic(TypeDiscriminatorPropertyName = "Kind")] - [JsonDerivedType(typeof(DllImport), nameof(DllImport))] - [JsonDerivedType(typeof(ThisThread), nameof(ThisThread))] - [JsonDerivedType(typeof(StaticWrapper), nameof(StaticWrapper))] public abstract record VTable { /// @@ -144,7 +138,7 @@ public override ClassDeclarationSyntax AddMethod(in VTableContext ctx) => ).AddMembers(ctx.Original); /// - public override ClassDeclarationSyntax? GetBoilerplate(in VTableBoilerplateContext ctx) => + public override ClassDeclarationSyntax GetBoilerplate(in VTableBoilerplateContext ctx) => ClassDeclaration(Name) .WithModifiers( TokenList(Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.PartialKeyword)) @@ -213,7 +207,7 @@ public record ThisThread : VTable public override bool IsStatic => true; /// - public override ClassDeclarationSyntax? GetBoilerplate(in VTableBoilerplateContext ctx) => + public override ClassDeclarationSyntax GetBoilerplate(in VTableBoilerplateContext ctx) => ClassDeclaration(Name) .WithModifiers( TokenList(Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.PartialKeyword)) @@ -509,10 +503,10 @@ public record Configuration /// /// The various VTable types to generate. /// - public IConfigurationSection[]? VTables { get; init; } + public VTable[] VTables { get; init; } = []; } - class Rewriter(VTable[] vTables) : ModCSharpSyntaxRewriter + private class Rewriter(VTable[] vTables) : ModCSharpSyntaxRewriter { private InterfaceDeclarationSyntax? _currentInterface; private ClassDeclarationSyntax? _currentClass; @@ -604,7 +598,7 @@ public Dictionary< private static string InterfaceKey(ClassDeclarationSyntax klass) => $"I{klass.Identifier}"; - public override SyntaxNode? VisitClassDeclaration(ClassDeclarationSyntax node) + public override SyntaxNode VisitClassDeclaration(ClassDeclarationSyntax node) { if (_currentClass is not null) { @@ -1400,32 +1394,7 @@ public void Reset() /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - VTable[]? vTables = null; - if (config.VTables is not null) - { - vTables = new VTable[config.VTables.Length]; - for (var i = 0; i < config.VTables.Length; i++) - { - vTables[i] = (VTable)( - config - .VTables[i] - .Get( - config.VTables[i].GetValue("Kind") switch - { - nameof(DllImport) => typeof(DllImport), - nameof(StaticWrapper) => typeof(StaticWrapper), - nameof(ThisThread) => typeof(ThisThread), - _ => throw new InvalidOperationException( - "VTable must have valid \"Kind\" property" - ), - } - ) - ?? throw new InvalidOperationException( - "Failed to deserialize VTable configuration properly" - ) - ); - } - } + var vTables = config.VTables; var rw = new Rewriter( vTables ?? new VTable[] diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index ecf7c96ebf..bc48d5f0db 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -13,7 +13,6 @@ using Silk.NET.SilkTouch.Clang; using Silk.NET.SilkTouch.Mods; using Silk.NET.SilkTouch.Mods.Bakery; -using Silk.NET.SilkTouch.Mods.Transformation; using Silk.NET.SilkTouch.Sources; namespace Silk.NET.SilkTouch; @@ -247,20 +246,16 @@ public static async Task Main(string[] args) .AddVTables( new() { - // TODO: - // "VTables": [ - // { - // "Kind": "DllImport" - // }, - // { - // "Kind": "StaticWrapper" - // }, - // { - // "Kind": "ThisThread", - // "IsDefault": true, - // "GenerateFactoryPartial": true - // } - // ] + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], } ) .StripAttributes( From 8a2256b10974da2dea6c5da0fb27135da0cbbe18 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sun, 11 Oct 2026 00:22:35 -0400 Subject: [PATCH 33/93] Add IModContextProvider back, but rename to IModContextFactory --- .../Mods/Common/IModContextFactory.cs | 23 ++++++++++++++++++ .../Mods/Common/MSBuildModContext.cs | 7 +++--- .../Mods/Common/MSBuildModContextFactory.cs | 24 +++++++++++++++++++ sources/SilkTouch/SilkTouch/Program.cs | 1 + sources/SilkTouch/SilkTouch/SilkTouchJob.cs | 10 ++++---- 5 files changed, 56 insertions(+), 9 deletions(-) create mode 100644 sources/SilkTouch/SilkTouch/Mods/Common/IModContextFactory.cs create mode 100644 sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/IModContextFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/IModContextFactory.cs new file mode 100644 index 0000000000..6e2743437a --- /dev/null +++ b/sources/SilkTouch/SilkTouch/Mods/Common/IModContextFactory.cs @@ -0,0 +1,23 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Silk.NET.SilkTouch.Mods; + +/// +/// Creates for use throughout a job. +/// +public interface IModContextFactory +{ + /// + /// Creates a new mod context. + /// + /// The job key. + /// The generator configuration. + /// The cancellation token. + /// The mod context. + public Task CreateContextAsync( + string key, + SilkTouchConfiguration config, + CancellationToken ct = default + ); +} diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs index 01eef03e9e..b5aae81e8c 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs @@ -83,10 +83,9 @@ private static void Assign( public async Task InitializeAsync() { - logger.LogInformation("Opening solution at {}...", WorkingDirectory); - var solution = await MSBuildWorkspace - .Create() - .OpenSolutionAsync(WorkingDirectory, this, this); + var solutionPath = Path.GetFullPath(jobConfig.Solution, WorkingDirectory); + logger.LogInformation("Opening solution at {}...", solutionPath); + var solution = await MSBuildWorkspace.Create().OpenSolutionAsync(solutionPath, this, this); if (jobConfig.SourceProject is null) { diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs new file mode 100644 index 0000000000..8e86f01bcc --- /dev/null +++ b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs @@ -0,0 +1,24 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.Extensions.Logging; + +namespace Silk.NET.SilkTouch.Mods; + +/// +/// A that creates mod contexts that use an MSBuild workspace. +/// +public class MSBuildModContextFactory(ILogger logger) : IModContextFactory +{ + /// + public async Task CreateContextAsync( + string key, + SilkTouchConfiguration config, + CancellationToken ct = default + ) + { + var ret = new MSBuildModContext(key, config, logger); + await ret.InitializeAsync(); + return ret; + } +} diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index bc48d5f0db..30e952b6e3 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -70,6 +70,7 @@ public static async Task Main(string[] args) // TODO: Cleanup. Probably move into a SilkTouchHost class. { + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(s => diff --git a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs index f7095ab621..7c5738d1ba 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs @@ -18,6 +18,7 @@ public class SilkTouchJob : IDisposable private readonly ILogger _logger; private readonly IInputResolver _inputResolver; + private readonly IModContextFactory _modContextFactory; /// /// TODO @@ -48,15 +49,14 @@ public SilkTouchJob( Action build ) { - this.Key = key; - this.Config = config; + Key = key; + Config = config; _logger = parentContainer.Resolve>(); _inputResolver = parentContainer.Resolve(); - - // TODO: Maybe have each mod provide a Register(ILifetimeScope container, Mod.Configuration configuration) method _container = parentContainer.BeginLifetimeScope(build); + _modContextFactory = _container.Resolve(); Mods = _container.Resolve(); } @@ -71,7 +71,7 @@ public async Task RunAsync(CancellationToken ct = default) Config = await _inputResolver.Resolve(Config); // Prepare the context - var context = new MSBuildModContext(Key, Config, _logger); + var context = await _modContextFactory.CreateContextAsync(Key, Config, ct); // Just in case a mod gets naughty and tries to modify at the initialization stage. var srcProj = context.SourceProject; From 46330238aef9404cd9c8074e744bb1fd2e20bc00 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sun, 11 Oct 2026 00:22:42 -0400 Subject: [PATCH 34/93] Fix incorrect generator config --- sources/SilkTouch/SilkTouch/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index 30e952b6e3..0debb9b9c8 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -240,7 +240,7 @@ public static async Task Main(string[] args) ], CoerceBackingTypes = TransformEnums .EnumBackingTypePreference - .PreferSigned, + .PreferUnsigned, RewriteMemberValues = true, } ) From 522e960ec492bb2d378abd85ce1ea099b5d4f176 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sun, 11 Oct 2026 00:28:18 -0400 Subject: [PATCH 35/93] Migrate MS DI registration to use Autofac --- sources/SilkTouch/SilkTouch/Program.cs | 61 ++++++++++++++++++-------- 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index 0debb9b9c8..4d9b5e2f83 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -6,7 +6,6 @@ using Autofac.Extensions.DependencyInjection; using Microsoft.Build.Locator; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Console; using Silk.NET.SilkTouch.Caching; @@ -51,6 +50,7 @@ public static async Task Main(string[] args) // Register MSBuild MSBuildLocator.RegisterDefaults(); + // TODO: Cleanup. Probably move into a SilkTouchHost class. ILifetimeScope container; { var services = new ServiceCollection() @@ -68,35 +68,60 @@ public static async Task Main(string[] args) }) .AddOptions(); - // TODO: Cleanup. Probably move into a SilkTouchHost class. + var builder = new ContainerBuilder(); + builder.Populate(services); + { - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(s => - s.GetRequiredService() - ); - services.TryAddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.TryAddSingleton(); + builder + .RegisterType() + .As() + .SingleInstance(); + + builder.RegisterType().SingleInstance(); + + builder + .RegisterType() + .AsSelf() + .AsImplementedInterfaces() + .SingleInstance(); + + builder + .RegisterType() + .As() + .SingleInstance(); + + builder.RegisterType().As().SingleInstance(); + + builder.RegisterType().As().SingleInstance(); + + builder + .RegisterType() + .As() + .SingleInstance(); + if (OperatingSystem.IsWindows()) { - services.AddSingleton(); + builder + .RegisterType() + .As() + .SingleInstance(); } else if (OperatingSystem.IsMacOS()) { - services.AddSingleton(); + builder + .RegisterType() + .As() + .SingleInstance(); } else { - services.AddSingleton(); + builder + .RegisterType() + .As() + .SingleInstance(); } } - var builder = new ContainerBuilder(); - builder.Populate(services); - container = builder.Build(); } From 82e736755b6b707836d5b52a29dec010101dcab7 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sun, 11 Oct 2026 00:42:21 -0400 Subject: [PATCH 36/93] Add SilkTouchHost class --- sources/SilkTouch/SilkTouch/Program.cs | 319 +--------------- sources/SilkTouch/SilkTouch/SilkTouchHost.cs | 339 ++++++++++++++++++ sources/SilkTouch/SilkTouch/SilkTouchJob.cs | 23 +- .../SilkTouchRegistrationExtensions.cs | 1 + 4 files changed, 354 insertions(+), 328 deletions(-) create mode 100644 sources/SilkTouch/SilkTouch/SilkTouchHost.cs diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index 4d9b5e2f83..f01ceef3c6 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -1,326 +1,9 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.CommandLine; -using Autofac; -using Autofac.Extensions.DependencyInjection; -using Microsoft.Build.Locator; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Logging.Console; -using Silk.NET.SilkTouch.Caching; -using Silk.NET.SilkTouch.Clang; -using Silk.NET.SilkTouch.Mods; -using Silk.NET.SilkTouch.Mods.Bakery; -using Silk.NET.SilkTouch.Sources; - namespace Silk.NET.SilkTouch; internal static class Program { - private static Option LoggingOption { get; } = - new(["--log-level", "-l"], () => LogLevel.Information); - - private static Option SkipOption { get; } = - new(["--skip", "-s"], Array.Empty) - { - Description = "A list of job names to skip. Takes precedence over --only.", - Arity = ArgumentArity.ZeroOrMore, - }; - - private static Option OnlyOption { get; } = - new(["--only", "-o"], Array.Empty) - { - Description = "A list of job names to run.", - Arity = ArgumentArity.ZeroOrMore, - }; - - private static Option JobsOption { get; } = - new(["--max-jobs", "-j"], () => Environment.ProcessorCount) - { - Description = "Maximum number of parallel jobs.", - }; - - public static async Task Main(string[] args) - { - var rootCommand = new RootCommand { LoggingOption, SkipOption, OnlyOption, JobsOption }; - - rootCommand.SetHandler(async ctx => - { - // Register MSBuild - MSBuildLocator.RegisterDefaults(); - - // TODO: Cleanup. Probably move into a SilkTouchHost class. - ILifetimeScope container; - { - var services = new ServiceCollection() - .AddLogging(builder => - { - builder.AddSimpleConsole(opts => - { - opts.SingleLine = true; - opts.ColorBehavior = Console.IsOutputRedirected - ? LoggerColorBehavior.Disabled - : LoggerColorBehavior.Default; - opts.IncludeScopes = false; - }); - builder.SetMinimumLevel(ctx.ParseResult.GetValueForOption(LoggingOption)); - }) - .AddOptions(); - - var builder = new ContainerBuilder(); - builder.Populate(services); - - { - builder - .RegisterType() - .As() - .SingleInstance(); - - builder.RegisterType().SingleInstance(); - - builder - .RegisterType() - .AsSelf() - .AsImplementedInterfaces() - .SingleInstance(); - - builder - .RegisterType() - .As() - .SingleInstance(); - - builder.RegisterType().As().SingleInstance(); - - builder.RegisterType().As().SingleInstance(); - - builder - .RegisterType() - .As() - .SingleInstance(); - - if (OperatingSystem.IsWindows()) - { - builder - .RegisterType() - .As() - .SingleInstance(); - } - else if (OperatingSystem.IsMacOS()) - { - builder - .RegisterType() - .As() - .SingleInstance(); - } - else - { - builder - .RegisterType() - .As() - .SingleInstance(); - } - } - - container = builder.Build(); - } - - var jobKeysToRun = new HashSet( - ctx.ParseResult.GetValueForOption(OnlyOption) ?? [], - StringComparer.OrdinalIgnoreCase - ); - - var jobKeysToSkip = new HashSet( - ctx.ParseResult.GetValueForOption(SkipOption) ?? [], - StringComparer.OrdinalIgnoreCase - ); - - // TODO: Move to separate project/single file app - var allJobs = new List() - { - new( - "Vulkan", - new SilkTouchConfiguration - { - Solution = "Silk.NET.slnx", - SourceProject = "sources/Vulkan/Vulkan/Silk.NET.Vulkan.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", - }, - container, - builder => - { - builder - .SilkTouch() - .Mods(context => - context - .AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/vulkan/**/generate.rsp", - ], - InputSourceRoot = "sources/Vulkan", - InputTestRoot = "tests/Vulkan", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", - Namespace = "Silk.NET.Vulkan", - StructureTypes = ["VkStructureType"], - FlagsTypes = ["VkFlags", "VkFlags64"], - ExcludeVendorSuffixIdentification = - [ - "VK_VENDOR_ID_VIV", - "VK_VENDOR_ID_VSI", - "VK_VENDOR_ID_MESA", - ], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .AddApiProfiles( - new() - { - Profiles = - [ - new() - { - Profile = "vulkan", - SourceSubdirectory = "vulkan", - }, - ], - } - ) - .InterceptNativeFunctions( - new() - { - NativeFunctionNames = - [ - "vkCreateInstance", - "vkCreateDevice", - ], - } - ) - .TransformFunctions( - new() { BoolTypes = new() { ["VkBool32"] = null } } - ) - .TransformProperties( - new() { BoolTypes = new() { ["VkBool32"] = null } } - ) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["PFN_vk", "vk"], - PrefixOverrides = new() - { - ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", - ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", - ["VkMemoryDecompressionMethodFlagsEXT"] = - "VK_MEMORY_DECOMPRESSION_METHOD", - }, - } - ) - .PrettifyNames( - new() - { - NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() - { - Order = 1, - }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosHandleType"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() - { - AddNoneMemberToFlags = true, - RemoveMembers = - [ - new() - { - MemberName = "MaxEnum", - MemberValue = "0x7FFFFFFF", - }, - new() - { - MemberName = "Invalid", - MemberValue = "0x7FFFFFFF", - }, - ], - CoerceBackingTypes = TransformEnums - .EnumBackingTypePreference - .PreferUnsigned, - RewriteMemberValues = true, - } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateFactoryPartial = true, - }, - ], - } - ) - .StripAttributes( - new() - { - Remove = ["NativeTypeName", "NameAffix", "Transformed"], - } - ) - ); - } - ), - }; - - var jobsToRun = allJobs.Where(job => - { - if (jobKeysToSkip.Contains(job.Key)) - { - return false; - } - - return jobKeysToRun.Count == 0 || jobKeysToRun.Contains(job.Key); - }); - - await Parallel.ForEachAsync( - jobsToRun, - new ParallelOptions - { - MaxDegreeOfParallelism = ctx.ParseResult.GetValueForOption(JobsOption), - }, - async (job, ct) => - { - await job.RunAsync(ct); - } - ); - - // Workaround for dangling logging/socket engine threads - Environment.Exit(0); - }); - - await rootCommand.InvokeAsync(args); - } + public static async Task Main(string[] args) => await SilkTouchHost.Create().RunAsync(args); } diff --git a/sources/SilkTouch/SilkTouch/SilkTouchHost.cs b/sources/SilkTouch/SilkTouch/SilkTouchHost.cs new file mode 100644 index 0000000000..c2ebec637c --- /dev/null +++ b/sources/SilkTouch/SilkTouch/SilkTouchHost.cs @@ -0,0 +1,339 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.CommandLine; +using System.CommandLine.Invocation; +using Autofac; +using Autofac.Extensions.DependencyInjection; +using Microsoft.Build.Locator; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Console; +using Silk.NET.SilkTouch.Caching; +using Silk.NET.SilkTouch.Clang; +using Silk.NET.SilkTouch.Mods; +using Silk.NET.SilkTouch.Mods.Bakery; +using Silk.NET.SilkTouch.Sources; + +namespace Silk.NET.SilkTouch; + +/// +/// Represents a set of configured SilkTouch jobs and the ability to run them. +/// +public class SilkTouchHost +{ + private static Option LoggingOption { get; } = + new(["--log-level", "-l"], () => LogLevel.Information); + + private static Option SkipOption { get; } = + new(["--skip", "-s"], Array.Empty) + { + Description = "A list of job names to skip. Takes precedence over --only.", + Arity = ArgumentArity.ZeroOrMore, + }; + + private static Option OnlyOption { get; } = + new(["--only", "-o"], Array.Empty) + { + Description = "A list of job names to run.", + Arity = ArgumentArity.ZeroOrMore, + }; + + private static Option JobsOption { get; } = + new(["--max-jobs", "-j"], () => Environment.ProcessorCount) + { + Description = "Maximum number of parallel jobs.", + }; + + private SilkTouchHost() { } + + /// + /// Creates a new . + /// + public static SilkTouchHost Create() => new(); + + /// + /// Runs the with the provided CLI arguments. + /// + public async Task RunAsync(string[] args) + { + var rootCommand = new RootCommand { LoggingOption, SkipOption, OnlyOption, JobsOption }; + + rootCommand.SetHandler(async ctx => + { + // Register MSBuild + MSBuildLocator.RegisterDefaults(); + + // Build container + ILifetimeScope container; + { + var builder = new ContainerBuilder(); + Configure(builder, ctx); + container = builder.Build(); + } + + var jobKeysToRun = new HashSet( + ctx.ParseResult.GetValueForOption(OnlyOption) ?? [], + StringComparer.OrdinalIgnoreCase + ); + + var jobKeysToSkip = new HashSet( + ctx.ParseResult.GetValueForOption(SkipOption) ?? [], + StringComparer.OrdinalIgnoreCase + ); + + // TODO: Move to separate project/single file app + var allJobs = new List() + { + new( + "Vulkan", + new SilkTouchConfiguration + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/Vulkan/Vulkan/Silk.NET.Vulkan.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + container, + builder => + { + builder + .SilkTouch() + .Mods(context => + context + .AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = + [ + "eng/silktouch/vulkan/**/generate.rsp", + ], + InputSourceRoot = "sources/Vulkan", + InputTestRoot = "tests/Vulkan", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", + Namespace = "Silk.NET.Vulkan", + StructureTypes = ["VkStructureType"], + FlagsTypes = ["VkFlags", "VkFlags64"], + ExcludeVendorSuffixIdentification = + [ + "VK_VENDOR_ID_VIV", + "VK_VENDOR_ID_VSI", + "VK_VENDOR_ID_MESA", + ], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .AddApiProfiles( + new() + { + Profiles = + [ + new() + { + Profile = "vulkan", + SourceSubdirectory = "vulkan", + }, + ], + } + ) + .InterceptNativeFunctions( + new() + { + NativeFunctionNames = + [ + "vkCreateInstance", + "vkCreateDevice", + ], + } + ) + .TransformFunctions( + new() { BoolTypes = new() { ["VkBool32"] = null } } + ) + .TransformProperties( + new() { BoolTypes = new() { ["VkBool32"] = null } } + ) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["PFN_vk", "vk"], + PrefixOverrides = new() + { + ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", + ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", + ["VkMemoryDecompressionMethodFlagsEXT"] = + "VK_MEMORY_DECOMPRESSION_METHOD", + }, + } + ) + .PrettifyNames( + new() + { + NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() + { + Order = 1, + }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosHandleType"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() + { + AddNoneMemberToFlags = true, + RemoveMembers = + [ + new() + { + MemberName = "MaxEnum", + MemberValue = "0x7FFFFFFF", + }, + new() + { + MemberName = "Invalid", + MemberValue = "0x7FFFFFFF", + }, + ], + CoerceBackingTypes = TransformEnums + .EnumBackingTypePreference + .PreferUnsigned, + RewriteMemberValues = true, + } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() + { + Remove = ["NativeTypeName", "NameAffix", "Transformed"], + } + ) + ); + } + ), + }; + + var jobsToRun = allJobs.Where(job => + { + if (jobKeysToSkip.Contains(job.Key)) + { + return false; + } + + return jobKeysToRun.Count == 0 || jobKeysToRun.Contains(job.Key); + }); + + await Parallel.ForEachAsync( + jobsToRun, + new ParallelOptions + { + MaxDegreeOfParallelism = ctx.ParseResult.GetValueForOption(JobsOption), + }, + async (job, ct) => + { + await job.RunAsync(ct); + } + ); + + // Workaround for dangling logging/socket engine threads + Environment.Exit(0); + }); + + await rootCommand.InvokeAsync(args); + } + + private void Configure(ContainerBuilder builder, InvocationContext ctx) + { + var services = new ServiceCollection() + .AddLogging(builder => + { + builder.AddSimpleConsole(opts => + { + opts.SingleLine = true; + opts.ColorBehavior = Console.IsOutputRedirected + ? LoggerColorBehavior.Disabled + : LoggerColorBehavior.Default; + opts.IncludeScopes = false; + }); + + builder.SetMinimumLevel(ctx.ParseResult.GetValueForOption(LoggingOption)); + }) + .AddOptions(); + + builder.Populate(services); + + { + builder + .RegisterType() + .As() + .SingleInstance(); + + builder.RegisterType().SingleInstance(); + + builder + .RegisterType() + .AsSelf() + .AsImplementedInterfaces() + .SingleInstance(); + + builder.RegisterType().As().SingleInstance(); + + builder.RegisterType().As().SingleInstance(); + + builder.RegisterType().As().SingleInstance(); + + builder.RegisterType().As().SingleInstance(); + + if (OperatingSystem.IsWindows()) + { + builder + .RegisterType() + .As() + .SingleInstance(); + } + else if (OperatingSystem.IsMacOS()) + { + builder + .RegisterType() + .As() + .SingleInstance(); + } + else + { + builder + .RegisterType() + .As() + .SingleInstance(); + } + } + } +} diff --git a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs index 7c5738d1ba..719885b93a 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs @@ -10,7 +10,7 @@ namespace Silk.NET.SilkTouch; /// -/// TODO +/// Represents an individual SilkTouch bindings generation job. /// public class SilkTouchJob : IDisposable { @@ -21,12 +21,12 @@ public class SilkTouchJob : IDisposable private readonly IModContextFactory _modContextFactory; /// - /// TODO + /// The job key. /// public string Key { get; } /// - /// TODO + /// The job config. /// public SilkTouchConfiguration Config { get; private set; } @@ -36,17 +36,20 @@ public class SilkTouchJob : IDisposable public IReadOnlyList Mods { get; } /// - /// TODO + /// Creates a new . /// - /// - /// // TODO - /// - /// + /// The job key. + /// The job config. + /// The parent container. Should be the one from the . + /// + /// The action that configures the dependency container used by this job. + /// You'll want to register SilkTouch mods during this action. See . + /// public SilkTouchJob( string key, SilkTouchConfiguration config, ILifetimeScope parentContainer, - Action build + Action configure ) { Key = key; @@ -54,7 +57,7 @@ Action build _logger = parentContainer.Resolve>(); _inputResolver = parentContainer.Resolve(); - _container = parentContainer.BeginLifetimeScope(build); + _container = parentContainer.BeginLifetimeScope(configure); _modContextFactory = _container.Resolve(); Mods = _container.Resolve(); diff --git a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs index ddd6371c07..4a45d923a8 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs @@ -15,6 +15,7 @@ namespace Silk.NET.SilkTouch; public static class SilkTouchRegistrationExtensions { /// + /// Entrypoint to the rest of the SilkTouch registration methods. /// Begins a . /// public static SilkTouchRegistrationContext SilkTouch(this ContainerBuilder builder) => From e879ba66587ea885ac9dad6343c7d1b80579d192 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sun, 11 Oct 2026 00:51:48 -0400 Subject: [PATCH 37/93] Move Vulkan job definition to Program from SilkTouchHost --- sources/SilkTouch/SilkTouch/Program.cs | 141 +++++++++++++- sources/SilkTouch/SilkTouch/SilkTouchHost.cs | 191 +++---------------- 2 files changed, 169 insertions(+), 163 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index f01ceef3c6..afd9bba41b 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -1,9 +1,148 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using Silk.NET.SilkTouch.Mods; + namespace Silk.NET.SilkTouch; internal static class Program { - public static async Task Main(string[] args) => await SilkTouchHost.Create().RunAsync(args); + public static async Task Main(string[] args) => + await SilkTouchHost + .Create() + .DefineJob( + "Vulkan", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/Vulkan/Vulkan/Silk.NET.Vulkan.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(context => + context + .AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = + [ + "eng/silktouch/vulkan/**/generate.rsp", + ], + InputSourceRoot = "sources/Vulkan", + InputTestRoot = "tests/Vulkan", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", + Namespace = "Silk.NET.Vulkan", + StructureTypes = ["VkStructureType"], + FlagsTypes = ["VkFlags", "VkFlags64"], + ExcludeVendorSuffixIdentification = + [ + "VK_VENDOR_ID_VIV", + "VK_VENDOR_ID_VSI", + "VK_VENDOR_ID_MESA", + ], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "vulkan", SourceSubdirectory = "vulkan" }, + ], + } + ) + .InterceptNativeFunctions( + new() + { + NativeFunctionNames = ["vkCreateInstance", "vkCreateDevice"], + } + ) + .TransformFunctions(new() { BoolTypes = new() { ["VkBool32"] = null } }) + .TransformProperties( + new() { BoolTypes = new() { ["VkBool32"] = null } } + ) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["PFN_vk", "vk"], + PrefixOverrides = new() + { + ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", + ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", + ["VkMemoryDecompressionMethodFlagsEXT"] = + "VK_MEMORY_DECOMPRESSION_METHOD", + }, + } + ) + .PrettifyNames( + new() + { + NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosHandleType"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() + { + AddNoneMemberToFlags = true, + RemoveMembers = + [ + new() + { + MemberName = "MaxEnum", + MemberValue = "0x7FFFFFFF", + }, + new() + { + MemberName = "Invalid", + MemberValue = "0x7FFFFFFF", + }, + ], + CoerceBackingTypes = TransformEnums + .EnumBackingTypePreference + .PreferUnsigned, + RewriteMemberValues = true, + } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ) + .RunAsync(args); } diff --git a/sources/SilkTouch/SilkTouch/SilkTouchHost.cs b/sources/SilkTouch/SilkTouch/SilkTouchHost.cs index c2ebec637c..970e3cc96c 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchHost.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchHost.cs @@ -45,6 +45,8 @@ public class SilkTouchHost Description = "Maximum number of parallel jobs.", }; + private readonly Dictionary _jobDefinitions = []; + private SilkTouchHost() { } /// @@ -52,6 +54,19 @@ private SilkTouchHost() { } /// public static SilkTouchHost Create() => new(); + /// + /// Defines a SilkTouch bindings generation job. + /// + public SilkTouchHost DefineJob( + string key, + SilkTouchConfiguration config, + Action configure + ) + { + _jobDefinitions.Add(key, new JobDefinition(config, configure)); + return this; + } + /// /// Runs the with the provided CLI arguments. /// @@ -82,167 +97,7 @@ public async Task RunAsync(string[] args) StringComparer.OrdinalIgnoreCase ); - // TODO: Move to separate project/single file app - var allJobs = new List() - { - new( - "Vulkan", - new SilkTouchConfiguration - { - Solution = "Silk.NET.slnx", - SourceProject = "sources/Vulkan/Vulkan/Silk.NET.Vulkan.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", - }, - container, - builder => - { - builder - .SilkTouch() - .Mods(context => - context - .AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/vulkan/**/generate.rsp", - ], - InputSourceRoot = "sources/Vulkan", - InputTestRoot = "tests/Vulkan", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", - Namespace = "Silk.NET.Vulkan", - StructureTypes = ["VkStructureType"], - FlagsTypes = ["VkFlags", "VkFlags64"], - ExcludeVendorSuffixIdentification = - [ - "VK_VENDOR_ID_VIV", - "VK_VENDOR_ID_VSI", - "VK_VENDOR_ID_MESA", - ], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .AddApiProfiles( - new() - { - Profiles = - [ - new() - { - Profile = "vulkan", - SourceSubdirectory = "vulkan", - }, - ], - } - ) - .InterceptNativeFunctions( - new() - { - NativeFunctionNames = - [ - "vkCreateInstance", - "vkCreateDevice", - ], - } - ) - .TransformFunctions( - new() { BoolTypes = new() { ["VkBool32"] = null } } - ) - .TransformProperties( - new() { BoolTypes = new() { ["VkBool32"] = null } } - ) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["PFN_vk", "vk"], - PrefixOverrides = new() - { - ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", - ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", - ["VkMemoryDecompressionMethodFlagsEXT"] = - "VK_MEMORY_DECOMPRESSION_METHOD", - }, - } - ) - .PrettifyNames( - new() - { - NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() - { - Order = 1, - }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosHandleType"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() - { - AddNoneMemberToFlags = true, - RemoveMembers = - [ - new() - { - MemberName = "MaxEnum", - MemberValue = "0x7FFFFFFF", - }, - new() - { - MemberName = "Invalid", - MemberValue = "0x7FFFFFFF", - }, - ], - CoerceBackingTypes = TransformEnums - .EnumBackingTypePreference - .PreferUnsigned, - RewriteMemberValues = true, - } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateFactoryPartial = true, - }, - ], - } - ) - .StripAttributes( - new() - { - Remove = ["NativeTypeName", "NameAffix", "Transformed"], - } - ) - ); - } - ), - }; - - var jobsToRun = allJobs.Where(job => + var jobsToRun = _jobDefinitions.Where(job => { if (jobKeysToSkip.Contains(job.Key)) { @@ -258,8 +113,15 @@ await Parallel.ForEachAsync( { MaxDegreeOfParallelism = ctx.ParseResult.GetValueForOption(JobsOption), }, - async (job, ct) => + async (jobKvp, ct) => { + using var job = new SilkTouchJob( + jobKvp.Key, + jobKvp.Value.Config, + container, + builder => jobKvp.Value.Configure.Invoke(builder.SilkTouch()) + ); + await job.RunAsync(ct); } ); @@ -336,4 +198,9 @@ private void Configure(ContainerBuilder builder, InvocationContext ctx) } } } + + private record JobDefinition( + SilkTouchConfiguration Config, + Action Configure + ); } From e855ec523641a22c680cf5677df34a05115318b2 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sun, 11 Oct 2026 00:53:37 -0400 Subject: [PATCH 38/93] Add todos and edit docs --- sources/SilkTouch/SilkTouch/Program.cs | 2 ++ sources/SilkTouch/SilkTouch/SilkTouchHost.cs | 3 +++ 2 files changed, 5 insertions(+) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index afd9bba41b..78c4b6e67e 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -5,6 +5,8 @@ namespace Silk.NET.SilkTouch; +// TODO: Move to separate project/single file app +// TODO: Also change SilkTouch to be a library project instead of executable internal static class Program { public static async Task Main(string[] args) => diff --git a/sources/SilkTouch/SilkTouch/SilkTouchHost.cs b/sources/SilkTouch/SilkTouch/SilkTouchHost.cs index 970e3cc96c..31ce0761be 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchHost.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchHost.cs @@ -133,6 +133,9 @@ await Parallel.ForEachAsync( await rootCommand.InvokeAsync(args); } + /// + /// Dependencies defined here will be shared by all jobs. + /// private void Configure(ContainerBuilder builder, InvocationContext ctx) { var services = new ServiceCollection() From 9674bf88022ae68369947552b156e912aa28c83c Mon Sep 17 00:00:00 2001 From: William Chen Date: Sun, 11 Oct 2026 00:54:49 -0400 Subject: [PATCH 39/93] Rename parameter --- sources/SilkTouch/SilkTouch/Program.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/SilkTouch/Program.cs index 78c4b6e67e..7a80c8bc1a 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/SilkTouch/Program.cs @@ -21,9 +21,8 @@ await SilkTouchHost DefaultLicenseHeader = "eng/silktouch/header.txt", }, context => - context.Mods(context => - context - .AddIncludes(new()) + context.Mods(mods => + mods.AddIncludes(new()) .ClangScraper( new() { From e2f5d7ca1be044c08fca0f448358ee69d5baf664 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sun, 11 Oct 2026 03:30:07 -0400 Subject: [PATCH 40/93] Add new Silk.NET.SilkTouch.Jobs project --- Silk.NET.slnx | 189 +++++++++--------- .../SilkTouch/{SilkTouch => Jobs}/Program.cs | 2 +- .../Jobs/Silk.NET.SilkTouch.Jobs.csproj | 26 +++ .../SilkTouch/Silk.NET.SilkTouch.csproj | 16 +- 4 files changed, 132 insertions(+), 101 deletions(-) rename sources/SilkTouch/{SilkTouch => Jobs}/Program.cs (99%) create mode 100644 sources/SilkTouch/Jobs/Silk.NET.SilkTouch.Jobs.csproj diff --git a/Silk.NET.slnx b/Silk.NET.slnx index 8ee5d577a6..2e4d1995ae 100644 --- a/Silk.NET.slnx +++ b/Silk.NET.slnx @@ -1,99 +1,100 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sources/SilkTouch/SilkTouch/Program.cs b/sources/SilkTouch/Jobs/Program.cs similarity index 99% rename from sources/SilkTouch/SilkTouch/Program.cs rename to sources/SilkTouch/Jobs/Program.cs index 7a80c8bc1a..565523432a 100644 --- a/sources/SilkTouch/SilkTouch/Program.cs +++ b/sources/SilkTouch/Jobs/Program.cs @@ -3,7 +3,7 @@ using Silk.NET.SilkTouch.Mods; -namespace Silk.NET.SilkTouch; +namespace Silk.NET.SilkTouch.Jobs; // TODO: Move to separate project/single file app // TODO: Also change SilkTouch to be a library project instead of executable diff --git a/sources/SilkTouch/Jobs/Silk.NET.SilkTouch.Jobs.csproj b/sources/SilkTouch/Jobs/Silk.NET.SilkTouch.Jobs.csproj new file mode 100644 index 0000000000..c788923697 --- /dev/null +++ b/sources/SilkTouch/Jobs/Silk.NET.SilkTouch.Jobs.csproj @@ -0,0 +1,26 @@ + + + + net10.0 + Exe + $(NETCoreSdkRuntimeIdentifier) + true + + + + + + + + + + diff --git a/sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.csproj b/sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.csproj index a29df0b7e8..afc4f29d09 100644 --- a/sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.csproj +++ b/sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.csproj @@ -1,10 +1,7 @@ - net10.0 - Exe - $(NETCoreSdkRuntimeIdentifier) true @@ -15,8 +12,16 @@ - - + + @@ -39,5 +44,4 @@ - From 67fd5f67eab179a79afcb635587f466be13c23b3 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sun, 11 Oct 2026 03:40:23 -0400 Subject: [PATCH 41/93] Migrate generator.json jobs to SilkTouch.Jobs --- Silk.NET.slnx | 1 - generator.json | 845 ------------------------------ sources/SilkTouch/Jobs/Program.cs | 697 +++++++++++++++++++++++- 3 files changed, 693 insertions(+), 850 deletions(-) delete mode 100644 generator.json diff --git a/Silk.NET.slnx b/Silk.NET.slnx index 2e4d1995ae..759ceabb08 100644 --- a/Silk.NET.slnx +++ b/Silk.NET.slnx @@ -37,7 +37,6 @@ - diff --git a/generator.json b/generator.json deleted file mode 100644 index ade9e36d58..0000000000 --- a/generator.json +++ /dev/null @@ -1,845 +0,0 @@ -{ - "Jobs": { - "Microsoft": { - "Solution": "Silk.NET.slnx", - "SourceProject": "sources/Win32/Win32/Silk.NET.Win32.csproj", - "TestProject": "tests/Win32/Win32/Silk.NET.Win32.UnitTests.csproj", - "DefaultLicenseHeader": "eng/silktouch/header.txt", - "Mods": [ - "AddIncludes", - "ClangScraper", - "ChangeNamespace" - ], - "ClangScraper": { - "ClangSharpResponseFiles": [ - "eng/submodules/terrafx.interop.windows/generation/**/generate.rsp" - ], - "ManualOverrides": { - "sources/Windows/um/icm/Windows.gen.cs": "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/um/icm/Windows.cs", - "sources/Gdiplus/um/gdiplustypes/GpRect.gen.cs": "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRect.cs", - "sources/Gdiplus/um/gdiplustypes/GpRectF.gen.cs": "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRectF.cs", - "sources/Gdiplus/um/gdiplustypes/GpPathData.gen.cs": "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpPathData.cs", - "sources/Windows/shared/strsafe/Windows.gen.cs": "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/shared/strsafe/Windows.gen.cs" - }, - "InputSourceRoot": "eng/submodules/terrafx.interop.windows/sources/Interop/Windows", - "InputTestRoot": "eng/submodules/terrafx.interop.windows/tests/Interop/Windows", - "SkipScrapeIf": [ - "!win" - ] - }, - "ChangeNamespace": { - "Mappings": { - "TerraFX.Interop.(.*)": "Silk.NET.$1" - } - } - }, - "SDL": { - "SourceProject": "sources/SDL/SDL/Silk.NET.SDL.csproj", - "TestProject": "tests/SDL/SDL/Silk.NET.SDL.UnitTests.csproj", - "Solution": "Silk.NET.slnx", - "DefaultLicenseHeader": "eng/silktouch/header.txt", - "Mods": [ - "AddIncludes", - "ClangScraper", - "MarkNativeNames", - "ExtractHandles", - "ExtractNestedTypes", - "ExtractEnumConstants", - "ExtractFunctionPointers", - "TransformHandles", - "TransformFunctions", - "TransformProperties", - "IdentifySharedPrefixes", - "PrettifyNames", - "TransformEnums", - "AddVTables", - "StripAttributes" - ], - "ClangScraper": { - "ClangSharpResponseFiles": [ - "eng/silktouch/sdl/**/generate.rsp" - ], - "InputSourceRoot": "sources/SDL", - "InputTestRoot": "tests/SDL" - }, - "TransformHandles": { - "UseDsl": true - }, - "TransformFunctions": { - "BoolTypes": { - "SDL_bool": null - } - }, - "TransformProperties": { - "BoolTypes": { - "SDL_bool": null - } - }, - "IdentifySharedPrefixes": { - "GlobalPrefixHints": ["SDL"] - }, - "PrettifyNames": { - "Affixes": { - "SharedPrefix": { - "Remove": true - } - } - }, - "TransformEnums": { - "AddNoneMemberToFlags": true, - "RewriteMemberValues": true - }, - "StripAttributes": { - "Remove": [ - "NativeTypeName", - "NameAffix", - "Transformed" - ] - } - }, - "OpenGL": { - "SourceProject": "sources/OpenGL/OpenGL/Silk.NET.OpenGL.csproj", - "Solution": "Silk.NET.slnx", - "DefaultLicenseHeader": "eng/silktouch/header.txt", - "Mods": [ - "AddIncludes", - "ClangScraper", - "MarkNativeNames", - "AddApiProfiles", - "BakeSourceSets", - "AddOpaqueStructs", - "MixKhronosData", - "TransformHandles", - "TransformFunctions", - "IdentifySharedPrefixes", - "PrettifyNames", - "TransformEnums", - "AddVTables", - "StripAttributes" - ], - "ClangScraper": { - "ClangSharpResponseFiles": [ - "eng/silktouch/opengl/**/generate.rsp" - ], - "InputSourceRoot": "sources/OpenGL", - "InputTestRoot": "tests/OpenGL" - }, - "AddApiProfiles": { - "Profiles": [ - { - "Profile": "gl", - "SourceSubdirectory": "glcompat" - }, - { - "Profile": "glcore", - "SourceSubdirectory": "glcore", - "MinVersion": "3.2" - }, - { - "Profile": "gles1", - "SourceSubdirectory": "gles1", - "MaxVersion": "2.0" - }, - { - "Profile": "gles2", - "SourceSubdirectory": "gles2", - "MinVersion": "2.0" - } - ] - }, - "BakeSourceSets": { - "SourceSets": { - "glcompat": "gl", - "glcore": "gl", - "gles1": "gl", - "gles2": "gl" - } - }, - "AddOpaqueStructs": { - "Names": [ - "GLsync" - ] - }, - "MixKhronosData": { - "SpecPath": "eng/submodules/opengl-registry/xml/gl.xml", - "Namespace": "Silk.NET.OpenGL", - "TypeMap": { - "GLenum": "uint", - "TraceMaskMESA": "uint", - "PathRenderingTokenNV": "byte", - "PathCoordType": "byte" - }, - "IdentifyFunctionDataTypes": true, - "IdentifyEnumTypeNonExclusiveVendors": true, - "IdentifyEnumMemberImpliedVendors": true - }, - "AddVTables": { - "VTables": [ - { - "Kind": "DllImport" - }, - { - "Kind": "StaticWrapper" - }, - { - "Kind": "ThisThread", - "IsDefault": true, - "GenerateMakeCurrentPartial": true - } - ] - }, - "IdentifySharedPrefixes": { - "GlobalPrefixHints": ["gl"], - "PrefixOverrides": { - "SyncObjectMask": "GL_SYNC", - "OcclusionQueryParameterNameNV": "GL", - "TexStorageAttribs": "GL", - "ContainerType": "GL", - "SeparableTargetEXT": "GL" - } - }, - "PrettifyNames": { - "Affixes": { - "HandleType": { - "Order": 1 - }, - "FunctionPointerDelegateType": { - "Order": 1 - }, - "KhronosVendor": { - "Order": -1 - }, - "KhronosFunctionDataType": { - "IsDiscriminator": true - }, - "KhronosImpliedVendor": { - "Remove": true - }, - "KhronosNonExclusiveVendor": { - "Remove": true - }, - "SharedPrefix": { - "Remove": true - } - } - }, - "TransformEnums": { - "AddNoneMemberToFlags": true, - "RewriteMemberValues": true - }, - "TransformHandles": { - "UseDsl": true - }, - "TransformFunctions": { - "BoolTypes": { - "GLboolean": null - } - }, - "TransformProperties": { - "BoolTypes": { - "GLboolean": null - } - }, - "StripAttributes": { - "Remove": [ - "NativeTypeName", - "NameAffix", - "Transformed" - ] - } - }, - "OpenCL": { - "SourceProject": "sources/OpenCL/OpenCL/Silk.NET.OpenCL.csproj", - "Solution": "Silk.NET.slnx", - "DefaultLicenseHeader": "eng/silktouch/header.txt", - "Mods": [ - "AddIncludes", - "ClangScraper", - "MarkNativeNames", - "AddApiProfiles", - "ExtractHandles", - "ExtractNestedTypes", - "ExtractFunctionPointers", - "MixKhronosData", - "TransformHandles", - "TransformFunctions", - "IdentifySharedPrefixes", - "PrettifyNames", - "TransformEnums", - "AddVTables", - "StripAttributes" - ], - "ClangScraper": { - "ClangSharpResponseFiles": [ - "eng/silktouch/opencl/**/generate.rsp" - ], - "InputSourceRoot": "sources/OpenCL", - "InputTestRoot": "tests/OpenCL" - }, - "MixKhronosData": { - "SpecPath": "eng/submodules/opencl-docs/xml/cl.xml", - "Namespace": "Silk.NET.OpenCL", - "TypeMap": { - "cl_bitfield": "ulong", - "cl_properties": "ulong", - "intptr_t": "long", - "ErrorCodes": "int", - "cl_affinity_domain_ext": "uint", - "clCommandExecutionStatus": "uint", - "cl_compiler_mode_altera": "uint", - "cl_motion_estimation_desc_intel.mb_block_type": "uint", - "cl_motion_estimation_desc_intel.subpixel_mode": "uint", - "cl_motion_estimation_desc_intel.sad_adjust_mode": "uint", - "cl_motion_estimation_desc_intel.search_path_type": "uint", - "cl_arm_device_svm_capabilities.flags": "uint", - "cl_arm_svm_alloc.flags": "uint", - "cl_intel_advanced_motion_estimation.flags": "uint", - "cl_intel_advanced_motion_estimation.search_cost_penalty": "uint", - "cl_intel_advanced_motion_estimation.search_cost_precision": "uint", - "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.luma_block": "uint", - "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.chroma_block": "uint", - "cl_intel_advanced_motion_estimation.skip_block_type": "uint", - "cl_intel_advanced_motion_estimation.device_me_version": "uint", - "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel": "uint", - "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel.2": "uint", - "cl_intel_device_side_avc_motion_estimation.version": "uint", - "cl_intel_device_side_avc_motion_estimation.major": "uint", - "cl_intel_device_side_avc_motion_estimation.minor": "uint", - "cl_intel_device_side_avc_motion_estimation.major.dir": "uint", - "cl_intel_device_side_avc_motion_estimation.partition": "uint", - "cl_intel_device_side_avc_motion_estimation.window": "uint", - "cl_intel_device_side_avc_motion_estimation.adjust": "uint", - "cl_intel_device_side_avc_motion_estimation.subpixel": "uint", - "cl_intel_device_side_avc_motion_estimation.cost.precision": "uint", - "cl_intel_device_side_avc_motion_estimation.weight": "uint", - "cl_intel_device_side_avc_motion_estimation.border": "uint", - "cl_intel_device_side_avc_motion_estimation.skip": "uint", - "cl_intel_device_side_avc_motion_estimation.skip.dir": "uint", - "cl_intel_device_side_avc_motion_estimation.skip.block.based": "uint", - "cl_intel_device_side_avc_motion_estimation.intra": "uint", - "cl_intel_device_side_avc_motion_estimation.intra.luma": "uint", - "cl_intel_device_side_avc_motion_estimation.intra.neighbor": "uint", - "cl_intel_device_side_avc_motion_estimation.luma.predictor": "uint", - "cl_intel_device_side_avc_motion_estimation.frame.dir": "uint", - "cl_intel_device_side_avc_motion_estimation.slice": "uint", - "cl_intel_device_side_avc_motion_estimation.scan.dir": "uint", - "cl_command_termination_reason_arm": "uint", - "cl_platform_command_buffer_capabilities_khr": "uint", - "cl_device_command_buffer_capabilities_khr": "uint", - "cl_media_adapter_type_khr": "uint", - "cl_media_adapter_set_khr": "uint", - "host_cache_policy": "uint", - "allocation_type": "uint", - "cl_unified_shared_memory_capabilities_intel": "uint", - "cl_mem_alloc_info_intel": "uint", - "cl_semaphore_type": "uint", - "cl_kernel_workgroup_info": "uint" - }, - "Vendors": [ - "ALTERA" - ], - "IdentifyEnumMemberImpliedVendors": true - }, - "AddVTables": { - "VTables": [ - { - "Kind": "DllImport" - }, - { - "Kind": "StaticWrapper" - }, - { - "Kind": "ThisThread", - "IsDefault": true, - "GenerateFactoryPartial": true - } - ] - }, - "IdentifySharedPrefixes": { - "GlobalPrefixHints": ["cl", "_cl"], - "PrefixOverrides": { - "cl_device_info": "CL_DEVICE", - "cl_context_properties": "CL_CONTEXT", - "cl_device_integer_dot_product_capabilities": "CL_DEVICE_INTEGER_DOT_PRODUCT", - "cl_device_integer_dot_product_capabilities_khr": "CL_DEVICE_INTEGER_DOT_PRODUCT" - } - }, - "PrettifyNames": { - "NameOverrides": { - "CL_DRIVER_VERSION": "DriverVersion", - "CL_DRIVER_UUID": "DriverUuid", - "CL_DRIVER_UUID_KHR": "DriverUuidKHR" - }, - "Affixes": { - "HandleType": { - "Order": 1 - }, - "FunctionPointerDelegateType": { - "Order": 1 - }, - "KhronosVendor": { - "Order": -1, - "Capitalize": true - }, - "KhronosFunctionDataType": { - "IsDiscriminator": true - }, - "KhronosImpliedVendor": { - "Remove": true - }, - "KhronosNonExclusiveVendor": { - "Remove": true - }, - "SharedPrefix": { - "Remove": true - } - } - }, - "TransformEnums": { - "AddNoneMemberToFlags": true, - "RewriteMemberValues": true - }, - "TransformHandles": { - "UseDsl": true - }, - "TransformFunctions": { - "BoolTypes": { - "cl_bool": null - } - }, - "TransformProperties": { - "BoolTypes": { - "cl_bool": null - } - }, - "StripAttributes": { - "Remove": [ - "NativeTypeName", - "NameAffix", - "Transformed" - ] - } - }, - "OpenAL": { - "SourceProject": "sources/OpenAL/OpenAL/Silk.NET.OpenAL.csproj", - "Solution": "Silk.NET.slnx", - "DefaultLicenseHeader": "eng/silktouch/header.txt", - "Mods": [ - "AddIncludes", - "ClangScraper", - "MarkNativeNames", - "ChangeNativeClass", - "AddApiProfiles", - "MixKhronosData", - "ExtractHandles", - "ExtractNestedTypes", - "ExtractEnumConstants", - "ExtractFunctionPointers", - "TransformHandles", - "InterceptNativeFunctions", - "TransformFunctions", - "IdentifySharedPrefixes", - "PrettifyNames", - "TransformEnums", - "AddVTables", - "StripAttributes" - ], - "ClangScraper": { - "ClangSharpResponseFiles": [ - "eng/silktouch/openal*/**/generate.rsp" - ], - "InputSourceRoot": "sources/OpenAL", - "InputTestRoot": "tests/OpenAL" - }, - "ChangeNativeClass": { - "NewClasses": { - "(alc|ALC_).*": "ALContext", - "EFX_REVERB_PRESET_.*": "EfxReverbPreset" - } - }, - "MixKhronosData": { - "SpecPath": "eng/submodules/openal-soft/registry/xml/al.xml", - "Namespace": "Silk.NET.OpenAL", - "TypeMap": { - "ALenum": "uint", - "ALCenum": "uint" - }, - "NonStandardExtensionNomenclature": true, - "Vendors": [ - "SOFT", - "LOKI", - "EXT" - ], - "NonVendorSuffixes": [ - "Direct" - ], - "IdentifyFunctionDataTypes": true, - "IdentifyEnumTypeNonExclusiveVendors": true, - "IdentifyEnumMemberImpliedVendors": true - }, - "InterceptNativeFunctions": { - "NativeFunctionNames": [ - "alcOpenDevice", - "alcMakeContextCurrent" - ] - }, - "AddVTables": { - "VTables": [ - { - "Kind": "DllImport" - }, - { - "Kind": "StaticWrapper" - }, - { - "Kind": "ThisThread", - "IsDefault": true, - "GenerateFactoryPartial": true - } - ] - }, - "IdentifySharedPrefixes": { - "GlobalPrefixHints": ["alc", "al"] - }, - "PrettifyNames": { - "NameOverrides": { - "ALContext": "ALContext", - "EFXEAXREVERBPROPERTIES": "EfxEaxReverbProperties", - "ALCcontextHandle": "ContextHandle", - "ALCdeviceHandle": "DeviceHandle", - "ALBUFFERCALLBACKTYPESOFT": "BufferCallbackSOFT", - "ALCEVENTPROCTYPESOFT": "ContextEventProcSOFT", - "ALEVENTPROCSOFT": "EventProcSOFT", - "ALDEBUGPROCEXT": "DebugProcEXT", - "LPALFOLDBACKCALLBACK": "FoldbackCallback" - }, - "Affixes": { - "HandleType": { - "Order": 1 - }, - "FunctionPointerDelegateType": { - "Order": 1 - }, - "KhronosVendor": { - "Order": -1 - }, - "KhronosFunctionDataType": { - "IsDiscriminator": true - }, - "KhronosImpliedVendor": { - "Remove": true - }, - "KhronosNonExclusiveVendor": { - "Remove": true - }, - "SharedPrefix": { - "Remove": true - } - } - }, - "TransformEnums": { - "AddNoneMemberToFlags": true, - "RewriteMemberValues": true - }, - "TransformFunctions": { - "BoolTypes": { - "ALboolean": null, - "ALCboolean": null - }, - "BenefitOfTheDoubtArrayTransformation": true - }, - "TransformProperties": { - "BoolTypes": { - "ALboolean": null, - "ALCboolean": null - } - }, - "TransformHandles": { - "UseDsl": true - }, - "StripAttributes": { - "Remove": [ - "NativeTypeName", - "NameAffix", - "Transformed" - ] - } - }, - "OpenXR": { - "SourceProject": "sources/OpenXR/OpenXR/Silk.NET.OpenXR.csproj", - "Solution": "Silk.NET.slnx", - "DefaultLicenseHeader": "eng/silktouch/header.txt", - "Mods": [ - "AddIncludes", - "ClangScraper", - "MarkNativeNames", - "ExtractHandles", - "ExtractNestedTypes", - "ExtractFunctionPointers", - "TransformHandles", - "MixKhronosData", - "AddApiProfiles", - "InterceptNativeFunctions", - "TransformFunctions", - "TransformProperties", - "IdentifySharedPrefixes", - "PrettifyNames", - "TransformEnums", - "AddVTables", - "StripAttributes" - ], - "ClangScraper": { - "ClangSharpResponseFiles": [ - "eng/silktouch/openxr/**/generate.rsp" - ], - "InputSourceRoot": "sources/OpenXR", - "InputTestRoot": "tests/OpenXR" - }, - "AddApiProfiles": { - "Profiles": [ - { - "Profile": "openxr", - "SourceSubdirectory": "openxr" - } - ] - }, - "MixKhronosData": { - "SpecPath": "eng/submodules/openxr-sdk/specification/registry/xr.xml", - "Namespace": "Silk.NET.OpenXR", - "StructureTypes": [ - "XrStructureType" - ], - "FlagsTypes": [ - "XrFlags64" - ], - "IdentifyEnumMemberImpliedVendors": true - }, - "InterceptNativeFunctions": { - "NativeFunctionNames": [ - "xrCreateInstance" - ] - }, - "TransformFunctions": { - "BoolTypes": { - "XrBool32": null - } - }, - "TransformProperties": { - "BoolTypes": { - "XrBool32": null - } - }, - "TransformHandles": { - "UseDsl": true - }, - "IdentifySharedPrefixes": { - "GlobalPrefixHints": ["PFN_xr", "xr"], - "PrefixOverrides": { - "XrPerfSettingsNotificationLevelEXT": "XR_PERF_SETTINGS_NOTIF_LEVEL", - "XrSceneMarkerQRCodeSymbolTypeMSFT": "XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE", - "XrStructureType": "XR_TYPE" - } - }, - "PrettifyNames": { - "Affixes": { - "HandleType": { - "Order": 1 - }, - "FunctionPointerDelegateType": { - "Order": 1 - }, - "KhronosVendor": { - "Order": -1 - }, - "KhronosImpliedVendor": { - "Remove": true - }, - "KhronosHandleType": { - "Remove": true - }, - "SharedPrefix": { - "Remove": true - } - } - }, - "TransformEnums": { - "AddNoneMemberToFlags": true, - "RemoveMembers": [ - { - "MemberName": "MaxEnum", - "MemberValue": "0x7FFFFFFF" - } - ], - "CoerceBackingTypes": "PreferUnsigned", - "RewriteMemberValues": true - }, - "AddVTables": { - "VTables": [ - { - "Kind": "DllImport" - }, - { - "Kind": "StaticWrapper" - }, - { - "Kind": "ThisThread", - "IsDefault": true, - "GenerateFactoryPartial": true - } - ] - }, - "StripAttributes": { - "Remove": [ - "NativeTypeName", - "NameAffix", - "Transformed" - ] - } - }, - "Vulkan": { - "SourceProject": "sources/Vulkan/Vulkan/Silk.NET.Vulkan.csproj", - "Solution": "Silk.NET.slnx", - "DefaultLicenseHeader": "eng/silktouch/header.txt", - "Mods": [ - "AddIncludes", - "ClangScraper", - "MarkNativeNames", - "ExtractHandles", - "ExtractNestedTypes", - "ExtractFunctionPointers", - "TransformHandles", - "MixKhronosData", - "AddApiProfiles", - "InterceptNativeFunctions", - "TransformFunctions", - "TransformProperties", - "IdentifySharedPrefixes", - "PrettifyNames", - "TransformEnums", - "AddVTables", - "StripAttributes" - ], - "ClangScraper": { - "ClangSharpResponseFiles": [ - "eng/silktouch/vulkan/**/generate.rsp" - ], - "InputSourceRoot": "sources/Vulkan", - "InputTestRoot": "tests/Vulkan" - }, - "AddApiProfiles": { - "Profiles": [ - { - "Profile": "vulkan", - "SourceSubdirectory": "vulkan" - } - ] - }, - "MixKhronosData": { - "SpecPath": "eng/submodules/vulkan-docs/xml/vk.xml", - "Namespace": "Silk.NET.Vulkan", - "StructureTypes": [ - "VkStructureType" - ], - "FlagsTypes": [ - "VkFlags", - "VkFlags64" - ], - "ExcludeVendorSuffixIdentification": [ - "VK_VENDOR_ID_VIV", - "VK_VENDOR_ID_VSI", - "VK_VENDOR_ID_MESA" - ], - "IdentifyEnumMemberImpliedVendors": true - }, - "InterceptNativeFunctions": { - "NativeFunctionNames": [ - "vkCreateInstance", - "vkCreateDevice" - ] - }, - "TransformFunctions": { - "BoolTypes": { - "VkBool32": null - } - }, - "TransformProperties": { - "BoolTypes": { - "VkBool32": null - } - }, - "TransformHandles": { - "UseDsl": true - }, - "IdentifySharedPrefixes": { - "GlobalPrefixHints": ["PFN_vk", "vk"], - "PrefixOverrides": { - "VkImageCreateFlags2KHR": "VK_IMAGE_CREATE_2", - "VkPipelineCreateFlags2": "VK_PIPELINE_CREATE_2", - "VkMemoryDecompressionMethodFlagsEXT": "VK_MEMORY_DECOMPRESSION_METHOD" - } - }, - "PrettifyNames": { - "NameOverrides": { - "numAABBs": "NumAabbs" - }, - "Affixes": { - "HandleType": { - "Order": 1 - }, - "FunctionPointerDelegateType": { - "Order": 1 - }, - "KhronosVendor": { - "Order": -1 - }, - "KhronosImpliedVendor": { - "Remove": true - }, - "KhronosHandleType": { - "Remove": true - }, - "SharedPrefix": { - "Remove": true - } - } - }, - "TransformEnums": { - "AddNoneMemberToFlags": true, - "RemoveMembers": [ - { - "MemberName": "MaxEnum", - "MemberValue": "0x7FFFFFFF" - }, - { - "MemberName": "Invalid", - "MemberValue": "0x7FFFFFFF" - } - ], - "CoerceBackingTypes": "PreferUnsigned", - "RewriteMemberValues": true - }, - "AddVTables": { - "VTables": [ - { - "Kind": "DllImport" - }, - { - "Kind": "StaticWrapper" - }, - { - "Kind": "ThisThread", - "IsDefault": true, - "GenerateFactoryPartial": true - } - ] - }, - "StripAttributes": { - "Remove": [ - "NativeTypeName", - "NameAffix", - "Transformed" - ] - } - } - } -} diff --git a/sources/SilkTouch/Jobs/Program.cs b/sources/SilkTouch/Jobs/Program.cs index 565523432a..c0ee4a6f7b 100644 --- a/sources/SilkTouch/Jobs/Program.cs +++ b/sources/SilkTouch/Jobs/Program.cs @@ -5,13 +5,702 @@ namespace Silk.NET.SilkTouch.Jobs; -// TODO: Move to separate project/single file app -// TODO: Also change SilkTouch to be a library project instead of executable internal static class Program { - public static async Task Main(string[] args) => - await SilkTouchHost + public static Task Main(string[] args) => + SilkTouchHost .Create() + .DefineJob( + "Microsoft", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/Win32/Win32/Silk.NET.Win32.csproj", + TestProject = "tests/Win32/Win32/Silk.NET.Win32.UnitTests.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = + [ + "eng/submodules/terrafx.interop.windows/generation/**/generate.rsp", + ], + ManualOverrides = new() + { + ["sources/Windows/um/icm/Windows.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/um/icm/Windows.cs", + ["sources/Gdiplus/um/gdiplustypes/GpRect.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRect.cs", + ["sources/Gdiplus/um/gdiplustypes/GpRectF.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRectF.cs", + ["sources/Gdiplus/um/gdiplustypes/GpPathData.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpPathData.cs", + ["sources/Windows/shared/strsafe/Windows.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/shared/strsafe/Windows.gen.cs", + }, + InputSourceRoot = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows", + InputTestRoot = + "eng/submodules/terrafx.interop.windows/tests/Interop/Windows", + SkipScrapeIf = ["!win"], + } + ) + .ChangeNamespace( + new() + { + Mappings = new() { ["TerraFX.Interop.(.*)"] = "Silk.NET.$1" }, + } + ) + ) + ) + .DefineJob( + "SDL", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/SDL/SDL/Silk.NET.SDL.csproj", + TestProject = "tests/SDL/SDL/Silk.NET.SDL.UnitTests.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/sdl/**/generate.rsp"], + InputSourceRoot = "sources/SDL", + InputTestRoot = "tests/SDL", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractEnumConstants() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions(new() { BoolTypes = new() { ["SDL_bool"] = null } }) + .TransformProperties( + new() { BoolTypes = new() { ["SDL_bool"] = null } } + ) + .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["SDL"] }) + .PrettifyNames( + new() + { + Affixes = new() { ["SharedPrefix"] = new() { Remove = true } }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables(new()) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ) + .DefineJob( + "OpenGL", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/OpenGL/OpenGL/Silk.NET.OpenGL.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = + [ + "eng/silktouch/opengl/**/generate.rsp", + ], + InputSourceRoot = "sources/OpenGL", + InputTestRoot = "tests/OpenGL", + } + ) + .MarkNativeNames() + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "gl", SourceSubdirectory = "glcompat" }, + new() + { + Profile = "glcore", + SourceSubdirectory = "glcore", + MinVersion = "3.2", + }, + new() + { + Profile = "gles1", + SourceSubdirectory = "gles1", + MaxVersion = "2.0", + }, + new() + { + Profile = "gles2", + SourceSubdirectory = "gles2", + MinVersion = "2.0", + }, + ], + } + ) + .BakeSourceSets( + new() + { + SourceSets = new() + { + ["glcompat"] = "gl", + ["glcore"] = "gl", + ["gles1"] = "gl", + ["gles2"] = "gl", + }, + } + ) + .AddOpaqueStructs(new() { Names = ["GLsync"] }) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/opengl-registry/xml/gl.xml", + Namespace = "Silk.NET.OpenGL", + TypeMap = new() + { + ["GLenum"] = "uint", + ["TraceMaskMESA"] = "uint", + ["PathRenderingTokenNV"] = "byte", + ["PathCoordType"] = "byte", + }, + IdentifyFunctionDataTypes = true, + IdentifyEnumTypeNonExclusiveVendors = true, + IdentifyEnumMemberImpliedVendors = true, + } + ) + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions( + new() { BoolTypes = new() { ["GLboolean"] = null } } + ) + .TransformProperties( + new() { BoolTypes = new() { ["GLboolean"] = null } } + ) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["gl"], + PrefixOverrides = new() + { + ["SyncObjectMask"] = "GL_SYNC", + ["OcclusionQueryParameterNameNV"] = "GL", + ["TexStorageAttribs"] = "GL", + ["ContainerType"] = "GL", + ["SeparableTargetEXT"] = "GL", + }, + } + ) + .PrettifyNames( + new() + { + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosFunctionDataType"] = new() + { + IsDiscriminator = true, + }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateMakeCurrentPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ) + .DefineJob( + "OpenCL", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/OpenCL/OpenCL/Silk.NET.OpenCL.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = + [ + "eng/silktouch/opencl/**/generate.rsp", + ], + InputSourceRoot = "sources/OpenCL", + InputTestRoot = "tests/OpenCL", + } + ) + .MarkNativeNames() + .AddApiProfiles(new()) + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/opencl-docs/xml/cl.xml", + Namespace = "Silk.NET.OpenCL", + TypeMap = new() + { + ["cl_bitfield"] = "ulong", + ["cl_properties"] = "ulong", + ["intptr_t"] = "long", + ["ErrorCodes"] = "int", + ["cl_affinity_domain_ext"] = "uint", + ["clCommandExecutionStatus"] = "uint", + ["cl_compiler_mode_altera"] = "uint", + ["cl_motion_estimation_desc_intel.mb_block_type"] = "uint", + ["cl_motion_estimation_desc_intel.subpixel_mode"] = "uint", + ["cl_motion_estimation_desc_intel.sad_adjust_mode"] = + "uint", + ["cl_motion_estimation_desc_intel.search_path_type"] = + "uint", + ["cl_arm_device_svm_capabilities.flags"] = "uint", + ["cl_arm_svm_alloc.flags"] = "uint", + ["cl_intel_advanced_motion_estimation.flags"] = "uint", + [ + "cl_intel_advanced_motion_estimation.search_cost_penalty" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.search_cost_precision" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.luma_block" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.chroma_block" + ] = "uint", + ["cl_intel_advanced_motion_estimation.skip_block_type"] = + "uint", + ["cl_intel_advanced_motion_estimation.device_me_version"] = + "uint", + [ + "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel.2" + ] = "uint", + ["cl_intel_device_side_avc_motion_estimation.version"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.major"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.minor"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.major.dir"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.partition"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.window"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.adjust"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.subpixel"] = + "uint", + [ + "cl_intel_device_side_avc_motion_estimation.cost.precision" + ] = "uint", + ["cl_intel_device_side_avc_motion_estimation.weight"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.border"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.skip"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.skip.dir"] = + "uint", + [ + "cl_intel_device_side_avc_motion_estimation.skip.block.based" + ] = "uint", + ["cl_intel_device_side_avc_motion_estimation.intra"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.intra.luma"] = + "uint", + [ + "cl_intel_device_side_avc_motion_estimation.intra.neighbor" + ] = "uint", + [ + "cl_intel_device_side_avc_motion_estimation.luma.predictor" + ] = "uint", + ["cl_intel_device_side_avc_motion_estimation.frame.dir"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.slice"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.scan.dir"] = + "uint", + ["cl_command_termination_reason_arm"] = "uint", + ["cl_platform_command_buffer_capabilities_khr"] = "uint", + ["cl_device_command_buffer_capabilities_khr"] = "uint", + ["cl_media_adapter_type_khr"] = "uint", + ["cl_media_adapter_set_khr"] = "uint", + ["host_cache_policy"] = "uint", + ["allocation_type"] = "uint", + ["cl_unified_shared_memory_capabilities_intel"] = "uint", + ["cl_mem_alloc_info_intel"] = "uint", + ["cl_semaphore_type"] = "uint", + ["cl_kernel_workgroup_info"] = "uint", + }, + Vendors = ["ALTERA"], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions(new() { BoolTypes = new() { ["cl_bool"] = null } }) + .TransformProperties(new() { BoolTypes = new() { ["cl_bool"] = null } }) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["cl", "_cl"], + PrefixOverrides = new() + { + ["cl_device_info"] = "CL_DEVICE", + ["cl_context_properties"] = "CL_CONTEXT", + ["cl_device_integer_dot_product_capabilities"] = + "CL_DEVICE_INTEGER_DOT_PRODUCT", + ["cl_device_integer_dot_product_capabilities_khr"] = + "CL_DEVICE_INTEGER_DOT_PRODUCT", + }, + } + ) + .PrettifyNames( + new() + { + NameOverrides = new() + { + ["CL_DRIVER_VERSION"] = "DriverVersion", + ["CL_DRIVER_UUID"] = "DriverUuid", + ["CL_DRIVER_UUID_KHR"] = "DriverUuidKHR", + }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1, Capitalize = true }, + ["KhronosFunctionDataType"] = new() + { + IsDiscriminator = true, + }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ) + .DefineJob( + "OpenAL", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/OpenAL/OpenAL/Silk.NET.OpenAL.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = + [ + "eng/silktouch/openal*/**/generate.rsp", + ], + InputSourceRoot = "sources/OpenAL", + InputTestRoot = "tests/OpenAL", + } + ) + .MarkNativeNames() + .ChangeNativeClass( + new() + { + NewClasses = new() + { + ["(alc|ALC_).*"] = "ALContext", + ["EFX_REVERB_PRESET_.*"] = "EfxReverbPreset", + }, + } + ) + .AddApiProfiles(new()) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/openal-soft/registry/xml/al.xml", + Namespace = "Silk.NET.OpenAL", + TypeMap = new() { ["ALenum"] = "uint", ["ALCenum"] = "uint" }, + NonStandardExtensionNomenclature = true, + Vendors = ["SOFT", "LOKI", "EXT"], + NonVendorSuffixes = ["Direct"], + IdentifyFunctionDataTypes = true, + IdentifyEnumTypeNonExclusiveVendors = true, + IdentifyEnumMemberImpliedVendors = true, + } + ) + .ExtractHandles() + .ExtractNestedTypes() + .ExtractEnumConstants() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .InterceptNativeFunctions( + new() + { + NativeFunctionNames = + [ + "alcOpenDevice", + "alcMakeContextCurrent", + ], + } + ) + .TransformFunctions( + new() + { + BoolTypes = new() + { + ["ALboolean"] = null, + ["ALCboolean"] = null, + }, + } + ) + .TransformProperties( + new() + { + BoolTypes = new() + { + ["ALboolean"] = null, + ["ALCboolean"] = null, + }, + } + ) + .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["alc", "al"] }) + .PrettifyNames( + new() + { + NameOverrides = new() + { + ["ALContext"] = "ALContext", + ["EFXEAXREVERBPROPERTIES"] = "EfxEaxReverbProperties", + ["ALCcontextHandle"] = "ContextHandle", + ["ALCdeviceHandle"] = "DeviceHandle", + ["ALBUFFERCALLBACKTYPESOFT"] = "BufferCallbackSOFT", + ["ALCEVENTPROCTYPESOFT"] = "ContextEventProcSOFT", + ["ALEVENTPROCSOFT"] = "EventProcSOFT", + ["ALDEBUGPROCEXT"] = "DebugProcEXT", + ["LPALFOLDBACKCALLBACK"] = "FoldbackCallback", + }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosFunctionDataType"] = new() + { + IsDiscriminator = true, + }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ) + .DefineJob( + "OpenXR", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/OpenXR/OpenXR/Silk.NET.OpenXR.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = + [ + "eng/silktouch/openxr/**/generate.rsp", + ], + InputSourceRoot = "sources/OpenXR", + InputTestRoot = "tests/OpenXR", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .MixKhronosData( + new() + { + SpecPath = + "eng/submodules/openxr-sdk/specification/registry/xr.xml", + Namespace = "Silk.NET.OpenXR", + StructureTypes = ["XrStructureType"], + FlagsTypes = ["XrFlags64"], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "openxr", SourceSubdirectory = "openxr" }, + ], + } + ) + .InterceptNativeFunctions( + new() { NativeFunctionNames = ["xrCreateInstance"] } + ) + .TransformFunctions(new() { BoolTypes = new() { ["XrBool32"] = null } }) + .TransformProperties( + new() { BoolTypes = new() { ["XrBool32"] = null } } + ) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["PFN_xr", "xr"], + PrefixOverrides = new() + { + ["XrPerfSettingsNotificationLevelEXT"] = + "XR_PERF_SETTINGS_NOTIF_LEVEL", + ["XrSceneMarkerQRCodeSymbolTypeMSFT"] = + "XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE", + ["XrStructureType"] = "XR_TYPE", + }, + } + ) + .PrettifyNames( + new() + { + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosHandleType"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() + { + AddNoneMemberToFlags = true, + RemoveMembers = + [ + new() + { + MemberName = "MaxEnum", + MemberValue = "0x7FFFFFFF", + }, + ], + CoerceBackingTypes = TransformEnums + .EnumBackingTypePreference + .PreferUnsigned, + RewriteMemberValues = true, + } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ) .DefineJob( "Vulkan", new() From 12e24f335a30482324bf1c6f789d6b5d3524c73d Mon Sep 17 00:00:00 2001 From: William Chen Date: Sun, 11 Oct 2026 03:49:38 -0400 Subject: [PATCH 42/93] Split jobs into multiple files for readability and to save my scroll wheel --- sources/SilkTouch/Jobs/Jobs.Microsoft.cs | 53 ++ sources/SilkTouch/Jobs/Jobs.OpenAL.cs | 130 ++++ sources/SilkTouch/Jobs/Jobs.OpenCL.cs | 187 +++++ sources/SilkTouch/Jobs/Jobs.OpenGL.cs | 143 ++++ sources/SilkTouch/Jobs/Jobs.OpenXR.cs | 122 ++++ sources/SilkTouch/Jobs/Jobs.SDL.cs | 50 ++ sources/SilkTouch/Jobs/Jobs.Vulkan.cs | 128 ++++ sources/SilkTouch/Jobs/Program.cs | 833 +---------------------- 8 files changed, 820 insertions(+), 826 deletions(-) create mode 100644 sources/SilkTouch/Jobs/Jobs.Microsoft.cs create mode 100644 sources/SilkTouch/Jobs/Jobs.OpenAL.cs create mode 100644 sources/SilkTouch/Jobs/Jobs.OpenCL.cs create mode 100644 sources/SilkTouch/Jobs/Jobs.OpenGL.cs create mode 100644 sources/SilkTouch/Jobs/Jobs.OpenXR.cs create mode 100644 sources/SilkTouch/Jobs/Jobs.SDL.cs create mode 100644 sources/SilkTouch/Jobs/Jobs.Vulkan.cs diff --git a/sources/SilkTouch/Jobs/Jobs.Microsoft.cs b/sources/SilkTouch/Jobs/Jobs.Microsoft.cs new file mode 100644 index 0000000000..c44140fad2 --- /dev/null +++ b/sources/SilkTouch/Jobs/Jobs.Microsoft.cs @@ -0,0 +1,53 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Silk.NET.SilkTouch.Jobs; + +internal static partial class Jobs +{ + public static SilkTouchHost DefineMicrosoftJob(this SilkTouchHost host) => + host.DefineJob( + "Microsoft", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/Win32/Win32/Silk.NET.Win32.csproj", + TestProject = "tests/Win32/Win32/Silk.NET.Win32.UnitTests.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = + [ + "eng/submodules/terrafx.interop.windows/generation/**/generate.rsp", + ], + ManualOverrides = new() + { + ["sources/Windows/um/icm/Windows.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/um/icm/Windows.cs", + ["sources/Gdiplus/um/gdiplustypes/GpRect.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRect.cs", + ["sources/Gdiplus/um/gdiplustypes/GpRectF.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRectF.cs", + ["sources/Gdiplus/um/gdiplustypes/GpPathData.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpPathData.cs", + ["sources/Windows/shared/strsafe/Windows.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/shared/strsafe/Windows.gen.cs", + }, + InputSourceRoot = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows", + InputTestRoot = + "eng/submodules/terrafx.interop.windows/tests/Interop/Windows", + SkipScrapeIf = ["!win"], + } + ) + .ChangeNamespace( + new() { Mappings = new() { ["TerraFX.Interop.(.*)"] = "Silk.NET.$1" } } + ) + ) + ); +} diff --git a/sources/SilkTouch/Jobs/Jobs.OpenAL.cs b/sources/SilkTouch/Jobs/Jobs.OpenAL.cs new file mode 100644 index 0000000000..75f1b18cf5 --- /dev/null +++ b/sources/SilkTouch/Jobs/Jobs.OpenAL.cs @@ -0,0 +1,130 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Silk.NET.SilkTouch.Mods; + +namespace Silk.NET.SilkTouch.Jobs; + +internal static partial class Jobs +{ + public static SilkTouchHost DefineOpenALJob(this SilkTouchHost host) => + host.DefineJob( + "OpenAL", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/OpenAL/OpenAL/Silk.NET.OpenAL.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/openal*/**/generate.rsp"], + InputSourceRoot = "sources/OpenAL", + InputTestRoot = "tests/OpenAL", + } + ) + .MarkNativeNames() + .ChangeNativeClass( + new() + { + NewClasses = new() + { + ["(alc|ALC_).*"] = "ALContext", + ["EFX_REVERB_PRESET_.*"] = "EfxReverbPreset", + }, + } + ) + .AddApiProfiles(new()) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/openal-soft/registry/xml/al.xml", + Namespace = "Silk.NET.OpenAL", + TypeMap = new() { ["ALenum"] = "uint", ["ALCenum"] = "uint" }, + NonStandardExtensionNomenclature = true, + Vendors = ["SOFT", "LOKI", "EXT"], + NonVendorSuffixes = ["Direct"], + IdentifyFunctionDataTypes = true, + IdentifyEnumTypeNonExclusiveVendors = true, + IdentifyEnumMemberImpliedVendors = true, + } + ) + .ExtractHandles() + .ExtractNestedTypes() + .ExtractEnumConstants() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .InterceptNativeFunctions( + new() + { + NativeFunctionNames = ["alcOpenDevice", "alcMakeContextCurrent"], + } + ) + .TransformFunctions( + new() + { + BoolTypes = new() { ["ALboolean"] = null, ["ALCboolean"] = null }, + } + ) + .TransformProperties( + new() + { + BoolTypes = new() { ["ALboolean"] = null, ["ALCboolean"] = null }, + } + ) + .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["alc", "al"] }) + .PrettifyNames( + new() + { + NameOverrides = new() + { + ["ALContext"] = "ALContext", + ["EFXEAXREVERBPROPERTIES"] = "EfxEaxReverbProperties", + ["ALCcontextHandle"] = "ContextHandle", + ["ALCdeviceHandle"] = "DeviceHandle", + ["ALBUFFERCALLBACKTYPESOFT"] = "BufferCallbackSOFT", + ["ALCEVENTPROCTYPESOFT"] = "ContextEventProcSOFT", + ["ALEVENTPROCSOFT"] = "EventProcSOFT", + ["ALDEBUGPROCEXT"] = "DebugProcEXT", + ["LPALFOLDBACKCALLBACK"] = "FoldbackCallback", + }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosFunctionDataType"] = new() { IsDiscriminator = true }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ); +} diff --git a/sources/SilkTouch/Jobs/Jobs.OpenCL.cs b/sources/SilkTouch/Jobs/Jobs.OpenCL.cs new file mode 100644 index 0000000000..19c9dec299 --- /dev/null +++ b/sources/SilkTouch/Jobs/Jobs.OpenCL.cs @@ -0,0 +1,187 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Silk.NET.SilkTouch.Mods; + +namespace Silk.NET.SilkTouch.Jobs; + +internal static partial class Jobs +{ + public static SilkTouchHost DefineOpenCLJob(this SilkTouchHost host) => + host.DefineJob( + "OpenCL", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/OpenCL/OpenCL/Silk.NET.OpenCL.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/opencl/**/generate.rsp"], + InputSourceRoot = "sources/OpenCL", + InputTestRoot = "tests/OpenCL", + } + ) + .MarkNativeNames() + .AddApiProfiles(new()) + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/opencl-docs/xml/cl.xml", + Namespace = "Silk.NET.OpenCL", + TypeMap = new() + { + ["cl_bitfield"] = "ulong", + ["cl_properties"] = "ulong", + ["intptr_t"] = "long", + ["ErrorCodes"] = "int", + ["cl_affinity_domain_ext"] = "uint", + ["clCommandExecutionStatus"] = "uint", + ["cl_compiler_mode_altera"] = "uint", + ["cl_motion_estimation_desc_intel.mb_block_type"] = "uint", + ["cl_motion_estimation_desc_intel.subpixel_mode"] = "uint", + ["cl_motion_estimation_desc_intel.sad_adjust_mode"] = "uint", + ["cl_motion_estimation_desc_intel.search_path_type"] = "uint", + ["cl_arm_device_svm_capabilities.flags"] = "uint", + ["cl_arm_svm_alloc.flags"] = "uint", + ["cl_intel_advanced_motion_estimation.flags"] = "uint", + ["cl_intel_advanced_motion_estimation.search_cost_penalty"] = + "uint", + ["cl_intel_advanced_motion_estimation.search_cost_precision"] = + "uint", + [ + "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.luma_block" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.chroma_block" + ] = "uint", + ["cl_intel_advanced_motion_estimation.skip_block_type"] = + "uint", + ["cl_intel_advanced_motion_estimation.device_me_version"] = + "uint", + [ + "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel.2" + ] = "uint", + ["cl_intel_device_side_avc_motion_estimation.version"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.major"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.minor"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.major.dir"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.partition"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.window"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.adjust"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.subpixel"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.cost.precision"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.weight"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.border"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.skip"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.skip.dir"] = + "uint", + [ + "cl_intel_device_side_avc_motion_estimation.skip.block.based" + ] = "uint", + ["cl_intel_device_side_avc_motion_estimation.intra"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.intra.luma"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.intra.neighbor"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.luma.predictor"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.frame.dir"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.slice"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.scan.dir"] = + "uint", + ["cl_command_termination_reason_arm"] = "uint", + ["cl_platform_command_buffer_capabilities_khr"] = "uint", + ["cl_device_command_buffer_capabilities_khr"] = "uint", + ["cl_media_adapter_type_khr"] = "uint", + ["cl_media_adapter_set_khr"] = "uint", + ["host_cache_policy"] = "uint", + ["allocation_type"] = "uint", + ["cl_unified_shared_memory_capabilities_intel"] = "uint", + ["cl_mem_alloc_info_intel"] = "uint", + ["cl_semaphore_type"] = "uint", + ["cl_kernel_workgroup_info"] = "uint", + }, + Vendors = ["ALTERA"], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions(new() { BoolTypes = new() { ["cl_bool"] = null } }) + .TransformProperties(new() { BoolTypes = new() { ["cl_bool"] = null } }) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["cl", "_cl"], + PrefixOverrides = new() + { + ["cl_device_info"] = "CL_DEVICE", + ["cl_context_properties"] = "CL_CONTEXT", + ["cl_device_integer_dot_product_capabilities"] = + "CL_DEVICE_INTEGER_DOT_PRODUCT", + ["cl_device_integer_dot_product_capabilities_khr"] = + "CL_DEVICE_INTEGER_DOT_PRODUCT", + }, + } + ) + .PrettifyNames( + new() + { + NameOverrides = new() + { + ["CL_DRIVER_VERSION"] = "DriverVersion", + ["CL_DRIVER_UUID"] = "DriverUuid", + ["CL_DRIVER_UUID_KHR"] = "DriverUuidKHR", + }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1, Capitalize = true }, + ["KhronosFunctionDataType"] = new() { IsDiscriminator = true }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ); +} diff --git a/sources/SilkTouch/Jobs/Jobs.OpenGL.cs b/sources/SilkTouch/Jobs/Jobs.OpenGL.cs new file mode 100644 index 0000000000..e647ca24e0 --- /dev/null +++ b/sources/SilkTouch/Jobs/Jobs.OpenGL.cs @@ -0,0 +1,143 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Silk.NET.SilkTouch.Mods; + +namespace Silk.NET.SilkTouch.Jobs; + +internal static partial class Jobs +{ + public static SilkTouchHost DefineOpenGLJob(this SilkTouchHost host) => + host.DefineJob( + "OpenGL", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/OpenGL/OpenGL/Silk.NET.OpenGL.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/opengl/**/generate.rsp"], + InputSourceRoot = "sources/OpenGL", + InputTestRoot = "tests/OpenGL", + } + ) + .MarkNativeNames() + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "gl", SourceSubdirectory = "glcompat" }, + new() + { + Profile = "glcore", + SourceSubdirectory = "glcore", + MinVersion = "3.2", + }, + new() + { + Profile = "gles1", + SourceSubdirectory = "gles1", + MaxVersion = "2.0", + }, + new() + { + Profile = "gles2", + SourceSubdirectory = "gles2", + MinVersion = "2.0", + }, + ], + } + ) + .BakeSourceSets( + new() + { + SourceSets = new() + { + ["glcompat"] = "gl", + ["glcore"] = "gl", + ["gles1"] = "gl", + ["gles2"] = "gl", + }, + } + ) + .AddOpaqueStructs(new() { Names = ["GLsync"] }) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/opengl-registry/xml/gl.xml", + Namespace = "Silk.NET.OpenGL", + TypeMap = new() + { + ["GLenum"] = "uint", + ["TraceMaskMESA"] = "uint", + ["PathRenderingTokenNV"] = "byte", + ["PathCoordType"] = "byte", + }, + IdentifyFunctionDataTypes = true, + IdentifyEnumTypeNonExclusiveVendors = true, + IdentifyEnumMemberImpliedVendors = true, + } + ) + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions(new() { BoolTypes = new() { ["GLboolean"] = null } }) + .TransformProperties(new() { BoolTypes = new() { ["GLboolean"] = null } }) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["gl"], + PrefixOverrides = new() + { + ["SyncObjectMask"] = "GL_SYNC", + ["OcclusionQueryParameterNameNV"] = "GL", + ["TexStorageAttribs"] = "GL", + ["ContainerType"] = "GL", + ["SeparableTargetEXT"] = "GL", + }, + } + ) + .PrettifyNames( + new() + { + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosFunctionDataType"] = new() { IsDiscriminator = true }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateMakeCurrentPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ); +} diff --git a/sources/SilkTouch/Jobs/Jobs.OpenXR.cs b/sources/SilkTouch/Jobs/Jobs.OpenXR.cs new file mode 100644 index 0000000000..17376eb6fe --- /dev/null +++ b/sources/SilkTouch/Jobs/Jobs.OpenXR.cs @@ -0,0 +1,122 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Silk.NET.SilkTouch.Mods; + +namespace Silk.NET.SilkTouch.Jobs; + +internal static partial class Jobs +{ + public static SilkTouchHost DefineOpenXRJob(this SilkTouchHost host) => + host.DefineJob( + "OpenXR", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/OpenXR/OpenXR/Silk.NET.OpenXR.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/openxr/**/generate.rsp"], + InputSourceRoot = "sources/OpenXR", + InputTestRoot = "tests/OpenXR", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .MixKhronosData( + new() + { + SpecPath = + "eng/submodules/openxr-sdk/specification/registry/xr.xml", + Namespace = "Silk.NET.OpenXR", + StructureTypes = ["XrStructureType"], + FlagsTypes = ["XrFlags64"], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "openxr", SourceSubdirectory = "openxr" }, + ], + } + ) + .InterceptNativeFunctions( + new() { NativeFunctionNames = ["xrCreateInstance"] } + ) + .TransformFunctions(new() { BoolTypes = new() { ["XrBool32"] = null } }) + .TransformProperties(new() { BoolTypes = new() { ["XrBool32"] = null } }) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["PFN_xr", "xr"], + PrefixOverrides = new() + { + ["XrPerfSettingsNotificationLevelEXT"] = + "XR_PERF_SETTINGS_NOTIF_LEVEL", + ["XrSceneMarkerQRCodeSymbolTypeMSFT"] = + "XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE", + ["XrStructureType"] = "XR_TYPE", + }, + } + ) + .PrettifyNames( + new() + { + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosHandleType"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() + { + AddNoneMemberToFlags = true, + RemoveMembers = + [ + new() { MemberName = "MaxEnum", MemberValue = "0x7FFFFFFF" }, + ], + CoerceBackingTypes = TransformEnums + .EnumBackingTypePreference + .PreferUnsigned, + RewriteMemberValues = true, + } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ); +} diff --git a/sources/SilkTouch/Jobs/Jobs.SDL.cs b/sources/SilkTouch/Jobs/Jobs.SDL.cs new file mode 100644 index 0000000000..469c0cb892 --- /dev/null +++ b/sources/SilkTouch/Jobs/Jobs.SDL.cs @@ -0,0 +1,50 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Silk.NET.SilkTouch.Jobs; + +internal static partial class Jobs +{ + public static SilkTouchHost DefineSDLJob(this SilkTouchHost host) => + host.DefineJob( + "SDL", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/SDL/SDL/Silk.NET.SDL.csproj", + TestProject = "tests/SDL/SDL/Silk.NET.SDL.UnitTests.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/sdl/**/generate.rsp"], + InputSourceRoot = "sources/SDL", + InputTestRoot = "tests/SDL", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractEnumConstants() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions(new() { BoolTypes = new() { ["SDL_bool"] = null } }) + .TransformProperties(new() { BoolTypes = new() { ["SDL_bool"] = null } }) + .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["SDL"] }) + .PrettifyNames( + new() { Affixes = new() { ["SharedPrefix"] = new() { Remove = true } } } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables(new()) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ); +} diff --git a/sources/SilkTouch/Jobs/Jobs.Vulkan.cs b/sources/SilkTouch/Jobs/Jobs.Vulkan.cs new file mode 100644 index 0000000000..c0574d92f9 --- /dev/null +++ b/sources/SilkTouch/Jobs/Jobs.Vulkan.cs @@ -0,0 +1,128 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Silk.NET.SilkTouch.Mods; + +namespace Silk.NET.SilkTouch.Jobs; + +internal static partial class Jobs +{ + public static SilkTouchHost DefineVulkanJob(this SilkTouchHost host) => + host.DefineJob( + "Vulkan", + new() + { + Solution = "Silk.NET.slnx", + SourceProject = "sources/Vulkan/Vulkan/Silk.NET.Vulkan.csproj", + DefaultLicenseHeader = "eng/silktouch/header.txt", + }, + context => + context.Mods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/vulkan/**/generate.rsp"], + InputSourceRoot = "sources/Vulkan", + InputTestRoot = "tests/Vulkan", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", + Namespace = "Silk.NET.Vulkan", + StructureTypes = ["VkStructureType"], + FlagsTypes = ["VkFlags", "VkFlags64"], + ExcludeVendorSuffixIdentification = + [ + "VK_VENDOR_ID_VIV", + "VK_VENDOR_ID_VSI", + "VK_VENDOR_ID_MESA", + ], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "vulkan", SourceSubdirectory = "vulkan" }, + ], + } + ) + .InterceptNativeFunctions( + new() { NativeFunctionNames = ["vkCreateInstance", "vkCreateDevice"] } + ) + .TransformFunctions(new() { BoolTypes = new() { ["VkBool32"] = null } }) + .TransformProperties(new() { BoolTypes = new() { ["VkBool32"] = null } }) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["PFN_vk", "vk"], + PrefixOverrides = new() + { + ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", + ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", + ["VkMemoryDecompressionMethodFlagsEXT"] = + "VK_MEMORY_DECOMPRESSION_METHOD", + }, + } + ) + .PrettifyNames( + new() + { + NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosHandleType"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() + { + AddNoneMemberToFlags = true, + RemoveMembers = + [ + new() { MemberName = "MaxEnum", MemberValue = "0x7FFFFFFF" }, + new() { MemberName = "Invalid", MemberValue = "0x7FFFFFFF" }, + ], + CoerceBackingTypes = TransformEnums + .EnumBackingTypePreference + .PreferUnsigned, + RewriteMemberValues = true, + } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) + ); +} diff --git a/sources/SilkTouch/Jobs/Program.cs b/sources/SilkTouch/Jobs/Program.cs index c0ee4a6f7b..7cf1956a8d 100644 --- a/sources/SilkTouch/Jobs/Program.cs +++ b/sources/SilkTouch/Jobs/Program.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Silk.NET.SilkTouch.Mods; - namespace Silk.NET.SilkTouch.Jobs; internal static class Program @@ -10,829 +8,12 @@ internal static class Program public static Task Main(string[] args) => SilkTouchHost .Create() - .DefineJob( - "Microsoft", - new() - { - Solution = "Silk.NET.slnx", - SourceProject = "sources/Win32/Win32/Silk.NET.Win32.csproj", - TestProject = "tests/Win32/Win32/Silk.NET.Win32.UnitTests.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", - }, - context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/submodules/terrafx.interop.windows/generation/**/generate.rsp", - ], - ManualOverrides = new() - { - ["sources/Windows/um/icm/Windows.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/um/icm/Windows.cs", - ["sources/Gdiplus/um/gdiplustypes/GpRect.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRect.cs", - ["sources/Gdiplus/um/gdiplustypes/GpRectF.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRectF.cs", - ["sources/Gdiplus/um/gdiplustypes/GpPathData.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpPathData.cs", - ["sources/Windows/shared/strsafe/Windows.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/shared/strsafe/Windows.gen.cs", - }, - InputSourceRoot = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows", - InputTestRoot = - "eng/submodules/terrafx.interop.windows/tests/Interop/Windows", - SkipScrapeIf = ["!win"], - } - ) - .ChangeNamespace( - new() - { - Mappings = new() { ["TerraFX.Interop.(.*)"] = "Silk.NET.$1" }, - } - ) - ) - ) - .DefineJob( - "SDL", - new() - { - Solution = "Silk.NET.slnx", - SourceProject = "sources/SDL/SDL/Silk.NET.SDL.csproj", - TestProject = "tests/SDL/SDL/Silk.NET.SDL.UnitTests.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", - }, - context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = ["eng/silktouch/sdl/**/generate.rsp"], - InputSourceRoot = "sources/SDL", - InputTestRoot = "tests/SDL", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractEnumConstants() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .TransformFunctions(new() { BoolTypes = new() { ["SDL_bool"] = null } }) - .TransformProperties( - new() { BoolTypes = new() { ["SDL_bool"] = null } } - ) - .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["SDL"] }) - .PrettifyNames( - new() - { - Affixes = new() { ["SharedPrefix"] = new() { Remove = true } }, - } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables(new()) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) - ) - .DefineJob( - "OpenGL", - new() - { - Solution = "Silk.NET.slnx", - SourceProject = "sources/OpenGL/OpenGL/Silk.NET.OpenGL.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", - }, - context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/opengl/**/generate.rsp", - ], - InputSourceRoot = "sources/OpenGL", - InputTestRoot = "tests/OpenGL", - } - ) - .MarkNativeNames() - .AddApiProfiles( - new() - { - Profiles = - [ - new() { Profile = "gl", SourceSubdirectory = "glcompat" }, - new() - { - Profile = "glcore", - SourceSubdirectory = "glcore", - MinVersion = "3.2", - }, - new() - { - Profile = "gles1", - SourceSubdirectory = "gles1", - MaxVersion = "2.0", - }, - new() - { - Profile = "gles2", - SourceSubdirectory = "gles2", - MinVersion = "2.0", - }, - ], - } - ) - .BakeSourceSets( - new() - { - SourceSets = new() - { - ["glcompat"] = "gl", - ["glcore"] = "gl", - ["gles1"] = "gl", - ["gles2"] = "gl", - }, - } - ) - .AddOpaqueStructs(new() { Names = ["GLsync"] }) - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/opengl-registry/xml/gl.xml", - Namespace = "Silk.NET.OpenGL", - TypeMap = new() - { - ["GLenum"] = "uint", - ["TraceMaskMESA"] = "uint", - ["PathRenderingTokenNV"] = "byte", - ["PathCoordType"] = "byte", - }, - IdentifyFunctionDataTypes = true, - IdentifyEnumTypeNonExclusiveVendors = true, - IdentifyEnumMemberImpliedVendors = true, - } - ) - .TransformHandles(new() { UseDsl = true }) - .TransformFunctions( - new() { BoolTypes = new() { ["GLboolean"] = null } } - ) - .TransformProperties( - new() { BoolTypes = new() { ["GLboolean"] = null } } - ) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["gl"], - PrefixOverrides = new() - { - ["SyncObjectMask"] = "GL_SYNC", - ["OcclusionQueryParameterNameNV"] = "GL", - ["TexStorageAttribs"] = "GL", - ["ContainerType"] = "GL", - ["SeparableTargetEXT"] = "GL", - }, - } - ) - .PrettifyNames( - new() - { - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosFunctionDataType"] = new() - { - IsDiscriminator = true, - }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosNonExclusiveVendor"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateMakeCurrentPartial = true, - }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) - ) - .DefineJob( - "OpenCL", - new() - { - Solution = "Silk.NET.slnx", - SourceProject = "sources/OpenCL/OpenCL/Silk.NET.OpenCL.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", - }, - context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/opencl/**/generate.rsp", - ], - InputSourceRoot = "sources/OpenCL", - InputTestRoot = "tests/OpenCL", - } - ) - .MarkNativeNames() - .AddApiProfiles(new()) - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/opencl-docs/xml/cl.xml", - Namespace = "Silk.NET.OpenCL", - TypeMap = new() - { - ["cl_bitfield"] = "ulong", - ["cl_properties"] = "ulong", - ["intptr_t"] = "long", - ["ErrorCodes"] = "int", - ["cl_affinity_domain_ext"] = "uint", - ["clCommandExecutionStatus"] = "uint", - ["cl_compiler_mode_altera"] = "uint", - ["cl_motion_estimation_desc_intel.mb_block_type"] = "uint", - ["cl_motion_estimation_desc_intel.subpixel_mode"] = "uint", - ["cl_motion_estimation_desc_intel.sad_adjust_mode"] = - "uint", - ["cl_motion_estimation_desc_intel.search_path_type"] = - "uint", - ["cl_arm_device_svm_capabilities.flags"] = "uint", - ["cl_arm_svm_alloc.flags"] = "uint", - ["cl_intel_advanced_motion_estimation.flags"] = "uint", - [ - "cl_intel_advanced_motion_estimation.search_cost_penalty" - ] = "uint", - [ - "cl_intel_advanced_motion_estimation.search_cost_precision" - ] = "uint", - [ - "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.luma_block" - ] = "uint", - [ - "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.chroma_block" - ] = "uint", - ["cl_intel_advanced_motion_estimation.skip_block_type"] = - "uint", - ["cl_intel_advanced_motion_estimation.device_me_version"] = - "uint", - [ - "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel" - ] = "uint", - [ - "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel.2" - ] = "uint", - ["cl_intel_device_side_avc_motion_estimation.version"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.major"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.minor"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.major.dir"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.partition"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.window"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.adjust"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.subpixel"] = - "uint", - [ - "cl_intel_device_side_avc_motion_estimation.cost.precision" - ] = "uint", - ["cl_intel_device_side_avc_motion_estimation.weight"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.border"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.skip"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.skip.dir"] = - "uint", - [ - "cl_intel_device_side_avc_motion_estimation.skip.block.based" - ] = "uint", - ["cl_intel_device_side_avc_motion_estimation.intra"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.intra.luma"] = - "uint", - [ - "cl_intel_device_side_avc_motion_estimation.intra.neighbor" - ] = "uint", - [ - "cl_intel_device_side_avc_motion_estimation.luma.predictor" - ] = "uint", - ["cl_intel_device_side_avc_motion_estimation.frame.dir"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.slice"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.scan.dir"] = - "uint", - ["cl_command_termination_reason_arm"] = "uint", - ["cl_platform_command_buffer_capabilities_khr"] = "uint", - ["cl_device_command_buffer_capabilities_khr"] = "uint", - ["cl_media_adapter_type_khr"] = "uint", - ["cl_media_adapter_set_khr"] = "uint", - ["host_cache_policy"] = "uint", - ["allocation_type"] = "uint", - ["cl_unified_shared_memory_capabilities_intel"] = "uint", - ["cl_mem_alloc_info_intel"] = "uint", - ["cl_semaphore_type"] = "uint", - ["cl_kernel_workgroup_info"] = "uint", - }, - Vendors = ["ALTERA"], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .TransformHandles(new() { UseDsl = true }) - .TransformFunctions(new() { BoolTypes = new() { ["cl_bool"] = null } }) - .TransformProperties(new() { BoolTypes = new() { ["cl_bool"] = null } }) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["cl", "_cl"], - PrefixOverrides = new() - { - ["cl_device_info"] = "CL_DEVICE", - ["cl_context_properties"] = "CL_CONTEXT", - ["cl_device_integer_dot_product_capabilities"] = - "CL_DEVICE_INTEGER_DOT_PRODUCT", - ["cl_device_integer_dot_product_capabilities_khr"] = - "CL_DEVICE_INTEGER_DOT_PRODUCT", - }, - } - ) - .PrettifyNames( - new() - { - NameOverrides = new() - { - ["CL_DRIVER_VERSION"] = "DriverVersion", - ["CL_DRIVER_UUID"] = "DriverUuid", - ["CL_DRIVER_UUID_KHR"] = "DriverUuidKHR", - }, - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1, Capitalize = true }, - ["KhronosFunctionDataType"] = new() - { - IsDiscriminator = true, - }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosNonExclusiveVendor"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateFactoryPartial = true, - }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) - ) - .DefineJob( - "OpenAL", - new() - { - Solution = "Silk.NET.slnx", - SourceProject = "sources/OpenAL/OpenAL/Silk.NET.OpenAL.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", - }, - context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/openal*/**/generate.rsp", - ], - InputSourceRoot = "sources/OpenAL", - InputTestRoot = "tests/OpenAL", - } - ) - .MarkNativeNames() - .ChangeNativeClass( - new() - { - NewClasses = new() - { - ["(alc|ALC_).*"] = "ALContext", - ["EFX_REVERB_PRESET_.*"] = "EfxReverbPreset", - }, - } - ) - .AddApiProfiles(new()) - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/openal-soft/registry/xml/al.xml", - Namespace = "Silk.NET.OpenAL", - TypeMap = new() { ["ALenum"] = "uint", ["ALCenum"] = "uint" }, - NonStandardExtensionNomenclature = true, - Vendors = ["SOFT", "LOKI", "EXT"], - NonVendorSuffixes = ["Direct"], - IdentifyFunctionDataTypes = true, - IdentifyEnumTypeNonExclusiveVendors = true, - IdentifyEnumMemberImpliedVendors = true, - } - ) - .ExtractHandles() - .ExtractNestedTypes() - .ExtractEnumConstants() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .InterceptNativeFunctions( - new() - { - NativeFunctionNames = - [ - "alcOpenDevice", - "alcMakeContextCurrent", - ], - } - ) - .TransformFunctions( - new() - { - BoolTypes = new() - { - ["ALboolean"] = null, - ["ALCboolean"] = null, - }, - } - ) - .TransformProperties( - new() - { - BoolTypes = new() - { - ["ALboolean"] = null, - ["ALCboolean"] = null, - }, - } - ) - .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["alc", "al"] }) - .PrettifyNames( - new() - { - NameOverrides = new() - { - ["ALContext"] = "ALContext", - ["EFXEAXREVERBPROPERTIES"] = "EfxEaxReverbProperties", - ["ALCcontextHandle"] = "ContextHandle", - ["ALCdeviceHandle"] = "DeviceHandle", - ["ALBUFFERCALLBACKTYPESOFT"] = "BufferCallbackSOFT", - ["ALCEVENTPROCTYPESOFT"] = "ContextEventProcSOFT", - ["ALEVENTPROCSOFT"] = "EventProcSOFT", - ["ALDEBUGPROCEXT"] = "DebugProcEXT", - ["LPALFOLDBACKCALLBACK"] = "FoldbackCallback", - }, - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosFunctionDataType"] = new() - { - IsDiscriminator = true, - }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosNonExclusiveVendor"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateFactoryPartial = true, - }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) - ) - .DefineJob( - "OpenXR", - new() - { - Solution = "Silk.NET.slnx", - SourceProject = "sources/OpenXR/OpenXR/Silk.NET.OpenXR.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", - }, - context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/openxr/**/generate.rsp", - ], - InputSourceRoot = "sources/OpenXR", - InputTestRoot = "tests/OpenXR", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .MixKhronosData( - new() - { - SpecPath = - "eng/submodules/openxr-sdk/specification/registry/xr.xml", - Namespace = "Silk.NET.OpenXR", - StructureTypes = ["XrStructureType"], - FlagsTypes = ["XrFlags64"], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .AddApiProfiles( - new() - { - Profiles = - [ - new() { Profile = "openxr", SourceSubdirectory = "openxr" }, - ], - } - ) - .InterceptNativeFunctions( - new() { NativeFunctionNames = ["xrCreateInstance"] } - ) - .TransformFunctions(new() { BoolTypes = new() { ["XrBool32"] = null } }) - .TransformProperties( - new() { BoolTypes = new() { ["XrBool32"] = null } } - ) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["PFN_xr", "xr"], - PrefixOverrides = new() - { - ["XrPerfSettingsNotificationLevelEXT"] = - "XR_PERF_SETTINGS_NOTIF_LEVEL", - ["XrSceneMarkerQRCodeSymbolTypeMSFT"] = - "XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE", - ["XrStructureType"] = "XR_TYPE", - }, - } - ) - .PrettifyNames( - new() - { - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosHandleType"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() - { - AddNoneMemberToFlags = true, - RemoveMembers = - [ - new() - { - MemberName = "MaxEnum", - MemberValue = "0x7FFFFFFF", - }, - ], - CoerceBackingTypes = TransformEnums - .EnumBackingTypePreference - .PreferUnsigned, - RewriteMemberValues = true, - } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateFactoryPartial = true, - }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) - ) - .DefineJob( - "Vulkan", - new() - { - Solution = "Silk.NET.slnx", - SourceProject = "sources/Vulkan/Vulkan/Silk.NET.Vulkan.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", - }, - context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/vulkan/**/generate.rsp", - ], - InputSourceRoot = "sources/Vulkan", - InputTestRoot = "tests/Vulkan", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", - Namespace = "Silk.NET.Vulkan", - StructureTypes = ["VkStructureType"], - FlagsTypes = ["VkFlags", "VkFlags64"], - ExcludeVendorSuffixIdentification = - [ - "VK_VENDOR_ID_VIV", - "VK_VENDOR_ID_VSI", - "VK_VENDOR_ID_MESA", - ], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .AddApiProfiles( - new() - { - Profiles = - [ - new() { Profile = "vulkan", SourceSubdirectory = "vulkan" }, - ], - } - ) - .InterceptNativeFunctions( - new() - { - NativeFunctionNames = ["vkCreateInstance", "vkCreateDevice"], - } - ) - .TransformFunctions(new() { BoolTypes = new() { ["VkBool32"] = null } }) - .TransformProperties( - new() { BoolTypes = new() { ["VkBool32"] = null } } - ) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["PFN_vk", "vk"], - PrefixOverrides = new() - { - ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", - ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", - ["VkMemoryDecompressionMethodFlagsEXT"] = - "VK_MEMORY_DECOMPRESSION_METHOD", - }, - } - ) - .PrettifyNames( - new() - { - NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosHandleType"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() - { - AddNoneMemberToFlags = true, - RemoveMembers = - [ - new() - { - MemberName = "MaxEnum", - MemberValue = "0x7FFFFFFF", - }, - new() - { - MemberName = "Invalid", - MemberValue = "0x7FFFFFFF", - }, - ], - CoerceBackingTypes = TransformEnums - .EnumBackingTypePreference - .PreferUnsigned, - RewriteMemberValues = true, - } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateFactoryPartial = true, - }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) - ) + .DefineMicrosoftJob() + .DefineOpenALJob() + .DefineOpenCLJob() + .DefineOpenGLJob() + .DefineOpenXRJob() + .DefineSDLJob() + .DefineVulkanJob() .RunAsync(args); } From 451c5925a7e168cc0819d0ab4763fdce861b6434 Mon Sep 17 00:00:00 2001 From: William Chen Date: Sun, 11 Oct 2026 04:01:26 -0400 Subject: [PATCH 43/93] Fix compile errors in SilkTouch test project --- .../SilkTouch/SilkTouch/DummyJobDependency.cs | 13 - tests/SilkTouch/SilkTouch/DummyOptions.cs | 19 -- .../InterceptNativeFunctionsTests.cs | 10 +- .../SilkTouch/Khronos/MixKhronosDataTests.cs | 7 +- .../Naming/IdentifySharedPrefixesTests.cs | 86 ++----- .../SilkTouch/Naming/PrettifyNamesTests.cs | 229 ++++++++---------- .../SilkTouch/TransformHandlesTests.cs | 12 +- .../SilkTouch/TransformPropertiesTests.cs | 8 +- 8 files changed, 139 insertions(+), 245 deletions(-) delete mode 100644 tests/SilkTouch/SilkTouch/DummyJobDependency.cs delete mode 100644 tests/SilkTouch/SilkTouch/DummyOptions.cs diff --git a/tests/SilkTouch/SilkTouch/DummyJobDependency.cs b/tests/SilkTouch/SilkTouch/DummyJobDependency.cs deleted file mode 100644 index c13b8a6a69..0000000000 --- a/tests/SilkTouch/SilkTouch/DummyJobDependency.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -namespace Silk.NET.SilkTouch.UnitTests; - -public class DummyJobDependency : IJobDependency -{ - public DummyJobDependency(IEnumerable values) => Values = values; - - public IEnumerable Values { get; } - - public IEnumerable Get(string? jobKey) => Values; -} diff --git a/tests/SilkTouch/SilkTouch/DummyOptions.cs b/tests/SilkTouch/SilkTouch/DummyOptions.cs deleted file mode 100644 index 77479f0fd1..0000000000 --- a/tests/SilkTouch/SilkTouch/DummyOptions.cs +++ /dev/null @@ -1,19 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Diagnostics.CodeAnalysis; -using Microsoft.Extensions.Options; - -namespace Silk.NET.SilkTouch.UnitTests; - -public class DummyOptions< - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] T -> : IOptionsSnapshot - where T : class -{ - public DummyOptions(T value) => Value = value; - - public T Value { get; } - - public T Get(string? name) => Value; -} diff --git a/tests/SilkTouch/SilkTouch/InterceptNativeFunctionsTests.cs b/tests/SilkTouch/SilkTouch/InterceptNativeFunctionsTests.cs index af0c31a491..531d08960c 100644 --- a/tests/SilkTouch/SilkTouch/InterceptNativeFunctionsTests.cs +++ b/tests/SilkTouch/SilkTouch/InterceptNativeFunctionsTests.cs @@ -47,12 +47,10 @@ public static extern VkResult vkCreateDevice( var context = new DummyModContext() { SourceProject = project }; var interceptNativeFunctions = new InterceptNativeFunctions( - new DummyOptions( - new InterceptNativeFunctions.Configuration() - { - NativeFunctionNames = ["vkCreateInstance"], - } - ) + new InterceptNativeFunctions.Configuration() + { + NativeFunctionNames = ["vkCreateInstance"], + } ); await interceptNativeFunctions.ExecuteAsync(context); diff --git a/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs b/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs index ee4806f000..bf6ba2445d 100644 --- a/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs +++ b/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs @@ -49,9 +49,7 @@ private static IAsyncEnumerable TestCases() { var mod = new MixKhronosData( new NullLogger(), - new DummyOptions( - new MixKhronosData.Configuration { SpecPath = TestFile(x) } - ) + new MixKhronosData.Configuration { SpecPath = TestFile(x) } ); await mod.InitializeAsync(new DummyModContext(), ct); return (object[])[x, mod.Jobs[""]]; @@ -258,7 +256,8 @@ public Task SupportedApiProfiles(string file, object data) => .SupportedApiProfiles?.OrderBy(x => x.Key) .Select(x => $"{x.Key}\n{new string('-', x.Key.Length)}\n{string.Join('\n', x.Value.Select(y => AttributeList(SingletonSeparatedList(y.GetSupportedApiProfileAttribute())).ToString()).Order())}\n" - ) ?? [] + ) + ?? [] ) ) .UseFileName($"{nameof(MixKhronosDataTests)}.{nameof(SupportedApiProfiles)}.{file}"); diff --git a/tests/SilkTouch/SilkTouch/Naming/IdentifySharedPrefixesTests.cs b/tests/SilkTouch/SilkTouch/Naming/IdentifySharedPrefixesTests.cs index 6691c47d17..49627eb75a 100644 --- a/tests/SilkTouch/SilkTouch/Naming/IdentifySharedPrefixesTests.cs +++ b/tests/SilkTouch/SilkTouch/Naming/IdentifySharedPrefixesTests.cs @@ -36,9 +36,7 @@ public enum OcclusionQueryParameterNameNV var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() - ) + new IdentifySharedPrefixes.Configuration() ); await identifySharedPrefixes.ExecuteAsync(context); @@ -69,9 +67,7 @@ public enum VocalMorpherPhoneme var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() - ) + new IdentifySharedPrefixes.Configuration() ); await identifySharedPrefixes.ExecuteAsync(context); @@ -108,12 +104,10 @@ public struct GLFWwindow; var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() - { - GlobalPrefixHints = hint is null ? [] : [hint], - } - ) + new IdentifySharedPrefixes.Configuration() + { + GlobalPrefixHints = hint is null ? [] : [hint], + } ); await identifySharedPrefixes.ExecuteAsync(context); @@ -140,9 +134,7 @@ public enum VkPresentIdKHR { } var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() - ) + new IdentifySharedPrefixes.Configuration() ); await identifySharedPrefixes.ExecuteAsync(context); @@ -174,9 +166,7 @@ public enum OcclusionQueryParameterNameNV var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() - ) + new IdentifySharedPrefixes.Configuration() ); await identifySharedPrefixes.ExecuteAsync(context); @@ -206,9 +196,7 @@ public struct ID3D12Device; var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() - ) + new IdentifySharedPrefixes.Configuration() ); await identifySharedPrefixes.ExecuteAsync(context); @@ -234,9 +222,7 @@ public struct ID3D12Device; var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["D3D12"] } - ) + new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["D3D12"] } ); await identifySharedPrefixes.ExecuteAsync(context); @@ -269,9 +255,7 @@ public enum OcclusionQueryParameterNameNV var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } - ) + new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } ); await identifySharedPrefixes.ExecuteAsync(context); @@ -298,9 +282,7 @@ public enum OcclusionQueryParameterNameNV var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() - ) + new IdentifySharedPrefixes.Configuration() ); await identifySharedPrefixes.ExecuteAsync(context); @@ -341,9 +323,7 @@ public enum OcclusionQueryParameterNameNV var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } - ) + new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } ); await identifySharedPrefixes.ExecuteAsync(context); @@ -373,9 +353,7 @@ public enum OcclusionQueryParameterNameNV var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() - ) + new IdentifySharedPrefixes.Configuration() ); await identifySharedPrefixes.ExecuteAsync(context); @@ -413,9 +391,7 @@ public enum VkPresentModeKHR var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() - ) + new IdentifySharedPrefixes.Configuration() ); await identifySharedPrefixes.ExecuteAsync(context); @@ -437,9 +413,7 @@ public async Task IdentifiesPrefix_WhenMatchingHint() var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["vk"] } - ) + new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["vk"] } ); await identifySharedPrefixes.ExecuteAsync(context); @@ -459,9 +433,7 @@ public async Task DoesNotIdentifyPrefix_WhenSingleName_WithNoHint() var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() - ) + new IdentifySharedPrefixes.Configuration() ); await identifySharedPrefixes.ExecuteAsync(context); @@ -484,9 +456,7 @@ public async Task DoesNotIdentifyPrefix_WhenSingleName_WithNonMatchingHint() var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } - ) + new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } ); await identifySharedPrefixes.ExecuteAsync(context); @@ -512,9 +482,7 @@ public enum GLEnum { } var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } - ) + new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } ); await identifySharedPrefixes.ExecuteAsync(context); @@ -547,9 +515,7 @@ public enum FragmentShaderDestModMask var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } - ) + new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } ); await identifySharedPrefixes.ExecuteAsync(context); @@ -579,9 +545,7 @@ public enum EvalTargetNV var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } - ) + new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } ); await identifySharedPrefixes.ExecuteAsync(context); @@ -610,9 +574,7 @@ public enum EvalMapsModeNV var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } - ) + new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["gl"] } ); await identifySharedPrefixes.ExecuteAsync(context); @@ -641,9 +603,7 @@ public enum ContextFlagsEXT var context = new DummyModContext() { SourceProject = project }; var identifySharedPrefixes = new IdentifySharedPrefixes( - new DummyOptions( - new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["alc", "al"] } - ) + new IdentifySharedPrefixes.Configuration() { GlobalPrefixHints = ["alc", "al"] } ); await identifySharedPrefixes.ExecuteAsync(context); diff --git a/tests/SilkTouch/SilkTouch/Naming/PrettifyNamesTests.cs b/tests/SilkTouch/SilkTouch/Naming/PrettifyNamesTests.cs index 010ddc7037..815271d337 100644 --- a/tests/SilkTouch/SilkTouch/Naming/PrettifyNamesTests.cs +++ b/tests/SilkTouch/SilkTouch/Naming/PrettifyNamesTests.cs @@ -42,19 +42,17 @@ public enum InternalFormat var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions( - new PrettifyNames.Configuration() + new PrettifyNames.Configuration() + { + LongAcronymThreshold = 3, + Affixes = { - LongAcronymThreshold = 3, - Affixes = { - { - "SharedPrefix", - new PrettifyNames.NameAffixConfiguration() { Remove = true } - }, + "SharedPrefix", + new PrettifyNames.NameAffixConfiguration() { Remove = true } }, - } - ) + }, + } ); await prettifyNames.ExecuteAsync(context); @@ -105,19 +103,17 @@ public enum ALEnum var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions( - new PrettifyNames.Configuration() + new PrettifyNames.Configuration() + { + LongAcronymThreshold = 4, + Affixes = { - LongAcronymThreshold = 4, - Affixes = { - { - "SharedPrefix", - new PrettifyNames.NameAffixConfiguration() { Remove = true } - }, + "SharedPrefix", + new PrettifyNames.NameAffixConfiguration() { Remove = true } }, - } - ) + }, + } ); await prettifyNames.ExecuteAsync(context); @@ -159,31 +155,29 @@ public void alGetBufferPtrvDirectSOFT() { } var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions( - new PrettifyNames.Configuration() + new PrettifyNames.Configuration() + { + LongAcronymThreshold = 4, + Affixes = { - LongAcronymThreshold = 4, - Affixes = { + "SharedPrefix", + new PrettifyNames.NameAffixConfiguration() { - "SharedPrefix", - new PrettifyNames.NameAffixConfiguration() - { - DiscriminatorPriority = 0, - IsDiscriminator = true, - } - }, + DiscriminatorPriority = 0, + IsDiscriminator = true, + } + }, + { + "KhronosFunctionDataType", + new PrettifyNames.NameAffixConfiguration() { - "KhronosFunctionDataType", - new PrettifyNames.NameAffixConfiguration() - { - DiscriminatorPriority = 1, - IsDiscriminator = true, - } - }, + DiscriminatorPriority = 1, + IsDiscriminator = true, + } }, - } - ) + }, + } ); await prettifyNames.ExecuteAsync(context); @@ -227,31 +221,29 @@ public void alGetBufferPtrvDirectSOFT() { } var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions( - new PrettifyNames.Configuration() + new PrettifyNames.Configuration() + { + LongAcronymThreshold = 4, + Affixes = { - LongAcronymThreshold = 4, - Affixes = { + "SharedPrefix", + new PrettifyNames.NameAffixConfiguration() { - "SharedPrefix", - new PrettifyNames.NameAffixConfiguration() - { - DiscriminatorPriority = 1, - IsDiscriminator = true, - } - }, + DiscriminatorPriority = 1, + IsDiscriminator = true, + } + }, + { + "KhronosFunctionDataType", + new PrettifyNames.NameAffixConfiguration() { - "KhronosFunctionDataType", - new PrettifyNames.NameAffixConfiguration() - { - DiscriminatorPriority = 0, - IsDiscriminator = true, - } - }, + DiscriminatorPriority = 0, + IsDiscriminator = true, + } }, - } - ) + }, + } ); await prettifyNames.ExecuteAsync(context); @@ -288,7 +280,7 @@ public struct GamepadBindingInputAxis { } var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions(new PrettifyNames.Configuration()) + new PrettifyNames.Configuration() ); await prettifyNames.ExecuteAsync(context); @@ -319,7 +311,7 @@ public struct A var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions(new PrettifyNames.Configuration()) + new PrettifyNames.Configuration() ); await prettifyNames.ExecuteAsync(context); @@ -353,7 +345,7 @@ public struct B var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions(new PrettifyNames.Configuration()) + new PrettifyNames.Configuration() ); await prettifyNames.ExecuteAsync(context); @@ -384,12 +376,10 @@ public struct ALBUFFERCALLBACKTYPESOFT; var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions( - new PrettifyNames.Configuration() - { - NameOverrides = { { "ALBUFFERCALLBACKTYPESOFT", "BufferCallbackSOFT" } }, - } - ) + new PrettifyNames.Configuration() + { + NameOverrides = { { "ALBUFFERCALLBACKTYPESOFT", "BufferCallbackSOFT" } }, + } ); await prettifyNames.ExecuteAsync(context); @@ -419,7 +409,7 @@ public struct B { } var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions(new PrettifyNames.Configuration()) + new PrettifyNames.Configuration() ); Assert.ThrowsAsync(async () => @@ -446,7 +436,7 @@ public struct A { } var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions(new PrettifyNames.Configuration()) + new PrettifyNames.Configuration() ); Assert.ThrowsAsync(async () => @@ -480,20 +470,17 @@ public class Sdl var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions(new PrettifyNames.Configuration()) + new PrettifyNames.Configuration() { - Value = + Affixes = { - Affixes = { + "SharedPrefix", + new PrettifyNames.NameAffixConfiguration() { - "SharedPrefix", - new PrettifyNames.NameAffixConfiguration() - { - DiscriminatorPriority = 0, - IsDiscriminator = true, - } - }, + DiscriminatorPriority = 0, + IsDiscriminator = true, + } }, }, } @@ -526,7 +513,7 @@ public struct BaseName { } var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions(new PrettifyNames.Configuration()) + new PrettifyNames.Configuration() ); await prettifyNames.ExecuteAsync(context); @@ -553,18 +540,16 @@ public struct BaseName { } var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions( - new PrettifyNames.Configuration() + new PrettifyNames.Configuration() + { + Affixes = { - Affixes = { - { - "TestPrefix", - new PrettifyNames.NameAffixConfiguration() { Prettify = true } - }, + "TestPrefix", + new PrettifyNames.NameAffixConfiguration() { Prettify = true } }, - } - ) + }, + } ); await prettifyNames.ExecuteAsync(context); @@ -592,22 +577,20 @@ public struct BaseName { } var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions( - new PrettifyNames.Configuration() + new PrettifyNames.Configuration() + { + Affixes = { - Affixes = { - { - "TestPrefix1", - new PrettifyNames.NameAffixConfiguration() { Prettify = true } - }, - { - "TestPrefix2", - new PrettifyNames.NameAffixConfiguration() { Prettify = true } - }, + "TestPrefix1", + new PrettifyNames.NameAffixConfiguration() { Prettify = true } }, - } - ) + { + "TestPrefix2", + new PrettifyNames.NameAffixConfiguration() { Prettify = true } + }, + }, + } ); await prettifyNames.ExecuteAsync(context); @@ -634,18 +617,16 @@ public struct BaseName { } var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions( - new PrettifyNames.Configuration() + new PrettifyNames.Configuration() + { + Affixes = { - Affixes = { - { - "TestPrefix", - new PrettifyNames.NameAffixConfiguration() { Capitalize = true } - }, + "TestPrefix", + new PrettifyNames.NameAffixConfiguration() { Capitalize = true } }, - } - ) + }, + } ); await prettifyNames.ExecuteAsync(context); @@ -672,22 +653,20 @@ public struct BaseName { } var prettifyNames = new PrettifyNames( NullLogger.Instance, - new DummyOptions( - new PrettifyNames.Configuration() + new PrettifyNames.Configuration() + { + Affixes = { - Affixes = { + "TestPrefix", + new PrettifyNames.NameAffixConfiguration() { - "TestPrefix", - new PrettifyNames.NameAffixConfiguration() - { - Prettify = true, - Capitalize = true, - } - }, + Prettify = true, + Capitalize = true, + } }, - } - ) + }, + } ); await prettifyNames.ExecuteAsync(context); diff --git a/tests/SilkTouch/SilkTouch/TransformHandlesTests.cs b/tests/SilkTouch/SilkTouch/TransformHandlesTests.cs index 7f96cf6d8e..35dd18b4b7 100644 --- a/tests/SilkTouch/SilkTouch/TransformHandlesTests.cs +++ b/tests/SilkTouch/SilkTouch/TransformHandlesTests.cs @@ -41,9 +41,7 @@ public static extern VkResult vkCreateInstance( var context = new DummyModContext() { SourceProject = project }; var transformHandles = new TransformHandles( - new DummyOptions( - new TransformHandles.Configuration() { UseDsl = false } - ), + new TransformHandles.Configuration() { UseDsl = false }, NullLogger.Instance ); @@ -77,9 +75,7 @@ public static extern VkResult vkCreateInstance( var context = new DummyModContext() { SourceProject = project }; var transformHandles = new TransformHandles( - new DummyOptions( - new TransformHandles.Configuration() { UseDsl = true } - ), + new TransformHandles.Configuration() { UseDsl = true }, NullLogger.Instance ); @@ -114,9 +110,7 @@ public static extern VkResult vkCreateInstance( var context = new DummyModContext() { SourceProject = project }; var transformHandles = new TransformHandles( - new DummyOptions( - new TransformHandles.Configuration() { UseDsl = true } - ), + new TransformHandles.Configuration() { UseDsl = true }, NullLogger.Instance ); diff --git a/tests/SilkTouch/SilkTouch/TransformPropertiesTests.cs b/tests/SilkTouch/SilkTouch/TransformPropertiesTests.cs index d852356f5f..daf70781be 100644 --- a/tests/SilkTouch/SilkTouch/TransformPropertiesTests.cs +++ b/tests/SilkTouch/SilkTouch/TransformPropertiesTests.cs @@ -34,9 +34,7 @@ public struct Test var context = new DummyModContext() { SourceProject = project }; var transformProperties = new TransformProperties( - new DummyOptions( - new TransformProperties.Configuration() { BoolTypes = { { "TestBool32", null } } } - ) + new TransformProperties.Configuration() { BoolTypes = { { "TestBool32", null } } } ); await transformProperties.ExecuteAsync(context); @@ -86,9 +84,7 @@ public struct NoTransform var context = new DummyModContext() { SourceProject = project }; var transformProperties = new TransformProperties( - new DummyOptions( - new TransformProperties.Configuration() { BoolTypes = { { "TestBool32", null } } } - ) + new TransformProperties.Configuration() { BoolTypes = { { "TestBool32", null } } } ); await transformProperties.ExecuteAsync(context); From bc08a3a83c551ebdabf283cee1279c335ef563fa Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 00:50:40 -0400 Subject: [PATCH 44/93] Fix incorrect default AddVTables config --- sources/SilkTouch/SilkTouch/Mods/AddVTables.cs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index 522ce96c15..5d315f88e1 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -503,7 +503,13 @@ public record Configuration /// /// The various VTable types to generate. /// - public VTable[] VTables { get; init; } = []; + public VTable[] VTables { get; init; } = + new VTable[] + { + new DllImport { IsDefault = true }, + new StaticWrapper(), + new ThisThread(), + }; } private class Rewriter(VTable[] vTables) : ModCSharpSyntaxRewriter @@ -1395,15 +1401,7 @@ public void Reset() public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { var vTables = config.VTables; - var rw = new Rewriter( - vTables - ?? new VTable[] - { - new DllImport { IsDefault = true }, - new StaticWrapper(), - new ThisThread(), - } - ); + var rw = new Rewriter(vTables); var newFiles = new List<(string, CSharpSyntaxNode)>(rw.FullClassNames.Count); var proj = ctx.SourceProject; foreach (var docId in ctx.SourceProject?.DocumentIds ?? []) From 1c44723b2ec4cd7d59b7f2fe17d9848240690b32 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 03:53:11 -0400 Subject: [PATCH 45/93] Remove usages ThreadLocals and JobKey when used for keyed resolution/job isolation --- .../SilkTouch/Mods/AddApiProfiles.cs | 6 +- .../SilkTouch/Mods/AddOpaqueStructs.cs | 9 +- .../SilkTouch/SilkTouch/Mods/AddVTables.cs | 9 +- .../Mods/Common/ModCSharpSyntaxRewriter.cs | 12 +- .../Mods/Metadata/IApiMetadataProvider.cs | 12 +- .../SilkTouch/Mods/Metadata/MetadataUtils.cs | 16 +- .../SilkTouch/Mods/MixKhronosData.cs | 246 ++++++++---------- .../SilkTouch/Mods/TransformFunctions.cs | 19 -- .../ArrayParameterTransformer.cs | 6 +- .../Transformation/FunctionTransformer.cs | 2 - .../Transformation/ITransformationContext.cs | 13 +- .../Mods/Transformation/PtrRefTransformer.cs | 12 +- .../SilkTouch/Khronos/MixKhronosDataTests.cs | 56 ++-- 13 files changed, 163 insertions(+), 255 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs b/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs index 9ecee80233..2dfc084390 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddApiProfiles.cs @@ -53,7 +53,6 @@ public record Configuration } class Rewriter( - string? jobKey, IEnumerable< IApiMetadataProvider> > versionProviders @@ -66,14 +65,13 @@ class Rewriter( private IEnumerable GetProfileAttributes(string? childSymbol) => Profile is null ? versionProviders - .GetAllMetadata(jobKey, _currentParentSymbol, childSymbol) + .GetAllMetadata(_currentParentSymbol, childSymbol) .Select(x => x?.GetSupportedApiProfileAttribute()) .OfType() : [ versionProviders .GetMetadata( - jobKey, _currentParentSymbol, childSymbol, x => x.Metadata.Profile == Profile.Profile, @@ -209,7 +207,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) return; } - var rewriter = new Rewriter(ctx.JobKey, versionProviders); + var rewriter = new Rewriter(versionProviders); foreach (var docId in ctx.SourceProject.DocumentIds) { var doc = diff --git a/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs b/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs index 4b1d714191..b2c0484921 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Concurrent; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; @@ -19,7 +18,7 @@ public class AddOpaqueStructs( AddOpaqueStructs.Configuration config ) : IMod, IResponseFileMod { - private readonly ConcurrentDictionary _defaultNamespaces = new(); + private string? _defaultNamespace; /// /// The configuration for the opaque structs mod. @@ -43,7 +42,7 @@ public Task> BeforeScrapeAsync(string key, List var ns = rsps[0].GeneratorConfiguration.DefaultNamespace; if (rsps.All(responseFile => responseFile.GeneratorConfiguration.DefaultNamespace == ns)) { - _defaultNamespaces[key] = ns; + _defaultNamespace = ns; } return Task.FromResult(rsps); @@ -70,8 +69,8 @@ public Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) ? ModUtils.NamespaceIntoIdentifierName( fullyQualifiedName.AsSpan()[..lastPeriodIndex] ) - : _defaultNamespaces.TryGetValue(ctx.JobKey, out var def) - ? ModUtils.NamespaceIntoIdentifierName(def) + : _defaultNamespace != null + ? ModUtils.NamespaceIntoIdentifierName(_defaultNamespace) : null; if (ns is null) { diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index 5d315f88e1..8eb9da9c88 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -516,7 +516,6 @@ private class Rewriter(VTable[] vTables) : ModCSharpSyntaxRewriter { private InterfaceDeclarationSyntax? _currentInterface; private ClassDeclarationSyntax? _currentClass; - private VTable[] _vTables = vTables; private ClassDeclarationSyntax?[] _currentVTableOutputs = new ClassDeclarationSyntax?[ vTables.Length @@ -859,9 +858,9 @@ out var callConv ); } - for (var i = 0; i < _vTables.Length; i++) + for (var i = 0; i < vTables.Length; i++) { - _currentVTableOutputs[i] = _vTables[i] + _currentVTableOutputs[i] = vTables[i] .AddMethod( new VTableContext( _currentVTableOutputs[i], @@ -1040,7 +1039,7 @@ public IEnumerable> GetExtraFiles() .WithModifiers(TokenList(Token(SyntaxKind.PartialKeyword))) .WithMembers( List( - _vTables + vTables .Select(x => x.GetBoilerplate( new VTableBoilerplateContext( @@ -1144,7 +1143,7 @@ private IEnumerable GenerateTopLevelBoilerplate( if ( _staticDefaultWrapper is not null - && !_vTables.Any(x => x is ThisThread && x.Name == _staticDefault) + && !vTables.Any(x => x is ThisThread && x.Name == _staticDefault) ) { yield return PropertyDeclaration( diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs b/sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs index 145d822e84..de81621000 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs @@ -16,17 +16,10 @@ public abstract class ModCSharpSyntaxRewriter(bool visitIntoStructuredTrivia = f : CSharpSyntaxRewriter(visitIntoStructuredTrivia), ITransformationContext { - private ThreadLocal> _usingsToAdd = - new(() => new Dictionary()); - /// /// usings to add to the appropriate place within the syntax tree. /// - public Dictionary UsingsToAdd - { - get => _usingsToAdd.Value!; - set => _usingsToAdd.Value = value; - } + public Dictionary UsingsToAdd { get; set; } = []; /// public override SyntaxNode? VisitCompilationUnit(CompilationUnitSyntax node) @@ -114,9 +107,6 @@ or SyntaxKind.WhitespaceTrivia ) ); - /// - public virtual string? JobKey { get; set; } - /// public MethodDeclarationSyntax? Original { get; set; } diff --git a/sources/SilkTouch/SilkTouch/Mods/Metadata/IApiMetadataProvider.cs b/sources/SilkTouch/SilkTouch/Mods/Metadata/IApiMetadataProvider.cs index 03f7c06b34..e4e6ad5a90 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Metadata/IApiMetadataProvider.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Metadata/IApiMetadataProvider.cs @@ -14,27 +14,21 @@ public interface IApiMetadataProvider /// /// Gets metadata of the given type stored for the symbol with the given native name. /// - /// The job key. /// The native name. /// The metadata. /// Whether metadata exists for this symbol. If true, is not null. - bool TryGetSymbolMetadata( - string? jobKey, - string nativeName, - [NotNullWhen(true)] out T? metadata - ) => (metadata = default) is not null; + public bool TryGetSymbolMetadata(string nativeName, [NotNullWhen(true)] out T? metadata) => + (metadata = default) is not null; /// /// Gets metadata of the given type stored for the child symbol (e.g. parameter) with the given name on the symbol /// (e.g. function) with the given native name. /// - /// The job key. /// The native name. /// The parameter name. /// The metadata. /// Whether metadata exists for this symbol. If true, is not null. - bool TryGetChildSymbolMetadata( - string? jobKey, + public bool TryGetChildSymbolMetadata( string nativeName, string childNativeName, [NotNullWhen(true)] out T? metadata diff --git a/sources/SilkTouch/SilkTouch/Mods/Metadata/MetadataUtils.cs b/sources/SilkTouch/SilkTouch/Mods/Metadata/MetadataUtils.cs index 669d482211..1ab6e85eb0 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Metadata/MetadataUtils.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Metadata/MetadataUtils.cs @@ -123,7 +123,6 @@ out var spanSymbolMap /// Gets the first matching metadata item for a specific symbol. /// /// The metadata providers. - /// The current job key. /// /// The parent symbol, optionally containing the symbol identified by if provided. /// Used as input to if @@ -143,20 +142,18 @@ out var spanSymbolMap [return: NotNullIfNotNull(nameof(defaultValue))] public static T? GetMetadata( this IEnumerable>> metadataProviders, - string? jobKey, string? parentSymbol = null, string? childSymbol = null, Predicate<(T Metadata, MetadataSources Sources)>? filter = default, T? defaultValue = default ) => - GetAllMetadata(metadataProviders, jobKey, parentSymbol, childSymbol, filter) + GetAllMetadata(metadataProviders, parentSymbol, childSymbol, filter) .FirstOrDefault(defaultValue); /// /// Gets all matching metadata items for a specific symbol. /// /// The metadata providers. - /// The current job key. /// /// The parent symbol, optionally containing the symbol identified by if provided. /// Used as input to if @@ -174,7 +171,6 @@ out var spanSymbolMap /// The metadata item. public static IEnumerable GetAllMetadata( this IEnumerable>> metadataProviders, - string? jobKey, string? parentSymbol = null, string? childSymbol = null, Predicate<(T Metadata, MetadataSources Sources)>? filter = default @@ -194,7 +190,6 @@ out var spanSymbolMap { if ( provider.TryGetChildSymbolMetadata( - jobKey, parentSymbol, childSymbol, out var childMetadata @@ -216,7 +211,7 @@ var child in childMetadata.Where(x => foreach (var provider in metadataProviders) { - if (provider.TryGetSymbolMetadata(jobKey, parentSymbol, out var parentMetadata)) + if (provider.TryGetSymbolMetadata(parentSymbol, out var parentMetadata)) { var source = MetadataSources.Parent; if (!foundChildMetadata) @@ -325,7 +320,6 @@ int outerCount /// The method with the parameters to enumerate. /// The metadata providers. /// - /// /// public static IEnumerable<( ParameterSyntax Param, @@ -334,8 +328,7 @@ int outerCount )> EnumerateSymbolConstraints( this MethodDeclarationSyntax decl, IEnumerable> providers, - string? entryPoint = null, - string? jobKey = null + string? entryPoint = null ) { if (entryPoint is null) @@ -352,7 +345,6 @@ int outerCount PtrParamConstraints: providers .Select(z => z.TryGetChildSymbolMetadata( - jobKey, entryPoint, y.PtrParam.Identifier.ToString().TrimStart('@'), out var md @@ -397,7 +389,7 @@ out var md ( CountParam: x, CountParamIdx: i, - ParamsForCount: decl.EnumerateSymbolConstraints(providers, entryPoint, jobKey) + ParamsForCount: decl.EnumerateSymbolConstraints(providers, entryPoint) .Where(y => y.ParamConstraints?.CommonUsage?.CountExpression.AsSpan() .TrimStart('@') diff --git a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs index 9768b9413d..c6930e01ae 100644 --- a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs +++ b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Concurrent; -using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Text.RegularExpressions; using System.Xml.Linq; @@ -31,10 +29,10 @@ MixKhronosData.Configuration config IApiMetadataProvider, IApiMetadataProvider> { - internal ConcurrentDictionary Jobs = new(); + internal JobData Job = null!; private static readonly char[] _listSeparators = { ',', '|', '+' }; - private class NameAffixes + private static class NameAffixes { public const string KhronosFunctionDataType = nameof(KhronosFunctionDataType); public const string KhronosHandleType = nameof(KhronosHandleType); @@ -262,21 +260,21 @@ public record Configuration public async Task InitializeAsync(IModContext ctx, CancellationToken ct = default) { var specPath = config.SpecPath; - var job = Jobs[ctx.JobKey] = new JobData + Job = new JobData { Configuration = config, TypeMap = config.TypeMap is not null ? new Dictionary(config.TypeMap) : [], }; - job.TypeMap.TryAdd("int8_t", "sbyte"); - job.TypeMap.TryAdd("uint8_t", "byte"); - job.TypeMap.TryAdd("int16_t", "short"); - job.TypeMap.TryAdd("uint16_t", "ushort"); - job.TypeMap.TryAdd("int32_t", "int"); - job.TypeMap.TryAdd("uint32_t", "uint"); - job.TypeMap.TryAdd("int64_t", "long"); - job.TypeMap.TryAdd("uint64_t", "ulong"); + Job.TypeMap.TryAdd("int8_t", "sbyte"); + Job.TypeMap.TryAdd("uint8_t", "byte"); + Job.TypeMap.TryAdd("int16_t", "short"); + Job.TypeMap.TryAdd("uint16_t", "ushort"); + Job.TypeMap.TryAdd("int32_t", "int"); + Job.TypeMap.TryAdd("uint32_t", "uint"); + Job.TypeMap.TryAdd("int64_t", "long"); + Job.TypeMap.TryAdd("uint64_t", "ulong"); if (specPath is null) { // No metadata, can't continue. It'd be odd if the Khronos mod is being used in this case. There was once @@ -290,50 +288,49 @@ public async Task InitializeAsync(IModContext ctx, CancellationToken ct = defaul var xml = await XDocument.LoadAsync(fs, LoadOptions.None, CancellationToken.None); var (apiSets, supportedApiProfiles) = EvaluateProfiles(xml); - job.ApiSets = apiSets; - job.SupportedApiProfiles = supportedApiProfiles; + Job.ApiSets = apiSets; + Job.SupportedApiProfiles = supportedApiProfiles; var profiles = supportedApiProfiles .SelectMany(x => x.Value) .Select(x => x.Profile) .ToHashSet(); - job.Vendors.UnionWith( - [ - .. xml.Element("registry") - ?.Element("tags") - ?.Elements("tag") + Job.Vendors.UnionWith([ + .. xml.Element("registry") + ?.Element("tags") + ?.Elements("tag") + .Attributes("name") + .Select(x => x.Value) + ?? [], + .. config.NonStandardExtensionNomenclature + ? [] + : xml.Element("registry") + ?.Element("extensions") + ?.Elements("extension") + // Only include vendors who have extensions that match a declared profile + // This is mainly to exclude extensions that are declared as supported="disabled" + .Where(ext => + { + var supportedProfiles = ext.Attribute("supported")?.Value.Split("|") ?? []; + return profiles.Intersect(supportedProfiles).Any(); + }) .Attributes("name") - .Select(x => x.Value) ?? [], - .. config.NonStandardExtensionNomenclature - ? [] - : xml.Element("registry") - ?.Element("extensions") - ?.Elements("extension") - // Only include vendors who have extensions that match a declared profile - // This is mainly to exclude extensions that are declared as supported="disabled" - .Where(ext => - { - var supportedProfiles = - ext.Attribute("supported")?.Value.Split("|") ?? []; - return profiles.Intersect(supportedProfiles).Any(); - }) - .Attributes("name") - // Extract the second part from the extension name - // Eg: GL_NV_command_list -> NV - .Select(name => name.Value.Split('_')[1].ToUpper()) ?? [], - .. config.Vendors ?? [], - ] - ); - - job.DeprecatedAliases = xml.Descendants() + // Extract the second part from the extension name + // Eg: GL_NV_command_list -> NV + .Select(name => name.Value.Split('_')[1].ToUpper()) + ?? [], + .. config.Vendors ?? [], + ]); + + Job.DeprecatedAliases = xml.Descendants() .Where(x => x.Attribute("deprecated")?.Value == "aliased" && x.Attribute("name") != null ) .Select(x => x.Attribute("name")!.Value) .ToHashSet(); - ReadGroups(xml, job, job.Vendors); + ReadGroups(xml, Job, Job.Vendors); foreach (var typeElement in xml.Elements("registry").Elements("types").Elements("type")) { @@ -344,7 +341,7 @@ .. config.NonStandardExtensionNomenclature continue; } - job.TypeMap.TryAdd(type, baseType); + Job.TypeMap.TryAdd(type, baseType); } // Add mappings from Flags storage types to FlagBits enums types @@ -368,7 +365,7 @@ .. config.NonStandardExtensionNomenclature continue; } - job.AdditionalTypeRemappings[mapFrom] = mapTo; + Job.AdditionalTypeRemappings[mapFrom] = mapTo; } // Gather information about struct structure type enums @@ -409,7 +406,7 @@ var typeElement in xml.Elements("registry") continue; } - job.StructureTypeMembers.Add( + Job.StructureTypeMembers.Add( structName, new StructureTypeMember() { @@ -427,8 +424,12 @@ var typeElement in xml.Elements("registry") /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - var jobData = Jobs[ctx.JobKey]; - var currentConfig = jobData.Configuration; + if (Job == null) + { + return; + } + + var currentConfig = Job.Configuration; var proj = ctx.SourceProject; if (proj == null) @@ -437,7 +438,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) } // Rewrite phase 1 - var rewriter1 = new RewriterPhase1(jobData, logger); + var rewriter1 = new RewriterPhase1(Job, logger); foreach (var docId in proj.DocumentIds) { var doc = @@ -459,7 +460,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) } // Rewrite phase 2 - var rewriter2 = new RewriterPhase2(jobData, rewriter1); + var rewriter2 = new RewriterPhase2(Job, rewriter1); foreach (var docId in proj.DocumentIds) { var doc = @@ -473,11 +474,11 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) // Rewrite phase 3 { // OpenCL uses lower snake case names - var vendorSuffixComparison = jobData.IsLikelyOpenCL + var vendorSuffixComparison = Job.IsLikelyOpenCL ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; - var rewriter3 = new RewriterPhase3(jobData, currentConfig, vendorSuffixComparison); + var rewriter3 = new RewriterPhase3(Job, currentConfig, vendorSuffixComparison); foreach (var docId in proj.DocumentIds) { var doc = @@ -491,7 +492,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) } // Rewrite phase 4 - var rewriter4 = new RewriterPhase4(jobData); + var rewriter4 = new RewriterPhase4(Job); foreach (var docId in proj.DocumentIds) { var doc = @@ -521,8 +522,6 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) /// public Task> BeforeScrapeAsync(string key, List rsps) { - var job = Jobs[key]; - rsps = rsps.Select(rsp => rsp with { @@ -530,7 +529,7 @@ rsp with { RemappedNames = rsp .GeneratorConfiguration.RemappedNames.Concat( - job.AdditionalTypeRemappings + Job.AdditionalTypeRemappings ) .ToDictionary(), }, @@ -716,7 +715,8 @@ private void EvaluateFeatures( )[0] ) .ThenBy(x => x.Attribute("number")?.Value, VersionComparer.Instance) - .ToArray() ?? []; + .ToArray() + ?? []; // Record the variations declared within those elements (OpenGL only atm) var profileVariations = new Dictionary>(); @@ -790,7 +790,8 @@ .. profileVariations.TryGetValue(variant, out var v) ? v : [], ?.Value.Split( _listSeparators, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries - ) ?? []; + ) + ?? []; // Evaluate all of the elements. for (var i = 0; i < allApis.Length; i++) @@ -1263,7 +1264,8 @@ var ext in xml.Element("registry")?.Element("extensions")?.Elements("extension") ?.Value.Split( _listSeparators, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries - ) ?? []; + ) + ?? []; foreach (var supportedApi in supportedApis) { @@ -1357,12 +1359,6 @@ public void Transform( Action next ) { - if (ctx.JobKey is null) - { - next(current); - return; - } - current.AttributeLists.GetNativeFunctionInfo(out _, out var entryPoint, out _); entryPoint ??= current.Identifier.ToString(); foreach (var meth in TransformToConstants(current, ctx, entryPoint)) @@ -1378,8 +1374,6 @@ private IEnumerable TransformToConstants( string entryPoint ) { - Debug.Assert(ctx.JobKey is not null); - // This will contain the changed parameters. Note that the changes from the previous passes (see below) are kept // in this list so that we don't create differences between fully grouped pointer overloads vs partially grouped // pointer overloads. In addition, we want to keep things like the Constant DSL type even if we're overloading @@ -1398,7 +1392,7 @@ string entryPoint var newRet = GetTypeTransformation( entryPoint, ":return", - Jobs[ctx.JobKey], + Job, ret, pass, ref anyNonTrivialParameters @@ -1418,7 +1412,7 @@ param.Type is null || GetTypeTransformation( entryPoint, param.Identifier.ToString(), - Jobs[ctx.JobKey], + Job, param.Type, pass, ref anyNonTrivialParameters @@ -1580,8 +1574,7 @@ public bool TryGetChildSymbolMetadata( { if ( jobKey is not null - && Jobs[jobKey] - .Annotations.TryGetValue((nativeName, childNativeName), out var annotation) + && Job.Annotations.TryGetValue((nativeName, childNativeName), out var annotation) && annotation.Usage is not null ) { @@ -1608,17 +1601,13 @@ public bool TryGetSymbolMetadata( [NotNullWhen(true)] out IEnumerable? metadata ) { - if ( - jobKey is null - || !Jobs.TryGetValue(jobKey, out var job) - || job.SupportedApiProfiles is null - ) + if (jobKey is null || Job.SupportedApiProfiles is null) { metadata = null; return false; } - if (!job.SupportedApiProfiles.TryGetValue(nativeName, out var mdList)) + if (!Job.SupportedApiProfiles.TryGetValue(nativeName, out var mdList)) { metadata = null; return false; @@ -1737,8 +1726,7 @@ private class RewriterPhase1(JobData job, ILogger logger) : CSharpSyntaxRewriter .Distinct() .Select((x, i) => (x, i)) .LastOrDefault() - is - (var n, 0) + is (var n, 0) ? n : null; @@ -1781,9 +1769,9 @@ private class RewriterPhase1(JobData job, ILogger logger) : CSharpSyntaxRewriter ) .WithAttributeLists(attributes) .WithBaseList( - BaseList( - [SimpleBaseType(baseTypeSyntax)] - ) + BaseList([ + SimpleBaseType(baseTypeSyntax), + ]) ) .WithMembers( SeparatedList( @@ -1923,13 +1911,11 @@ public override SyntaxNode VisitIdentifierName(IdentifierNameSyntax node) => if (node.Members.Any(m => job.DeprecatedAliases.Contains(m.Identifier.ValueText))) { // Remove deprecated aliases - node = node.WithMembers( - [ - .. node.Members.Where(m => - !job.DeprecatedAliases.Contains(m.Identifier.ValueText) - ), - ] - ); + node = node.WithMembers([ + .. node.Members.Where(m => + !job.DeprecatedAliases.Contains(m.Identifier.ValueText) + ), + ]); } if ( @@ -1958,13 +1944,11 @@ .. node.Members.Where(m => { // Remove deprecated aliases node = node.WithDeclaration( - node.Declaration.WithVariables( - [ - .. node.Declaration.Variables.Where(v => - !job.DeprecatedAliases.Contains(v.Identifier.ValueText) - ), - ] - ) + node.Declaration.WithVariables([ + .. node.Declaration.Variables.Where(v => + !job.DeprecatedAliases.Contains(v.Identifier.ValueText) + ), + ]) ); if (node.Declaration.Variables.Count == 0) @@ -2282,39 +2266,37 @@ public override SyntaxNode VisitEnumDeclaration(EnumDeclarationSyntax node) && canTrimImpliedVendors ) { - node = node.WithMembers( - [ - .. node.Members.Select(member => - { - var memberName = member.Identifier.Text; - - if ( - memberName.EndsWith(typeVendor, vendorSuffixComparison) - && CanIdentifySuffix(memberName, typeVendor.Length) - ) - { - // Identify for trimming - return member.WithAttributeLists( - member.AttributeLists.AddNameAffix( - NameAffixType.Suffix, - NameAffixes.KhronosImpliedVendor, - member.Identifier.Text[^typeVendor.Length..], - true - ) - ); - } + node = node.WithMembers([ + .. node.Members.Select(member => + { + var memberName = member.Identifier.Text; - // Default behavior - Identify, but not for trimming + if ( + memberName.EndsWith(typeVendor, vendorSuffixComparison) + && CanIdentifySuffix(memberName, typeVendor.Length) + ) + { + // Identify for trimming return member.WithAttributeLists( - ProcessAndGetNewAttributes( - member.AttributeLists, - member.Identifier, - false + member.AttributeLists.AddNameAffix( + NameAffixType.Suffix, + NameAffixes.KhronosImpliedVendor, + member.Identifier.Text[^typeVendor.Length..], + true ) ); - }), - ] - ); + } + + // Default behavior - Identify, but not for trimming + return member.WithAttributeLists( + ProcessAndGetNewAttributes( + member.AttributeLists, + member.Identifier, + false + ) + ); + }), + ]); } else { @@ -2398,13 +2380,11 @@ public override SyntaxNode VisitStructDeclaration(StructDeclarationSyntax node) initializerAdded = true; members.Add( memberFieldNode.WithDeclaration( - memberFieldNode.Declaration.WithVariables( - [ - .. memberFieldNode.Declaration.Variables.Select(variable => - variable.WithInitializer(initializer) - ), - ] - ) + memberFieldNode.Declaration.WithVariables([ + .. memberFieldNode.Declaration.Variables.Select(variable => + variable.WithInitializer(initializer) + ), + ]) ) ); } diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs index 3ad556729c..d46bb2ba0d 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs @@ -13,8 +13,6 @@ namespace Silk.NET.SilkTouch.Mods; /// public class TransformFunctions(FunctionTransformer ft) : ModCSharpSyntaxRewriter, IMod { - private ThreadLocal _jobKey = new(); - /// /// Configuration for the and related code. /// @@ -31,24 +29,9 @@ public class Configuration public Dictionary BoolTypes { get; init; } = []; } - /// - public override string? JobKey - { - get => _jobKey.Value; - set - { - if (value is null) - { - return; - } - _jobKey.Value = value; - } - } - /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - _jobKey.Value = ctx.JobKey; var proj = ctx.SourceProject; foreach (var docId in ctx.SourceProject?.DocumentIds ?? []) { @@ -71,7 +54,6 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) cd.Members.Where(x => x is not MethodDeclarationSyntax) .Concat( ft.GetTransformedFunctions( - _jobKey.Value, cd.Members.OfType(), this ) @@ -89,7 +71,6 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) id.Members.Where(x => x is not MethodDeclarationSyntax) .Concat( ft.GetTransformedFunctions( - _jobKey.Value, id.Members.OfType(), this ) diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/ArrayParameterTransformer.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/ArrayParameterTransformer.cs index 2a8c27462c..fd8a8f2a9f 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/ArrayParameterTransformer.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/ArrayParameterTransformer.cs @@ -75,8 +75,7 @@ decl.ReturnType is not PredefinedTypeSyntax pt // 1. Get all count parameters decl.EnumerateCountParameterInfo( ctx.Transformers.OfType>(), - entryPoint, - ctx.JobKey + entryPoint ) .Select(x => ( @@ -106,8 +105,7 @@ decl.ReturnType is not PredefinedTypeSyntax pt { ((ptrParam, _, ptrCount), countParamNo) = decl.EnumerateSymbolConstraints( ctx.Transformers.OfType>(), - entryPoint, - ctx.JobKey + entryPoint ) .Where(x => x.ParamConstraints?.CommonUsage?.StaticCount == 1) .Select((x, i) => (x, i)) diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs index 306b139dd8..9641189f01 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs @@ -25,7 +25,6 @@ ILogger logger /// Transforms all of the given functions, optionally including the original function signatures in the returned /// transformed functions. /// - /// The job key. /// The functions. /// The wider context for this function transformation operation. /// @@ -33,7 +32,6 @@ ILogger logger /// /// The transformed (and optionally original) functions. public IEnumerable GetTransformedFunctions( - string? key, IEnumerable functions, ITransformationContext ctx, bool includeOriginal = true diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs index 3758c25fd5..06f0b6fc40 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs @@ -12,27 +12,22 @@ namespace Silk.NET.SilkTouch.Mods.Transformation; /// public interface ITransformationContext { - /// - /// The job key. - /// - string? JobKey { get; set; } - /// /// The original method signature. /// - MethodDeclarationSyntax? Original { get; set; } + public MethodDeclarationSyntax? Original { get; set; } /// /// The transformers in use. /// - IFunctionTransformer[]? Transformers { get; set; } + public IFunctionTransformer[]? Transformers { get; set; } /// /// Adds a namespace import to the resultant syntax tree. /// /// The dot-separated namespace. /// Whether it was added. - bool AddUsing(string str) => + public bool AddUsing(string str) => AddUsing(UsingDirective(ModUtils.NamespaceIntoIdentifierName(str))); /// @@ -40,5 +35,5 @@ bool AddUsing(string str) => /// /// The directive. /// Whether it was added. - bool AddUsing(UsingDirectiveSyntax use); + public bool AddUsing(UsingDirectiveSyntax use); } diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs index fa3b9abaa5..05ed6149bf 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs @@ -1,12 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; using System.Diagnostics; -using System.Linq; using System.Text.RegularExpressions; -using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; @@ -22,7 +18,7 @@ public sealed partial class PtrRefTransformer() IFunctionTransformer { private const int MaxIndirections = 3; - private ThreadLocal _ctx = new(); + private ITransformationContext? _ctx; /// public void Transform( @@ -31,7 +27,7 @@ public void Transform( Action next ) { - _ctx.Value = ctx; + _ctx = ctx; if (Visit(current) is MethodDeclarationSyntax modded) { next(modded); @@ -41,7 +37,7 @@ Action next next(current); } - _ctx.Value = null; + _ctx = null; } private static bool ShouldConvertToDSL(TypeSyntax syn) => @@ -186,7 +182,7 @@ is not MethodDeclarationSyntax methWithReplacementsButNoFixed ) ) .AddMaxOpt(); - _ctx.Value?.AddUsing("System.Runtime.CompilerServices"); + _ctx?.AddUsing("System.Runtime.CompilerServices"); // Generate the fixed blocks for the "inner idents" foreach (var param in paramsToChange) diff --git a/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs b/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs index bf6ba2445d..77bee4b896 100644 --- a/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs +++ b/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs @@ -52,7 +52,7 @@ private static IAsyncEnumerable TestCases() new MixKhronosData.Configuration { SpecPath = TestFile(x) } ); await mod.InitializeAsync(new DummyModContext(), ct); - return (object[])[x, mod.Jobs[""]]; + return (object[])[x, mod.Job]; } ); } @@ -318,13 +318,10 @@ public enum OcclusionQueryParameterNameNV var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) { - Jobs = + Job = new MixKhronosData.JobData { - ["OpenGL"] = new MixKhronosData.JobData - { - Configuration = new MixKhronosData.Configuration(), - Vendors = ["NV"], - }, + Configuration = new MixKhronosData.Configuration(), + Vendors = ["NV"], }, }; @@ -355,16 +352,13 @@ public enum OcclusionQueryParameterNameNV var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) { - Jobs = + Job = new MixKhronosData.JobData { - ["OpenGL"] = new MixKhronosData.JobData + Configuration = new MixKhronosData.Configuration() { - Configuration = new MixKhronosData.Configuration() - { - IdentifyEnumMemberImpliedVendors = true, - }, - Vendors = ["NV"], + IdentifyEnumMemberImpliedVendors = true, }, + Vendors = ["NV"], }, }; @@ -396,16 +390,13 @@ public enum BufferUsageARB : uint var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) { - Jobs = + Job = new MixKhronosData.JobData { - ["OpenGL"] = new MixKhronosData.JobData + Configuration = new MixKhronosData.Configuration() { - Configuration = new MixKhronosData.Configuration() - { - IdentifyEnumTypeNonExclusiveVendors = true, - }, - Vendors = ["ARB"], + IdentifyEnumTypeNonExclusiveVendors = true, }, + Vendors = ["ARB"], }, }; @@ -434,23 +425,20 @@ public enum GLEnum { } var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) { - Jobs = + Job = new MixKhronosData.JobData { - ["OpenGL"] = new MixKhronosData.JobData + Configuration = new MixKhronosData.Configuration(), + Groups = { - Configuration = new MixKhronosData.Configuration(), - Groups = { + "GLenum", + new MixKhronosData.EnumGroup() { - "GLenum", - new MixKhronosData.EnumGroup() - { - Name = "GLEnum", - NativeName = "GLenum", - BaseType = "GLenum", - Namespace = "GL", - } - }, + Name = "GLEnum", + NativeName = "GLenum", + BaseType = "GLenum", + Namespace = "GL", + } }, }, }, From da2b65f8fb7688ac2f016d7a46eb1a6482925f2f Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 04:27:17 -0400 Subject: [PATCH 46/93] Remove more job key usages --- .../SilkTouch/Clang/IResponseFileMod.cs | 5 +-- .../SilkTouch/Mods/ChangeNamespace.cs | 17 ++++---- .../SilkTouch/Mods/MixKhronosData.cs | 6 +-- .../ArrayParameterTransformerTests.cs | 42 ++++++++----------- .../ArrayParameterTransformerTests.cs | 2 - .../SilkTouch/Khronos/MixKhronosDataTests.cs | 8 ++-- 6 files changed, 32 insertions(+), 48 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Clang/IResponseFileMod.cs b/sources/SilkTouch/SilkTouch/Clang/IResponseFileMod.cs index e1a70b80e4..6b0a436d0f 100644 --- a/sources/SilkTouch/SilkTouch/Clang/IResponseFileMod.cs +++ b/sources/SilkTouch/SilkTouch/Clang/IResponseFileMod.cs @@ -1,9 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Generic; -using System.Threading.Tasks; - namespace Silk.NET.SilkTouch.Clang; /// @@ -21,5 +18,5 @@ public interface IResponseFileMod /// /// The modified response files to be passed into either the next mod or ClangSharp if this is the last mod. /// - Task> BeforeScrapeAsync(string key, List rsps); + public Task> BeforeScrapeAsync(string key, List rsps); } diff --git a/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs b/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs index f50bc15345..774dfd252b 100644 --- a/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs +++ b/sources/SilkTouch/SilkTouch/Mods/ChangeNamespace.cs @@ -16,8 +16,8 @@ namespace Silk.NET.SilkTouch.Mods; /// public class ChangeNamespace(ChangeNamespace.Configuration config) : IMod, IResponseFileMod { - private readonly Dictionary, IReadOnlyList<(Regex, string)>)> _jobs = - new(); + private readonly HashSet _ns = []; + private readonly List<(Regex, string)> _regexes = []; /// /// The configuration for the change namespace mod. @@ -34,8 +34,7 @@ public record Configuration public Task> BeforeScrapeAsync(string key, List rsps) { var regexes = - config.Mappings?.Select(kvp => (new Regex(kvp.Key), kvp.Value)).ToArray() - ?? Array.Empty<(Regex, string)>(); + config.Mappings?.Select(kvp => (new Regex(kvp.Key), kvp.Value)).ToArray() ?? []; for (var i = 0; i < rsps.Count; i++) { var rsp = rsps[i]; @@ -59,7 +58,7 @@ public Task> BeforeScrapeAsync(string key, List }; } - _jobs[key] = ( + _ns.UnionWith( rsps.Select(x => x.GeneratorConfiguration.DefaultNamespace) .Concat( rsps.SelectMany(x => @@ -67,17 +66,16 @@ public Task> BeforeScrapeAsync(string key, List ) ) .Distinct() - .ToHashSet(), - regexes ); + _regexes.AddRange(regexes); + return Task.FromResult(rsps); } /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - var (ns, regexes) = _jobs[ctx.JobKey]; - var rewriter = new Rewriter(ns, regexes); + var rewriter = new Rewriter(_ns, _regexes); var proj = ctx.SourceProject; foreach (var docId in proj?.DocumentIds ?? []) { @@ -90,7 +88,6 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) } ctx.SourceProject = proj; - _jobs.Remove(ctx.JobKey); } private class Rewriter : CSharpSyntaxRewriter diff --git a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs index c6930e01ae..1752341e3a 100644 --- a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs +++ b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs @@ -1588,20 +1588,18 @@ jobKey is not null /// public bool TryGetChildSymbolMetadata( - string? jobKey, string nativeName, string childNativeName, [NotNullWhen(true)] out IEnumerable? metadata - ) => TryGetSymbolMetadata(jobKey, childNativeName, out metadata); + ) => TryGetSymbolMetadata(childNativeName, out metadata); /// public bool TryGetSymbolMetadata( - string? jobKey, string nativeName, [NotNullWhen(true)] out IEnumerable? metadata ) { - if (jobKey is null || Job.SupportedApiProfiles is null) + if (Job.SupportedApiProfiles is null) { metadata = null; return false; diff --git a/tests/SilkTouch/SilkTouch/ArrayParameterTransformerTests.cs b/tests/SilkTouch/SilkTouch/ArrayParameterTransformerTests.cs index da9e66b66b..aff12fa7b2 100644 --- a/tests/SilkTouch/SilkTouch/ArrayParameterTransformerTests.cs +++ b/tests/SilkTouch/SilkTouch/ArrayParameterTransformerTests.cs @@ -217,14 +217,12 @@ public void Transform( Action next ) => throw new NotImplementedException(); - public string? JobKey { get; set; } public MethodDeclarationSyntax? Original { get; set; } public IFunctionTransformer[]? Transformers { get; set; } public bool AddUsing(UsingDirectiveSyntax use) => throw new NotImplementedException(); public bool TryGetChildSymbolMetadata( - string? jobKey, string nativeName, string childNativeName, [NotNullWhen(true)] out SymbolConstraints? metadata @@ -246,17 +244,15 @@ public bool TryGetChildSymbolMetadata( ) ), ], - ElementTypeConstraints: new SymbolConstraints( - [ - new LogicalAnnotation( - LogicalRequirement.Always, - null, - null, - null, - new UsageConstraints() - ), - ] - ), + ElementTypeConstraints: new SymbolConstraints([ + new LogicalAnnotation( + LogicalRequirement.Always, + null, + null, + null, + new UsageConstraints() + ), + ]), IsMutable: childNativeName.Contains('m') ); return true; @@ -278,17 +274,15 @@ public bool TryGetChildSymbolMetadata( ) ), ], - ElementTypeConstraints: new SymbolConstraints( - [ - new LogicalAnnotation( - LogicalRequirement.Always, - null, - null, - null, - new UsageConstraints() - ), - ] - ), + ElementTypeConstraints: new SymbolConstraints([ + new LogicalAnnotation( + LogicalRequirement.Always, + null, + null, + null, + new UsageConstraints() + ), + ]), IsMutable: childNativeName.Contains('m') ); return true; diff --git a/tests/SilkTouch/SilkTouch/FunctionTransformation/ArrayParameterTransformerTests.cs b/tests/SilkTouch/SilkTouch/FunctionTransformation/ArrayParameterTransformerTests.cs index e7c7e3a239..fd162a3d1f 100644 --- a/tests/SilkTouch/SilkTouch/FunctionTransformation/ArrayParameterTransformerTests.cs +++ b/tests/SilkTouch/SilkTouch/FunctionTransformation/ArrayParameterTransformerTests.cs @@ -57,7 +57,6 @@ private class SingularizeAffixedName_ShouldSingularizeBaseName_MetadataProvider IFunctionTransformer { public bool TryGetChildSymbolMetadata( - string? jobKey, string nativeName, string childNativeName, [NotNullWhen(true)] out SymbolConstraints? metadata @@ -128,7 +127,6 @@ private class SingularizeAffixedName_ShouldNotAffectAffix_MetadataProvider IFunctionTransformer { public bool TryGetChildSymbolMetadata( - string? jobKey, string nativeName, string childNativeName, [NotNullWhen(true)] out SymbolConstraints? metadata diff --git a/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs b/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs index 77bee4b896..d8415e8eb4 100644 --- a/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs +++ b/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs @@ -314,7 +314,7 @@ public enum OcclusionQueryParameterNameNV ) .Project; - var context = new DummyModContext() { JobKey = "OpenGL", SourceProject = project }; + var context = new DummyModContext() { SourceProject = project }; var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) { @@ -348,7 +348,7 @@ public enum OcclusionQueryParameterNameNV ) .Project; - var context = new DummyModContext() { JobKey = "OpenGL", SourceProject = project }; + var context = new DummyModContext() { SourceProject = project }; var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) { @@ -386,7 +386,7 @@ public enum BufferUsageARB : uint ) .Project; - var context = new DummyModContext() { JobKey = "OpenGL", SourceProject = project }; + var context = new DummyModContext() { SourceProject = project }; var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) { @@ -421,7 +421,7 @@ public enum GLEnum { } ) .Project; - var context = new DummyModContext() { JobKey = "OpenGL", SourceProject = project }; + var context = new DummyModContext() { SourceProject = project }; var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) { From 7d6858d7aedd14c4fbae1fcfbff1157578bd8946 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 04:38:10 -0400 Subject: [PATCH 47/93] Cleanup a few more job key usages --- sources/SilkTouch/SilkTouch/Mods/Metadata/MetadataUtils.cs | 4 +--- sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs | 4 +--- tests/SilkTouch/SilkTouch/DummyModContext.cs | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Metadata/MetadataUtils.cs b/sources/SilkTouch/SilkTouch/Mods/Metadata/MetadataUtils.cs index 1ab6e85eb0..650a2c598b 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Metadata/MetadataUtils.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Metadata/MetadataUtils.cs @@ -364,7 +364,6 @@ out var md /// The method declaration. /// The metadata providers. /// The entry point. Determined from the declaration if not provided. - /// The job key to use when looking up metadata. /// /// An enumerable over the declaration's parameters, where the parameter syntax and indices are given along with an /// enumerable of the other parameter syntaxes (along with the indices and constraints) for which the parameter @@ -381,8 +380,7 @@ out var md )> EnumerateCountParameterInfo( this MethodDeclarationSyntax decl, IEnumerable> providers, - string? entryPoint = null, - string? jobKey = null + string? entryPoint = null ) => decl.ParameterList.Parameters.Select( (x, i) => diff --git a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs index 1752341e3a..222d5f620f 100644 --- a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs +++ b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs @@ -1566,15 +1566,13 @@ otherGroup is not null /// public bool TryGetChildSymbolMetadata( - string? jobKey, string nativeName, string childNativeName, [NotNullWhen(true)] out SymbolConstraints? metadata ) { if ( - jobKey is not null - && Job.Annotations.TryGetValue((nativeName, childNativeName), out var annotation) + Job.Annotations.TryGetValue((nativeName, childNativeName), out var annotation) && annotation.Usage is not null ) { diff --git a/tests/SilkTouch/SilkTouch/DummyModContext.cs b/tests/SilkTouch/SilkTouch/DummyModContext.cs index 978a417504..f7d0be90ff 100644 --- a/tests/SilkTouch/SilkTouch/DummyModContext.cs +++ b/tests/SilkTouch/SilkTouch/DummyModContext.cs @@ -10,7 +10,7 @@ public class DummyModContext : IModContext { public ValueTask DisposeAsync() => ValueTask.CompletedTask; - public string JobKey { get; set; } = string.Empty; + public string JobKey { get; set; } = "Test"; public string? WorkingDirectory { get; set; } public Project? SourceProject { get; set; } public Project? TestProject { get; set; } From a8599a20af683c008da5ab1d9d25b2eed5a3c161 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 05:04:24 -0400 Subject: [PATCH 48/93] Change SilkTouchJob to be internal --- sources/SilkTouch/SilkTouch/SilkTouchJob.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs index 719885b93a..64d29ba1b0 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs @@ -12,7 +12,7 @@ namespace Silk.NET.SilkTouch; /// /// Represents an individual SilkTouch bindings generation job. /// -public class SilkTouchJob : IDisposable +internal class SilkTouchJob : IDisposable { private readonly ILifetimeScope _container; From 7df9a658ab4d52f05e9841f33e30f5c312dfe613 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 05:14:38 -0400 Subject: [PATCH 49/93] Add registration methods for the different function transformers and update job definitions Microsoft also gets the default transformers added to match how the old DI setup always had them registered. --- sources/SilkTouch/Jobs/Jobs.Microsoft.cs | 69 ++-- sources/SilkTouch/Jobs/Jobs.OpenAL.cs | 224 ++++++------ sources/SilkTouch/Jobs/Jobs.OpenCL.cs | 345 ++++++++++-------- sources/SilkTouch/Jobs/Jobs.OpenGL.cs | 238 ++++++------ sources/SilkTouch/Jobs/Jobs.OpenXR.cs | 207 ++++++----- sources/SilkTouch/Jobs/Jobs.SDL.cs | 69 ++-- sources/SilkTouch/Jobs/Jobs.Vulkan.cs | 226 ++++++------ .../SilkTouch/Mods/TransformFunctions.cs | 16 - .../Mods/Transformation/BoolTransformer.cs | 18 +- sources/SilkTouch/SilkTouch/SilkTouchJob.cs | 7 +- .../SilkTouchRegistrationExtensions.cs | 91 +++-- 11 files changed, 825 insertions(+), 685 deletions(-) diff --git a/sources/SilkTouch/Jobs/Jobs.Microsoft.cs b/sources/SilkTouch/Jobs/Jobs.Microsoft.cs index c44140fad2..3bb45e7bfb 100644 --- a/sources/SilkTouch/Jobs/Jobs.Microsoft.cs +++ b/sources/SilkTouch/Jobs/Jobs.Microsoft.cs @@ -16,38 +16,43 @@ public static SilkTouchHost DefineMicrosoftJob(this SilkTouchHost host) => DefaultLicenseHeader = "eng/silktouch/header.txt", }, context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/submodules/terrafx.interop.windows/generation/**/generate.rsp", - ], - ManualOverrides = new() + context + .WithDefaultFunctionTransformers(new()) + .WithMods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() { - ["sources/Windows/um/icm/Windows.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/um/icm/Windows.cs", - ["sources/Gdiplus/um/gdiplustypes/GpRect.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRect.cs", - ["sources/Gdiplus/um/gdiplustypes/GpRectF.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRectF.cs", - ["sources/Gdiplus/um/gdiplustypes/GpPathData.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpPathData.cs", - ["sources/Windows/shared/strsafe/Windows.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/shared/strsafe/Windows.gen.cs", - }, - InputSourceRoot = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows", - InputTestRoot = - "eng/submodules/terrafx.interop.windows/tests/Interop/Windows", - SkipScrapeIf = ["!win"], - } - ) - .ChangeNamespace( - new() { Mappings = new() { ["TerraFX.Interop.(.*)"] = "Silk.NET.$1" } } - ) - ) + ClangSharpResponseFiles = + [ + "eng/submodules/terrafx.interop.windows/generation/**/generate.rsp", + ], + ManualOverrides = new() + { + ["sources/Windows/um/icm/Windows.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/um/icm/Windows.cs", + ["sources/Gdiplus/um/gdiplustypes/GpRect.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRect.cs", + ["sources/Gdiplus/um/gdiplustypes/GpRectF.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRectF.cs", + ["sources/Gdiplus/um/gdiplustypes/GpPathData.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpPathData.cs", + ["sources/Windows/shared/strsafe/Windows.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/shared/strsafe/Windows.gen.cs", + }, + InputSourceRoot = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows", + InputTestRoot = + "eng/submodules/terrafx.interop.windows/tests/Interop/Windows", + SkipScrapeIf = ["!win"], + } + ) + .ChangeNamespace( + new() + { + Mappings = new() { ["TerraFX.Interop.(.*)"] = "Silk.NET.$1" }, + } + ) + ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.OpenAL.cs b/sources/SilkTouch/Jobs/Jobs.OpenAL.cs index 75f1b18cf5..b83b311801 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenAL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenAL.cs @@ -17,114 +17,130 @@ public static SilkTouchHost DefineOpenALJob(this SilkTouchHost host) => DefaultLicenseHeader = "eng/silktouch/header.txt", }, context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = ["eng/silktouch/openal*/**/generate.rsp"], - InputSourceRoot = "sources/OpenAL", - InputTestRoot = "tests/OpenAL", - } - ) - .MarkNativeNames() - .ChangeNativeClass( - new() - { - NewClasses = new() + context + .WithDefaultFunctionTransformers( + new() + { + BoolTypes = new() { ["ALboolean"] = null, ["ALCboolean"] = null }, + } + ) + .WithMods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() { - ["(alc|ALC_).*"] = "ALContext", - ["EFX_REVERB_PRESET_.*"] = "EfxReverbPreset", - }, - } - ) - .AddApiProfiles(new()) - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/openal-soft/registry/xml/al.xml", - Namespace = "Silk.NET.OpenAL", - TypeMap = new() { ["ALenum"] = "uint", ["ALCenum"] = "uint" }, - NonStandardExtensionNomenclature = true, - Vendors = ["SOFT", "LOKI", "EXT"], - NonVendorSuffixes = ["Direct"], - IdentifyFunctionDataTypes = true, - IdentifyEnumTypeNonExclusiveVendors = true, - IdentifyEnumMemberImpliedVendors = true, - } - ) - .ExtractHandles() - .ExtractNestedTypes() - .ExtractEnumConstants() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .InterceptNativeFunctions( - new() - { - NativeFunctionNames = ["alcOpenDevice", "alcMakeContextCurrent"], - } - ) - .TransformFunctions( - new() - { - BoolTypes = new() { ["ALboolean"] = null, ["ALCboolean"] = null }, - } - ) - .TransformProperties( - new() - { - BoolTypes = new() { ["ALboolean"] = null, ["ALCboolean"] = null }, - } - ) - .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["alc", "al"] }) - .PrettifyNames( - new() - { - NameOverrides = new() + ClangSharpResponseFiles = + [ + "eng/silktouch/openal*/**/generate.rsp", + ], + InputSourceRoot = "sources/OpenAL", + InputTestRoot = "tests/OpenAL", + } + ) + .MarkNativeNames() + .ChangeNativeClass( + new() { - ["ALContext"] = "ALContext", - ["EFXEAXREVERBPROPERTIES"] = "EfxEaxReverbProperties", - ["ALCcontextHandle"] = "ContextHandle", - ["ALCdeviceHandle"] = "DeviceHandle", - ["ALBUFFERCALLBACKTYPESOFT"] = "BufferCallbackSOFT", - ["ALCEVENTPROCTYPESOFT"] = "ContextEventProcSOFT", - ["ALEVENTPROCSOFT"] = "EventProcSOFT", - ["ALDEBUGPROCEXT"] = "DebugProcEXT", - ["LPALFOLDBACKCALLBACK"] = "FoldbackCallback", - }, - Affixes = new() + NewClasses = new() + { + ["(alc|ALC_).*"] = "ALContext", + ["EFX_REVERB_PRESET_.*"] = "EfxReverbPreset", + }, + } + ) + .AddApiProfiles(new()) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/openal-soft/registry/xml/al.xml", + Namespace = "Silk.NET.OpenAL", + TypeMap = new() { ["ALenum"] = "uint", ["ALCenum"] = "uint" }, + NonStandardExtensionNomenclature = true, + Vendors = ["SOFT", "LOKI", "EXT"], + NonVendorSuffixes = ["Direct"], + IdentifyFunctionDataTypes = true, + IdentifyEnumTypeNonExclusiveVendors = true, + IdentifyEnumMemberImpliedVendors = true, + } + ) + .ExtractHandles() + .ExtractNestedTypes() + .ExtractEnumConstants() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .InterceptNativeFunctions( + new() + { + NativeFunctionNames = + [ + "alcOpenDevice", + "alcMakeContextCurrent", + ], + } + ) + .TransformFunctions() + .TransformProperties( + new() + { + BoolTypes = new() + { + ["ALboolean"] = null, + ["ALCboolean"] = null, + }, + } + ) + .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["alc", "al"] }) + .PrettifyNames( + new() { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosFunctionDataType"] = new() { IsDiscriminator = true }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosNonExclusiveVendor"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() + NameOverrides = new() { - IsDefault = true, - GenerateFactoryPartial = true, + ["ALContext"] = "ALContext", + ["EFXEAXREVERBPROPERTIES"] = "EfxEaxReverbProperties", + ["ALCcontextHandle"] = "ContextHandle", + ["ALCdeviceHandle"] = "DeviceHandle", + ["ALBUFFERCALLBACKTYPESOFT"] = "BufferCallbackSOFT", + ["ALCEVENTPROCTYPESOFT"] = "ContextEventProcSOFT", + ["ALEVENTPROCSOFT"] = "EventProcSOFT", + ["ALDEBUGPROCEXT"] = "DebugProcEXT", + ["LPALFOLDBACKCALLBACK"] = "FoldbackCallback", }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosFunctionDataType"] = new() + { + IsDiscriminator = true, + }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.OpenCL.cs b/sources/SilkTouch/Jobs/Jobs.OpenCL.cs index 19c9dec299..270dca83cd 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenCL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenCL.cs @@ -17,171 +17,198 @@ public static SilkTouchHost DefineOpenCLJob(this SilkTouchHost host) => DefaultLicenseHeader = "eng/silktouch/header.txt", }, context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = ["eng/silktouch/opencl/**/generate.rsp"], - InputSourceRoot = "sources/OpenCL", - InputTestRoot = "tests/OpenCL", - } - ) - .MarkNativeNames() - .AddApiProfiles(new()) - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/opencl-docs/xml/cl.xml", - Namespace = "Silk.NET.OpenCL", - TypeMap = new() + context + .WithDefaultFunctionTransformers( + new() { BoolTypes = new() { ["cl_bool"] = null } } + ) + .WithMods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() { - ["cl_bitfield"] = "ulong", - ["cl_properties"] = "ulong", - ["intptr_t"] = "long", - ["ErrorCodes"] = "int", - ["cl_affinity_domain_ext"] = "uint", - ["clCommandExecutionStatus"] = "uint", - ["cl_compiler_mode_altera"] = "uint", - ["cl_motion_estimation_desc_intel.mb_block_type"] = "uint", - ["cl_motion_estimation_desc_intel.subpixel_mode"] = "uint", - ["cl_motion_estimation_desc_intel.sad_adjust_mode"] = "uint", - ["cl_motion_estimation_desc_intel.search_path_type"] = "uint", - ["cl_arm_device_svm_capabilities.flags"] = "uint", - ["cl_arm_svm_alloc.flags"] = "uint", - ["cl_intel_advanced_motion_estimation.flags"] = "uint", - ["cl_intel_advanced_motion_estimation.search_cost_penalty"] = - "uint", - ["cl_intel_advanced_motion_estimation.search_cost_precision"] = - "uint", + ClangSharpResponseFiles = [ - "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.luma_block" - ] = "uint", - [ - "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.chroma_block" - ] = "uint", - ["cl_intel_advanced_motion_estimation.skip_block_type"] = - "uint", - ["cl_intel_advanced_motion_estimation.device_me_version"] = - "uint", - [ - "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel" - ] = "uint", - [ - "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel.2" - ] = "uint", - ["cl_intel_device_side_avc_motion_estimation.version"] = "uint", - ["cl_intel_device_side_avc_motion_estimation.major"] = "uint", - ["cl_intel_device_side_avc_motion_estimation.minor"] = "uint", - ["cl_intel_device_side_avc_motion_estimation.major.dir"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.partition"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.window"] = "uint", - ["cl_intel_device_side_avc_motion_estimation.adjust"] = "uint", - ["cl_intel_device_side_avc_motion_estimation.subpixel"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.cost.precision"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.weight"] = "uint", - ["cl_intel_device_side_avc_motion_estimation.border"] = "uint", - ["cl_intel_device_side_avc_motion_estimation.skip"] = "uint", - ["cl_intel_device_side_avc_motion_estimation.skip.dir"] = - "uint", - [ - "cl_intel_device_side_avc_motion_estimation.skip.block.based" - ] = "uint", - ["cl_intel_device_side_avc_motion_estimation.intra"] = "uint", - ["cl_intel_device_side_avc_motion_estimation.intra.luma"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.intra.neighbor"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.luma.predictor"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.frame.dir"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.slice"] = "uint", - ["cl_intel_device_side_avc_motion_estimation.scan.dir"] = - "uint", - ["cl_command_termination_reason_arm"] = "uint", - ["cl_platform_command_buffer_capabilities_khr"] = "uint", - ["cl_device_command_buffer_capabilities_khr"] = "uint", - ["cl_media_adapter_type_khr"] = "uint", - ["cl_media_adapter_set_khr"] = "uint", - ["host_cache_policy"] = "uint", - ["allocation_type"] = "uint", - ["cl_unified_shared_memory_capabilities_intel"] = "uint", - ["cl_mem_alloc_info_intel"] = "uint", - ["cl_semaphore_type"] = "uint", - ["cl_kernel_workgroup_info"] = "uint", - }, - Vendors = ["ALTERA"], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .TransformHandles(new() { UseDsl = true }) - .TransformFunctions(new() { BoolTypes = new() { ["cl_bool"] = null } }) - .TransformProperties(new() { BoolTypes = new() { ["cl_bool"] = null } }) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["cl", "_cl"], - PrefixOverrides = new() + "eng/silktouch/opencl/**/generate.rsp", + ], + InputSourceRoot = "sources/OpenCL", + InputTestRoot = "tests/OpenCL", + } + ) + .MarkNativeNames() + .AddApiProfiles(new()) + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .MixKhronosData( + new() { - ["cl_device_info"] = "CL_DEVICE", - ["cl_context_properties"] = "CL_CONTEXT", - ["cl_device_integer_dot_product_capabilities"] = - "CL_DEVICE_INTEGER_DOT_PRODUCT", - ["cl_device_integer_dot_product_capabilities_khr"] = - "CL_DEVICE_INTEGER_DOT_PRODUCT", - }, - } - ) - .PrettifyNames( - new() - { - NameOverrides = new() + SpecPath = "eng/submodules/opencl-docs/xml/cl.xml", + Namespace = "Silk.NET.OpenCL", + TypeMap = new() + { + ["cl_bitfield"] = "ulong", + ["cl_properties"] = "ulong", + ["intptr_t"] = "long", + ["ErrorCodes"] = "int", + ["cl_affinity_domain_ext"] = "uint", + ["clCommandExecutionStatus"] = "uint", + ["cl_compiler_mode_altera"] = "uint", + ["cl_motion_estimation_desc_intel.mb_block_type"] = "uint", + ["cl_motion_estimation_desc_intel.subpixel_mode"] = "uint", + ["cl_motion_estimation_desc_intel.sad_adjust_mode"] = + "uint", + ["cl_motion_estimation_desc_intel.search_path_type"] = + "uint", + ["cl_arm_device_svm_capabilities.flags"] = "uint", + ["cl_arm_svm_alloc.flags"] = "uint", + ["cl_intel_advanced_motion_estimation.flags"] = "uint", + [ + "cl_intel_advanced_motion_estimation.search_cost_penalty" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.search_cost_precision" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.luma_block" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.chroma_block" + ] = "uint", + ["cl_intel_advanced_motion_estimation.skip_block_type"] = + "uint", + ["cl_intel_advanced_motion_estimation.device_me_version"] = + "uint", + [ + "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel.2" + ] = "uint", + ["cl_intel_device_side_avc_motion_estimation.version"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.major"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.minor"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.major.dir"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.partition"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.window"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.adjust"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.subpixel"] = + "uint", + [ + "cl_intel_device_side_avc_motion_estimation.cost.precision" + ] = "uint", + ["cl_intel_device_side_avc_motion_estimation.weight"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.border"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.skip"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.skip.dir"] = + "uint", + [ + "cl_intel_device_side_avc_motion_estimation.skip.block.based" + ] = "uint", + ["cl_intel_device_side_avc_motion_estimation.intra"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.intra.luma"] = + "uint", + [ + "cl_intel_device_side_avc_motion_estimation.intra.neighbor" + ] = "uint", + [ + "cl_intel_device_side_avc_motion_estimation.luma.predictor" + ] = "uint", + ["cl_intel_device_side_avc_motion_estimation.frame.dir"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.slice"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.scan.dir"] = + "uint", + ["cl_command_termination_reason_arm"] = "uint", + ["cl_platform_command_buffer_capabilities_khr"] = "uint", + ["cl_device_command_buffer_capabilities_khr"] = "uint", + ["cl_media_adapter_type_khr"] = "uint", + ["cl_media_adapter_set_khr"] = "uint", + ["host_cache_policy"] = "uint", + ["allocation_type"] = "uint", + ["cl_unified_shared_memory_capabilities_intel"] = "uint", + ["cl_mem_alloc_info_intel"] = "uint", + ["cl_semaphore_type"] = "uint", + ["cl_kernel_workgroup_info"] = "uint", + }, + Vendors = ["ALTERA"], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions() + .TransformProperties(new() { BoolTypes = new() { ["cl_bool"] = null } }) + .IdentifySharedPrefixes( + new() { - ["CL_DRIVER_VERSION"] = "DriverVersion", - ["CL_DRIVER_UUID"] = "DriverUuid", - ["CL_DRIVER_UUID_KHR"] = "DriverUuidKHR", - }, - Affixes = new() + GlobalPrefixHints = ["cl", "_cl"], + PrefixOverrides = new() + { + ["cl_device_info"] = "CL_DEVICE", + ["cl_context_properties"] = "CL_CONTEXT", + ["cl_device_integer_dot_product_capabilities"] = + "CL_DEVICE_INTEGER_DOT_PRODUCT", + ["cl_device_integer_dot_product_capabilities_khr"] = + "CL_DEVICE_INTEGER_DOT_PRODUCT", + }, + } + ) + .PrettifyNames( + new() { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1, Capitalize = true }, - ["KhronosFunctionDataType"] = new() { IsDiscriminator = true }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosNonExclusiveVendor"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() + NameOverrides = new() + { + ["CL_DRIVER_VERSION"] = "DriverVersion", + ["CL_DRIVER_UUID"] = "DriverUuid", + ["CL_DRIVER_UUID_KHR"] = "DriverUuidKHR", + }, + Affixes = new() { - IsDefault = true, - GenerateFactoryPartial = true, + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1, Capitalize = true }, + ["KhronosFunctionDataType"] = new() + { + IsDiscriminator = true, + }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.OpenGL.cs b/sources/SilkTouch/Jobs/Jobs.OpenGL.cs index e647ca24e0..26ca51d790 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenGL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenGL.cs @@ -17,127 +17,139 @@ public static SilkTouchHost DefineOpenGLJob(this SilkTouchHost host) => DefaultLicenseHeader = "eng/silktouch/header.txt", }, context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = ["eng/silktouch/opengl/**/generate.rsp"], - InputSourceRoot = "sources/OpenGL", - InputTestRoot = "tests/OpenGL", - } - ) - .MarkNativeNames() - .AddApiProfiles( - new() - { - Profiles = - [ - new() { Profile = "gl", SourceSubdirectory = "glcompat" }, - new() + context + .WithDefaultFunctionTransformers( + new() { BoolTypes = new() { ["GLboolean"] = null } } + ) + .WithMods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = + [ + "eng/silktouch/opengl/**/generate.rsp", + ], + InputSourceRoot = "sources/OpenGL", + InputTestRoot = "tests/OpenGL", + } + ) + .MarkNativeNames() + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "gl", SourceSubdirectory = "glcompat" }, + new() + { + Profile = "glcore", + SourceSubdirectory = "glcore", + MinVersion = "3.2", + }, + new() + { + Profile = "gles1", + SourceSubdirectory = "gles1", + MaxVersion = "2.0", + }, + new() + { + Profile = "gles2", + SourceSubdirectory = "gles2", + MinVersion = "2.0", + }, + ], + } + ) + .BakeSourceSets( + new() + { + SourceSets = new() { - Profile = "glcore", - SourceSubdirectory = "glcore", - MinVersion = "3.2", + ["glcompat"] = "gl", + ["glcore"] = "gl", + ["gles1"] = "gl", + ["gles2"] = "gl", }, - new() + } + ) + .AddOpaqueStructs(new() { Names = ["GLsync"] }) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/opengl-registry/xml/gl.xml", + Namespace = "Silk.NET.OpenGL", + TypeMap = new() { - Profile = "gles1", - SourceSubdirectory = "gles1", - MaxVersion = "2.0", + ["GLenum"] = "uint", + ["TraceMaskMESA"] = "uint", + ["PathRenderingTokenNV"] = "byte", + ["PathCoordType"] = "byte", }, - new() + IdentifyFunctionDataTypes = true, + IdentifyEnumTypeNonExclusiveVendors = true, + IdentifyEnumMemberImpliedVendors = true, + } + ) + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions() + .TransformProperties( + new() { BoolTypes = new() { ["GLboolean"] = null } } + ) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["gl"], + PrefixOverrides = new() { - Profile = "gles2", - SourceSubdirectory = "gles2", - MinVersion = "2.0", + ["SyncObjectMask"] = "GL_SYNC", + ["OcclusionQueryParameterNameNV"] = "GL", + ["TexStorageAttribs"] = "GL", + ["ContainerType"] = "GL", + ["SeparableTargetEXT"] = "GL", }, - ], - } - ) - .BakeSourceSets( - new() - { - SourceSets = new() + } + ) + .PrettifyNames( + new() { - ["glcompat"] = "gl", - ["glcore"] = "gl", - ["gles1"] = "gl", - ["gles2"] = "gl", - }, - } - ) - .AddOpaqueStructs(new() { Names = ["GLsync"] }) - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/opengl-registry/xml/gl.xml", - Namespace = "Silk.NET.OpenGL", - TypeMap = new() - { - ["GLenum"] = "uint", - ["TraceMaskMESA"] = "uint", - ["PathRenderingTokenNV"] = "byte", - ["PathCoordType"] = "byte", - }, - IdentifyFunctionDataTypes = true, - IdentifyEnumTypeNonExclusiveVendors = true, - IdentifyEnumMemberImpliedVendors = true, - } - ) - .TransformHandles(new() { UseDsl = true }) - .TransformFunctions(new() { BoolTypes = new() { ["GLboolean"] = null } }) - .TransformProperties(new() { BoolTypes = new() { ["GLboolean"] = null } }) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["gl"], - PrefixOverrides = new() - { - ["SyncObjectMask"] = "GL_SYNC", - ["OcclusionQueryParameterNameNV"] = "GL", - ["TexStorageAttribs"] = "GL", - ["ContainerType"] = "GL", - ["SeparableTargetEXT"] = "GL", - }, - } - ) - .PrettifyNames( - new() - { - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosFunctionDataType"] = new() { IsDiscriminator = true }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosNonExclusiveVendor"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() + Affixes = new() { - IsDefault = true, - GenerateMakeCurrentPartial = true, + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosFunctionDataType"] = new() + { + IsDiscriminator = true, + }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateMakeCurrentPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.OpenXR.cs b/sources/SilkTouch/Jobs/Jobs.OpenXR.cs index 17376eb6fe..be6e1ca0ac 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenXR.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenXR.cs @@ -17,106 +17,119 @@ public static SilkTouchHost DefineOpenXRJob(this SilkTouchHost host) => DefaultLicenseHeader = "eng/silktouch/header.txt", }, context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = ["eng/silktouch/openxr/**/generate.rsp"], - InputSourceRoot = "sources/OpenXR", - InputTestRoot = "tests/OpenXR", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .MixKhronosData( - new() - { - SpecPath = - "eng/submodules/openxr-sdk/specification/registry/xr.xml", - Namespace = "Silk.NET.OpenXR", - StructureTypes = ["XrStructureType"], - FlagsTypes = ["XrFlags64"], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .AddApiProfiles( - new() - { - Profiles = - [ - new() { Profile = "openxr", SourceSubdirectory = "openxr" }, - ], - } - ) - .InterceptNativeFunctions( - new() { NativeFunctionNames = ["xrCreateInstance"] } - ) - .TransformFunctions(new() { BoolTypes = new() { ["XrBool32"] = null } }) - .TransformProperties(new() { BoolTypes = new() { ["XrBool32"] = null } }) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["PFN_xr", "xr"], - PrefixOverrides = new() + context + .WithDefaultFunctionTransformers( + new() { BoolTypes = new() { ["XrBool32"] = null } } + ) + .WithMods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() { - ["XrPerfSettingsNotificationLevelEXT"] = - "XR_PERF_SETTINGS_NOTIF_LEVEL", - ["XrSceneMarkerQRCodeSymbolTypeMSFT"] = - "XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE", - ["XrStructureType"] = "XR_TYPE", - }, - } - ) - .PrettifyNames( - new() - { - Affixes = new() + ClangSharpResponseFiles = + [ + "eng/silktouch/openxr/**/generate.rsp", + ], + InputSourceRoot = "sources/OpenXR", + InputTestRoot = "tests/OpenXR", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .MixKhronosData( + new() { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosHandleType"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() - { - AddNoneMemberToFlags = true, - RemoveMembers = - [ - new() { MemberName = "MaxEnum", MemberValue = "0x7FFFFFFF" }, - ], - CoerceBackingTypes = TransformEnums - .EnumBackingTypePreference - .PreferUnsigned, - RewriteMemberValues = true, - } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() + SpecPath = + "eng/submodules/openxr-sdk/specification/registry/xr.xml", + Namespace = "Silk.NET.OpenXR", + StructureTypes = ["XrStructureType"], + FlagsTypes = ["XrFlags64"], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "openxr", SourceSubdirectory = "openxr" }, + ], + } + ) + .InterceptNativeFunctions( + new() { NativeFunctionNames = ["xrCreateInstance"] } + ) + .TransformFunctions() + .TransformProperties( + new() { BoolTypes = new() { ["XrBool32"] = null } } + ) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["PFN_xr", "xr"], + PrefixOverrides = new() { - IsDefault = true, - GenerateFactoryPartial = true, + ["XrPerfSettingsNotificationLevelEXT"] = + "XR_PERF_SETTINGS_NOTIF_LEVEL", + ["XrSceneMarkerQRCodeSymbolTypeMSFT"] = + "XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE", + ["XrStructureType"] = "XR_TYPE", }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) + } + ) + .PrettifyNames( + new() + { + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosHandleType"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() + { + AddNoneMemberToFlags = true, + RemoveMembers = + [ + new() + { + MemberName = "MaxEnum", + MemberValue = "0x7FFFFFFF", + }, + ], + CoerceBackingTypes = TransformEnums + .EnumBackingTypePreference + .PreferUnsigned, + RewriteMemberValues = true, + } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.SDL.cs b/sources/SilkTouch/Jobs/Jobs.SDL.cs index 469c0cb892..f812681433 100644 --- a/sources/SilkTouch/Jobs/Jobs.SDL.cs +++ b/sources/SilkTouch/Jobs/Jobs.SDL.cs @@ -16,35 +16,44 @@ public static SilkTouchHost DefineSDLJob(this SilkTouchHost host) => DefaultLicenseHeader = "eng/silktouch/header.txt", }, context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = ["eng/silktouch/sdl/**/generate.rsp"], - InputSourceRoot = "sources/SDL", - InputTestRoot = "tests/SDL", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractEnumConstants() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .TransformFunctions(new() { BoolTypes = new() { ["SDL_bool"] = null } }) - .TransformProperties(new() { BoolTypes = new() { ["SDL_bool"] = null } }) - .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["SDL"] }) - .PrettifyNames( - new() { Affixes = new() { ["SharedPrefix"] = new() { Remove = true } } } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables(new()) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) + context + .WithDefaultFunctionTransformers( + new() { BoolTypes = new() { ["SDL_bool"] = null } } + ) + .WithMods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/sdl/**/generate.rsp"], + InputSourceRoot = "sources/SDL", + InputTestRoot = "tests/SDL", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractEnumConstants() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions() + .TransformProperties( + new() { BoolTypes = new() { ["SDL_bool"] = null } } + ) + .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["SDL"] }) + .PrettifyNames( + new() + { + Affixes = new() { ["SharedPrefix"] = new() { Remove = true } }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables(new()) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.Vulkan.cs b/sources/SilkTouch/Jobs/Jobs.Vulkan.cs index c0574d92f9..78f6d6e6eb 100644 --- a/sources/SilkTouch/Jobs/Jobs.Vulkan.cs +++ b/sources/SilkTouch/Jobs/Jobs.Vulkan.cs @@ -17,112 +17,132 @@ public static SilkTouchHost DefineVulkanJob(this SilkTouchHost host) => DefaultLicenseHeader = "eng/silktouch/header.txt", }, context => - context.Mods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = ["eng/silktouch/vulkan/**/generate.rsp"], - InputSourceRoot = "sources/Vulkan", - InputTestRoot = "tests/Vulkan", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", - Namespace = "Silk.NET.Vulkan", - StructureTypes = ["VkStructureType"], - FlagsTypes = ["VkFlags", "VkFlags64"], - ExcludeVendorSuffixIdentification = - [ - "VK_VENDOR_ID_VIV", - "VK_VENDOR_ID_VSI", - "VK_VENDOR_ID_MESA", - ], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .AddApiProfiles( - new() - { - Profiles = - [ - new() { Profile = "vulkan", SourceSubdirectory = "vulkan" }, - ], - } - ) - .InterceptNativeFunctions( - new() { NativeFunctionNames = ["vkCreateInstance", "vkCreateDevice"] } - ) - .TransformFunctions(new() { BoolTypes = new() { ["VkBool32"] = null } }) - .TransformProperties(new() { BoolTypes = new() { ["VkBool32"] = null } }) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["PFN_vk", "vk"], - PrefixOverrides = new() + context + .WithDefaultFunctionTransformers( + new() { BoolTypes = new() { ["VkBool32"] = null } } + ) + .WithMods(mods => + mods.AddIncludes(new()) + .ClangScraper( + new() { - ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", - ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", - ["VkMemoryDecompressionMethodFlagsEXT"] = - "VK_MEMORY_DECOMPRESSION_METHOD", - }, - } - ) - .PrettifyNames( - new() - { - NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, - Affixes = new() + ClangSharpResponseFiles = + [ + "eng/silktouch/vulkan/**/generate.rsp", + ], + InputSourceRoot = "sources/Vulkan", + InputTestRoot = "tests/Vulkan", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .MixKhronosData( + new() { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosHandleType"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() - { - AddNoneMemberToFlags = true, - RemoveMembers = - [ - new() { MemberName = "MaxEnum", MemberValue = "0x7FFFFFFF" }, - new() { MemberName = "Invalid", MemberValue = "0x7FFFFFFF" }, - ], - CoerceBackingTypes = TransformEnums - .EnumBackingTypePreference - .PreferUnsigned, - RewriteMemberValues = true, - } - ) - .AddVTables( - new() - { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() + SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", + Namespace = "Silk.NET.Vulkan", + StructureTypes = ["VkStructureType"], + FlagsTypes = ["VkFlags", "VkFlags64"], + ExcludeVendorSuffixIdentification = + [ + "VK_VENDOR_ID_VIV", + "VK_VENDOR_ID_VSI", + "VK_VENDOR_ID_MESA", + ], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "vulkan", SourceSubdirectory = "vulkan" }, + ], + } + ) + .InterceptNativeFunctions( + new() + { + NativeFunctionNames = ["vkCreateInstance", "vkCreateDevice"], + } + ) + .TransformFunctions() + .TransformProperties( + new() { BoolTypes = new() { ["VkBool32"] = null } } + ) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["PFN_vk", "vk"], + PrefixOverrides = new() + { + ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", + ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", + ["VkMemoryDecompressionMethodFlagsEXT"] = + "VK_MEMORY_DECOMPRESSION_METHOD", + }, + } + ) + .PrettifyNames( + new() + { + NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, + Affixes = new() { - IsDefault = true, - GenerateFactoryPartial = true, + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosHandleType"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) - ) + } + ) + .TransformEnums( + new() + { + AddNoneMemberToFlags = true, + RemoveMembers = + [ + new() + { + MemberName = "MaxEnum", + MemberValue = "0x7FFFFFFF", + }, + new() + { + MemberName = "Invalid", + MemberValue = "0x7FFFFFFF", + }, + ], + CoerceBackingTypes = TransformEnums + .EnumBackingTypePreference + .PreferUnsigned, + RewriteMemberValues = true, + } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() + { + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } + ) + ) ); } diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs index d46bb2ba0d..7c9c5b7804 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs @@ -13,22 +13,6 @@ namespace Silk.NET.SilkTouch.Mods; /// public class TransformFunctions(FunctionTransformer ft) : ModCSharpSyntaxRewriter, IMod { - /// - /// Configuration for the and related code. - /// - public class Configuration - { - /// - /// Whether all integer return types should be treated as potentially boolean. - /// - public bool IntReturnsMaybeBool { get; init; } - - /// - /// Types to treat as boolean and their boolean schemes if different from the default. - /// - public Dictionary BoolTypes { get; init; } = []; - } - /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/BoolTransformer.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/BoolTransformer.cs index 6b97289bfe..76fe222552 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/BoolTransformer.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/BoolTransformer.cs @@ -9,8 +9,24 @@ namespace Silk.NET.SilkTouch.Mods.Transformation; /// /// A transformer transforming parameters that are recognised to be akin to booleans to use the MaybeBool type. /// -public class BoolTransformer(TransformFunctions.Configuration config) : IFunctionTransformer +public class BoolTransformer(BoolTransformer.Configuration config) : IFunctionTransformer { + /// + /// Configuration for the . + /// + public class Configuration + { + /// + /// Whether all integer return types should be treated as potentially boolean. + /// + public bool IntReturnsMaybeBool { get; init; } + + /// + /// Types to treat as boolean and their boolean schemes if different from the default. + /// + public Dictionary BoolTypes { get; init; } = []; + } + /// public void Transform( MethodDeclarationSyntax current, diff --git a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs index 64d29ba1b0..55d7ee8ad1 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs @@ -5,6 +5,7 @@ using Autofac; using Microsoft.Extensions.Logging; using Silk.NET.SilkTouch.Mods; +using Silk.NET.SilkTouch.Mods.Transformation; using Silk.NET.SilkTouch.Sources; namespace Silk.NET.SilkTouch; @@ -57,7 +58,11 @@ Action configure _logger = parentContainer.Resolve>(); _inputResolver = parentContainer.Resolve(); - _container = parentContainer.BeginLifetimeScope(configure); + _container = parentContainer.BeginLifetimeScope(builder => + { + builder.RegisterType().SingleInstance(); + configure.Invoke(builder); + }); _modContextFactory = _container.Resolve(); Mods = _container.Resolve(); diff --git a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs index 4a45d923a8..5d09698f4e 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs @@ -26,16 +26,75 @@ public static SilkTouchRegistrationContext SilkTouch(this ContainerBuilder build /// /// Begins a . /// - public SilkTouchModRegistrationContext Mods() => new(context.Builder); + public SilkTouchModRegistrationContext WithMods() => new(context.Builder); /// /// Begins a . /// - public SilkTouchRegistrationContext Mods(Action build) + public SilkTouchRegistrationContext WithMods(Action build) { build.Invoke(new SilkTouchModRegistrationContext(context.Builder)); return context; } + + /// + /// Registers the default function transformers. + /// + /// + public SilkTouchRegistrationContext WithDefaultFunctionTransformers( + BoolTransformer.Configuration boolTransformerConfig + ) => + context + .WithPtrRefTransformer() + .WithBoolTransformer(boolTransformerConfig) + .WithArrayParameterTransformer(); + + /// + /// Registers the function transformer. + /// + /// + public SilkTouchRegistrationContext WithPtrRefTransformer() + { + context + .Builder.RegisterType() + .AsImplementedInterfaces() + .SingleInstance(); + + return context; + } + + /// + /// Registers the function transformer. + /// + /// + public SilkTouchRegistrationContext WithBoolTransformer( + BoolTransformer.Configuration boolTransformerConfig + ) + { + context + .Builder.RegisterType() + .WithParameter( + new TypedParameter(typeof(BoolTransformer.Configuration), boolTransformerConfig) + ) + .AsImplementedInterfaces() + .SingleInstance(); + + return context; + } + + /// + /// Registers the function transformer. + /// + /// + public SilkTouchRegistrationContext WithArrayParameterTransformer() + { + context + .Builder.RegisterType() + .AsImplementedInterfaces() + .SingleInstance(); + + return context; + } } extension(SilkTouchModRegistrationContext context) @@ -316,39 +375,13 @@ public SilkTouchModRegistrationContext TransformEnums(TransformEnums.Configurati /// /// Registers the mod. /// - public SilkTouchModRegistrationContext TransformFunctions( - TransformFunctions.Configuration config - ) + public SilkTouchModRegistrationContext TransformFunctions() { context .Builder.RegisterType() .AsHierarchyAndInterfaces() .SingleInstance(); - // These probably can be moved to their own registration methods, but keeping it here since we have no reason to exclude any transformers right now - // Also, BoolTransformer relies on TransformFunctions.Configuration, which is tech debt - { - context.Builder.RegisterType().SingleInstance(); - - context - .Builder.RegisterType() - .AsImplementedInterfaces() - .SingleInstance(); - - context - .Builder.RegisterType() - .WithParameter( - new TypedParameter(typeof(TransformFunctions.Configuration), config) - ) - .AsImplementedInterfaces() - .SingleInstance(); - - context - .Builder.RegisterType() - .AsImplementedInterfaces() - .SingleInstance(); - } - return context; } From 09f119af7ceb8723ae66fc781826afe5132eb76f Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 01:12:22 -0400 Subject: [PATCH 50/93] Generate all bindings except Microsoft on Windows --- sources/OpenAL/OpenAL/al/AL.gen.cs | 2 +- sources/OpenAL/OpenAL/al/ALContext.gen.cs | 2 +- sources/OpenCL/OpenCL/OpenCL/Cl.gen.cs | 262 ++++++++---------- ...gerDotProductAccelerationProperties.gen.cs | 12 +- ...DotProductAccelerationPropertiesKHR.gen.cs | 12 +- 5 files changed, 135 insertions(+), 155 deletions(-) diff --git a/sources/OpenAL/OpenAL/al/AL.gen.cs b/sources/OpenAL/OpenAL/al/AL.gen.cs index c11df0e5f9..aecf2deb58 100644 --- a/sources/OpenAL/OpenAL/al/AL.gen.cs +++ b/sources/OpenAL/OpenAL/al/AL.gen.cs @@ -26131,7 +26131,7 @@ uint value_size [NativeName("AL_EXT_FOLDBACK_NAME")] [SupportedApiProfile("al", ["AL_EXT_FOLDBACK"])] - public static ReadOnlySpan ExtFoldbackName => "AL_EXT_FOLDBACK"u8; + public static Utf8String ExtFoldbackName => "AL_EXT_FOLDBACK"u8; [NativeName("alAuxiliaryEffectSlotf")] [SupportedApiProfile("al", ["ALC_EXT_EFX"]), SupportedApiProfile("alc", ["ALC_EXT_EFX"])] diff --git a/sources/OpenAL/OpenAL/al/ALContext.gen.cs b/sources/OpenAL/OpenAL/al/ALContext.gen.cs index cbb083c22b..9dc8207788 100644 --- a/sources/OpenAL/OpenAL/al/ALContext.gen.cs +++ b/sources/OpenAL/OpenAL/al/ALContext.gen.cs @@ -1934,7 +1934,7 @@ public static void SuspendContext(ContextHandle context) => [NativeName("ALC_EXT_EFX_NAME")] [SupportedApiProfile("al", ["ALC_EXT_EFX"]), SupportedApiProfile("alc", ["ALC_EXT_EFX"])] - public static ReadOnlySpan ExtEfxName => "ALC_EXT_EFX"u8; + public static Utf8String ExtEfxName => "ALC_EXT_EFX"u8; [NativeName("alcCaptureCloseDevice")] [SupportedApiProfile("alc", ["ALC_VERSION_1_1"], MinVersion = "1.1")] diff --git a/sources/OpenCL/OpenCL/OpenCL/Cl.gen.cs b/sources/OpenCL/OpenCL/OpenCL/Cl.gen.cs index 324d4c61e3..e0bb192aa2 100644 --- a/sources/OpenCL/OpenCL/OpenCL/Cl.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/Cl.gen.cs @@ -26875,7 +26875,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public const int LuidSize = 8; [NativeName("CL_KHR_FP64_EXTENSION_NAME")] - public static ReadOnlySpan KhrFp64ExtensionName => "cl_khr_fp64"u8; + public static Utf8String KhrFp64ExtensionName => "cl_khr_fp64"u8; [NativeName("CL_KHR_FP64_EXTENSION_VERSION")] public const int KhrFp64ExtensionVersion = ( @@ -26885,7 +26885,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_FP16_EXTENSION_NAME")] - public static ReadOnlySpan KhrFp16ExtensionName => "cl_khr_fp16"u8; + public static Utf8String KhrFp16ExtensionName => "cl_khr_fp16"u8; [NativeName("CL_KHR_FP16_EXTENSION_VERSION")] public const int KhrFp16ExtensionVersion = ( @@ -26895,7 +26895,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_APPLE_SETMEMOBJECTDESTRUCTOR_EXTENSION_NAME")] - public static ReadOnlySpan AppleSetmemobjectdestructorExtensionName => + public static Utf8String AppleSetmemobjectdestructorExtensionName => "cl_APPLE_SetMemObjectDestructor"u8; [NativeName("CL_APPLE_SETMEMOBJECTDESTRUCTOR_EXTENSION_VERSION")] @@ -26906,7 +26906,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_APPLE_CONTEXTLOGGINGFUNCTIONS_EXTENSION_NAME")] - public static ReadOnlySpan AppleContextloggingfunctionsExtensionName => + public static Utf8String AppleContextloggingfunctionsExtensionName => "cl_APPLE_ContextLoggingFunctions"u8; [NativeName("CL_APPLE_CONTEXTLOGGINGFUNCTIONS_EXTENSION_VERSION")] @@ -26917,7 +26917,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_ICD_EXTENSION_NAME")] - public static ReadOnlySpan KhrIcdExtensionName => "cl_khr_icd"u8; + public static Utf8String KhrIcdExtensionName => "cl_khr_icd"u8; [NativeName("CL_KHR_ICD_EXTENSION_VERSION")] public const int KhrIcdExtensionVersion = ( @@ -26931,7 +26931,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public static nint Icd2TagKHR => unchecked((nint)(0x4F50454E434C3331)); [NativeName("CL_KHR_ICD_UNLOADABLE_EXTENSION_NAME")] - public static ReadOnlySpan KhrIcdUnloadableExtensionName => "cl_khr_icd_unloadable"u8; + public static Utf8String KhrIcdUnloadableExtensionName => "cl_khr_icd_unloadable"u8; [NativeName("CL_KHR_ICD_UNLOADABLE_EXTENSION_VERSION")] public const int KhrIcdUnloadableExtensionVersion = ( @@ -26941,7 +26941,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_IL_PROGRAM_EXTENSION_NAME")] - public static ReadOnlySpan KhrIlProgramExtensionName => "cl_khr_il_program"u8; + public static Utf8String KhrIlProgramExtensionName => "cl_khr_il_program"u8; [NativeName("CL_KHR_IL_PROGRAM_EXTENSION_VERSION")] public const int KhrIlProgramExtensionVersion = ( @@ -26951,8 +26951,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_IMAGE2D_FROM_BUFFER_EXTENSION_NAME")] - public static ReadOnlySpan KhrImage2DFromBufferExtensionName => - "cl_khr_image2d_from_buffer"u8; + public static Utf8String KhrImage2DFromBufferExtensionName => "cl_khr_image2d_from_buffer"u8; [NativeName("CL_KHR_IMAGE2D_FROM_BUFFER_EXTENSION_VERSION")] public const int KhrImage2DFromBufferExtensionVersion = ( @@ -26962,8 +26961,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_INITIALIZE_MEMORY_EXTENSION_NAME")] - public static ReadOnlySpan KhrInitializeMemoryExtensionName => - "cl_khr_initialize_memory"u8; + public static Utf8String KhrInitializeMemoryExtensionName => "cl_khr_initialize_memory"u8; [NativeName("CL_KHR_INITIALIZE_MEMORY_EXTENSION_VERSION")] public const int KhrInitializeMemoryExtensionVersion = ( @@ -26973,8 +26971,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_TERMINATE_CONTEXT_EXTENSION_NAME")] - public static ReadOnlySpan KhrTerminateContextExtensionName => - "cl_khr_terminate_context"u8; + public static Utf8String KhrTerminateContextExtensionName => "cl_khr_terminate_context"u8; [NativeName("CL_KHR_TERMINATE_CONTEXT_EXTENSION_VERSION")] public const int KhrTerminateContextExtensionVersion = ( @@ -26984,7 +26981,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SPIR_EXTENSION_NAME")] - public static ReadOnlySpan KhrSpirExtensionName => "cl_khr_spir"u8; + public static Utf8String KhrSpirExtensionName => "cl_khr_spir"u8; [NativeName("CL_KHR_SPIR_EXTENSION_VERSION")] public const int KhrSpirExtensionVersion = ( @@ -26994,8 +26991,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_CREATE_COMMAND_QUEUE_EXTENSION_NAME")] - public static ReadOnlySpan KhrCreateCommandQueueExtensionName => - "cl_khr_create_command_queue"u8; + public static Utf8String KhrCreateCommandQueueExtensionName => "cl_khr_create_command_queue"u8; [NativeName("CL_KHR_CREATE_COMMAND_QUEUE_EXTENSION_VERSION")] public const int KhrCreateCommandQueueExtensionVersion = ( @@ -27005,7 +27001,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_NV_DEVICE_ATTRIBUTE_QUERY_EXTENSION_NAME")] - public static ReadOnlySpan NvDeviceAttributeQueryExtensionName => + public static Utf8String NvDeviceAttributeQueryExtensionName => "cl_nv_device_attribute_query"u8; [NativeName("CL_NV_DEVICE_ATTRIBUTE_QUERY_EXTENSION_VERSION")] @@ -27016,7 +27012,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_AMD_DEVICE_ATTRIBUTE_QUERY_EXTENSION_NAME")] - public static ReadOnlySpan AmdDeviceAttributeQueryExtensionName => + public static Utf8String AmdDeviceAttributeQueryExtensionName => "cl_amd_device_attribute_query"u8; [NativeName("CL_AMD_DEVICE_ATTRIBUTE_QUERY_EXTENSION_VERSION")] @@ -27027,7 +27023,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_ARM_PRINTF_EXTENSION_NAME")] - public static ReadOnlySpan ArmPrintfExtensionName => "cl_arm_printf"u8; + public static Utf8String ArmPrintfExtensionName => "cl_arm_printf"u8; [NativeName("CL_ARM_PRINTF_EXTENSION_VERSION")] public const int ArmPrintfExtensionVersion = ( @@ -27037,7 +27033,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_EXT_DEVICE_FISSION_EXTENSION_NAME")] - public static ReadOnlySpan ExtDeviceFissionExtensionName => "cl_ext_device_fission"u8; + public static Utf8String ExtDeviceFissionExtensionName => "cl_ext_device_fission"u8; [NativeName("CL_EXT_DEVICE_FISSION_EXTENSION_VERSION")] public const int ExtDeviceFissionExtensionVersion = ( @@ -27059,8 +27055,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public const ulong PartitionByNamesListEndEXT = unchecked((ulong)(0) - 1); [NativeName("CL_EXT_MIGRATE_MEMOBJECT_EXTENSION_NAME")] - public static ReadOnlySpan ExtMigrateMemobjectExtensionName => - "cl_ext_migrate_memobject"u8; + public static Utf8String ExtMigrateMemobjectExtensionName => "cl_ext_migrate_memobject"u8; [NativeName("CL_EXT_MIGRATE_MEMOBJECT_EXTENSION_VERSION")] public const int ExtMigrateMemobjectExtensionVersion = ( @@ -27070,7 +27065,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_EXT_CXX_FOR_OPENCL_EXTENSION_NAME")] - public static ReadOnlySpan ExtCxxForOpenclExtensionName => "cl_ext_cxx_for_opencl"u8; + public static Utf8String ExtCxxForOpenclExtensionName => "cl_ext_cxx_for_opencl"u8; [NativeName("CL_EXT_CXX_FOR_OPENCL_EXTENSION_VERSION")] public const int ExtCxxForOpenclExtensionVersion = ( @@ -27080,7 +27075,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_QCOM_EXT_HOST_PTR_EXTENSION_NAME")] - public static ReadOnlySpan QcomExtHostPtrExtensionName => "cl_qcom_ext_host_ptr"u8; + public static Utf8String QcomExtHostPtrExtensionName => "cl_qcom_ext_host_ptr"u8; [NativeName("CL_QCOM_EXT_HOST_PTR_EXTENSION_VERSION")] public const int QcomExtHostPtrExtensionVersion = ( @@ -27090,7 +27085,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_QCOM_EXT_HOST_PTR_IOCOHERENT_EXTENSION_NAME")] - public static ReadOnlySpan QcomExtHostPtrIocoherentExtensionName => + public static Utf8String QcomExtHostPtrIocoherentExtensionName => "cl_qcom_ext_host_ptr_iocoherent"u8; [NativeName("CL_QCOM_EXT_HOST_PTR_IOCOHERENT_EXTENSION_VERSION")] @@ -27101,7 +27096,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_QCOM_ION_HOST_PTR_EXTENSION_NAME")] - public static ReadOnlySpan QcomIonHostPtrExtensionName => "cl_qcom_ion_host_ptr"u8; + public static Utf8String QcomIonHostPtrExtensionName => "cl_qcom_ion_host_ptr"u8; [NativeName("CL_QCOM_ION_HOST_PTR_EXTENSION_VERSION")] public const int QcomIonHostPtrExtensionVersion = ( @@ -27111,7 +27106,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_QCOM_ANDROID_NATIVE_BUFFER_HOST_PTR_EXTENSION_NAME")] - public static ReadOnlySpan QcomAndroidNativeBufferHostPtrExtensionName => + public static Utf8String QcomAndroidNativeBufferHostPtrExtensionName => "cl_qcom_android_native_buffer_host_ptr"u8; [NativeName("CL_QCOM_ANDROID_NATIVE_BUFFER_HOST_PTR_EXTENSION_VERSION")] @@ -27122,7 +27117,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_IMG_YUV_IMAGE_EXTENSION_NAME")] - public static ReadOnlySpan ImgYuvImageExtensionName => "cl_img_yuv_image"u8; + public static Utf8String ImgYuvImageExtensionName => "cl_img_yuv_image"u8; [NativeName("CL_IMG_YUV_IMAGE_EXTENSION_VERSION")] public const int ImgYuvImageExtensionVersion = ( @@ -27132,8 +27127,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_IMG_CACHED_ALLOCATIONS_EXTENSION_NAME")] - public static ReadOnlySpan ImgCachedAllocationsExtensionName => - "cl_img_cached_allocations"u8; + public static Utf8String ImgCachedAllocationsExtensionName => "cl_img_cached_allocations"u8; [NativeName("CL_IMG_CACHED_ALLOCATIONS_EXTENSION_VERSION")] public const int ImgCachedAllocationsExtensionVersion = ( @@ -27143,7 +27137,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_IMG_USE_GRALLOC_PTR_EXTENSION_NAME")] - public static ReadOnlySpan ImgUseGrallocPtrExtensionName => "cl_img_use_gralloc_ptr"u8; + public static Utf8String ImgUseGrallocPtrExtensionName => "cl_img_use_gralloc_ptr"u8; [NativeName("CL_IMG_USE_GRALLOC_PTR_EXTENSION_VERSION")] public const int ImgUseGrallocPtrExtensionVersion = ( @@ -27153,7 +27147,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_IMG_GENERATE_MIPMAP_EXTENSION_NAME")] - public static ReadOnlySpan ImgGenerateMipmapExtensionName => "cl_img_generate_mipmap"u8; + public static Utf8String ImgGenerateMipmapExtensionName => "cl_img_generate_mipmap"u8; [NativeName("CL_IMG_GENERATE_MIPMAP_EXTENSION_VERSION")] public const int ImgGenerateMipmapExtensionVersion = ( @@ -27163,7 +27157,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_IMG_MEM_PROPERTIES_EXTENSION_NAME")] - public static ReadOnlySpan ImgMemPropertiesExtensionName => "cl_img_mem_properties"u8; + public static Utf8String ImgMemPropertiesExtensionName => "cl_img_mem_properties"u8; [NativeName("CL_IMG_MEM_PROPERTIES_EXTENSION_VERSION")] public const int ImgMemPropertiesExtensionVersion = ( @@ -27173,7 +27167,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SUBGROUPS_EXTENSION_NAME")] - public static ReadOnlySpan KhrSubgroupsExtensionName => "cl_khr_subgroups"u8; + public static Utf8String KhrSubgroupsExtensionName => "cl_khr_subgroups"u8; [NativeName("CL_KHR_SUBGROUPS_EXTENSION_VERSION")] public const int KhrSubgroupsExtensionVersion = ( @@ -27183,7 +27177,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_MIPMAP_IMAGE_EXTENSION_NAME")] - public static ReadOnlySpan KhrMipmapImageExtensionName => "cl_khr_mipmap_image"u8; + public static Utf8String KhrMipmapImageExtensionName => "cl_khr_mipmap_image"u8; [NativeName("CL_KHR_MIPMAP_IMAGE_EXTENSION_VERSION")] public const int KhrMipmapImageExtensionVersion = ( @@ -27193,7 +27187,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_PRIORITY_HINTS_EXTENSION_NAME")] - public static ReadOnlySpan KhrPriorityHintsExtensionName => "cl_khr_priority_hints"u8; + public static Utf8String KhrPriorityHintsExtensionName => "cl_khr_priority_hints"u8; [NativeName("CL_KHR_PRIORITY_HINTS_EXTENSION_VERSION")] public const int KhrPriorityHintsExtensionVersion = ( @@ -27203,7 +27197,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_THROTTLE_HINTS_EXTENSION_NAME")] - public static ReadOnlySpan KhrThrottleHintsExtensionName => "cl_khr_throttle_hints"u8; + public static Utf8String KhrThrottleHintsExtensionName => "cl_khr_throttle_hints"u8; [NativeName("CL_KHR_THROTTLE_HINTS_EXTENSION_VERSION")] public const int KhrThrottleHintsExtensionVersion = ( @@ -27213,7 +27207,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SUBGROUP_NAMED_BARRIER_EXTENSION_NAME")] - public static ReadOnlySpan KhrSubgroupNamedBarrierExtensionName => + public static Utf8String KhrSubgroupNamedBarrierExtensionName => "cl_khr_subgroup_named_barrier"u8; [NativeName("CL_KHR_SUBGROUP_NAMED_BARRIER_EXTENSION_VERSION")] @@ -27224,8 +27218,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_EXTENDED_VERSIONING_EXTENSION_NAME")] - public static ReadOnlySpan KhrExtendedVersioningExtensionName => - "cl_khr_extended_versioning"u8; + public static Utf8String KhrExtendedVersioningExtensionName => "cl_khr_extended_versioning"u8; [NativeName("CL_KHR_EXTENDED_VERSIONING_EXTENSION_VERSION")] public const int KhrExtendedVersioningExtensionVersion = ( @@ -27263,7 +27256,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public const int NameVersionMaxNameSizeKHR = 64; [NativeName("CL_KHR_DEVICE_UUID_EXTENSION_NAME")] - public static ReadOnlySpan KhrDeviceUuidExtensionName => "cl_khr_device_uuid"u8; + public static Utf8String KhrDeviceUuidExtensionName => "cl_khr_device_uuid"u8; [NativeName("CL_KHR_DEVICE_UUID_EXTENSION_VERSION")] public const int KhrDeviceUuidExtensionVersion = ( @@ -27281,7 +27274,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public const int LuidSizeKHR = 8; [NativeName("CL_KHR_PCI_BUS_INFO_EXTENSION_NAME")] - public static ReadOnlySpan KhrPciBusInfoExtensionName => "cl_khr_pci_bus_info"u8; + public static Utf8String KhrPciBusInfoExtensionName => "cl_khr_pci_bus_info"u8; [NativeName("CL_KHR_PCI_BUS_INFO_EXTENSION_VERSION")] public const int KhrPciBusInfoExtensionVersion = ( @@ -27291,7 +27284,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SUGGESTED_LOCAL_WORK_SIZE_EXTENSION_NAME")] - public static ReadOnlySpan KhrSuggestedLocalWorkSizeExtensionName => + public static Utf8String KhrSuggestedLocalWorkSizeExtensionName => "cl_khr_suggested_local_work_size"u8; [NativeName("CL_KHR_SUGGESTED_LOCAL_WORK_SIZE_EXTENSION_VERSION")] @@ -27302,8 +27295,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_INTEGER_DOT_PRODUCT_EXTENSION_NAME")] - public static ReadOnlySpan KhrIntegerDotProductExtensionName => - "cl_khr_integer_dot_product"u8; + public static Utf8String KhrIntegerDotProductExtensionName => "cl_khr_integer_dot_product"u8; [NativeName("CL_KHR_INTEGER_DOT_PRODUCT_EXTENSION_VERSION")] public const int KhrIntegerDotProductExtensionVersion = ( @@ -27313,7 +27305,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_EXTERNAL_MEMORY_EXTENSION_NAME")] - public static ReadOnlySpan KhrExternalMemoryExtensionName => "cl_khr_external_memory"u8; + public static Utf8String KhrExternalMemoryExtensionName => "cl_khr_external_memory"u8; [NativeName("CL_KHR_EXTERNAL_MEMORY_EXTENSION_VERSION")] public const int KhrExternalMemoryExtensionVersion = ( @@ -27327,7 +27319,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public const int MemDeviceHandleListEndKHR = 0; [NativeName("CL_KHR_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME")] - public static ReadOnlySpan KhrExternalMemoryDmaBufExtensionName => + public static Utf8String KhrExternalMemoryDmaBufExtensionName => "cl_khr_external_memory_dma_buf"u8; [NativeName("CL_KHR_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_VERSION")] @@ -27338,7 +27330,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_EXTERNAL_MEMORY_OPAQUE_FD_EXTENSION_NAME")] - public static ReadOnlySpan KhrExternalMemoryOpaqueFdExtensionName => + public static Utf8String KhrExternalMemoryOpaqueFdExtensionName => "cl_khr_external_memory_opaque_fd"u8; [NativeName("CL_KHR_EXTERNAL_MEMORY_OPAQUE_FD_EXTENSION_VERSION")] @@ -27349,7 +27341,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME")] - public static ReadOnlySpan KhrExternalMemoryWin32ExtensionName => + public static Utf8String KhrExternalMemoryWin32ExtensionName => "cl_khr_external_memory_win32"u8; [NativeName("CL_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_VERSION")] @@ -27360,8 +27352,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME")] - public static ReadOnlySpan KhrExternalSemaphoreExtensionName => - "cl_khr_external_semaphore"u8; + public static Utf8String KhrExternalSemaphoreExtensionName => "cl_khr_external_semaphore"u8; [NativeName("CL_KHR_EXTERNAL_SEMAPHORE_EXTENSION_VERSION")] public const int KhrExternalSemaphoreExtensionVersion = ( @@ -27379,7 +27370,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public const int SemaphoreExportHandleTypesListEndKHR = 0; [NativeName("CL_KHR_EXTERNAL_SEMAPHORE_OPAQUE_FD_EXTENSION_NAME")] - public static ReadOnlySpan KhrExternalSemaphoreOpaqueFdExtensionName => + public static Utf8String KhrExternalSemaphoreOpaqueFdExtensionName => "cl_khr_external_semaphore_opaque_fd"u8; [NativeName("CL_KHR_EXTERNAL_SEMAPHORE_OPAQUE_FD_EXTENSION_VERSION")] @@ -27390,7 +27381,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_EXTERNAL_SEMAPHORE_SYNC_FD_EXTENSION_NAME")] - public static ReadOnlySpan KhrExternalSemaphoreSyncFdExtensionName => + public static Utf8String KhrExternalSemaphoreSyncFdExtensionName => "cl_khr_external_semaphore_sync_fd"u8; [NativeName("CL_KHR_EXTERNAL_SEMAPHORE_SYNC_FD_EXTENSION_VERSION")] @@ -27401,7 +27392,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SEMAPHORE_EXTENSION_NAME")] - public static ReadOnlySpan KhrSemaphoreExtensionName => "cl_khr_semaphore"u8; + public static Utf8String KhrSemaphoreExtensionName => "cl_khr_semaphore"u8; [NativeName("CL_KHR_SEMAPHORE_EXTENSION_VERSION")] public const int KhrSemaphoreExtensionVersion = ( @@ -27415,7 +27406,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public const int SemaphoreDeviceHandleListEndKHR = 0; [NativeName("CL_ARM_IMPORT_MEMORY_EXTENSION_NAME")] - public static ReadOnlySpan ArmImportMemoryExtensionName => "cl_arm_import_memory"u8; + public static Utf8String ArmImportMemoryExtensionName => "cl_arm_import_memory"u8; [NativeName("CL_ARM_IMPORT_MEMORY_EXTENSION_VERSION")] public const int ArmImportMemoryExtensionVersion = ( @@ -27433,7 +27424,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public const ulong ImportMemoryWholeAllocationARM = 0xffffffffffffffffUL; [NativeName("CL_ARM_SHARED_VIRTUAL_MEMORY_EXTENSION_NAME")] - public static ReadOnlySpan ArmSharedVirtualMemoryExtensionName => + public static Utf8String ArmSharedVirtualMemoryExtensionName => "cl_arm_shared_virtual_memory"u8; [NativeName("CL_ARM_SHARED_VIRTUAL_MEMORY_EXTENSION_VERSION")] @@ -27447,7 +27438,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public const int ArmGetCoreId = 1; [NativeName("CL_ARM_GET_CORE_ID_EXTENSION_NAME")] - public static ReadOnlySpan ArmGetCoreIdExtensionName => "cl_arm_get_core_id"u8; + public static Utf8String ArmGetCoreIdExtensionName => "cl_arm_get_core_id"u8; [NativeName("CL_ARM_GET_CORE_ID_EXTENSION_VERSION")] public const int ArmGetCoreIdExtensionVersion = ( @@ -27457,8 +27448,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_ARM_JOB_SLOT_SELECTION_EXTENSION_NAME")] - public static ReadOnlySpan ArmJobSlotSelectionExtensionName => - "cl_arm_job_slot_selection"u8; + public static Utf8String ArmJobSlotSelectionExtensionName => "cl_arm_job_slot_selection"u8; [NativeName("CL_ARM_JOB_SLOT_SELECTION_EXTENSION_VERSION")] public const int ArmJobSlotSelectionExtensionVersion = ( @@ -27468,8 +27458,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME")] - public static ReadOnlySpan ArmSchedulingControlsExtensionName => - "cl_arm_scheduling_controls"u8; + public static Utf8String ArmSchedulingControlsExtensionName => "cl_arm_scheduling_controls"u8; [NativeName("CL_ARM_SCHEDULING_CONTROLS_EXTENSION_VERSION")] public const int ArmSchedulingControlsExtensionVersion = ( @@ -27479,7 +27468,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_ARM_CONTROLLED_KERNEL_TERMINATION_EXTENSION_NAME")] - public static ReadOnlySpan ArmControlledKernelTerminationExtensionName => + public static Utf8String ArmControlledKernelTerminationExtensionName => "cl_arm_controlled_kernel_termination"u8; [NativeName("CL_ARM_CONTROLLED_KERNEL_TERMINATION_EXTENSION_VERSION")] @@ -27490,7 +27479,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_ARM_PROTECTED_MEMORY_ALLOCATION_EXTENSION_NAME")] - public static ReadOnlySpan ArmProtectedMemoryAllocationExtensionName => + public static Utf8String ArmProtectedMemoryAllocationExtensionName => "cl_arm_protected_memory_allocation"u8; [NativeName("CL_ARM_PROTECTED_MEMORY_ALLOCATION_EXTENSION_VERSION")] @@ -27501,7 +27490,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_EXEC_BY_LOCAL_THREAD_EXTENSION_NAME")] - public static ReadOnlySpan IntelExecByLocalThreadExtensionName => + public static Utf8String IntelExecByLocalThreadExtensionName => "cl_intel_exec_by_local_thread"u8; [NativeName("CL_INTEL_EXEC_BY_LOCAL_THREAD_EXTENSION_VERSION")] @@ -27512,7 +27501,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_DEVICE_ATTRIBUTE_QUERY_EXTENSION_NAME")] - public static ReadOnlySpan IntelDeviceAttributeQueryExtensionName => + public static Utf8String IntelDeviceAttributeQueryExtensionName => "cl_intel_device_attribute_query"u8; [NativeName("CL_INTEL_DEVICE_ATTRIBUTE_QUERY_EXTENSION_VERSION")] @@ -27523,7 +27512,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_DEVICE_PARTITION_BY_NAMES_EXTENSION_NAME")] - public static ReadOnlySpan IntelDevicePartitionByNamesExtensionName => + public static Utf8String IntelDevicePartitionByNamesExtensionName => "cl_intel_device_partition_by_names"u8; [NativeName("CL_INTEL_DEVICE_PARTITION_BY_NAMES_EXTENSION_VERSION")] @@ -27538,7 +27527,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public const int PartitionByNamesListEndINTEL = -1; [NativeName("CL_INTEL_ACCELERATOR_EXTENSION_NAME")] - public static ReadOnlySpan IntelAcceleratorExtensionName => "cl_intel_accelerator"u8; + public static Utf8String IntelAcceleratorExtensionName => "cl_intel_accelerator"u8; [NativeName("CL_INTEL_ACCELERATOR_EXTENSION_VERSION")] public const int IntelAcceleratorExtensionVersion = ( @@ -27548,8 +27537,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_MOTION_ESTIMATION_EXTENSION_NAME")] - public static ReadOnlySpan IntelMotionEstimationExtensionName => - "cl_intel_motion_estimation"u8; + public static Utf8String IntelMotionEstimationExtensionName => "cl_intel_motion_estimation"u8; [NativeName("CL_INTEL_MOTION_ESTIMATION_EXTENSION_VERSION")] public const int IntelMotionEstimationExtensionVersion = ( @@ -27559,7 +27547,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_ADVANCED_MOTION_ESTIMATION_EXTENSION_NAME")] - public static ReadOnlySpan IntelAdvancedMotionEstimationExtensionName => + public static Utf8String IntelAdvancedMotionEstimationExtensionName => "cl_intel_advanced_motion_estimation"u8; [NativeName("CL_INTEL_ADVANCED_MOTION_ESTIMATION_EXTENSION_VERSION")] @@ -27570,7 +27558,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_SIMULTANEOUS_SHARING_EXTENSION_NAME")] - public static ReadOnlySpan IntelSimultaneousSharingExtensionName => + public static Utf8String IntelSimultaneousSharingExtensionName => "cl_intel_simultaneous_sharing"u8; [NativeName("CL_INTEL_SIMULTANEOUS_SHARING_EXTENSION_VERSION")] @@ -27581,7 +27569,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_EGL_IMAGE_YUV_EXTENSION_NAME")] - public static ReadOnlySpan IntelEglImageYuvExtensionName => "cl_intel_egl_image_yuv"u8; + public static Utf8String IntelEglImageYuvExtensionName => "cl_intel_egl_image_yuv"u8; [NativeName("CL_INTEL_EGL_IMAGE_YUV_EXTENSION_VERSION")] public const int IntelEglImageYuvExtensionVersion = ( @@ -27591,7 +27579,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_PACKED_YUV_EXTENSION_NAME")] - public static ReadOnlySpan IntelPackedYuvExtensionName => "cl_intel_packed_yuv"u8; + public static Utf8String IntelPackedYuvExtensionName => "cl_intel_packed_yuv"u8; [NativeName("CL_INTEL_PACKED_YUV_EXTENSION_VERSION")] public const int IntelPackedYuvExtensionVersion = ( @@ -27601,7 +27589,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_REQUIRED_SUBGROUP_SIZE_EXTENSION_NAME")] - public static ReadOnlySpan IntelRequiredSubgroupSizeExtensionName => + public static Utf8String IntelRequiredSubgroupSizeExtensionName => "cl_intel_required_subgroup_size"u8; [NativeName("CL_INTEL_REQUIRED_SUBGROUP_SIZE_EXTENSION_VERSION")] @@ -27612,8 +27600,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_DRIVER_DIAGNOSTICS_EXTENSION_NAME")] - public static ReadOnlySpan IntelDriverDiagnosticsExtensionName => - "cl_intel_driver_diagnostics"u8; + public static Utf8String IntelDriverDiagnosticsExtensionName => "cl_intel_driver_diagnostics"u8; [NativeName("CL_INTEL_DRIVER_DIAGNOSTICS_EXTENSION_VERSION")] public const int IntelDriverDiagnosticsExtensionVersion = ( @@ -27623,7 +27610,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_PLANAR_YUV_EXTENSION_NAME")] - public static ReadOnlySpan IntelPlanarYuvExtensionName => "cl_intel_planar_yuv"u8; + public static Utf8String IntelPlanarYuvExtensionName => "cl_intel_planar_yuv"u8; [NativeName("CL_INTEL_PLANAR_YUV_EXTENSION_VERSION")] public const int IntelPlanarYuvExtensionVersion = ( @@ -27633,7 +27620,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_DEVICE_SIDE_AVC_MOTION_ESTIMATION_EXTENSION_NAME")] - public static ReadOnlySpan IntelDeviceSideAvcMotionEstimationExtensionName => + public static Utf8String IntelDeviceSideAvcMotionEstimationExtensionName => "cl_intel_device_side_avc_motion_estimation"u8; [NativeName("CL_INTEL_DEVICE_SIDE_AVC_MOTION_ESTIMATION_EXTENSION_VERSION")] @@ -27644,7 +27631,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_UNIFIED_SHARED_MEMORY_EXTENSION_NAME")] - public static ReadOnlySpan IntelUnifiedSharedMemoryExtensionName => + public static Utf8String IntelUnifiedSharedMemoryExtensionName => "cl_intel_unified_shared_memory"u8; [NativeName("CL_INTEL_UNIFIED_SHARED_MEMORY_EXTENSION_VERSION")] @@ -27655,7 +27642,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_MEM_ALLOC_BUFFER_LOCATION_EXTENSION_NAME")] - public static ReadOnlySpan IntelMemAllocBufferLocationExtensionName => + public static Utf8String IntelMemAllocBufferLocationExtensionName => "cl_intel_mem_alloc_buffer_location"u8; [NativeName("CL_INTEL_MEM_ALLOC_BUFFER_LOCATION_EXTENSION_VERSION")] @@ -27666,7 +27653,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_CREATE_BUFFER_WITH_PROPERTIES_EXTENSION_NAME")] - public static ReadOnlySpan IntelCreateBufferWithPropertiesExtensionName => + public static Utf8String IntelCreateBufferWithPropertiesExtensionName => "cl_intel_create_buffer_with_properties"u8; [NativeName("CL_INTEL_CREATE_BUFFER_WITH_PROPERTIES_EXTENSION_VERSION")] @@ -27677,7 +27664,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_PROGRAM_SCOPE_HOST_PIPE_EXTENSION_NAME")] - public static ReadOnlySpan IntelProgramScopeHostPipeExtensionName => + public static Utf8String IntelProgramScopeHostPipeExtensionName => "cl_intel_program_scope_host_pipe"u8; [NativeName("CL_INTEL_PROGRAM_SCOPE_HOST_PIPE_EXTENSION_VERSION")] @@ -27688,7 +27675,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_MEM_CHANNEL_PROPERTY_EXTENSION_NAME")] - public static ReadOnlySpan IntelMemChannelPropertyExtensionName => + public static Utf8String IntelMemChannelPropertyExtensionName => "cl_intel_mem_channel_property"u8; [NativeName("CL_INTEL_MEM_CHANNEL_PROPERTY_EXTENSION_VERSION")] @@ -27699,7 +27686,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_MEM_FORCE_HOST_MEMORY_EXTENSION_NAME")] - public static ReadOnlySpan IntelMemForceHostMemoryExtensionName => + public static Utf8String IntelMemForceHostMemoryExtensionName => "cl_intel_mem_force_host_memory"u8; [NativeName("CL_INTEL_MEM_FORCE_HOST_MEMORY_EXTENSION_VERSION")] @@ -27710,7 +27697,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_COMMAND_QUEUE_FAMILIES_EXTENSION_NAME")] - public static ReadOnlySpan IntelCommandQueueFamiliesExtensionName => + public static Utf8String IntelCommandQueueFamiliesExtensionName => "cl_intel_command_queue_families"u8; [NativeName("CL_INTEL_COMMAND_QUEUE_FAMILIES_EXTENSION_VERSION")] @@ -27729,7 +27716,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) public const int QueueDefaultCapabilitiesINTEL = 0; [NativeName("CL_INTEL_QUEUE_NO_SYNC_OPERATIONS_EXTENSION_NAME")] - public static ReadOnlySpan IntelQueueNoSyncOperationsExtensionName => + public static Utf8String IntelQueueNoSyncOperationsExtensionName => "cl_intel_queue_no_sync_operations"u8; [NativeName("CL_INTEL_QUEUE_NO_SYNC_OPERATIONS_EXTENSION_VERSION")] @@ -27740,7 +27727,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_SHARING_FORMAT_QUERY_EXTENSION_NAME")] - public static ReadOnlySpan IntelSharingFormatQueryExtensionName => + public static Utf8String IntelSharingFormatQueryExtensionName => "cl_intel_sharing_format_query"u8; [NativeName("CL_INTEL_SHARING_FORMAT_QUERY_EXTENSION_VERSION")] @@ -27751,7 +27738,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_EXT_IMAGE_REQUIREMENTS_INFO_EXTENSION_NAME")] - public static ReadOnlySpan ExtImageRequirementsInfoExtensionName => + public static Utf8String ExtImageRequirementsInfoExtensionName => "cl_ext_image_requirements_info"u8; [NativeName("CL_EXT_IMAGE_REQUIREMENTS_INFO_EXTENSION_VERSION")] @@ -27762,8 +27749,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_EXT_IMAGE_FROM_BUFFER_EXTENSION_NAME")] - public static ReadOnlySpan ExtImageFromBufferExtensionName => - "cl_ext_image_from_buffer"u8; + public static Utf8String ExtImageFromBufferExtensionName => "cl_ext_image_from_buffer"u8; [NativeName("CL_EXT_IMAGE_FROM_BUFFER_EXTENSION_VERSION")] public const int ExtImageFromBufferExtensionVersion = ( @@ -27773,7 +27759,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_LOADER_INFO_EXTENSION_NAME")] - public static ReadOnlySpan LoaderInfoExtensionName => "cl_loader_info"u8; + public static Utf8String LoaderInfoExtensionName => "cl_loader_info"u8; [NativeName("CL_LOADER_INFO_EXTENSION_VERSION")] public const int LoaderInfoExtensionVersion = ( @@ -27783,7 +27769,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_DEPTH_IMAGES_EXTENSION_NAME")] - public static ReadOnlySpan KhrDepthImagesExtensionName => "cl_khr_depth_images"u8; + public static Utf8String KhrDepthImagesExtensionName => "cl_khr_depth_images"u8; [NativeName("CL_KHR_DEPTH_IMAGES_EXTENSION_VERSION")] public const int KhrDepthImagesExtensionVersion = ( @@ -27793,7 +27779,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_EXT_FLOAT_ATOMICS_EXTENSION_NAME")] - public static ReadOnlySpan ExtFloatAtomicsExtensionName => "cl_ext_float_atomics"u8; + public static Utf8String ExtFloatAtomicsExtensionName => "cl_ext_float_atomics"u8; [NativeName("CL_EXT_FLOAT_ATOMICS_EXTENSION_VERSION")] public const int ExtFloatAtomicsExtensionVersion = ( @@ -27803,7 +27789,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_CREATE_MEM_OBJECT_PROPERTIES_EXTENSION_NAME")] - public static ReadOnlySpan IntelCreateMemObjectPropertiesExtensionName => + public static Utf8String IntelCreateMemObjectPropertiesExtensionName => "cl_intel_create_mem_object_properties"u8; [NativeName("CL_INTEL_CREATE_MEM_OBJECT_PROPERTIES_EXTENSION_VERSION")] @@ -27814,7 +27800,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_POCL_CONTENT_SIZE_EXTENSION_NAME")] - public static ReadOnlySpan PoclContentSizeExtensionName => "cl_pocl_content_size"u8; + public static Utf8String PoclContentSizeExtensionName => "cl_pocl_content_size"u8; [NativeName("CL_POCL_CONTENT_SIZE_EXTENSION_VERSION")] public const int PoclContentSizeExtensionVersion = ( @@ -27824,8 +27810,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_EXT_IMAGE_RAW10_RAW12_EXTENSION_NAME")] - public static ReadOnlySpan ExtImageRaw10Raw12ExtensionName => - "cl_ext_image_raw10_raw12"u8; + public static Utf8String ExtImageRaw10Raw12ExtensionName => "cl_ext_image_raw10_raw12"u8; [NativeName("CL_EXT_IMAGE_RAW10_RAW12_EXTENSION_VERSION")] public const int ExtImageRaw10Raw12ExtensionVersion = ( @@ -27835,7 +27820,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_3D_IMAGE_WRITES_EXTENSION_NAME")] - public static ReadOnlySpan Khr3DImageWritesExtensionName => "cl_khr_3d_image_writes"u8; + public static Utf8String Khr3DImageWritesExtensionName => "cl_khr_3d_image_writes"u8; [NativeName("CL_KHR_3D_IMAGE_WRITES_EXTENSION_VERSION")] public const int Khr3DImageWritesExtensionVersion = ( @@ -27845,7 +27830,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_ASYNC_WORK_GROUP_COPY_FENCE_EXTENSION_NAME")] - public static ReadOnlySpan KhrAsyncWorkGroupCopyFenceExtensionName => + public static Utf8String KhrAsyncWorkGroupCopyFenceExtensionName => "cl_khr_async_work_group_copy_fence"u8; [NativeName("CL_KHR_ASYNC_WORK_GROUP_COPY_FENCE_EXTENSION_VERSION")] @@ -27856,7 +27841,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_BYTE_ADDRESSABLE_STORE_EXTENSION_NAME")] - public static ReadOnlySpan KhrByteAddressableStoreExtensionName => + public static Utf8String KhrByteAddressableStoreExtensionName => "cl_khr_byte_addressable_store"u8; [NativeName("CL_KHR_BYTE_ADDRESSABLE_STORE_EXTENSION_VERSION")] @@ -27867,7 +27852,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_DEVICE_ENQUEUE_LOCAL_ARG_TYPES_EXTENSION_NAME")] - public static ReadOnlySpan KhrDeviceEnqueueLocalArgTypesExtensionName => + public static Utf8String KhrDeviceEnqueueLocalArgTypesExtensionName => "cl_khr_device_enqueue_local_arg_types"u8; [NativeName("CL_KHR_DEVICE_ENQUEUE_LOCAL_ARG_TYPES_EXTENSION_VERSION")] @@ -27878,7 +27863,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_EXPECT_ASSUME_EXTENSION_NAME")] - public static ReadOnlySpan KhrExpectAssumeExtensionName => "cl_khr_expect_assume"u8; + public static Utf8String KhrExpectAssumeExtensionName => "cl_khr_expect_assume"u8; [NativeName("CL_KHR_EXPECT_ASSUME_EXTENSION_VERSION")] public const int KhrExpectAssumeExtensionVersion = ( @@ -27888,7 +27873,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_EXTENDED_ASYNC_COPIES_EXTENSION_NAME")] - public static ReadOnlySpan KhrExtendedAsyncCopiesExtensionName => + public static Utf8String KhrExtendedAsyncCopiesExtensionName => "cl_khr_extended_async_copies"u8; [NativeName("CL_KHR_EXTENDED_ASYNC_COPIES_EXTENSION_VERSION")] @@ -27899,7 +27884,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_EXTENDED_BIT_OPS_EXTENSION_NAME")] - public static ReadOnlySpan KhrExtendedBitOpsExtensionName => "cl_khr_extended_bit_ops"u8; + public static Utf8String KhrExtendedBitOpsExtensionName => "cl_khr_extended_bit_ops"u8; [NativeName("CL_KHR_EXTENDED_BIT_OPS_EXTENSION_VERSION")] public const int KhrExtendedBitOpsExtensionVersion = ( @@ -27909,7 +27894,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_GLOBAL_INT32_BASE_ATOMICS_EXTENSION_NAME")] - public static ReadOnlySpan KhrGlobalInt32BaseAtomicsExtensionName => + public static Utf8String KhrGlobalInt32BaseAtomicsExtensionName => "cl_khr_global_int32_base_atomics"u8; [NativeName("CL_KHR_GLOBAL_INT32_BASE_ATOMICS_EXTENSION_VERSION")] @@ -27920,7 +27905,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_GLOBAL_INT32_EXTENDED_ATOMICS_EXTENSION_NAME")] - public static ReadOnlySpan KhrGlobalInt32ExtendedAtomicsExtensionName => + public static Utf8String KhrGlobalInt32ExtendedAtomicsExtensionName => "cl_khr_global_int32_extended_atomics"u8; [NativeName("CL_KHR_GLOBAL_INT32_EXTENDED_ATOMICS_EXTENSION_VERSION")] @@ -27931,8 +27916,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_INT64_BASE_ATOMICS_EXTENSION_NAME")] - public static ReadOnlySpan KhrInt64BaseAtomicsExtensionName => - "cl_khr_int64_base_atomics"u8; + public static Utf8String KhrInt64BaseAtomicsExtensionName => "cl_khr_int64_base_atomics"u8; [NativeName("CL_KHR_INT64_BASE_ATOMICS_EXTENSION_VERSION")] public const int KhrInt64BaseAtomicsExtensionVersion = ( @@ -27942,7 +27926,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_INT64_EXTENDED_ATOMICS_EXTENSION_NAME")] - public static ReadOnlySpan KhrInt64ExtendedAtomicsExtensionName => + public static Utf8String KhrInt64ExtendedAtomicsExtensionName => "cl_khr_int64_extended_atomics"u8; [NativeName("CL_KHR_INT64_EXTENDED_ATOMICS_EXTENSION_VERSION")] @@ -27953,7 +27937,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_KERNEL_CLOCK_EXTENSION_NAME")] - public static ReadOnlySpan KhrKernelClockExtensionName => "cl_khr_kernel_clock"u8; + public static Utf8String KhrKernelClockExtensionName => "cl_khr_kernel_clock"u8; [NativeName("CL_KHR_KERNEL_CLOCK_EXTENSION_VERSION")] public const int KhrKernelClockExtensionVersion = ( @@ -27963,7 +27947,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_LOCAL_INT32_BASE_ATOMICS_EXTENSION_NAME")] - public static ReadOnlySpan KhrLocalInt32BaseAtomicsExtensionName => + public static Utf8String KhrLocalInt32BaseAtomicsExtensionName => "cl_khr_local_int32_base_atomics"u8; [NativeName("CL_KHR_LOCAL_INT32_BASE_ATOMICS_EXTENSION_VERSION")] @@ -27974,7 +27958,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_LOCAL_INT32_EXTENDED_ATOMICS_EXTENSION_NAME")] - public static ReadOnlySpan KhrLocalInt32ExtendedAtomicsExtensionName => + public static Utf8String KhrLocalInt32ExtendedAtomicsExtensionName => "cl_khr_local_int32_extended_atomics"u8; [NativeName("CL_KHR_LOCAL_INT32_EXTENDED_ATOMICS_EXTENSION_VERSION")] @@ -27985,8 +27969,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_MIPMAP_IMAGE_WRITES_EXTENSION_NAME")] - public static ReadOnlySpan KhrMipmapImageWritesExtensionName => - "cl_khr_mipmap_image_writes"u8; + public static Utf8String KhrMipmapImageWritesExtensionName => "cl_khr_mipmap_image_writes"u8; [NativeName("CL_KHR_MIPMAP_IMAGE_WRITES_EXTENSION_VERSION")] public const int KhrMipmapImageWritesExtensionVersion = ( @@ -27996,7 +27979,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SELECT_FPROUNDING_MODE_EXTENSION_NAME")] - public static ReadOnlySpan KhrSelectFproundingModeExtensionName => + public static Utf8String KhrSelectFproundingModeExtensionName => "cl_khr_select_fprounding_mode"u8; [NativeName("CL_KHR_SELECT_FPROUNDING_MODE_EXTENSION_VERSION")] @@ -28007,7 +27990,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SPIRV_EXTENDED_DEBUG_INFO_EXTENSION_NAME")] - public static ReadOnlySpan KhrSpirvExtendedDebugInfoExtensionName => + public static Utf8String KhrSpirvExtendedDebugInfoExtensionName => "cl_khr_spirv_extended_debug_info"u8; [NativeName("CL_KHR_SPIRV_EXTENDED_DEBUG_INFO_EXTENSION_VERSION")] @@ -28018,8 +28001,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SPIRV_LINKONCE_ODR_EXTENSION_NAME")] - public static ReadOnlySpan KhrSpirvLinkonceOdrExtensionName => - "cl_khr_spirv_linkonce_odr"u8; + public static Utf8String KhrSpirvLinkonceOdrExtensionName => "cl_khr_spirv_linkonce_odr"u8; [NativeName("CL_KHR_SPIRV_LINKONCE_ODR_EXTENSION_VERSION")] public const int KhrSpirvLinkonceOdrExtensionVersion = ( @@ -28029,7 +28011,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SPIRV_NO_INTEGER_WRAP_DECORATION_EXTENSION_NAME")] - public static ReadOnlySpan KhrSpirvNoIntegerWrapDecorationExtensionName => + public static Utf8String KhrSpirvNoIntegerWrapDecorationExtensionName => "cl_khr_spirv_no_integer_wrap_decoration"u8; [NativeName("CL_KHR_SPIRV_NO_INTEGER_WRAP_DECORATION_EXTENSION_VERSION")] @@ -28040,7 +28022,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SPIRV_QUERIES_EXTENSION_NAME")] - public static ReadOnlySpan KhrSpirvQueriesExtensionName => "cl_khr_spirv_queries"u8; + public static Utf8String KhrSpirvQueriesExtensionName => "cl_khr_spirv_queries"u8; [NativeName("CL_KHR_SPIRV_QUERIES_EXTENSION_VERSION")] public const int KhrSpirvQueriesExtensionVersion = ( @@ -28050,8 +28032,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SRGB_IMAGE_WRITES_EXTENSION_NAME")] - public static ReadOnlySpan KhrSrgbImageWritesExtensionName => - "cl_khr_srgb_image_writes"u8; + public static Utf8String KhrSrgbImageWritesExtensionName => "cl_khr_srgb_image_writes"u8; [NativeName("CL_KHR_SRGB_IMAGE_WRITES_EXTENSION_VERSION")] public const int KhrSrgbImageWritesExtensionVersion = ( @@ -28061,7 +28042,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SUBGROUP_BALLOT_EXTENSION_NAME")] - public static ReadOnlySpan KhrSubgroupBallotExtensionName => "cl_khr_subgroup_ballot"u8; + public static Utf8String KhrSubgroupBallotExtensionName => "cl_khr_subgroup_ballot"u8; [NativeName("CL_KHR_SUBGROUP_BALLOT_EXTENSION_VERSION")] public const int KhrSubgroupBallotExtensionVersion = ( @@ -28071,7 +28052,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SUBGROUP_CLUSTERED_REDUCE_EXTENSION_NAME")] - public static ReadOnlySpan KhrSubgroupClusteredReduceExtensionName => + public static Utf8String KhrSubgroupClusteredReduceExtensionName => "cl_khr_subgroup_clustered_reduce"u8; [NativeName("CL_KHR_SUBGROUP_CLUSTERED_REDUCE_EXTENSION_VERSION")] @@ -28082,7 +28063,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME")] - public static ReadOnlySpan KhrSubgroupExtendedTypesExtensionName => + public static Utf8String KhrSubgroupExtendedTypesExtensionName => "cl_khr_subgroup_extended_types"u8; [NativeName("CL_KHR_SUBGROUP_EXTENDED_TYPES_EXTENSION_VERSION")] @@ -28093,7 +28074,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SUBGROUP_NON_UNIFORM_ARITHMETIC_EXTENSION_NAME")] - public static ReadOnlySpan KhrSubgroupNonUniformArithmeticExtensionName => + public static Utf8String KhrSubgroupNonUniformArithmeticExtensionName => "cl_khr_subgroup_non_uniform_arithmetic"u8; [NativeName("CL_KHR_SUBGROUP_NON_UNIFORM_ARITHMETIC_EXTENSION_VERSION")] @@ -28104,7 +28085,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SUBGROUP_NON_UNIFORM_VOTE_EXTENSION_NAME")] - public static ReadOnlySpan KhrSubgroupNonUniformVoteExtensionName => + public static Utf8String KhrSubgroupNonUniformVoteExtensionName => "cl_khr_subgroup_non_uniform_vote"u8; [NativeName("CL_KHR_SUBGROUP_NON_UNIFORM_VOTE_EXTENSION_VERSION")] @@ -28115,7 +28096,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SUBGROUP_ROTATE_EXTENSION_NAME")] - public static ReadOnlySpan KhrSubgroupRotateExtensionName => "cl_khr_subgroup_rotate"u8; + public static Utf8String KhrSubgroupRotateExtensionName => "cl_khr_subgroup_rotate"u8; [NativeName("CL_KHR_SUBGROUP_ROTATE_EXTENSION_VERSION")] public const int KhrSubgroupRotateExtensionVersion = ( @@ -28125,7 +28106,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SUBGROUP_SHUFFLE_EXTENSION_NAME")] - public static ReadOnlySpan KhrSubgroupShuffleExtensionName => "cl_khr_subgroup_shuffle"u8; + public static Utf8String KhrSubgroupShuffleExtensionName => "cl_khr_subgroup_shuffle"u8; [NativeName("CL_KHR_SUBGROUP_SHUFFLE_EXTENSION_VERSION")] public const int KhrSubgroupShuffleExtensionVersion = ( @@ -28135,7 +28116,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_SUBGROUP_SHUFFLE_RELATIVE_EXTENSION_NAME")] - public static ReadOnlySpan KhrSubgroupShuffleRelativeExtensionName => + public static Utf8String KhrSubgroupShuffleRelativeExtensionName => "cl_khr_subgroup_shuffle_relative"u8; [NativeName("CL_KHR_SUBGROUP_SHUFFLE_RELATIVE_EXTENSION_VERSION")] @@ -28146,7 +28127,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_KHR_WORK_GROUP_UNIFORM_ARITHMETIC_EXTENSION_NAME")] - public static ReadOnlySpan KhrWorkGroupUniformArithmeticExtensionName => + public static Utf8String KhrWorkGroupUniformArithmeticExtensionName => "cl_khr_work_group_uniform_arithmetic"u8; [NativeName("CL_KHR_WORK_GROUP_UNIFORM_ARITHMETIC_EXTENSION_VERSION")] @@ -28157,7 +28138,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME")] - public static ReadOnlySpan ExtBufferDeviceAddressExtensionName => + public static Utf8String ExtBufferDeviceAddressExtensionName => "cl_ext_buffer_device_address"u8; [NativeName("CL_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_VERSION")] @@ -28168,7 +28149,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_EXT_IMAGE_UNORM_INT_2_101010_EXTENSION_NAME")] - public static ReadOnlySpan ExtImageUnormInt2x101010ExtensionName => + public static Utf8String ExtImageUnormInt2x101010ExtensionName => "cl_ext_image_unorm_int_2_101010"u8; [NativeName("CL_EXT_IMAGE_UNORM_INT_2_101010_EXTENSION_VERSION")] @@ -28179,7 +28160,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_EXT_IMAGE_UNSIGNED_10X6_12X4_14X2_EXTENSION_NAME")] - public static ReadOnlySpan ExtImageUnsigned10x6x12x4x14x2ExtensionName => + public static Utf8String ExtImageUnsigned10x6x12x4x14x2ExtensionName => "cl_ext_image_unsigned_10x6_12x4_14x2"u8; [NativeName("CL_EXT_IMAGE_UNSIGNED_10X6_12X4_14X2_EXTENSION_VERSION")] @@ -28190,7 +28171,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_EXT_IMMUTABLE_MEMORY_OBJECTS_EXTENSION_NAME")] - public static ReadOnlySpan ExtImmutableMemoryObjectsExtensionName => + public static Utf8String ExtImmutableMemoryObjectsExtensionName => "cl_ext_immutable_memory_objects"u8; [NativeName("CL_EXT_IMMUTABLE_MEMORY_OBJECTS_EXTENSION_VERSION")] @@ -28201,7 +28182,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_IMG_CANCEL_COMMAND_EXTENSION_NAME")] - public static ReadOnlySpan ImgCancelCommandExtensionName => "cl_img_cancel_command"u8; + public static Utf8String ImgCancelCommandExtensionName => "cl_img_cancel_command"u8; [NativeName("CL_IMG_CANCEL_COMMAND_EXTENSION_VERSION")] public const int ImgCancelCommandExtensionVersion = ( @@ -28211,8 +28192,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_IMG_SAFETY_MECHANISMS_EXTENSION_NAME")] - public static ReadOnlySpan ImgSafetyMechanismsExtensionName => - "cl_img_safety_mechanisms"u8; + public static Utf8String ImgSafetyMechanismsExtensionName => "cl_img_safety_mechanisms"u8; [NativeName("CL_IMG_SAFETY_MECHANISMS_EXTENSION_VERSION")] public const int ImgSafetyMechanismsExtensionVersion = ( @@ -28222,7 +28202,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_INTEL_KERNEL_ALLOCATIONS_INFO_EXTENSION_NAME")] - public static ReadOnlySpan IntelKernelAllocationsInfoExtensionName => + public static Utf8String IntelKernelAllocationsInfoExtensionName => "cl_intel_kernel_allocations_info"u8; [NativeName("CL_INTEL_KERNEL_ALLOCATIONS_INFO_EXTENSION_VERSION")] @@ -28233,7 +28213,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_QCOM_PERF_HINT_EXTENSION_NAME")] - public static ReadOnlySpan QcomPerfHintExtensionName => "cl_qcom_perf_hint"u8; + public static Utf8String QcomPerfHintExtensionName => "cl_qcom_perf_hint"u8; [NativeName("CL_QCOM_PERF_HINT_EXTENSION_VERSION")] public const int QcomPerfHintExtensionVersion = ( @@ -28243,7 +28223,7 @@ public static int WaitForEvents(uint num_events, Ref event_list) ); [NativeName("CL_LOADER_LAYERS_EXTENSION_NAME")] - public static ReadOnlySpan LoaderLayersExtensionName => "cl_loader_layers"u8; + public static Utf8String LoaderLayersExtensionName => "cl_loader_layers"u8; [NativeName("CL_LOADER_LAYERS_EXTENSION_VERSION")] public const int LoaderLayersExtensionVersion = ( diff --git a/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationProperties.gen.cs b/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationProperties.gen.cs index 32eb7661be..c53b191323 100644 --- a/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationProperties.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationProperties.gen.cs @@ -12,20 +12,20 @@ namespace Silk.NET.OpenCL; public partial struct DeviceIntegerDotProductAccelerationProperties { [NativeName("signed_accelerated")] - public uint SignedAccelerated; + public MaybeBool SignedAccelerated; [NativeName("unsigned_accelerated")] - public uint UnsignedAccelerated; + public MaybeBool UnsignedAccelerated; [NativeName("mixed_signedness_accelerated")] - public uint MixedSignednessAccelerated; + public MaybeBool MixedSignednessAccelerated; [NativeName("accumulating_saturating_signed_accelerated")] - public uint AccumulatingSaturatingSignedAccelerated; + public MaybeBool AccumulatingSaturatingSignedAccelerated; [NativeName("accumulating_saturating_unsigned_accelerated")] - public uint AccumulatingSaturatingUnsignedAccelerated; + public MaybeBool AccumulatingSaturatingUnsignedAccelerated; [NativeName("accumulating_saturating_mixed_signedness_accelerated")] - public uint AccumulatingSaturatingMixedSignednessAccelerated; + public MaybeBool AccumulatingSaturatingMixedSignednessAccelerated; } diff --git a/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationPropertiesKHR.gen.cs b/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationPropertiesKHR.gen.cs index bd5e02aae6..bca0c96a5e 100644 --- a/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationPropertiesKHR.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationPropertiesKHR.gen.cs @@ -12,20 +12,20 @@ namespace Silk.NET.OpenCL; public partial struct DeviceIntegerDotProductAccelerationPropertiesKHR { [NativeName("signed_accelerated")] - public uint SignedAccelerated; + public MaybeBool SignedAccelerated; [NativeName("unsigned_accelerated")] - public uint UnsignedAccelerated; + public MaybeBool UnsignedAccelerated; [NativeName("mixed_signedness_accelerated")] - public uint MixedSignednessAccelerated; + public MaybeBool MixedSignednessAccelerated; [NativeName("accumulating_saturating_signed_accelerated")] - public uint AccumulatingSaturatingSignedAccelerated; + public MaybeBool AccumulatingSaturatingSignedAccelerated; [NativeName("accumulating_saturating_unsigned_accelerated")] - public uint AccumulatingSaturatingUnsignedAccelerated; + public MaybeBool AccumulatingSaturatingUnsignedAccelerated; [NativeName("accumulating_saturating_mixed_signedness_accelerated")] - public uint AccumulatingSaturatingMixedSignednessAccelerated; + public MaybeBool AccumulatingSaturatingMixedSignednessAccelerated; } From 0fc0189b7a510af721512e7721c0ecef07f72df5 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 06:06:55 -0400 Subject: [PATCH 51/93] Add start of DocumentFactory --- .../SilkTouch/Mods/Common/DocumentFactory.cs | 239 ++++++++++++++++++ .../Mods/Common/MSBuildModContext.cs | 1 + 2 files changed, 240 insertions(+) create mode 100644 sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs new file mode 100644 index 0000000000..e90eb2137c --- /dev/null +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -0,0 +1,239 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Silk.NET.SilkTouch.Mods.Transformation; +using Silk.NET.SilkTouch.Naming; +using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; + +namespace Silk.NET.SilkTouch.Mods; + +/// +/// Handles creation of new documents. +/// +public class DocumentFactory +{ + /// + /// Represents an with common functionality. + /// + public abstract class Mod : IMod + { + /// + /// Gets the common namespace determined from the default namespaces within the response file. + /// + public string? CommonNamespace { get; private set; } + + /// + /// Determines where to locate the given "fully qualified file name" i.e. a file name for a type prefixed with its + /// namespace e.g. Silk.NET.Core.SomeType`1.gen.cs. The extension is removed so that we don't mistake it as part of + /// the namespace. + /// + /// + /// The fully qualified file name without the extension e.g. Silk.NET.Core.SomeType`1 + /// + /// The file extension e.g. .gen.cs + /// The path within the sources directory to place this file. + public string PathForFullyQualified(string fullyQualified, string extension = ".gen.cs") + { + if (!fullyQualified.Contains('.') || CommonNamespace is null or { Length: 0 }) + { + return fullyQualified + extension; + } + + return fullyQualified.StartsWith(CommonNamespace) + ? fullyQualified[CommonNamespace.Length..].Trim('.').Replace('.', '/') + extension + : fullyQualified + extension; + } + + /// + public virtual Task InitializeAsync(IModContext ctx, CancellationToken ct = default) => + Task.CompletedTask; + + /// + public virtual async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) + { + if ( + ctx.SourceProject is not null + && await ctx.SourceProject.GetCompilationAsync(ct) is { } comp + ) + { + CommonNamespace = CommonNamespaceVisitor.CommonNamespaceFrom(comp.SourceModule); + } + } + + class CommonNamespaceVisitor : SymbolVisitor + { + private List _namespacesWithTypes = []; + + public override void DefaultVisit(ISymbol symbol) + { + foreach (var member in symbol.Members()) + { + Visit(member); + } + } + + public override void VisitNamedType(INamedTypeSymbol symbol) + { + if (!_namespacesWithTypes.Contains(symbol.ContainingNamespace)) + { + _namespacesWithTypes.Add(symbol.ContainingNamespace); + } + } + + public string CommonNamespace => + NameUtils.FindCommonPrefix( + _namespacesWithTypes + .Select(x => x.NamespaceFromSymbol()) + .Where(x => !string.IsNullOrWhiteSpace(x)) + .ToList(), + true, + int.MaxValue, + true + ); + + public static string CommonNamespaceFrom(ISymbol symbol) + { + var visitor = new CommonNamespaceVisitor(); + visitor.Visit(symbol); + return visitor.CommonNamespace; + } + } + } + + /// + /// containing common functionality for mods. + /// + public abstract class ModCSharpSyntaxRewriter(bool visitIntoStructuredTrivia = false) + : CSharpSyntaxRewriter(visitIntoStructuredTrivia), + ITransformationContext + { + /// + /// usings to add to the appropriate place within the syntax tree. + /// + public Dictionary UsingsToAdd { get; set; } = []; + + /// + public override SyntaxNode? VisitCompilationUnit(CompilationUnitSyntax node) + { + var ret = base.VisitCompilationUnit(node); + if (ret is not CompilationUnitSyntax comp) + { + return ret; + } + + foreach ( + var use in comp.Usings.Where(use => + !use.GlobalKeyword.IsKind(SyntaxKind.GlobalKeyword) + ) + ) + { + AddUsing(use); + } + + ret = comp.WithUsings(GetUsings(UsingsToAdd, comp)) + .WithMembers( + UsingsToAdd.Count == 0 + ? comp.Members + : List( + comp.Members.Select(x => + x.WithLeadingTrivia( + x.GetLeadingTrivia() + .Where(y => + y.Kind() + is not SyntaxKind.SingleLineCommentTrivia + and not SyntaxKind.MultiLineCommentTrivia + ) + ) + ) + ) + ); + + return ret; + } + + /// + public override SyntaxNode? VisitFileScopedNamespaceDeclaration( + FileScopedNamespaceDeclarationSyntax node + ) + { + foreach ( + var use in node.Usings.Where(use => + !use.GlobalKeyword.IsKind(SyntaxKind.GlobalKeyword) + ) + ) + { + AddUsing(use); + } + + return base.VisitFileScopedNamespaceDeclaration(node.WithUsings(default)); + } + + /// + /// Gets all the usings for the given compilation unit. + /// + /// The usings to get. + /// The compilation unit. + /// The using list. + public static SyntaxList GetUsings( + IReadOnlyCollection> usingsToAdd, + CompilationUnitSyntax? comp + ) => + List( + usingsToAdd.Select( + (x, i) => + i == 0 + ? x + .Value.WithoutTrailingTrivia() + .WithLeadingTrivia( + usingsToAdd + .Select(y => y.Value.GetLeadingTrivia()) + .Concat( + comp?.Members.Select(y => y.GetLeadingTrivia()) ?? [] + ) + .OrderByDescending(y => + y.Count(z => + z.Kind() + is SyntaxKind.SingleLineCommentTrivia + or SyntaxKind.MultiLineCommentTrivia + or SyntaxKind.WhitespaceTrivia + ) + ) + .FirstOrDefault() + ) + : x.Value.WithoutTrivia() + ) + ); + + /// + public MethodDeclarationSyntax? Original { get; set; } + + /// + public IFunctionTransformer[]? Transformers { get; set; } + + /// + /// Adds a namespace import to the resultant syntax tree. + /// + /// The dot-separated namespace. + /// Whether it was added. + protected bool AddUsing(string str) => + AddUsing(UsingDirective(ModUtils.NamespaceIntoIdentifierName(str))); + + /// + /// Adds a using directive to the resultant syntax tree. + /// + /// The directive. + /// Whether it was added. + public bool AddUsing(UsingDirectiveSyntax use) => UsingsToAdd.TryAdd(Discrim(use), use); + + /// + /// Gets a discriminator for the given using. + /// + /// The using. + /// The discriminator string. + protected static string Discrim(UsingDirectiveSyntax use) => + new(use.WithoutTrivia().ToString().Where(char.IsAsciiLetterOrDigit).ToArray()); + } +} diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs index b5aae81e8c..8ed8da656f 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs @@ -227,6 +227,7 @@ await File.ReadAllBytesAsync(fname, ct), } // Add a license header to files that don't have one + // TODO: Move this to DocumentFactory if (defaultLicenseHeaderTrivia is not null) { var shouldAddHeader = From 24ca9a7e8741b475460ca424b9a6f7109ae1899d Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 18:33:32 -0400 Subject: [PATCH 52/93] Work on DocumentFactory --- .../SilkTouch/Mods/Common/DocumentFactory.cs | 178 ++++++++---------- .../Transformation/ITransformationContext.cs | 6 +- 2 files changed, 84 insertions(+), 100 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index e90eb2137c..d361f4ec40 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -4,8 +4,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Silk.NET.SilkTouch.Mods.Transformation; -using Silk.NET.SilkTouch.Naming; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Silk.NET.SilkTouch.Mods; @@ -16,99 +14,98 @@ namespace Silk.NET.SilkTouch.Mods; public class DocumentFactory { /// - /// Represents an with common functionality. + /// The namespace common to all reported documents. /// - public abstract class Mod : IMod - { - /// - /// Gets the common namespace determined from the default namespaces within the response file. - /// - public string? CommonNamespace { get; private set; } + private string? _commonNamespace; - /// - /// Determines where to locate the given "fully qualified file name" i.e. a file name for a type prefixed with its - /// namespace e.g. Silk.NET.Core.SomeType`1.gen.cs. The extension is removed so that we don't mistake it as part of - /// the namespace. - /// - /// - /// The fully qualified file name without the extension e.g. Silk.NET.Core.SomeType`1 - /// - /// The file extension e.g. .gen.cs - /// The path within the sources directory to place this file. - public string PathForFullyQualified(string fullyQualified, string extension = ".gen.cs") - { - if (!fullyQualified.Contains('.') || CommonNamespace is null or { Length: 0 }) - { - return fullyQualified + extension; - } + /// + /// Using statements to add to all initialized documents. + /// + private readonly Dictionary _usings = []; - return fullyQualified.StartsWith(CommonNamespace) - ? fullyQualified[CommonNamespace.Length..].Trim('.').Replace('.', '/') + extension - : fullyQualified + extension; - } + private readonly DocumentReporter _reporter; + private readonly DocumentInitializer _initializer; - /// - public virtual Task InitializeAsync(IModContext ctx, CancellationToken ct = default) => - Task.CompletedTask; + /// + /// Creates a new . + /// + public DocumentFactory() + { + _initializer = new DocumentInitializer(this); + _reporter = new DocumentReporter(this); + } - /// - public virtual async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) + /// + /// Determines where to locate the given "fully qualified file name" i.e. a file name for a type prefixed with its + /// namespace e.g. Silk.NET.Core.SomeType`1.gen.cs. The extension is removed so that we don't mistake it as part of + /// the namespace. + /// + /// + /// The fully qualified file name without the extension e.g. Silk.NET.Core.SomeType`1 + /// + /// The file extension e.g. .gen.cs + /// The path within the sources directory to place this file. + public string PathForFullyQualified(string fullyQualified, string extension = ".gen.cs") + { + if (!fullyQualified.Contains('.') || _commonNamespace is null or { Length: 0 }) { - if ( - ctx.SourceProject is not null - && await ctx.SourceProject.GetCompilationAsync(ct) is { } comp - ) - { - CommonNamespace = CommonNamespaceVisitor.CommonNamespaceFrom(comp.SourceModule); - } + return fullyQualified + extension; } - class CommonNamespaceVisitor : SymbolVisitor - { - private List _namespacesWithTypes = []; + return fullyQualified.StartsWith(_commonNamespace) + ? fullyQualified[_commonNamespace.Length..].Trim('.').Replace('.', '/') + extension + : fullyQualified + extension; + } - public override void DefaultVisit(ISymbol symbol) - { - foreach (var member in symbol.Members()) - { - Visit(member); - } - } + /// + /// Reports information about a document in the project. + /// + /// + /// This currently saves the using statements and common namespace for use in initializing new documents. + /// + public void ReportDocument(SyntaxNode root) => _reporter.Visit(root); - public override void VisitNamedType(INamedTypeSymbol symbol) - { - if (!_namespacesWithTypes.Contains(symbol.ContainingNamespace)) - { - _namespacesWithTypes.Add(symbol.ContainingNamespace); - } - } + /// + /// Initializes a new document. + /// + /// + /// This currently adds using statements and header comments if not added already. + /// + public SyntaxNode InitializeDocument(SyntaxNode root) => _initializer.Visit(root); - public string CommonNamespace => - NameUtils.FindCommonPrefix( - _namespacesWithTypes - .Select(x => x.NamespaceFromSymbol()) - .Where(x => !string.IsNullOrWhiteSpace(x)) - .ToList(), - true, - int.MaxValue, - true - ); + /// + /// Adds a namespace import to the resultant syntax tree. + /// + /// The dot-separated namespace. + /// Whether it was added. + public bool AddUsing(string ns) => + AddUsing(UsingDirective(ModUtils.NamespaceIntoIdentifierName(ns))); - public static string CommonNamespaceFrom(ISymbol symbol) - { - var visitor = new CommonNamespaceVisitor(); - visitor.Visit(symbol); - return visitor.CommonNamespace; - } - } + /// + /// Adds a using directive to the resultant syntax tree. + /// + /// The directive. + /// Whether it was added. + public bool AddUsing(UsingDirectiveSyntax directive) + { + var directiveNoTrivia = directive.WithoutTrivia(); + return _usings.TryAdd(GetDiscriminator(directiveNoTrivia), directiveNoTrivia); } /// - /// containing common functionality for mods. + /// Gets a discriminator for the given using. /// - public abstract class ModCSharpSyntaxRewriter(bool visitIntoStructuredTrivia = false) - : CSharpSyntaxRewriter(visitIntoStructuredTrivia), - ITransformationContext + /// The using. + /// The discriminator string. + private static string GetDiscriminator(UsingDirectiveSyntax use) => + use.WithoutTrivia().NormalizeWhitespace().ToFullString(); + + private class DocumentReporter(DocumentFactory factory) : CSharpSyntaxWalker { } + + private class DocumentInitializer(DocumentFactory factory) : CSharpSyntaxRewriter { } + + private abstract class ModCSharpSyntaxRewriter(bool visitIntoStructuredTrivia = false) + : CSharpSyntaxRewriter(visitIntoStructuredTrivia) { /// /// usings to add to the appropriate place within the syntax tree. @@ -207,33 +204,20 @@ or SyntaxKind.WhitespaceTrivia ) ); - /// - public MethodDeclarationSyntax? Original { get; set; } - - /// - public IFunctionTransformer[]? Transformers { get; set; } - /// /// Adds a namespace import to the resultant syntax tree. /// - /// The dot-separated namespace. + /// The dot-separated namespace. /// Whether it was added. - protected bool AddUsing(string str) => - AddUsing(UsingDirective(ModUtils.NamespaceIntoIdentifierName(str))); + public bool AddUsing(string ns) => + AddUsing(UsingDirective(ModUtils.NamespaceIntoIdentifierName(ns))); /// /// Adds a using directive to the resultant syntax tree. /// /// The directive. /// Whether it was added. - public bool AddUsing(UsingDirectiveSyntax use) => UsingsToAdd.TryAdd(Discrim(use), use); - - /// - /// Gets a discriminator for the given using. - /// - /// The using. - /// The discriminator string. - protected static string Discrim(UsingDirectiveSyntax use) => - new(use.WithoutTrivia().ToString().Where(char.IsAsciiLetterOrDigit).ToArray()); + public bool AddUsing(UsingDirectiveSyntax use) => + UsingsToAdd.TryAdd(GetDiscriminator(use), use); } } diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs index 06f0b6fc40..31be8fea31 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs @@ -25,10 +25,10 @@ public interface ITransformationContext /// /// Adds a namespace import to the resultant syntax tree. /// - /// The dot-separated namespace. + /// The dot-separated namespace. /// Whether it was added. - public bool AddUsing(string str) => - AddUsing(UsingDirective(ModUtils.NamespaceIntoIdentifierName(str))); + public bool AddUsing(string ns) => + AddUsing(UsingDirective(ModUtils.NamespaceIntoIdentifierName(ns))); /// /// Adds a using directive to the resultant syntax tree. From fd34b7ed18b8a7fc49eca597a2a112f67fb5c718 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 18:49:14 -0400 Subject: [PATCH 53/93] Work on DocumentFactory API --- .../SilkTouch/Mods/Common/DocumentFactory.cs | 49 +++++++++++++------ 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index d361f4ec40..cddaef18f0 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -35,16 +35,22 @@ public DocumentFactory() _reporter = new DocumentReporter(this); } + private DocumentFactory(DocumentFactory original) + : this() + { + _commonNamespace = original._commonNamespace; + _usings = original._usings.ToDictionary(); + } + /// - /// Determines where to locate the given "fully qualified file name" i.e. a file name for a type prefixed with its - /// namespace e.g. Silk.NET.Core.SomeType`1.gen.cs. The extension is removed so that we don't mistake it as part of - /// the namespace. + /// Determines the path to place a document given the "fully qualified file name". /// /// - /// The fully qualified file name without the extension e.g. Silk.NET.Core.SomeType`1 + /// The name of a type prefixed with its namespace. Should not contain a file extension. + /// Eg: Silk.NET.Core.SomeType`1. /// - /// The file extension e.g. .gen.cs - /// The path within the sources directory to place this file. + /// The file extension. Eg: .gen.cs + /// The path within the project source directory to place this file. public string PathForFullyQualified(string fullyQualified, string extension = ".gen.cs") { if (!fullyQualified.Contains('.') || _commonNamespace is null or { Length: 0 }) @@ -66,32 +72,43 @@ public string PathForFullyQualified(string fullyQualified, string extension = ". public void ReportDocument(SyntaxNode root) => _reporter.Visit(root); /// - /// Initializes a new document. + /// Initializes and reports information about a new document. /// /// /// This currently adds using statements and header comments if not added already. + /// This also calls . /// - public SyntaxNode InitializeDocument(SyntaxNode root) => _initializer.Visit(root); + public SyntaxNode InitializeDocument(SyntaxNode root) + { + _reporter.Visit(root); + return _initializer.Visit(root); + } /// - /// Adds a namespace import to the resultant syntax tree. + /// Registers a using directive to be added for all newly initialized documents. /// /// The dot-separated namespace. - /// Whether it was added. - public bool AddUsing(string ns) => + public void AddUsing(string ns) => AddUsing(UsingDirective(ModUtils.NamespaceIntoIdentifierName(ns))); /// - /// Adds a using directive to the resultant syntax tree. + /// Registers a using directive to be added for all newly initialized documents. /// - /// The directive. - /// Whether it was added. - public bool AddUsing(UsingDirectiveSyntax directive) + /// The using directive. + public void AddUsing(UsingDirectiveSyntax directive) { var directiveNoTrivia = directive.WithoutTrivia(); - return _usings.TryAdd(GetDiscriminator(directiveNoTrivia), directiveNoTrivia); + _usings.TryAdd(GetDiscriminator(directiveNoTrivia), directiveNoTrivia); } + /// + /// Creates a clone of this document factory. + /// + /// + /// Can be useful for registering local using statements without affecting the original document factory. + /// + public DocumentFactory Clone() => new(this); + /// /// Gets a discriminator for the given using. /// From 6167199a78f70f7b61ef2fb1fcaccbdcfadb01eb Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 18:53:30 -0400 Subject: [PATCH 54/93] Ensure using directives are well ordered --- .../SilkTouch/Mods/Common/DocumentFactory.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index cddaef18f0..d5bbc01d70 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -21,7 +21,8 @@ public class DocumentFactory /// /// Using statements to add to all initialized documents. /// - private readonly Dictionary _usings = []; + private readonly List _usings = []; + private readonly HashSet _usingDiscriminators = []; private readonly DocumentReporter _reporter; private readonly DocumentInitializer _initializer; @@ -39,7 +40,8 @@ private DocumentFactory(DocumentFactory original) : this() { _commonNamespace = original._commonNamespace; - _usings = original._usings.ToDictionary(); + _usings = [.. original._usings]; + _usingDiscriminators = [.. original._usingDiscriminators]; } /// @@ -98,7 +100,11 @@ public void AddUsing(string ns) => public void AddUsing(UsingDirectiveSyntax directive) { var directiveNoTrivia = directive.WithoutTrivia(); - _usings.TryAdd(GetDiscriminator(directiveNoTrivia), directiveNoTrivia); + var discriminator = GetDiscriminator(directiveNoTrivia); + if (_usingDiscriminators.Add(discriminator)) + { + _usings.Add(directiveNoTrivia); + } } /// From 948603c47282eeed2882ef5785636cc1a1ca1e6d Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 19:17:05 -0400 Subject: [PATCH 55/93] Implement DocumentFactory syntax walker and rewriter --- .../SilkTouch/Mods/Common/DocumentFactory.cs | 161 ++++++------------ 1 file changed, 50 insertions(+), 111 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index d5bbc01d70..ea3c769656 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -4,6 +4,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; +using Silk.NET.SilkTouch.Naming; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Silk.NET.SilkTouch.Mods; @@ -13,14 +14,21 @@ namespace Silk.NET.SilkTouch.Mods; /// public class DocumentFactory { + /// + /// The default header to add if the document does not currently have one. + /// + public SyntaxTrivia? DefaultHeader { get; set; } + /// /// The namespace common to all reported documents. /// - private string? _commonNamespace; + public string? CommonNamespace { get; set; } /// /// Using statements to add to all initialized documents. /// + public IReadOnlyList Usings => _usings; + private readonly List _usings = []; private readonly HashSet _usingDiscriminators = []; @@ -39,7 +47,7 @@ public DocumentFactory() private DocumentFactory(DocumentFactory original) : this() { - _commonNamespace = original._commonNamespace; + CommonNamespace = original.CommonNamespace; _usings = [.. original._usings]; _usingDiscriminators = [.. original._usingDiscriminators]; } @@ -55,13 +63,13 @@ private DocumentFactory(DocumentFactory original) /// The path within the project source directory to place this file. public string PathForFullyQualified(string fullyQualified, string extension = ".gen.cs") { - if (!fullyQualified.Contains('.') || _commonNamespace is null or { Length: 0 }) + if (!fullyQualified.Contains('.') || CommonNamespace is null or { Length: 0 }) { return fullyQualified + extension; } - return fullyQualified.StartsWith(_commonNamespace) - ? fullyQualified[_commonNamespace.Length..].Trim('.').Replace('.', '/') + extension + return fullyQualified.StartsWith(CommonNamespace) + ? fullyQualified[CommonNamespace.Length..].Trim('.').Replace('.', '/') + extension : fullyQualified + extension; } @@ -123,124 +131,55 @@ public void AddUsing(UsingDirectiveSyntax directive) private static string GetDiscriminator(UsingDirectiveSyntax use) => use.WithoutTrivia().NormalizeWhitespace().ToFullString(); - private class DocumentReporter(DocumentFactory factory) : CSharpSyntaxWalker { } - - private class DocumentInitializer(DocumentFactory factory) : CSharpSyntaxRewriter { } - - private abstract class ModCSharpSyntaxRewriter(bool visitIntoStructuredTrivia = false) - : CSharpSyntaxRewriter(visitIntoStructuredTrivia) + private class DocumentReporter(DocumentFactory factory) : CSharpSyntaxWalker { - /// - /// usings to add to the appropriate place within the syntax tree. - /// - public Dictionary UsingsToAdd { get; set; } = []; - - /// - public override SyntaxNode? VisitCompilationUnit(CompilationUnitSyntax node) + public override void VisitUsingDirective(UsingDirectiveSyntax node) { - var ret = base.VisitCompilationUnit(node); - if (ret is not CompilationUnitSyntax comp) + if (!node.GlobalKeyword.IsKind(SyntaxKind.GlobalKeyword)) { - return ret; + factory.AddUsing(node); } + } - foreach ( - var use in comp.Usings.Where(use => - !use.GlobalKeyword.IsKind(SyntaxKind.GlobalKeyword) - ) - ) - { - AddUsing(use); - } - - ret = comp.WithUsings(GetUsings(UsingsToAdd, comp)) - .WithMembers( - UsingsToAdd.Count == 0 - ? comp.Members - : List( - comp.Members.Select(x => - x.WithLeadingTrivia( - x.GetLeadingTrivia() - .Where(y => - y.Kind() - is not SyntaxKind.SingleLineCommentTrivia - and not SyntaxKind.MultiLineCommentTrivia - ) - ) - ) - ) - ); - - return ret; + public override void VisitNamespaceDeclaration(NamespaceDeclarationSyntax node) + { + ReportNamespace(node); + base.VisitNamespaceDeclaration(node); } - /// - public override SyntaxNode? VisitFileScopedNamespaceDeclaration( + public override void VisitFileScopedNamespaceDeclaration( FileScopedNamespaceDeclarationSyntax node ) { - foreach ( - var use in node.Usings.Where(use => - !use.GlobalKeyword.IsKind(SyntaxKind.GlobalKeyword) - ) - ) - { - AddUsing(use); - } + ReportNamespace(node); + base.VisitFileScopedNamespaceDeclaration(node); + } - return base.VisitFileScopedNamespaceDeclaration(node.WithUsings(default)); + private void ReportNamespace(BaseNamespaceDeclarationSyntax node) + { + var ns = node.NamespaceFromSyntaxNode(); + factory.CommonNamespace = factory.CommonNamespace is null + ? ns + : NameUtils.FindCommonPrefix( + [factory.CommonNamespace, ns], + true, + int.MaxValue, + true + ); } + } + + private class DocumentInitializer(DocumentFactory factory) : CSharpSyntaxRewriter + { + // TODO: Handle headers. - /// - /// Gets all the usings for the given compilation unit. - /// - /// The usings to get. - /// The compilation unit. - /// The using list. - public static SyntaxList GetUsings( - IReadOnlyCollection> usingsToAdd, - CompilationUnitSyntax? comp - ) => - List( - usingsToAdd.Select( - (x, i) => - i == 0 - ? x - .Value.WithoutTrailingTrivia() - .WithLeadingTrivia( - usingsToAdd - .Select(y => y.Value.GetLeadingTrivia()) - .Concat( - comp?.Members.Select(y => y.GetLeadingTrivia()) ?? [] - ) - .OrderByDescending(y => - y.Count(z => - z.Kind() - is SyntaxKind.SingleLineCommentTrivia - or SyntaxKind.MultiLineCommentTrivia - or SyntaxKind.WhitespaceTrivia - ) - ) - .FirstOrDefault() - ) - : x.Value.WithoutTrivia() - ) - ); - - /// - /// Adds a namespace import to the resultant syntax tree. - /// - /// The dot-separated namespace. - /// Whether it was added. - public bool AddUsing(string ns) => - AddUsing(UsingDirective(ModUtils.NamespaceIntoIdentifierName(ns))); - - /// - /// Adds a using directive to the resultant syntax tree. - /// - /// The directive. - /// Whether it was added. - public bool AddUsing(UsingDirectiveSyntax use) => - UsingsToAdd.TryAdd(GetDiscriminator(use), use); + public override SyntaxNode? VisitCompilationUnit(CompilationUnitSyntax node) => + base.VisitCompilationUnit(node) is CompilationUnitSyntax comp + ? comp.WithUsings(List(factory._usings)) + : null; + + public override SyntaxNode? VisitFileScopedNamespaceDeclaration( + FileScopedNamespaceDeclarationSyntax node + ) => base.VisitFileScopedNamespaceDeclaration(node.WithUsings(default)); } } From 18ce58b1711a54ed28fda6421611d19345e0e3e0 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 19:25:22 -0400 Subject: [PATCH 56/93] Add using statement sorting to DocumentFactory --- .../SilkTouch/Mods/Common/DocumentFactory.cs | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index ea3c769656..00eae07868 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -30,6 +30,7 @@ public class DocumentFactory public IReadOnlyList Usings => _usings; private readonly List _usings = []; + private readonly List _orderedUsingDiscriminators = []; private readonly HashSet _usingDiscriminators = []; private readonly DocumentReporter _reporter; @@ -49,6 +50,7 @@ private DocumentFactory(DocumentFactory original) { CommonNamespace = original.CommonNamespace; _usings = [.. original._usings]; + _orderedUsingDiscriminators = [.. original._orderedUsingDiscriminators]; _usingDiscriminators = [.. original._usingDiscriminators]; } @@ -111,7 +113,13 @@ public void AddUsing(UsingDirectiveSyntax directive) var discriminator = GetDiscriminator(directiveNoTrivia); if (_usingDiscriminators.Add(discriminator)) { - _usings.Add(directiveNoTrivia); + var index = ~_orderedUsingDiscriminators.BinarySearch( + discriminator, + NamespaceComparer.Instance + ); + + _orderedUsingDiscriminators.Insert(index, discriminator); + _usings.Insert(index, directiveNoTrivia); } } @@ -182,4 +190,34 @@ private class DocumentInitializer(DocumentFactory factory) : CSharpSyntaxRewrite FileScopedNamespaceDeclarationSyntax node ) => base.VisitFileScopedNamespaceDeclaration(node.WithUsings(default)); } + + private class NamespaceComparer : IComparer + { + public static readonly NamespaceComparer Instance = new(); + + public int Compare(string? x, string? y) + { + if (x == null) + { + return -1; + } + + if (y == null) + { + return 1; + } + + var aSys = IsSystem(x); + var bSys = IsSystem(y); + return aSys != bSys + ? aSys + ? -1 + : 1 + : string.CompareOrdinal(x, y); + + bool IsSystem(string ns) => + ns.Equals("System", StringComparison.Ordinal) + || ns.StartsWith("System.", StringComparison.Ordinal); + } + } } From 60d5e1b0292a6e6dc9ef3fd84e44e01ac6bb806a Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 19:25:34 -0400 Subject: [PATCH 57/93] Register DocumentFactory by default --- sources/SilkTouch/SilkTouch/SilkTouchJob.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs index 55d7ee8ad1..6ecf9cdc7e 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs @@ -60,7 +60,11 @@ Action configure _inputResolver = parentContainer.Resolve(); _container = parentContainer.BeginLifetimeScope(builder => { + // Register default dependencies + builder.RegisterType().SingleInstance(); builder.RegisterType().SingleInstance(); + + // Register user defined dependencies configure.Invoke(builder); }); From 4fb13e59b031710bcbccc9f5b2bd40342d676e44 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 19:34:46 -0400 Subject: [PATCH 58/93] Handle headers during document initialization --- .../SilkTouch/Mods/Common/DocumentFactory.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index 00eae07868..1c2012a38d 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -179,12 +179,23 @@ private void ReportNamespace(BaseNamespaceDeclarationSyntax node) private class DocumentInitializer(DocumentFactory factory) : CSharpSyntaxRewriter { - // TODO: Handle headers. + public override SyntaxNode? VisitCompilationUnit(CompilationUnitSyntax node) + { + var leadingTrivia = node.GetLeadingTrivia(); + var hasHeader = leadingTrivia.Any(x => + x.IsKind(SyntaxKind.SingleLineCommentTrivia) + || x.IsKind(SyntaxKind.MultiLineCommentTrivia) + ); - public override SyntaxNode? VisitCompilationUnit(CompilationUnitSyntax node) => - base.VisitCompilationUnit(node) is CompilationUnitSyntax comp - ? comp.WithUsings(List(factory._usings)) + var header = + hasHeader ? leadingTrivia + : factory.DefaultHeader is { } defaultHeader ? TriviaList(defaultHeader) + : default; + + return base.VisitCompilationUnit(node) is CompilationUnitSyntax comp + ? comp.WithUsings(List(factory._usings)).WithLeadingTrivia(header) : null; + } public override SyntaxNode? VisitFileScopedNamespaceDeclaration( FileScopedNamespaceDeclarationSyntax node From 78dc049008f2eb2f60dae9b5dc86d374a7c7a43c Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 21:18:57 -0400 Subject: [PATCH 59/93] Remove a few usages of ModCSharpSyntaxRewriter --- .../SilkTouch/Mods/BakeSourceSets.cs | 25 ++++++++++--------- .../SilkTouch/Mods/MarkNativeNames.cs | 3 ++- .../SilkTouch/Mods/StripAttributes.cs | 3 ++- .../Mods/Transformation/PtrRefTransformer.cs | 4 +-- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs index f068d83d30..ad6711e38d 100644 --- a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs +++ b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs @@ -41,7 +41,8 @@ public record Configuration public required Dictionary SourceSets { get; init; } } - class Rewriter(IBakeStrategy strategy, ILogger logger) : ModCSharpSyntaxRewriter + private class Rewriter(IBakeStrategy strategy, ILogger logger) + : ModCSharpSyntaxRewriter { public BakeSet? Baked { get; set; } @@ -366,15 +367,13 @@ public override async Task ExecuteAsync(IModContext ctx, CancellationToken ct = rewriter.SourceSet = null; } - var proj = ctx.SourceProject.RemoveDocuments( - [ - .. ctx - .SourceProject.Documents.Where(x => - x.RelativePath() is { } rp && baked.Contains(rp) - ) - .Select(x => x.Id), - ] - ); + var proj = ctx.SourceProject.RemoveDocuments([ + .. ctx + .SourceProject.Documents.Where(x => + x.RelativePath() is { } rp && baked.Contains(rp) + ) + .Select(x => x.Id), + ]); foreach ( var (bakedRoot, bakedPath) in GetBaked(bakery, aggregatedUsings) .Select(x => (x.Value, path: x.Key)) @@ -445,7 +444,8 @@ private static (string? Identifier, MemberDeclarationSyntax Syntax) Bake(BakedMe ty.Members.Concat( member .Inner?.Children.Values.OrderBy(x => x.Index) - .Select(x => Bake(x).Syntax) ?? [] + .Select(x => Bake(x).Syntax) + ?? [] ) ) ) @@ -458,7 +458,8 @@ private static (string? Identifier, MemberDeclarationSyntax Syntax) Bake(BakedMe member .Inner?.Children.Values.OrderBy(x => x.Index) .Select(x => x.Syntax) - .OfType() ?? [] + .OfType() + ?? [] ) ) ) diff --git a/sources/SilkTouch/SilkTouch/Mods/MarkNativeNames.cs b/sources/SilkTouch/SilkTouch/Mods/MarkNativeNames.cs index 48549860e9..385f86ac06 100644 --- a/sources/SilkTouch/SilkTouch/Mods/MarkNativeNames.cs +++ b/sources/SilkTouch/SilkTouch/Mods/MarkNativeNames.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Silk.NET.SilkTouch.Clang; @@ -46,7 +47,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) ctx.SourceProject = proj; } - private class Rewriter : ModCSharpSyntaxRewriter + private class Rewriter : CSharpSyntaxRewriter { private SyntaxList TryAddNativeNameAttribute( SyntaxList attributeLists, diff --git a/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs b/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs index 45ca3d0323..d18a0ce5f0 100644 --- a/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs +++ b/sources/SilkTouch/SilkTouch/Mods/StripAttributes.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; @@ -52,7 +53,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) ctx.SourceProject = proj; } - private class Rewriter(Configuration config) : ModCSharpSyntaxRewriter + private class Rewriter(Configuration config) : CSharpSyntaxRewriter { private SyntaxList StripAttributes( SyntaxList attributeLists diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs index 05ed6149bf..83b4a74ba9 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs @@ -13,9 +13,7 @@ namespace Silk.NET.SilkTouch.Mods.Transformation; /// /// A transformer that converts between raw pointers and Silk DSL pointer types. /// -public sealed partial class PtrRefTransformer() - : ModCSharpSyntaxRewriter(true), - IFunctionTransformer +public sealed partial class PtrRefTransformer() : CSharpSyntaxRewriter(true), IFunctionTransformer { private const int MaxIndirections = 3; private ITransformationContext? _ctx; From 3a872965efce6c261c7eb77a93d5a5ba60350aa3 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 21:33:22 -0400 Subject: [PATCH 60/93] Fix incorrect using directive sort order Forgot that these weren't bare namespaces. --- .../SilkTouch/Mods/Common/DocumentFactory.cs | 32 ++++++++----------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index 1c2012a38d..9f176dd1cb 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -90,7 +90,7 @@ public string PathForFullyQualified(string fullyQualified, string extension = ". /// This currently adds using statements and header comments if not added already. /// This also calls . /// - public SyntaxNode InitializeDocument(SyntaxNode root) + public SyntaxNode PopulateDocument(SyntaxNode root) { _reporter.Visit(root); return _initializer.Visit(root); @@ -115,7 +115,7 @@ public void AddUsing(UsingDirectiveSyntax directive) { var index = ~_orderedUsingDiscriminators.BinarySearch( discriminator, - NamespaceComparer.Instance + UsingDirectiveComparer.Instance ); _orderedUsingDiscriminators.Insert(index, discriminator); @@ -202,31 +202,27 @@ FileScopedNamespaceDeclarationSyntax node ) => base.VisitFileScopedNamespaceDeclaration(node.WithUsings(default)); } - private class NamespaceComparer : IComparer + private class UsingDirectiveComparer : IComparer { - public static readonly NamespaceComparer Instance = new(); + public static readonly UsingDirectiveComparer Instance = new(); public int Compare(string? x, string? y) { - if (x == null) - { - return -1; - } + const string prefix = "using "; + const string suffix = ";"; - if (y == null) - { - return 1; - } + var xSpan = x.AsSpan()[prefix.Length..][..^suffix.Length]; + var ySpan = y.AsSpan()[prefix.Length..][..^suffix.Length]; - var aSys = IsSystem(x); - var bSys = IsSystem(y); - return aSys != bSys - ? aSys + var xSys = IsSystem(xSpan); + var ySys = IsSystem(ySpan); + return xSys != ySys + ? xSys ? -1 : 1 - : string.CompareOrdinal(x, y); + : xSpan.CompareTo(ySpan, StringComparison.Ordinal); - bool IsSystem(string ns) => + bool IsSystem(ReadOnlySpan ns) => ns.Equals("System", StringComparison.Ordinal) || ns.StartsWith("System.", StringComparison.Ordinal); } From 37eb2c4095e8ff62a2baa5fb5d92c18c882421bb Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 21:48:25 -0400 Subject: [PATCH 61/93] Initialize the DocumentFactory with the default license header --- .../SilkTouch/Mods/Common/DocumentFactory.cs | 8 ++------ sources/SilkTouch/SilkTouch/SilkTouchJob.cs | 11 +++++++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index 9f176dd1cb..b995387d87 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -17,7 +17,7 @@ public class DocumentFactory /// /// The default header to add if the document does not currently have one. /// - public SyntaxTrivia? DefaultHeader { get; set; } + public SyntaxTriviaList? DefaultHeader { get; set; } /// /// The namespace common to all reported documents. @@ -187,11 +187,7 @@ private class DocumentInitializer(DocumentFactory factory) : CSharpSyntaxRewrite || x.IsKind(SyntaxKind.MultiLineCommentTrivia) ); - var header = - hasHeader ? leadingTrivia - : factory.DefaultHeader is { } defaultHeader ? TriviaList(defaultHeader) - : default; - + var header = hasHeader ? leadingTrivia : factory.DefaultHeader; return base.VisitCompilationUnit(node) is CompilationUnitSyntax comp ? comp.WithUsings(List(factory._usings)).WithLeadingTrivia(header) : null; diff --git a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs index 6ecf9cdc7e..831e8eaffa 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs @@ -7,6 +7,7 @@ using Silk.NET.SilkTouch.Mods; using Silk.NET.SilkTouch.Mods.Transformation; using Silk.NET.SilkTouch.Sources; +using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Silk.NET.SilkTouch; @@ -20,6 +21,7 @@ internal class SilkTouchJob : IDisposable private readonly ILogger _logger; private readonly IInputResolver _inputResolver; private readonly IModContextFactory _modContextFactory; + private readonly DocumentFactory _documentFactory; /// /// The job key. @@ -69,6 +71,7 @@ Action configure }); _modContextFactory = _container.Resolve(); + _documentFactory = _container.Resolve(); Mods = _container.Resolve(); } @@ -85,6 +88,14 @@ public async Task RunAsync(CancellationToken ct = default) // Prepare the context var context = await _modContextFactory.CreateContextAsync(Key, Config, ct); + // Initialize the document factory + if (Config.DefaultLicenseHeader != null) + { + _documentFactory.DefaultHeader = ParseLeadingTrivia( + await File.ReadAllTextAsync(Config.DefaultLicenseHeader, ct) + ); + } + // Just in case a mod gets naughty and tries to modify at the initialization stage. var srcProj = context.SourceProject; var testProj = context.TestProject; From f1c3e917d8cebe83f95f168382889d78e04c2dcf Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 21:53:23 -0400 Subject: [PATCH 62/93] Remove Mod class (not IMod) --- .../SilkTouch/SilkTouch/Clang/ClangScraper.cs | 10 +- .../SilkTouch/Mods/BakeSourceSets.cs | 9 +- .../SilkTouch/SilkTouch/Mods/Common/Mod.cs | 99 ------------------- .../SilkTouch/Mods/ExtractHandles.cs | 19 ++-- 4 files changed, 20 insertions(+), 117 deletions(-) delete mode 100644 sources/SilkTouch/SilkTouch/Mods/Common/Mod.cs diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index c7c0496157..1a0a9cbca6 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -24,12 +24,14 @@ namespace Silk.NET.SilkTouch.Clang; /// The handler of response file (.rsp) files i.e. configuration for the ClangSharp generator. /// /// The configuration to use. +/// The document factory to use. /// The logger to use. /// The input resolver to use. /// The mods that modify response files before they are fed to ClangSharp. /// The cache provider into which ClangSharp outputs are cached. public sealed class ClangScraper( ResponseFileHandler rspHandler, + DocumentFactory documentFactory, ClangScraper.Configuration config, ILogger logger, IInputResolver inputResolver, @@ -339,12 +341,10 @@ await inputResolver.ResolvePath(@override) var src = job.SourceProject; foreach (var (fname, tree) in aggregatedSources) { + var root = await tree.GetRootAsync(ct); + root = documentFactory.PopulateDocument(root); src = src - ?.AddDocument( - Path.GetFileName(fname), - await tree.GetRootAsync(ct), - filePath: src.FullPath(fname) - ) + ?.AddDocument(Path.GetFileName(fname), root, filePath: src.FullPath(fname)) .Project; } diff --git a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs index ad6711e38d..14b39dbe34 100644 --- a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs +++ b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs @@ -14,16 +14,18 @@ namespace Silk.NET.SilkTouch.Mods; /// /// Merging the APIs of multiple source sets into a single source set. /// +/// The document factory to use. /// The logger to use. /// The configuration snapshot. /// /// The available bake strategies. The actual strategy to use is determined from the configuration. /// public class BakeSourceSets( + DocumentFactory documentFactory, ILogger logger, BakeSourceSets.Configuration config, IEnumerable strategies -) : Mod +) : IMod { /// /// The mod configuration. @@ -296,9 +298,8 @@ decl is TypeDeclarationSyntax private Dictionary _baked = new(); /// - public override async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) + public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - await base.ExecuteAsync(ctx, ct); if (ctx.SourceProject is null) { return; @@ -411,7 +412,7 @@ Dictionary aggregatedUsings ? fqTopLevelType[..idx] : null; yield return new KeyValuePair( - $"{subdir}/{PathForFullyQualified(fqTopLevelType)}", + $"{subdir}/{documentFactory.PathForFullyQualified(fqTopLevelType)}", CompilationUnit() .WithMembers( ns is null diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/Mod.cs b/sources/SilkTouch/SilkTouch/Mods/Common/Mod.cs deleted file mode 100644 index f3c636908b..0000000000 --- a/sources/SilkTouch/SilkTouch/Mods/Common/Mod.cs +++ /dev/null @@ -1,99 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.CodeAnalysis; -using Silk.NET.SilkTouch.Naming; - -namespace Silk.NET.SilkTouch.Mods; - -/// -/// Represents an with common functionality. -/// -public abstract class Mod : IMod -{ - /// - /// Gets the common namespace determined from the default namespaces within the response file. - /// - public string? CommonNamespace { get; private set; } - - /// - /// Determines where to locate the given "fully qualified file name" i.e. a file name for a type prefixed with its - /// namespace e.g. Silk.NET.Core.SomeType`1.gen.cs. The extension is removed so that we don't mistake it as part of - /// the namespace. - /// - /// - /// The fully qualified file name without the extension e.g. Silk.NET.Core.SomeType`1 - /// - /// The file extension e.g. .gen.cs - /// The path within the sources directory to place this file. - public string PathForFullyQualified(string fullyQualified, string extension = ".gen.cs") - { - if (!fullyQualified.Contains('.') || CommonNamespace is null or { Length: 0 }) - { - return fullyQualified + extension; - } - - return fullyQualified.StartsWith(CommonNamespace) - ? fullyQualified[CommonNamespace.Length..].Trim('.').Replace('.', '/') + extension - : fullyQualified + extension; - } - - /// - public virtual Task InitializeAsync(IModContext ctx, CancellationToken ct = default) => - Task.CompletedTask; - - /// - public virtual async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) - { - if ( - ctx.SourceProject is not null - && await ctx.SourceProject.GetCompilationAsync(ct) is { } comp - ) - { - CommonNamespace = CommonNamespaceVisitor.CommonNamespaceFrom(comp.SourceModule); - } - } - - class CommonNamespaceVisitor : SymbolVisitor - { - private List _namespacesWithTypes = []; - - public override void DefaultVisit(ISymbol symbol) - { - foreach (var member in symbol.Members()) - { - Visit(member); - } - } - - public override void VisitNamedType(INamedTypeSymbol symbol) - { - if (!_namespacesWithTypes.Contains(symbol.ContainingNamespace)) - { - _namespacesWithTypes.Add(symbol.ContainingNamespace); - } - } - - public string CommonNamespace => - NameUtils.FindCommonPrefix( - _namespacesWithTypes - .Select(x => x.NamespaceFromSymbol()) - .Where(x => !string.IsNullOrWhiteSpace(x)) - .ToList(), - true, - int.MaxValue, - true - ); - - public static string CommonNamespaceFrom(ISymbol symbol) - { - var visitor = new CommonNamespaceVisitor(); - visitor.Visit(symbol); - return visitor.CommonNamespace; - } - } -} diff --git a/sources/SilkTouch/SilkTouch/Mods/ExtractHandles.cs b/sources/SilkTouch/SilkTouch/Mods/ExtractHandles.cs index 87e4075603..381a70648a 100644 --- a/sources/SilkTouch/SilkTouch/Mods/ExtractHandles.cs +++ b/sources/SilkTouch/SilkTouch/Mods/ExtractHandles.cs @@ -17,13 +17,11 @@ namespace Silk.NET.SilkTouch.Mods; /// /// See for applying further transformations. /// -public class ExtractHandles(ILogger logger) : Mod +public class ExtractHandles(ILogger logger, DocumentFactory documentFactory) : IMod { /// - public override async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) + public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - await base.ExecuteAsync(ctx, ct); - var project = ctx.SourceProject; if (project == null) { @@ -47,7 +45,8 @@ public override async Task ExecuteAsync(IModContext ctx, CancellationToken ct = // Add syntax nodes to the project as new documents foreach (var (fullyQualifiedName, node) in syntaxNodes) { - var relativePath = $"Handles/{PathForFullyQualified(fullyQualifiedName)}"; + var relativePath = + $"Handles/{documentFactory.PathForFullyQualified(fullyQualifiedName)}"; project = project .AddDocument( Path.GetFileName(relativePath), @@ -66,10 +65,12 @@ private class MissingHandleTypeDiscoverer( CancellationToken ct ) : SymbolVisitor { - private readonly HashSet _nonHandleTypes = - new(SymbolEqualityComparer.Default); - private readonly Dictionary _missingTypes = - new(SymbolEqualityComparer.Default); + private readonly HashSet _nonHandleTypes = new( + SymbolEqualityComparer.Default + ); + private readonly Dictionary _missingTypes = new( + SymbolEqualityComparer.Default + ); private string? _currentNamespace = null; private int _pointerTypeDepth = 0; From 8f56dd6cd254458cc1b7063acad650f9e8522706 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 22:08:51 -0400 Subject: [PATCH 63/93] Replace common namespace identification with a DefaultNamespace config option --- sources/SilkTouch/Jobs/Jobs.Microsoft.cs | 1 + sources/SilkTouch/Jobs/Jobs.OpenAL.cs | 1 + sources/SilkTouch/Jobs/Jobs.OpenCL.cs | 1 + sources/SilkTouch/Jobs/Jobs.OpenGL.cs | 1 + sources/SilkTouch/Jobs/Jobs.OpenXR.cs | 1 + sources/SilkTouch/Jobs/Jobs.SDL.cs | 1 + sources/SilkTouch/Jobs/Jobs.Vulkan.cs | 1 + .../SilkTouch/Mods/Common/DocumentFactory.cs | 42 ++++--------------- .../SilkTouch/SilkTouchConfiguration.cs | 5 +++ sources/SilkTouch/SilkTouch/SilkTouchJob.cs | 1 + 10 files changed, 20 insertions(+), 35 deletions(-) diff --git a/sources/SilkTouch/Jobs/Jobs.Microsoft.cs b/sources/SilkTouch/Jobs/Jobs.Microsoft.cs index 3bb45e7bfb..11b612a05e 100644 --- a/sources/SilkTouch/Jobs/Jobs.Microsoft.cs +++ b/sources/SilkTouch/Jobs/Jobs.Microsoft.cs @@ -14,6 +14,7 @@ public static SilkTouchHost DefineMicrosoftJob(this SilkTouchHost host) => SourceProject = "sources/Win32/Win32/Silk.NET.Win32.csproj", TestProject = "tests/Win32/Win32/Silk.NET.Win32.UnitTests.csproj", DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultNamespace = "Silk.NET.Windows", }, context => context diff --git a/sources/SilkTouch/Jobs/Jobs.OpenAL.cs b/sources/SilkTouch/Jobs/Jobs.OpenAL.cs index b83b311801..8c3a53fa0a 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenAL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenAL.cs @@ -15,6 +15,7 @@ public static SilkTouchHost DefineOpenALJob(this SilkTouchHost host) => Solution = "Silk.NET.slnx", SourceProject = "sources/OpenAL/OpenAL/Silk.NET.OpenAL.csproj", DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultNamespace = "Silk.NET.OpenAL", }, context => context diff --git a/sources/SilkTouch/Jobs/Jobs.OpenCL.cs b/sources/SilkTouch/Jobs/Jobs.OpenCL.cs index 270dca83cd..0235fd53a5 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenCL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenCL.cs @@ -15,6 +15,7 @@ public static SilkTouchHost DefineOpenCLJob(this SilkTouchHost host) => Solution = "Silk.NET.slnx", SourceProject = "sources/OpenCL/OpenCL/Silk.NET.OpenCL.csproj", DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultNamespace = "Silk.NET.OpenCL", }, context => context diff --git a/sources/SilkTouch/Jobs/Jobs.OpenGL.cs b/sources/SilkTouch/Jobs/Jobs.OpenGL.cs index 26ca51d790..dcb36d84d2 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenGL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenGL.cs @@ -15,6 +15,7 @@ public static SilkTouchHost DefineOpenGLJob(this SilkTouchHost host) => Solution = "Silk.NET.slnx", SourceProject = "sources/OpenGL/OpenGL/Silk.NET.OpenGL.csproj", DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultNamespace = "Silk.NET.OpenGL", }, context => context diff --git a/sources/SilkTouch/Jobs/Jobs.OpenXR.cs b/sources/SilkTouch/Jobs/Jobs.OpenXR.cs index be6e1ca0ac..5f8f816989 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenXR.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenXR.cs @@ -15,6 +15,7 @@ public static SilkTouchHost DefineOpenXRJob(this SilkTouchHost host) => Solution = "Silk.NET.slnx", SourceProject = "sources/OpenXR/OpenXR/Silk.NET.OpenXR.csproj", DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultNamespace = "Silk.NET.OpenXR", }, context => context diff --git a/sources/SilkTouch/Jobs/Jobs.SDL.cs b/sources/SilkTouch/Jobs/Jobs.SDL.cs index f812681433..81004ee365 100644 --- a/sources/SilkTouch/Jobs/Jobs.SDL.cs +++ b/sources/SilkTouch/Jobs/Jobs.SDL.cs @@ -14,6 +14,7 @@ public static SilkTouchHost DefineSDLJob(this SilkTouchHost host) => SourceProject = "sources/SDL/SDL/Silk.NET.SDL.csproj", TestProject = "tests/SDL/SDL/Silk.NET.SDL.UnitTests.csproj", DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultNamespace = "Silk.NET.SDL", }, context => context diff --git a/sources/SilkTouch/Jobs/Jobs.Vulkan.cs b/sources/SilkTouch/Jobs/Jobs.Vulkan.cs index 78f6d6e6eb..0519f5dc02 100644 --- a/sources/SilkTouch/Jobs/Jobs.Vulkan.cs +++ b/sources/SilkTouch/Jobs/Jobs.Vulkan.cs @@ -15,6 +15,7 @@ public static SilkTouchHost DefineVulkanJob(this SilkTouchHost host) => Solution = "Silk.NET.slnx", SourceProject = "sources/Vulkan/Vulkan/Silk.NET.Vulkan.csproj", DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultNamespace = "Silk.NET.Vulkan", }, context => context diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index b995387d87..4be3f7cf96 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -4,7 +4,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; -using Silk.NET.SilkTouch.Naming; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Silk.NET.SilkTouch.Mods; @@ -20,9 +19,9 @@ public class DocumentFactory public SyntaxTriviaList? DefaultHeader { get; set; } /// - /// The namespace common to all reported documents. + /// The default namespace to use for documents. /// - public string? CommonNamespace { get; set; } + public string? DefaultNamespace { get; set; } /// /// Using statements to add to all initialized documents. @@ -48,7 +47,7 @@ public DocumentFactory() private DocumentFactory(DocumentFactory original) : this() { - CommonNamespace = original.CommonNamespace; + DefaultNamespace = original.DefaultNamespace; _usings = [.. original._usings]; _orderedUsingDiscriminators = [.. original._orderedUsingDiscriminators]; _usingDiscriminators = [.. original._usingDiscriminators]; @@ -65,13 +64,13 @@ private DocumentFactory(DocumentFactory original) /// The path within the project source directory to place this file. public string PathForFullyQualified(string fullyQualified, string extension = ".gen.cs") { - if (!fullyQualified.Contains('.') || CommonNamespace is null or { Length: 0 }) + if (!fullyQualified.Contains('.') || DefaultNamespace is null or { Length: 0 }) { return fullyQualified + extension; } - return fullyQualified.StartsWith(CommonNamespace) - ? fullyQualified[CommonNamespace.Length..].Trim('.').Replace('.', '/') + extension + return fullyQualified.StartsWith(DefaultNamespace) + ? fullyQualified[DefaultNamespace.Length..].Trim('.').Replace('.', '/') + extension : fullyQualified + extension; } @@ -79,7 +78,7 @@ public string PathForFullyQualified(string fullyQualified, string extension = ". /// Reports information about a document in the project. /// /// - /// This currently saves the using statements and common namespace for use in initializing new documents. + /// This currently saves the using statements for use in initializing new documents. /// public void ReportDocument(SyntaxNode root) => _reporter.Visit(root); @@ -148,33 +147,6 @@ public override void VisitUsingDirective(UsingDirectiveSyntax node) factory.AddUsing(node); } } - - public override void VisitNamespaceDeclaration(NamespaceDeclarationSyntax node) - { - ReportNamespace(node); - base.VisitNamespaceDeclaration(node); - } - - public override void VisitFileScopedNamespaceDeclaration( - FileScopedNamespaceDeclarationSyntax node - ) - { - ReportNamespace(node); - base.VisitFileScopedNamespaceDeclaration(node); - } - - private void ReportNamespace(BaseNamespaceDeclarationSyntax node) - { - var ns = node.NamespaceFromSyntaxNode(); - factory.CommonNamespace = factory.CommonNamespace is null - ? ns - : NameUtils.FindCommonPrefix( - [factory.CommonNamespace, ns], - true, - int.MaxValue, - true - ); - } } private class DocumentInitializer(DocumentFactory factory) : CSharpSyntaxRewriter diff --git a/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs b/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs index 06795bb60f..ca6807f5ea 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchConfiguration.cs @@ -28,4 +28,9 @@ public record SilkTouchConfiguration /// response file) /// public string? DefaultLicenseHeader { get; init; } + + /// + /// The default namespace to be used by generated documents. + /// + public string? DefaultNamespace { get; init; } } diff --git a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs index 831e8eaffa..24505a8343 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs @@ -89,6 +89,7 @@ public async Task RunAsync(CancellationToken ct = default) var context = await _modContextFactory.CreateContextAsync(Key, Config, ct); // Initialize the document factory + _documentFactory.DefaultNamespace = Config.DefaultNamespace; if (Config.DefaultLicenseHeader != null) { _documentFactory.DefaultHeader = ParseLeadingTrivia( From e6ea2168bd16b1c1c06795c677a76fc35e26b685 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 22:11:22 -0400 Subject: [PATCH 64/93] Assume base.VisitCompilationUnit does not return null --- .../SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index 4be3f7cf96..f392b4f1ba 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -151,7 +151,7 @@ public override void VisitUsingDirective(UsingDirectiveSyntax node) private class DocumentInitializer(DocumentFactory factory) : CSharpSyntaxRewriter { - public override SyntaxNode? VisitCompilationUnit(CompilationUnitSyntax node) + public override SyntaxNode VisitCompilationUnit(CompilationUnitSyntax node) { var leadingTrivia = node.GetLeadingTrivia(); var hasHeader = leadingTrivia.Any(x => @@ -160,9 +160,9 @@ private class DocumentInitializer(DocumentFactory factory) : CSharpSyntaxRewrite ); var header = hasHeader ? leadingTrivia : factory.DefaultHeader; - return base.VisitCompilationUnit(node) is CompilationUnitSyntax comp - ? comp.WithUsings(List(factory._usings)).WithLeadingTrivia(header) - : null; + return ((CompilationUnitSyntax)base.VisitCompilationUnit(node)!) + .WithUsings(List(factory._usings)) + .WithLeadingTrivia(header); } public override SyntaxNode? VisitFileScopedNamespaceDeclaration( From 6dce1c1ba77c5808ccee753cc7e6b8fff90c58ab Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 22:18:53 -0400 Subject: [PATCH 65/93] Have DocumentFactory add a default namespace to documents without them --- .../SilkTouch/Mods/Common/DocumentFactory.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index f392b4f1ba..58e9125d3f 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -64,7 +64,7 @@ private DocumentFactory(DocumentFactory original) /// The path within the project source directory to place this file. public string PathForFullyQualified(string fullyQualified, string extension = ".gen.cs") { - if (!fullyQualified.Contains('.') || DefaultNamespace is null or { Length: 0 }) + if (!fullyQualified.Contains('.') || DefaultNamespace is null) { return fullyQualified + extension; } @@ -159,10 +159,21 @@ public override SyntaxNode VisitCompilationUnit(CompilationUnitSyntax node) || x.IsKind(SyntaxKind.MultiLineCommentTrivia) ); + node = (CompilationUnitSyntax)base.VisitCompilationUnit(node)!; + + var hasNamespace = node.Members.Any(x => x is BaseNamespaceDeclarationSyntax); + if (!hasNamespace) + { + node = node.WithMembers([ + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName(factory.DefaultNamespace) + ) + .WithMembers(node.Members), + ]); + } + var header = hasHeader ? leadingTrivia : factory.DefaultHeader; - return ((CompilationUnitSyntax)base.VisitCompilationUnit(node)!) - .WithUsings(List(factory._usings)) - .WithLeadingTrivia(header); + return node.WithUsings(List(factory._usings)).WithLeadingTrivia(header); } public override SyntaxNode? VisitFileScopedNamespaceDeclaration( From 839d852ab31291b1ad3c52abf41852d3299f1f3f Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 22:22:43 -0400 Subject: [PATCH 66/93] Remove header injection handling from MSBuildModContext --- .../Mods/Common/MSBuildModContext.cs | 32 ++----------------- 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs index 8ed8da656f..7077b65d48 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs @@ -10,10 +10,8 @@ using CSharpier.Core.CSharp; using Microsoft.Build.Framework; using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.MSBuild; using Microsoft.Extensions.Logging; -using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; using EndOfLine = CSharpier.Core.EndOfLine; using ILogger = Microsoft.Extensions.Logging.ILogger; @@ -142,12 +140,7 @@ public async ValueTask DisposeAsync() var existingFileGate = 0; var sw = Stopwatch.StartNew(); logger.LogInformation("Writing {} to disk...", JobKey); - var defaultLicenseHeaderTrivia = jobConfig.DefaultLicenseHeader is null - ? null - : (await File.ReadAllLinesAsync(jobConfig.DefaultLicenseHeader)) - .Where(x => x.Length == 0 || x.StartsWith("//")) - .Select(x => Comment(x.Trim())) - .ToArray(); + await Parallel.ForEachAsync( [.. SourceProject?.Documents ?? [], .. TestProject?.Documents ?? []], async (doc, ct) => @@ -174,7 +167,7 @@ testDir is null } Directory.CreateDirectory(fileDir); - await DiffWriteAsync(doc.FilePath, root, pool, defaultLicenseHeaderTrivia, ct); + await DiffWriteAsync(doc.FilePath, root, pool, ct); while (Interlocked.CompareExchange(ref existingFileGate, 1, 0) != 0) { // look ma I made a BreakneckLock @@ -198,7 +191,6 @@ private async Task DiffWriteAsync( string fname, SyntaxNode node, ArrayPool pool, - SyntaxTrivia[]? defaultLicenseHeaderTrivia = null, CancellationToken ct = default ) { @@ -226,26 +218,6 @@ await File.ReadAllBytesAsync(fname, ct), : Task.CompletedTask; } - // Add a license header to files that don't have one - // TODO: Move this to DocumentFactory - if (defaultLicenseHeaderTrivia is not null) - { - var shouldAddHeader = - !node.GetLeadingTrivia().Any(x => x.Kind() is SyntaxKind.SingleLineCommentTrivia) - || !( - node.ChildNodes() - .FirstOrDefault() - ?.GetLeadingTrivia() - .Any(x => x.Kind() is SyntaxKind.SingleLineCommentTrivia) - ).GetValueOrDefault(); - if (shouldAddHeader) - { - node = node.WithLeadingTrivia( - defaultLicenseHeaderTrivia.Concat(node.GetLeadingTrivia()) - ); - } - } - // Convert our syntax node to a UTF-8 byte array using CSharpier var outputString = await ToNormalisedStringAsync(node, ct); var byteCount = Encoding.UTF8.GetByteCount(outputString); From e685bcea71052fa5c7e7c19d42f7ced91856f5d1 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 22:32:31 -0400 Subject: [PATCH 67/93] Update IModContext.WorkingDirectory doc comment --- sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs b/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs index ebfd11a9e5..45f8cac697 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs @@ -16,8 +16,7 @@ public interface IModContext : IAsyncDisposable public string JobKey { get; } /// - /// Gets the directory in which the configuration file is contained. May be null if I/O is banned in the current - /// generator form factor (e.g. the SilkTouch framework is running as a source generator). + /// The path to resolve relatives from. /// public string? WorkingDirectory { get; } From f595bc3e5110f6057684b7763b019817e9a5cd21 Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 22:53:25 -0400 Subject: [PATCH 68/93] Work on removing ModCSharpSyntaxRewriter --- .../SilkTouch/SilkTouch/Mods/AddVTables.cs | 63 ++++---- .../SilkTouch/Mods/BakeSourceSets.cs | 2 +- .../SilkTouch/Mods/Common/DocumentFactory.cs | 5 +- .../Mods/Common/ModCSharpSyntaxRewriter.cs | 138 ------------------ .../SilkTouch/Mods/TransformFunctions.cs | 15 +- .../ArrayParameterTransformer.cs | 5 - .../Transformation/ITransformationContext.cs | 20 +-- .../Mods/Transformation/PtrRefTransformer.cs | 2 +- .../ArrayParameterTransformerTests.cs | 4 +- .../SilkTouch/DummyTransformationContext.cs | 5 +- .../SilkTouch/ExtractHandlesTests.cs | 5 +- 11 files changed, 69 insertions(+), 195 deletions(-) delete mode 100644 sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index 8eb9da9c88..cb08eda542 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -27,7 +27,7 @@ namespace Silk.NET.SilkTouch.Mods; /// -based partial class implementation of the static interface. However, in some cases this /// could be any other implementation such as the implementation. /// -public class AddVTables(AddVTables.Configuration config) : IMod +public class AddVTables(AddVTables.Configuration config, DocumentFactory baseDocumentFactory) : IMod { /// /// Base class for VTable configurations. @@ -512,7 +512,7 @@ public record Configuration }; } - private class Rewriter(VTable[] vTables) : ModCSharpSyntaxRewriter + private class Rewriter(VTable[] vTables) : CSharpSyntaxRewriter { private InterfaceDeclarationSyntax? _currentInterface; private ClassDeclarationSyntax? _currentClass; @@ -1432,40 +1432,43 @@ rw.ClassName is not null newFiles.Add( ( ifname, - CompilationUnit() - .WithUsings(ModCSharpSyntaxRewriter.GetUsings(rw.AggregatedUsings, null)) - .WithMembers( - nNamespaces == 1 - ? string.IsNullOrWhiteSpace(rw.InterfacePartials[0].Namespace) - ? List( - rw.InterfacePartials.Select(x => x.Interface) - ) - : SingletonList( - FileScopedNamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName( - rw.InterfacePartials[0].Namespace - ) - ) - .WithMembers( - List( - rw.InterfacePartials.Select(x => x.Interface) - ) - ) - ) - : List( - rw.InterfacePartials.GroupBy(x => x.Namespace) - .Select(g => - NamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName(g.Key) + documentFactory.PopulateDocument( + CompilationUnit() + .WithMembers( + nNamespaces == 1 + ? string.IsNullOrWhiteSpace(rw.InterfacePartials[0].Namespace) + ? List( + rw.InterfacePartials.Select(x => x.Interface) + ) + : SingletonList( + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName( + rw.InterfacePartials[0].Namespace + ) ) .WithMembers( List( - g.Select(x => x.Interface) + rw.InterfacePartials.Select(x => + x.Interface + ) ) ) ) - ) - ) + : List( + rw.InterfacePartials.GroupBy(x => x.Namespace) + .Select(g => + NamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName(g.Key) + ) + .WithMembers( + List( + g.Select(x => x.Interface) + ) + ) + ) + ) + ) + ) ) ); } diff --git a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs index 14b39dbe34..1767ee9e9f 100644 --- a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs +++ b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs @@ -44,7 +44,7 @@ public record Configuration } private class Rewriter(IBakeStrategy strategy, ILogger logger) - : ModCSharpSyntaxRewriter + : CSharpSyntaxRewriter { public BakeSet? Baked { get; set; } diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index 58e9125d3f..f5efdc4639 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -89,10 +89,11 @@ public string PathForFullyQualified(string fullyQualified, string extension = ". /// This currently adds using statements and header comments if not added already. /// This also calls . /// - public SyntaxNode PopulateDocument(SyntaxNode root) + public T PopulateDocument(T root) + where T : SyntaxNode { _reporter.Visit(root); - return _initializer.Visit(root); + return (T)_initializer.Visit(root); } /// diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs b/sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs deleted file mode 100644 index de81621000..0000000000 --- a/sources/SilkTouch/SilkTouch/Mods/Common/ModCSharpSyntaxRewriter.cs +++ /dev/null @@ -1,138 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Silk.NET.SilkTouch.Mods.Transformation; -using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; - -namespace Silk.NET.SilkTouch.Mods; - -/// -/// containing common functionality for mods. -/// -public abstract class ModCSharpSyntaxRewriter(bool visitIntoStructuredTrivia = false) - : CSharpSyntaxRewriter(visitIntoStructuredTrivia), - ITransformationContext -{ - /// - /// usings to add to the appropriate place within the syntax tree. - /// - public Dictionary UsingsToAdd { get; set; } = []; - - /// - public override SyntaxNode? VisitCompilationUnit(CompilationUnitSyntax node) - { - var ret = base.VisitCompilationUnit(node); - if (ret is not CompilationUnitSyntax comp) - { - return ret; - } - - foreach ( - var use in comp.Usings.Where(use => !use.GlobalKeyword.IsKind(SyntaxKind.GlobalKeyword)) - ) - { - AddUsing(use); - } - - ret = comp.WithUsings(GetUsings(UsingsToAdd, comp)) - .WithMembers( - UsingsToAdd.Count == 0 - ? comp.Members - : List( - comp.Members.Select(x => - x.WithLeadingTrivia( - x.GetLeadingTrivia() - .Where(y => - y.Kind() - is not SyntaxKind.SingleLineCommentTrivia - and not SyntaxKind.MultiLineCommentTrivia - ) - ) - ) - ) - ); - - return ret; - } - - /// - public override SyntaxNode? VisitFileScopedNamespaceDeclaration( - FileScopedNamespaceDeclarationSyntax node - ) - { - foreach ( - var use in node.Usings.Where(use => !use.GlobalKeyword.IsKind(SyntaxKind.GlobalKeyword)) - ) - { - AddUsing(use); - } - - return base.VisitFileScopedNamespaceDeclaration(node.WithUsings(default)); - } - - /// - /// Gets all the usings for the given compilation unit. - /// - /// The usings to get. - /// The compilation unit. - /// The using list. - public static SyntaxList GetUsings( - IReadOnlyCollection> usingsToAdd, - CompilationUnitSyntax? comp - ) => - List( - usingsToAdd.Select( - (x, i) => - i == 0 - ? x - .Value.WithoutTrailingTrivia() - .WithLeadingTrivia( - usingsToAdd - .Select(y => y.Value.GetLeadingTrivia()) - .Concat(comp?.Members.Select(y => y.GetLeadingTrivia()) ?? []) - .OrderByDescending(y => - y.Count(z => - z.Kind() - is SyntaxKind.SingleLineCommentTrivia - or SyntaxKind.MultiLineCommentTrivia - or SyntaxKind.WhitespaceTrivia - ) - ) - .FirstOrDefault() - ) - : x.Value.WithoutTrivia() - ) - ); - - /// - public MethodDeclarationSyntax? Original { get; set; } - - /// - public IFunctionTransformer[]? Transformers { get; set; } - - /// - /// Adds a namespace import to the resultant syntax tree. - /// - /// The dot-separated namespace. - /// Whether it was added. - protected bool AddUsing(string str) => - AddUsing(UsingDirective(ModUtils.NamespaceIntoIdentifierName(str))); - - /// - /// Adds a using directive to the resultant syntax tree. - /// - /// The directive. - /// Whether it was added. - public bool AddUsing(UsingDirectiveSyntax use) => UsingsToAdd.TryAdd(Discrim(use), use); - - /// - /// Gets a discriminator for the given using. - /// - /// The using. - /// The discriminator string. - protected static string Discrim(UsingDirectiveSyntax use) => - new(use.WithoutTrivia().ToString().Where(char.IsAsciiLetterOrDigit).ToArray()); -} diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs index 7c9c5b7804..ca9104fa63 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Silk.NET.SilkTouch.Mods.Transformation; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; @@ -11,8 +12,20 @@ namespace Silk.NET.SilkTouch.Mods; /// /// Mods the bindings to use the Silk.NET.Core pointer types. /// -public class TransformFunctions(FunctionTransformer ft) : ModCSharpSyntaxRewriter, IMod +public class TransformFunctions(FunctionTransformer ft) + : CSharpSyntaxRewriter, + IMod, + ITransformationContext { + /// + public MethodDeclarationSyntax? Original { get; set; } + + /// + public IFunctionTransformer[]? Transformers { get; set; } + + /// + public DocumentFactory DocumentFactory { get; set; } + /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/ArrayParameterTransformer.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/ArrayParameterTransformer.cs index fd8a8f2a9f..4ede8fcdd0 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/ArrayParameterTransformer.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/ArrayParameterTransformer.cs @@ -31,11 +31,6 @@ Action next // Keep the original in the loop: next(decl); - if (ctx.Transformers is null) - { - return; - } - decl.AttributeLists.GetNativeFunctionInfo(out _, out var entryPoint, out _); entryPoint ??= decl.Identifier.ToString(); diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs index 31be8fea31..35314e5070 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/ITransformationContext.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.CodeAnalysis.CSharp.Syntax; -using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; namespace Silk.NET.SilkTouch.Mods.Transformation; @@ -20,20 +19,13 @@ public interface ITransformationContext /// /// The transformers in use. /// - public IFunctionTransformer[]? Transformers { get; set; } + public IFunctionTransformer[] Transformers { get; set; } /// - /// Adds a namespace import to the resultant syntax tree. + /// The document factory in use. /// - /// The dot-separated namespace. - /// Whether it was added. - public bool AddUsing(string ns) => - AddUsing(UsingDirective(ModUtils.NamespaceIntoIdentifierName(ns))); - - /// - /// Adds a using directive to the resultant syntax tree. - /// - /// The directive. - /// Whether it was added. - public bool AddUsing(UsingDirectiveSyntax use); + /// + /// Main purpose is for adding using statements. + /// + public DocumentFactory DocumentFactory { get; set; } } diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs index 83b4a74ba9..5af94e4cff 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/PtrRefTransformer.cs @@ -180,7 +180,7 @@ is not MethodDeclarationSyntax methWithReplacementsButNoFixed ) ) .AddMaxOpt(); - _ctx?.AddUsing("System.Runtime.CompilerServices"); + _ctx?.DocumentFactory.AddUsing("System.Runtime.CompilerServices"); // Generate the fixed blocks for the "inner idents" foreach (var param in paramsToChange) diff --git a/tests/SilkTouch/SilkTouch/ArrayParameterTransformerTests.cs b/tests/SilkTouch/SilkTouch/ArrayParameterTransformerTests.cs index aff12fa7b2..9a87d32e7c 100644 --- a/tests/SilkTouch/SilkTouch/ArrayParameterTransformerTests.cs +++ b/tests/SilkTouch/SilkTouch/ArrayParameterTransformerTests.cs @@ -5,6 +5,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; +using Silk.NET.SilkTouch.Mods; using Silk.NET.SilkTouch.Mods.Metadata; using Silk.NET.SilkTouch.Mods.Transformation; @@ -218,7 +219,8 @@ Action next ) => throw new NotImplementedException(); public MethodDeclarationSyntax? Original { get; set; } - public IFunctionTransformer[]? Transformers { get; set; } + public IFunctionTransformer[] Transformers { get; set; } + public DocumentFactory DocumentFactory { get; set; } = new(); public bool AddUsing(UsingDirectiveSyntax use) => throw new NotImplementedException(); diff --git a/tests/SilkTouch/SilkTouch/DummyTransformationContext.cs b/tests/SilkTouch/SilkTouch/DummyTransformationContext.cs index 30073e380a..beea42eea9 100644 --- a/tests/SilkTouch/SilkTouch/DummyTransformationContext.cs +++ b/tests/SilkTouch/SilkTouch/DummyTransformationContext.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.CodeAnalysis.CSharp.Syntax; +using Silk.NET.SilkTouch.Mods; using Silk.NET.SilkTouch.Mods.Transformation; namespace Silk.NET.SilkTouch.UnitTests; @@ -10,7 +11,9 @@ public class DummyTransformationContext : ITransformationContext { public string? JobKey { get; set; } = "Test"; public MethodDeclarationSyntax? Original { get; set; } - public IFunctionTransformer[]? Transformers { get; set; } = []; + public IFunctionTransformer[] Transformers { get; set; } = []; + public DocumentFactory DocumentFactory { get; set; } = new(); + public Predicate OnAddUsing = _ => true; public bool AddUsing(UsingDirectiveSyntax use) => OnAddUsing.Invoke(use); diff --git a/tests/SilkTouch/SilkTouch/ExtractHandlesTests.cs b/tests/SilkTouch/SilkTouch/ExtractHandlesTests.cs index 3d3679afd5..3f2a12d871 100644 --- a/tests/SilkTouch/SilkTouch/ExtractHandlesTests.cs +++ b/tests/SilkTouch/SilkTouch/ExtractHandlesTests.cs @@ -41,7 +41,10 @@ public static extern VkResult vkCreateInstance( var context = new DummyModContext() { SourceProject = project }; - var extractHandles = new ExtractHandles(NullLogger.Instance); + var extractHandles = new ExtractHandles( + NullLogger.Instance, + new DocumentFactory() + ); await extractHandles.ExecuteAsync(context); From d75e06adf5a332dbfec092b8bc857b33e88bd9fa Mon Sep 17 00:00:00 2001 From: William Chen Date: Mon, 12 Oct 2026 23:07:02 -0400 Subject: [PATCH 69/93] Update remaining usages of ModCSharpSyntaxRewriter --- .../SilkTouch/SilkTouch/Mods/AddVTables.cs | 61 +++++++------------ .../SilkTouch/Mods/BakeSourceSets.cs | 39 +++++------- .../SilkTouch/Mods/TransformFunctions.cs | 6 +- .../Transformation/FunctionTransformer.cs | 2 +- 4 files changed, 41 insertions(+), 67 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index cb08eda542..2a61a08c75 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -27,7 +27,7 @@ namespace Silk.NET.SilkTouch.Mods; /// -based partial class implementation of the static interface. However, in some cases this /// could be any other implementation such as the implementation. /// -public class AddVTables(AddVTables.Configuration config, DocumentFactory baseDocumentFactory) : IMod +public class AddVTables(AddVTables.Configuration config, DocumentFactory documentFactory) : IMod { /// /// Base class for VTable configurations. @@ -512,7 +512,7 @@ public record Configuration }; } - private class Rewriter(VTable[] vTables) : CSharpSyntaxRewriter + private class Rewriter(VTable[] vTables, DocumentFactory documentFactory) : CSharpSyntaxRewriter { private InterfaceDeclarationSyntax? _currentInterface; private ClassDeclarationSyntax? _currentClass; @@ -585,22 +585,6 @@ public Dictionary< List<(string EntryPoint, string Library)> > EntryPoints { get; set; } = []; - public override SyntaxNode? Visit(SyntaxNode? node) - { - var ret = base.Visit(node); - if (node is CompilationUnitSyntax) - { - foreach (var (k, v) in UsingsToAdd) - { - AggregatedUsings[k] = v; - } - - UsingsToAdd.Clear(); - } - - return ret; - } - private static string InterfaceKey(ClassDeclarationSyntax klass) => $"I{klass.Identifier}"; public override SyntaxNode VisitClassDeclaration(ClassDeclarationSyntax node) @@ -1019,8 +1003,6 @@ is not (SyntaxKind.ExternKeyword or SyntaxKind.PartialKeyword) public IEnumerable> GetExtraFiles() { - var uta = UsingsToAdd; - UsingsToAdd = AggregatedUsings; foreach (var (outputName, nonInterface) in FullClassNames) { if (nonInterface is null) @@ -1068,28 +1050,29 @@ public IEnumerable> GetExtraFiles() ) ) ); - AddUsing("Silk.NET.Core.Loader"); - AddUsing("System.Reflection"); + + documentFactory.AddUsing("Silk.NET.Core.Loader"); + documentFactory.AddUsing("System.Reflection"); + yield return new KeyValuePair( $"{outputName}.gen.cs", - CompilationUnit() - .WithUsings(GetUsings(UsingsToAdd, null)) - .WithMembers( - string.IsNullOrWhiteSpace(ns) - ? SingletonList(boilerplate) - : SingletonList( - FileScopedNamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName(ns) - ) - .WithMembers( - SingletonList(boilerplate) - ) - ) - ) + documentFactory.PopulateDocument( + CompilationUnit() + .WithMembers( + string.IsNullOrWhiteSpace(ns) + ? SingletonList(boilerplate) + : SingletonList( + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName(ns) + ) + .WithMembers( + SingletonList(boilerplate) + ) + ) + ) + ) ); } - - UsingsToAdd = uta; } private IEnumerable GenerateTopLevelBoilerplate( @@ -1400,7 +1383,7 @@ public void Reset() public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { var vTables = config.VTables; - var rw = new Rewriter(vTables); + var rw = new Rewriter(vTables, documentFactory.Clone()); var newFiles = new List<(string, CSharpSyntaxNode)>(rw.FullClassNames.Count); var proj = ctx.SourceProject; foreach (var docId in ctx.SourceProject?.DocumentIds ?? []) diff --git a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs index 1767ee9e9f..caa64dbcc4 100644 --- a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs +++ b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs @@ -320,7 +320,6 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) var rewriter = new Rewriter(strategy, logger); var bakery = new Dictionary(); var baked = new List(); - var aggregatedUsings = new Dictionary(); foreach (var docId in ctx.SourceProject.DocumentIds) { var doc = @@ -359,11 +358,6 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) baked.Add(path); rewriter.Visit(root); - foreach (var (k, v) in rewriter.UsingsToAdd) - { - aggregatedUsings.TryAdd(k, v); - } - rewriter.UsingsToAdd.Clear(); rewriter.Baked = null; rewriter.SourceSet = null; } @@ -375,10 +369,7 @@ .. ctx ) .Select(x => x.Id), ]); - foreach ( - var (bakedRoot, bakedPath) in GetBaked(bakery, aggregatedUsings) - .Select(x => (x.Value, path: x.Key)) - ) + foreach (var (bakedRoot, bakedPath) in GetBaked(bakery).Select(x => (x.Value, path: x.Key))) { proj = proj.AddDocument( Path.GetFileName(bakedPath), @@ -392,8 +383,7 @@ .. ctx } private IEnumerable> GetBaked( - Dictionary bakery, - Dictionary aggregatedUsings + Dictionary bakery ) { foreach (var (subdir, bakeSet) in bakery) @@ -413,18 +403,19 @@ Dictionary aggregatedUsings : null; yield return new KeyValuePair( $"{subdir}/{documentFactory.PathForFullyQualified(fqTopLevelType)}", - CompilationUnit() - .WithMembers( - ns is null - ? SingletonList(bakedSyntax) - : SingletonList( - FileScopedNamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName(ns) - ) - .WithMembers(SingletonList(bakedSyntax)) - ) - ) - .WithUsings(ModCSharpSyntaxRewriter.GetUsings(aggregatedUsings, null)) + documentFactory.PopulateDocument( + CompilationUnit() + .WithMembers( + ns is null + ? SingletonList(bakedSyntax) + : SingletonList( + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName(ns) + ) + .WithMembers(SingletonList(bakedSyntax)) + ) + ) + ) ); } } diff --git a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs index ca9104fa63..88403d0dbf 100644 --- a/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs +++ b/sources/SilkTouch/SilkTouch/Mods/TransformFunctions.cs @@ -12,7 +12,7 @@ namespace Silk.NET.SilkTouch.Mods; /// /// Mods the bindings to use the Silk.NET.Core pointer types. /// -public class TransformFunctions(FunctionTransformer ft) +public class TransformFunctions(FunctionTransformer ft, DocumentFactory documentFactory) : CSharpSyntaxRewriter, IMod, ITransformationContext @@ -21,10 +21,10 @@ public class TransformFunctions(FunctionTransformer ft) public MethodDeclarationSyntax? Original { get; set; } /// - public IFunctionTransformer[]? Transformers { get; set; } + public IFunctionTransformer[] Transformers { get; set; } = []; /// - public DocumentFactory DocumentFactory { get; set; } + public DocumentFactory DocumentFactory { get; set; } = documentFactory; /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) diff --git a/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs b/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs index 9641189f01..dd487b4c0f 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Transformation/FunctionTransformer.cs @@ -204,7 +204,7 @@ meth.Body.Statements[0] as ExpressionStatementSyntax ctx.Original = null; } - ctx.Transformers = null; + ctx.Transformers = []; return ret; } From 16c3027b52bd69c8f06b1ddf3fbf6d39e4665b4e Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 00:01:29 -0400 Subject: [PATCH 70/93] Update mods to use DocumentFactory when adding documents --- .../SilkTouch/SilkTouch/Clang/ClangScraper.cs | 13 +- .../SilkTouch/Mods/AddOpaqueStructs.cs | 41 +-- .../SilkTouch/SilkTouch/Mods/AddVTables.cs | 96 ++++--- .../SilkTouch/Mods/BakeSourceSets.cs | 26 +- .../SilkTouch/Mods/Common/DocumentFactory.cs | 6 + .../SilkTouch/Mods/ExtractEnumConstants.cs | 28 +- .../SilkTouch/Mods/ExtractFunctionPointers.cs | 266 +++++++++--------- .../SilkTouch/Mods/ExtractHandles.cs | 2 +- .../SilkTouch/Mods/ExtractNestedTypes.cs | 34 ++- .../SilkTouch/Mods/MixKhronosData.cs | 3 +- 10 files changed, 268 insertions(+), 247 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index 1a0a9cbca6..476bd8d39f 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -342,9 +342,12 @@ await inputResolver.ResolvePath(@override) foreach (var (fname, tree) in aggregatedSources) { var root = await tree.GetRootAsync(ct); - root = documentFactory.PopulateDocument(root); src = src - ?.AddDocument(Path.GetFileName(fname), root, filePath: src.FullPath(fname)) + ?.AddDocument( + Path.GetFileName(fname), + documentFactory.PopulateDocument(root), + filePath: src.FullPath(fname) + ) .Project; } @@ -480,7 +483,11 @@ var file in ( ref var proj = ref isSource ? ref src : ref tst; var filePath = proj!.FullPath(rel); proj = proj - ?.AddDocument(Path.GetFileName(file), root, filePath: filePath) + ?.AddDocument( + Path.GetFileName(file), + documentFactory.PopulateDocument(root), + filePath: filePath + ) .Project; } diff --git a/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs b/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs index b2c0484921..383b35dd4d 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddOpaqueStructs.cs @@ -14,6 +14,7 @@ namespace Silk.NET.SilkTouch.Mods; /// Adds opaque structs. /// public class AddOpaqueStructs( + DocumentFactory documentFactory, ILogger logger, AddOpaqueStructs.Configuration config ) : IMod, IResponseFileMod @@ -86,29 +87,31 @@ public Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) var fileName = $"{name}.gen.cs"; proj = proj.AddDocument( fileName, - CompilationUnit() - .WithMembers( - SingletonList( - FileScopedNamespaceDeclaration(ns) - .WithMembers( - SingletonList( - StructDeclaration(name) - .WithAttributeLists( - new SyntaxList().WithNativeName( - name + documentFactory.PopulateDocument( + CompilationUnit() + .WithMembers( + SingletonList( + FileScopedNamespaceDeclaration(ns) + .WithMembers( + SingletonList( + StructDeclaration(name) + .WithAttributeLists( + new SyntaxList().WithNativeName( + name + ) ) - ) - .WithModifiers( - TokenList( - Token(SyntaxKind.PublicKeyword), - Token(SyntaxKind.ReadOnlyKeyword), - Token(SyntaxKind.PartialKeyword) + .WithModifiers( + TokenList( + Token(SyntaxKind.PublicKeyword), + Token(SyntaxKind.ReadOnlyKeyword), + Token(SyntaxKind.PartialKeyword) + ) ) - ) + ) ) - ) + ) ) - ), + ), filePath: proj.FullPath(fileName) ).Project; } diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index 2a61a08c75..6a28d51815 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -1056,21 +1056,19 @@ public IEnumerable> GetExtraFiles() yield return new KeyValuePair( $"{outputName}.gen.cs", - documentFactory.PopulateDocument( - CompilationUnit() - .WithMembers( - string.IsNullOrWhiteSpace(ns) - ? SingletonList(boilerplate) - : SingletonList( - FileScopedNamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName(ns) - ) - .WithMembers( - SingletonList(boilerplate) - ) - ) - ) - ) + CompilationUnit() + .WithMembers( + string.IsNullOrWhiteSpace(ns) + ? SingletonList(boilerplate) + : SingletonList( + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName(ns) + ) + .WithMembers( + SingletonList(boilerplate) + ) + ) + ) ); } } @@ -1383,7 +1381,7 @@ public void Reset() public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { var vTables = config.VTables; - var rw = new Rewriter(vTables, documentFactory.Clone()); + var rw = new Rewriter(vTables, documentFactory); var newFiles = new List<(string, CSharpSyntaxNode)>(rw.FullClassNames.Count); var proj = ctx.SourceProject; foreach (var docId in ctx.SourceProject?.DocumentIds ?? []) @@ -1410,48 +1408,44 @@ rw.ClassName is not null && fname.Replace(rw.ClassName, $"I{rw.ClassName}") is var ifn && ifn != fname ? ifn - : ModUtils.AddEffectiveSuffix(fname, "Interfaces"); + : fname.AddEffectiveSuffix("Interfaces"); var nNamespaces = rw.InterfacePartials.Select(x => x.Namespace).Distinct().Count(); newFiles.Add( ( ifname, - documentFactory.PopulateDocument( - CompilationUnit() - .WithMembers( - nNamespaces == 1 - ? string.IsNullOrWhiteSpace(rw.InterfacePartials[0].Namespace) - ? List( - rw.InterfacePartials.Select(x => x.Interface) - ) - : SingletonList( - FileScopedNamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName( - rw.InterfacePartials[0].Namespace - ) + CompilationUnit() + .WithMembers( + nNamespaces == 1 + ? string.IsNullOrWhiteSpace(rw.InterfacePartials[0].Namespace) + ? List( + rw.InterfacePartials.Select(x => x.Interface) + ) + : SingletonList( + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName( + rw.InterfacePartials[0].Namespace + ) + ) + .WithMembers( + List( + rw.InterfacePartials.Select(x => x.Interface) + ) + ) + ) + : List( + rw.InterfacePartials.GroupBy(x => x.Namespace) + .Select(g => + NamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName(g.Key) ) .WithMembers( List( - rw.InterfacePartials.Select(x => - x.Interface - ) + g.Select(x => x.Interface) ) ) ) - : List( - rw.InterfacePartials.GroupBy(x => x.Namespace) - .Select(g => - NamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName(g.Key) - ) - .WithMembers( - List( - g.Select(x => x.Interface) - ) - ) - ) - ) - ) - ) + ) + ) ) ); } @@ -1461,7 +1455,11 @@ rw.ClassName is not null ) { proj = proj - ?.AddDocument(Path.GetFileName(fname), root, filePath: proj.FullPath(fname)) + ?.AddDocument( + Path.GetFileName(fname), + documentFactory.PopulateDocument(root), + filePath: proj.FullPath(fname) + ) .Project; } diff --git a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs index caa64dbcc4..ceda65e70f 100644 --- a/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs +++ b/sources/SilkTouch/SilkTouch/Mods/BakeSourceSets.cs @@ -373,7 +373,7 @@ .. ctx { proj = proj.AddDocument( Path.GetFileName(bakedPath), - bakedRoot, + documentFactory.PopulateDocument(bakedRoot), // we can forgive the below nulls because RelativePath checks them, and returns null if they're null. filePath: proj.FullPath(bakedPath) ).Project; @@ -403,19 +403,17 @@ Dictionary bakery : null; yield return new KeyValuePair( $"{subdir}/{documentFactory.PathForFullyQualified(fqTopLevelType)}", - documentFactory.PopulateDocument( - CompilationUnit() - .WithMembers( - ns is null - ? SingletonList(bakedSyntax) - : SingletonList( - FileScopedNamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName(ns) - ) - .WithMembers(SingletonList(bakedSyntax)) - ) - ) - ) + CompilationUnit() + .WithMembers( + ns is null + ? SingletonList(bakedSyntax) + : SingletonList( + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName(ns) + ) + .WithMembers(SingletonList(bakedSyntax)) + ) + ) ); } } diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index f5efdc4639..34638eeb8e 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -11,6 +11,11 @@ namespace Silk.NET.SilkTouch.Mods; /// /// Handles creation of new documents. /// +/// +/// In general, this class adds defaults when the document is missing them. +/// Namespaces, using statements, and header comments are currently handled. +/// Best practice is to call when the document is added to a project. +/// public class DocumentFactory { /// @@ -47,6 +52,7 @@ public DocumentFactory() private DocumentFactory(DocumentFactory original) : this() { + DefaultHeader = original.DefaultHeader; DefaultNamespace = original.DefaultNamespace; _usings = [.. original._usings]; _orderedUsingDiscriminators = [.. original._orderedUsingDiscriminators]; diff --git a/sources/SilkTouch/SilkTouch/Mods/ExtractEnumConstants.cs b/sources/SilkTouch/SilkTouch/Mods/ExtractEnumConstants.cs index b317d0b621..79b9c4518b 100644 --- a/sources/SilkTouch/SilkTouch/Mods/ExtractEnumConstants.cs +++ b/sources/SilkTouch/SilkTouch/Mods/ExtractEnumConstants.cs @@ -20,7 +20,7 @@ namespace Silk.NET.SilkTouch.Mods; /// extern MyEnum GetMyEnum(); /// /// -public class ExtractEnumConstants : IMod +public class ExtractEnumConstants(DocumentFactory documentFactory) : IMod { /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) @@ -80,17 +80,21 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) project = project ?.AddDocument( $"{identifier}.gen.cs", - CompilationUnit() - .WithMembers( - ns is { Length: > 0 } - ? SingletonList( - FileScopedNamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName(ns.TrimEnd('.')) - ) - .WithMembers(SingletonList(typeDecl)) - ) - : SingletonList(typeDecl) - ), + documentFactory.PopulateDocument( + CompilationUnit() + .WithMembers( + ns is { Length: > 0 } + ? SingletonList( + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName( + ns.TrimEnd('.') + ) + ) + .WithMembers(SingletonList(typeDecl)) + ) + : SingletonList(typeDecl) + ) + ), // Place extracted enum types in the directory common to where the types are referenced from filePath: project.FullPath($"{dir}/{identifier}.gen.cs") ) diff --git a/sources/SilkTouch/SilkTouch/Mods/ExtractFunctionPointers.cs b/sources/SilkTouch/SilkTouch/Mods/ExtractFunctionPointers.cs index a0827514ec..ce262ee222 100644 --- a/sources/SilkTouch/SilkTouch/Mods/ExtractFunctionPointers.cs +++ b/sources/SilkTouch/SilkTouch/Mods/ExtractFunctionPointers.cs @@ -16,7 +16,10 @@ namespace Silk.NET.SilkTouch.Mods; /// Replaces function pointers identified by their s /// with delegates and function pointer structs. /// -public partial class ExtractFunctionPointers(ILogger logger) : IMod +public partial class ExtractFunctionPointers( + ILogger logger, + DocumentFactory documentFactory +) : IMod { /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) @@ -77,17 +80,21 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) project = project ?.AddDocument( $"{identifier}.gen.cs", - CompilationUnit() - .WithMembers( - ns is { Length: > 0 } - ? SingletonList( - FileScopedNamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName(ns.TrimEnd('.')) - ) - .WithMembers(SingletonList(typeDecl)) - ) - : SingletonList(typeDecl) - ), + documentFactory.PopulateDocument( + CompilationUnit() + .WithMembers( + ns is { Length: > 0 } + ? SingletonList( + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName( + ns.TrimEnd('.') + ) + ) + .WithMembers(SingletonList(typeDecl)) + ) + : SingletonList(typeDecl) + ) + ), // Place extracted function pointer types in the directory common to where the types are referenced from filePath: project.FullPath($"{dir}/{identifier}.gen.cs") ) @@ -401,161 +408,154 @@ FunctionPointerTypeSyntax rawPfn ) .WithAttributeLists(pfnAttrLists) .WithMembers( - List( - [ - FieldDeclaration( - VariableDeclaration( - PointerType(PredefinedType(Token(SyntaxKind.VoidKeyword))), - SingletonSeparatedList(VariableDeclarator("_pointer")) - ) + List([ + FieldDeclaration( + VariableDeclaration( + PointerType(PredefinedType(Token(SyntaxKind.VoidKeyword))), + SingletonSeparatedList(VariableDeclarator("_pointer")) ) - .WithModifiers( - TokenList( - Token(SyntaxKind.PrivateKeyword), - Token(SyntaxKind.ReadOnlyKeyword) - ) - ), - PropertyDeclaration(rawPfn, "Handle") - .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword))) - .WithExpressionBody( - ArrowExpressionClause( - CastExpression(rawPfn, IdentifierName("_pointer")) - ) + ) + .WithModifiers( + TokenList( + Token(SyntaxKind.PrivateKeyword), + Token(SyntaxKind.ReadOnlyKeyword) ) - .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), - ConstructorDeclaration(pfnName) - .WithParameterList( - ParameterList( - SingletonSeparatedList( - Parameter(Identifier("ptr")).WithType(rawPfn) - ) - ) + ), + PropertyDeclaration(rawPfn, "Handle") + .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword))) + .WithExpressionBody( + ArrowExpressionClause( + CastExpression(rawPfn, IdentifierName("_pointer")) ) - .WithExpressionBody( - ArrowExpressionClause( - AssignmentExpression( - SyntaxKind.SimpleAssignmentExpression, - IdentifierName("_pointer"), - IdentifierName("ptr") - ) + ) + .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), + ConstructorDeclaration(pfnName) + .WithParameterList( + ParameterList( + SingletonSeparatedList( + Parameter(Identifier("ptr")).WithType(rawPfn) ) ) - .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword))) - .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), - ConstructorDeclaration(pfnName) - .WithParameterList( - ParameterList( - SingletonSeparatedList( - Parameter(Identifier("proc")) - .WithType(IdentifierName(delegateName)) - ) + ) + .WithExpressionBody( + ArrowExpressionClause( + AssignmentExpression( + SyntaxKind.SimpleAssignmentExpression, + IdentifierName("_pointer"), + IdentifierName("ptr") ) ) - .WithExpressionBody( - ArrowExpressionClause( - AssignmentExpression( - SyntaxKind.SimpleAssignmentExpression, - IdentifierName("_pointer"), - InvocationExpression( - MemberAccessExpression( - SyntaxKind.SimpleMemberAccessExpression, - IdentifierName("SilkMarshal"), - IdentifierName("DelegateToPtr") - ), - ArgumentList( - SingletonSeparatedList( - Argument(IdentifierName("proc")) - ) - ) - ) - ) + ) + .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword))) + .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), + ConstructorDeclaration(pfnName) + .WithParameterList( + ParameterList( + SingletonSeparatedList( + Parameter(Identifier("proc")) + .WithType(IdentifierName(delegateName)) ) ) - .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword))) - .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), - MethodDeclaration( - PredefinedType(Token(SyntaxKind.VoidKeyword)), - "Dispose" - ) - .WithExpressionBody( - ArrowExpressionClause( + ) + .WithExpressionBody( + ArrowExpressionClause( + AssignmentExpression( + SyntaxKind.SimpleAssignmentExpression, + IdentifierName("_pointer"), InvocationExpression( MemberAccessExpression( SyntaxKind.SimpleMemberAccessExpression, IdentifierName("SilkMarshal"), - IdentifierName("Free") + IdentifierName("DelegateToPtr") ), ArgumentList( SingletonSeparatedList( - Argument(IdentifierName("_pointer")) + Argument(IdentifierName("proc")) ) ) ) ) ) - .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword))) - .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), - ConversionOperatorDeclaration( - Token(SyntaxKind.ImplicitKeyword), - IdentifierName(pfnName) - ) - .WithParameterList( - ParameterList( - SingletonSeparatedList( - Parameter(Identifier("pfn")).WithType(rawPfn) + ) + .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword))) + .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), + MethodDeclaration(PredefinedType(Token(SyntaxKind.VoidKeyword)), "Dispose") + .WithExpressionBody( + ArrowExpressionClause( + InvocationExpression( + MemberAccessExpression( + SyntaxKind.SimpleMemberAccessExpression, + IdentifierName("SilkMarshal"), + IdentifierName("Free") + ), + ArgumentList( + SingletonSeparatedList( + Argument(IdentifierName("_pointer")) + ) ) ) ) - .WithModifiers( - TokenList( - Token(SyntaxKind.PublicKeyword), - Token(SyntaxKind.StaticKeyword) + ) + .WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword))) + .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), + ConversionOperatorDeclaration( + Token(SyntaxKind.ImplicitKeyword), + IdentifierName(pfnName) + ) + .WithParameterList( + ParameterList( + SingletonSeparatedList( + Parameter(Identifier("pfn")).WithType(rawPfn) ) ) - .WithExpressionBody( - ArrowExpressionClause( - ImplicitObjectCreationExpression( - ArgumentList( - SingletonSeparatedList( - Argument(IdentifierName("pfn")) - ) - ), - null - ) - ) + ) + .WithModifiers( + TokenList( + Token(SyntaxKind.PublicKeyword), + Token(SyntaxKind.StaticKeyword) ) - .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), - ConversionOperatorDeclaration(Token(SyntaxKind.ImplicitKeyword), rawPfn) - .WithParameterList( - ParameterList( - SingletonSeparatedList( - Parameter(Identifier("pfn")) - .WithType(IdentifierName(pfnName)) - ) + ) + .WithExpressionBody( + ArrowExpressionClause( + ImplicitObjectCreationExpression( + ArgumentList( + SingletonSeparatedList(Argument(IdentifierName("pfn"))) + ), + null ) ) - .WithModifiers( - TokenList( - Token(SyntaxKind.PublicKeyword), - Token(SyntaxKind.StaticKeyword) + ) + .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), + ConversionOperatorDeclaration(Token(SyntaxKind.ImplicitKeyword), rawPfn) + .WithParameterList( + ParameterList( + SingletonSeparatedList( + Parameter(Identifier("pfn")) + .WithType(IdentifierName(pfnName)) ) ) - .WithExpressionBody( - ArrowExpressionClause( - CastExpression( - rawPfn, - MemberAccessExpression( - SyntaxKind.SimpleMemberAccessExpression, - IdentifierName("pfn"), - IdentifierName("_pointer") - ) + ) + .WithModifiers( + TokenList( + Token(SyntaxKind.PublicKeyword), + Token(SyntaxKind.StaticKeyword) + ) + ) + .WithExpressionBody( + ArrowExpressionClause( + CastExpression( + rawPfn, + MemberAccessExpression( + SyntaxKind.SimpleMemberAccessExpression, + IdentifierName("pfn"), + IdentifierName("_pointer") ) ) ) - .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), - // TODO invoke method? - ] - ) + ) + .WithSemicolonToken(Token(SyntaxKind.SemicolonToken)), + // TODO invoke method? + ]) ); var @delegate = DelegateDeclaration( diff --git a/sources/SilkTouch/SilkTouch/Mods/ExtractHandles.cs b/sources/SilkTouch/SilkTouch/Mods/ExtractHandles.cs index 381a70648a..c325498169 100644 --- a/sources/SilkTouch/SilkTouch/Mods/ExtractHandles.cs +++ b/sources/SilkTouch/SilkTouch/Mods/ExtractHandles.cs @@ -50,7 +50,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) project = project .AddDocument( Path.GetFileName(relativePath), - node, + documentFactory.PopulateDocument(node), filePath: project.FullPath(relativePath) ) .Project; diff --git a/sources/SilkTouch/SilkTouch/Mods/ExtractNestedTypes.cs b/sources/SilkTouch/SilkTouch/Mods/ExtractNestedTypes.cs index 39281754a6..45d1a65a46 100644 --- a/sources/SilkTouch/SilkTouch/Mods/ExtractNestedTypes.cs +++ b/sources/SilkTouch/SilkTouch/Mods/ExtractNestedTypes.cs @@ -19,7 +19,7 @@ namespace Silk.NET.SilkTouch.Mods; /// Apparently this mod only handles the special nested structs output by /// right now. We might change this in the future if there is the need. /// -public partial class ExtractNestedTypes : IMod +public partial class ExtractNestedTypes(DocumentFactory documentFactory) : IMod { /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) @@ -55,21 +55,25 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) project = project .AddDocument( $"{newStruct.Identifier}.gen.cs", - CompilationUnit() - .WithMembers( - rewriter.Namespace is not null - ? SingletonList( - FileScopedNamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName( - rewriter.Namespace + documentFactory.PopulateDocument( + CompilationUnit() + .WithMembers( + rewriter.Namespace is not null + ? SingletonList( + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName( + rewriter.Namespace + ) ) - ) - .WithMembers( - SingletonList(newStruct) - ) - ) - : SingletonList(newStruct) - ), + .WithMembers( + SingletonList( + newStruct + ) + ) + ) + : SingletonList(newStruct) + ) + ), // Place extracted struct next to the original file it came from filePath: project.FullPath( $"{file.AsSpan()[..file.LastIndexOf('/')]}/{newStruct.Identifier}.gen.cs" diff --git a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs index 222d5f620f..408d55dc6a 100644 --- a/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs +++ b/sources/SilkTouch/SilkTouch/Mods/MixKhronosData.cs @@ -20,6 +20,7 @@ namespace Silk.NET.SilkTouch.Mods; /// A mod that reads Khronos specifications to influence codegen. /// public partial class MixKhronosData( + DocumentFactory documentFactory, ILogger logger, MixKhronosData.Configuration config ) @@ -454,7 +455,7 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { proj = proj.AddDocument( Path.GetFileName(filePath), - node, + documentFactory.PopulateDocument(node), filePath: proj.FullPath(filePath) ).Project; } From ae62503b96b43d8369b615ec9c11757fc7b0bfcf Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 00:27:51 -0400 Subject: [PATCH 71/93] Fix duplicated doc header --- sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index 34638eeb8e..7bb7d59274 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -166,7 +166,7 @@ public override SyntaxNode VisitCompilationUnit(CompilationUnitSyntax node) || x.IsKind(SyntaxKind.MultiLineCommentTrivia) ); - node = (CompilationUnitSyntax)base.VisitCompilationUnit(node)!; + node = (CompilationUnitSyntax)base.VisitCompilationUnit(node.WithLeadingTrivia())!; var hasNamespace = node.Members.Any(x => x is BaseNamespaceDeclarationSyntax); if (!hasNamespace) From 921920dd2583370904ab949fa16d433d9b7b957b Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 05:50:42 -0400 Subject: [PATCH 72/93] Move SDL3 header txt up one level to match the other bindings --- eng/silktouch/sdl/{SDL3 => }/header.txt | 0 eng/silktouch/sdl/settings.rsp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename eng/silktouch/sdl/{SDL3 => }/header.txt (100%) diff --git a/eng/silktouch/sdl/SDL3/header.txt b/eng/silktouch/sdl/header.txt similarity index 100% rename from eng/silktouch/sdl/SDL3/header.txt rename to eng/silktouch/sdl/header.txt diff --git a/eng/silktouch/sdl/settings.rsp b/eng/silktouch/sdl/settings.rsp index 4ffc034a59..d5bc9b1ff4 100644 --- a/eng/silktouch/sdl/settings.rsp +++ b/eng/silktouch/sdl/settings.rsp @@ -2,7 +2,7 @@ --define-macro TODO_DEFINE_MACROS=HERE --headerFile -header.txt +../header.txt --include-directory ../../../submodules/sdl/include ../../../include/glcompat From df689d1dcfb879e72d720e8d0f70ceb7dcf5ad22 Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 05:51:21 -0400 Subject: [PATCH 73/93] Change DefaultLicenseHeader to specify the API-specific header file for each job --- sources/SilkTouch/Jobs/Jobs.OpenAL.cs | 4 ++-- sources/SilkTouch/Jobs/Jobs.OpenCL.cs | 2 +- sources/SilkTouch/Jobs/Jobs.OpenGL.cs | 2 +- sources/SilkTouch/Jobs/Jobs.OpenXR.cs | 2 +- sources/SilkTouch/Jobs/Jobs.SDL.cs | 2 +- sources/SilkTouch/Jobs/Jobs.Vulkan.cs | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sources/SilkTouch/Jobs/Jobs.OpenAL.cs b/sources/SilkTouch/Jobs/Jobs.OpenAL.cs index 8c3a53fa0a..f0b9de51e0 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenAL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenAL.cs @@ -14,7 +14,7 @@ public static SilkTouchHost DefineOpenALJob(this SilkTouchHost host) => { Solution = "Silk.NET.slnx", SourceProject = "sources/OpenAL/OpenAL/Silk.NET.OpenAL.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultLicenseHeader = "eng/silktouch/openal/header.txt", DefaultNamespace = "Silk.NET.OpenAL", }, context => @@ -32,7 +32,7 @@ public static SilkTouchHost DefineOpenALJob(this SilkTouchHost host) => { ClangSharpResponseFiles = [ - "eng/silktouch/openal*/**/generate.rsp", + "eng/silktouch/openal/**/generate.rsp", ], InputSourceRoot = "sources/OpenAL", InputTestRoot = "tests/OpenAL", diff --git a/sources/SilkTouch/Jobs/Jobs.OpenCL.cs b/sources/SilkTouch/Jobs/Jobs.OpenCL.cs index 0235fd53a5..33eae14e36 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenCL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenCL.cs @@ -14,7 +14,7 @@ public static SilkTouchHost DefineOpenCLJob(this SilkTouchHost host) => { Solution = "Silk.NET.slnx", SourceProject = "sources/OpenCL/OpenCL/Silk.NET.OpenCL.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultLicenseHeader = "eng/silktouch/opencl/header.txt", DefaultNamespace = "Silk.NET.OpenCL", }, context => diff --git a/sources/SilkTouch/Jobs/Jobs.OpenGL.cs b/sources/SilkTouch/Jobs/Jobs.OpenGL.cs index dcb36d84d2..1602c7813f 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenGL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenGL.cs @@ -14,7 +14,7 @@ public static SilkTouchHost DefineOpenGLJob(this SilkTouchHost host) => { Solution = "Silk.NET.slnx", SourceProject = "sources/OpenGL/OpenGL/Silk.NET.OpenGL.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultLicenseHeader = "eng/silktouch/opengl/header.txt", DefaultNamespace = "Silk.NET.OpenGL", }, context => diff --git a/sources/SilkTouch/Jobs/Jobs.OpenXR.cs b/sources/SilkTouch/Jobs/Jobs.OpenXR.cs index 5f8f816989..581d942c57 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenXR.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenXR.cs @@ -14,7 +14,7 @@ public static SilkTouchHost DefineOpenXRJob(this SilkTouchHost host) => { Solution = "Silk.NET.slnx", SourceProject = "sources/OpenXR/OpenXR/Silk.NET.OpenXR.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultLicenseHeader = "eng/silktouch/openxr/header.txt", DefaultNamespace = "Silk.NET.OpenXR", }, context => diff --git a/sources/SilkTouch/Jobs/Jobs.SDL.cs b/sources/SilkTouch/Jobs/Jobs.SDL.cs index 81004ee365..a2d29885e2 100644 --- a/sources/SilkTouch/Jobs/Jobs.SDL.cs +++ b/sources/SilkTouch/Jobs/Jobs.SDL.cs @@ -13,7 +13,7 @@ public static SilkTouchHost DefineSDLJob(this SilkTouchHost host) => Solution = "Silk.NET.slnx", SourceProject = "sources/SDL/SDL/Silk.NET.SDL.csproj", TestProject = "tests/SDL/SDL/Silk.NET.SDL.UnitTests.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultLicenseHeader = "eng/silktouch/sdl/header.txt", DefaultNamespace = "Silk.NET.SDL", }, context => diff --git a/sources/SilkTouch/Jobs/Jobs.Vulkan.cs b/sources/SilkTouch/Jobs/Jobs.Vulkan.cs index 0519f5dc02..78baec5e97 100644 --- a/sources/SilkTouch/Jobs/Jobs.Vulkan.cs +++ b/sources/SilkTouch/Jobs/Jobs.Vulkan.cs @@ -14,7 +14,7 @@ public static SilkTouchHost DefineVulkanJob(this SilkTouchHost host) => { Solution = "Silk.NET.slnx", SourceProject = "sources/Vulkan/Vulkan/Silk.NET.Vulkan.csproj", - DefaultLicenseHeader = "eng/silktouch/header.txt", + DefaultLicenseHeader = "eng/silktouch/vulkan/header.txt", DefaultNamespace = "Silk.NET.Vulkan", }, context => From 495b6950a0742be2106ce7d99325de07c974c78c Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 05:55:14 -0400 Subject: [PATCH 74/93] Edit doc comment --- sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs b/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs index 45f8cac697..31efd879eb 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/IModContext.cs @@ -16,7 +16,7 @@ public interface IModContext : IAsyncDisposable public string JobKey { get; } /// - /// The path to resolve relatives from. + /// The path to resolve relative paths from. /// public string? WorkingDirectory { get; } From 2aa1d22dfb90a43eeea64ee62076ce2137d25c18 Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 06:01:37 -0400 Subject: [PATCH 75/93] Update and fix unit tests --- .../SilkTouch/Mods/Common/DocumentFactory.cs | 2 +- .../SilkTouch/ExtractEnumConstantsTests.cs | 12 +++++--- .../SilkTouch/ExtractFunctionPointersTests.cs | 4 ++- .../SilkTouch/ExtractHandlesTests.cs | 3 +- .../SilkTouch/ExtractNestedTypesTests.cs | 3 +- .../SilkTouch/Khronos/MixKhronosDataTests.cs | 29 ++++++++++++++++--- 6 files changed, 41 insertions(+), 12 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index 7bb7d59274..eb05f38161 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -169,7 +169,7 @@ public override SyntaxNode VisitCompilationUnit(CompilationUnitSyntax node) node = (CompilationUnitSyntax)base.VisitCompilationUnit(node.WithLeadingTrivia())!; var hasNamespace = node.Members.Any(x => x is BaseNamespaceDeclarationSyntax); - if (!hasNamespace) + if (!hasNamespace && factory.DefaultNamespace != null) { node = node.WithMembers([ FileScopedNamespaceDeclaration( diff --git a/tests/SilkTouch/SilkTouch/ExtractEnumConstantsTests.cs b/tests/SilkTouch/SilkTouch/ExtractEnumConstantsTests.cs index b50e67ccbd..c5a2d8a7cc 100644 --- a/tests/SilkTouch/SilkTouch/ExtractEnumConstantsTests.cs +++ b/tests/SilkTouch/SilkTouch/ExtractEnumConstantsTests.cs @@ -63,8 +63,9 @@ public class Test .Project; var context = new DummyModContext() { SourceProject = project }; + var documentFactory = new DocumentFactory(); - var extractEnumConstants = new ExtractEnumConstants(); + var extractEnumConstants = new ExtractEnumConstants(documentFactory); await extractEnumConstants.ExecuteAsync(context); @@ -121,8 +122,9 @@ public static extern byte SDL_SetSurfaceBlendMode( .Project; var context = new DummyModContext() { SourceProject = project }; + var documentFactory = new DocumentFactory(); - var extractEnumConstants = new ExtractEnumConstants(); + var extractEnumConstants = new ExtractEnumConstants(documentFactory); await extractEnumConstants.ExecuteAsync(context); @@ -179,8 +181,9 @@ public static extern byte SDL_GetSurfaceBlendMode( .Project; var context = new DummyModContext() { SourceProject = project }; + var documentFactory = new DocumentFactory(); - var extractEnumConstants = new ExtractEnumConstants(); + var extractEnumConstants = new ExtractEnumConstants(documentFactory); await extractEnumConstants.ExecuteAsync(context); @@ -241,8 +244,9 @@ SDL_BlendOperation alphaOperation .Project; var context = new DummyModContext() { SourceProject = project }; + var documentFactory = new DocumentFactory(); - var extractEnumConstants = new ExtractEnumConstants(); + var extractEnumConstants = new ExtractEnumConstants(documentFactory); await extractEnumConstants.ExecuteAsync(context); diff --git a/tests/SilkTouch/SilkTouch/ExtractFunctionPointersTests.cs b/tests/SilkTouch/SilkTouch/ExtractFunctionPointersTests.cs index 0f53b33375..78fddd17a4 100644 --- a/tests/SilkTouch/SilkTouch/ExtractFunctionPointersTests.cs +++ b/tests/SilkTouch/SilkTouch/ExtractFunctionPointersTests.cs @@ -46,9 +46,11 @@ public delegate* unmanaged< .Project; var context = new DummyModContext() { SourceProject = project }; + var documentFactory = new DocumentFactory(); var extractFunctionPointers = new ExtractFunctionPointers( - NullLogger.Instance + NullLogger.Instance, + documentFactory ); await extractFunctionPointers.ExecuteAsync(context); diff --git a/tests/SilkTouch/SilkTouch/ExtractHandlesTests.cs b/tests/SilkTouch/SilkTouch/ExtractHandlesTests.cs index 3f2a12d871..5e80d4682a 100644 --- a/tests/SilkTouch/SilkTouch/ExtractHandlesTests.cs +++ b/tests/SilkTouch/SilkTouch/ExtractHandlesTests.cs @@ -40,10 +40,11 @@ public static extern VkResult vkCreateInstance( .Project; var context = new DummyModContext() { SourceProject = project }; + var documentFactory = new DocumentFactory(); var extractHandles = new ExtractHandles( NullLogger.Instance, - new DocumentFactory() + documentFactory ); await extractHandles.ExecuteAsync(context); diff --git a/tests/SilkTouch/SilkTouch/ExtractNestedTypesTests.cs b/tests/SilkTouch/SilkTouch/ExtractNestedTypesTests.cs index f8c0f8cab0..683eb959b0 100644 --- a/tests/SilkTouch/SilkTouch/ExtractNestedTypesTests.cs +++ b/tests/SilkTouch/SilkTouch/ExtractNestedTypesTests.cs @@ -44,8 +44,9 @@ public struct _name_e__FixedBuffer .Project; var context = new DummyModContext() { SourceProject = project }; + var documentFactory = new DocumentFactory(); - var extractNestedTyping = new ExtractNestedTypes(); + var extractNestedTyping = new ExtractNestedTypes(documentFactory); await extractNestedTyping.ExecuteAsync(context); diff --git a/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs b/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs index d8415e8eb4..6fd3d320d6 100644 --- a/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs +++ b/tests/SilkTouch/SilkTouch/Khronos/MixKhronosDataTests.cs @@ -48,6 +48,7 @@ private static IAsyncEnumerable TestCases() async (x, ct) => { var mod = new MixKhronosData( + new DocumentFactory(), new NullLogger(), new MixKhronosData.Configuration { SpecPath = TestFile(x) } ); @@ -315,8 +316,13 @@ public enum OcclusionQueryParameterNameNV .Project; var context = new DummyModContext() { SourceProject = project }; + var documentFactory = new DocumentFactory(); - var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) + var mixKhronosData = new MixKhronosData( + documentFactory, + NullLogger.Instance, + null! + ) { Job = new MixKhronosData.JobData { @@ -349,8 +355,13 @@ public enum OcclusionQueryParameterNameNV .Project; var context = new DummyModContext() { SourceProject = project }; + var documentFactory = new DocumentFactory(); - var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) + var mixKhronosData = new MixKhronosData( + documentFactory, + NullLogger.Instance, + null! + ) { Job = new MixKhronosData.JobData { @@ -387,8 +398,13 @@ public enum BufferUsageARB : uint .Project; var context = new DummyModContext() { SourceProject = project }; + var documentFactory = new DocumentFactory(); - var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) + var mixKhronosData = new MixKhronosData( + documentFactory, + NullLogger.Instance, + null! + ) { Job = new MixKhronosData.JobData { @@ -422,8 +438,13 @@ public enum GLEnum { } .Project; var context = new DummyModContext() { SourceProject = project }; + var documentFactory = new DocumentFactory(); - var mixKhronosData = new MixKhronosData(NullLogger.Instance, null!) + var mixKhronosData = new MixKhronosData( + documentFactory, + NullLogger.Instance, + null! + ) { Job = new MixKhronosData.JobData { From 7ec6e9d3adee8f34506f9c880315ef26f460ec5d Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 06:02:32 -0400 Subject: [PATCH 76/93] Regenerate all bindings except Microsoft on Windows --- .silktouch/openal-clangsharp.stout | Bin 40932 -> 40932 bytes .silktouch/opencl-clangsharp.stout | Bin 46144 -> 46376 bytes .silktouch/opengl-clangsharp.stout | Bin 232226 -> 232226 bytes .silktouch/openxr-clangsharp.stout | Bin 1025631 -> 1019435 bytes .silktouch/sdl-clangsharp.stout | Bin 230613 -> 230648 bytes .silktouch/vulkan-clangsharp.stout | Bin 1975074 -> 2169860 bytes sources/OpenGL/OpenGL/Enums/AccumOp.gen.cs | 1 - .../OpenGL/OpenGL/Enums/AlphaFunction.gen.cs | 1 - .../OpenGL/Enums/ArrayObjectPNameATI.gen.cs | 1 - .../OpenGL/Enums/ArrayObjectUsageATI.gen.cs | 1 - .../Enums/AtomicCounterBufferPName.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/AttribMask.gen.cs | 1 - .../OpenGL/OpenGL/Enums/AttributeType.gen.cs | 1 - .../Enums/BindTransformFeedbackTarget.gen.cs | 1 - .../OpenGL/Enums/BinormalPointerType.gen.cs | 1 - .../OpenGL/Enums/BlendEquationMode.gen.cs | 1 - .../OpenGL/OpenGL/Enums/BlendingFactor.gen.cs | 1 - .../OpenGL/Enums/BlitFramebufferFilter.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/Boolean.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/Buffer.gen.cs | 1 - .../OpenGL/OpenGL/Enums/BufferAccess.gen.cs | 1 - .../OpenGL/OpenGL/Enums/BufferBitQCOM.gen.cs | 1 - .../OpenGL/OpenGL/Enums/BufferPName.gen.cs | 1 - .../OpenGL/Enums/BufferPointerName.gen.cs | 1 - .../OpenGL/Enums/BufferStorageMask.gen.cs | 1 - .../OpenGL/Enums/BufferStorageTarget.gen.cs | 1 - .../OpenGL/OpenGL/Enums/BufferTarget.gen.cs | 1 - .../OpenGL/OpenGL/Enums/BufferUsage.gen.cs | 1 - .../OpenGL/OpenGL/Enums/ClampColorMode.gen.cs | 1 - .../OpenGL/Enums/ClampColorTarget.gen.cs | 1 - .../OpenGL/Enums/ClearBufferMask.gen.cs | 1 - .../OpenGL/Enums/ClientAttribMask.gen.cs | 1 - .../OpenGL/Enums/ClipControlDepth.gen.cs | 1 - .../OpenGL/Enums/ClipControlOrigin.gen.cs | 1 - .../OpenGL/OpenGL/Enums/ClipPlaneName.gen.cs | 1 - .../OpenGL/OpenGL/Enums/ColorBuffer.gen.cs | 1 - .../Enums/ColorMaterialParameter.gen.cs | 1 - .../OpenGL/Enums/ColorPointerType.gen.cs | 1 - .../Enums/ColorTableParameterPName.gen.cs | 1 - .../OpenGL/Enums/ColorTableTarget.gen.cs | 1 - .../OpenGL/Enums/ColorTableTargetSGI.gen.cs | 1 - .../OpenGL/OpenGL/Enums/CombinerBias.gen.cs | 1 - .../Enums/CombinerComponentUsage.gen.cs | 1 - .../OpenGL/Enums/CombinerMappingNV.gen.cs | 1 - .../OpenGL/Enums/CombinerParameterNV.gen.cs | 1 - .../OpenGL/Enums/CombinerPortion.gen.cs | 1 - .../OpenGL/Enums/CombinerRegister.gen.cs | 1 - .../OpenGL/OpenGL/Enums/CombinerScale.gen.cs | 1 - .../OpenGL/Enums/CombinerStageNV.gen.cs | 1 - .../OpenGL/Enums/CombinerVariableNV.gen.cs | 1 - .../OpenGL/Enums/CommandOpcodesNV.gen.cs | 1 - .../OpenGL/Enums/ConditionalRenderMode.gen.cs | 1 - .../OpenGL/OpenGL/Enums/ContainerType.gen.cs | 1 - .../OpenGL/Enums/ContextFlagMask.gen.cs | 1 - .../OpenGL/Enums/ContextProfileMask.gen.cs | 1 - .../OpenGL/Enums/ConvolutionBorderMode.gen.cs | 1 - .../OpenGL/Enums/ConvolutionParameter.gen.cs | 1 - .../OpenGL/Enums/ConvolutionTarget.gen.cs | 1 - .../OpenGL/Enums/ConvolutionTargetEXT.gen.cs | 1 - .../Enums/CopyBufferSubDataTarget.gen.cs | 1 - .../Enums/CopyImageSubDataTarget.gen.cs | 1 - .../OpenGL/Enums/CullParameterEXT.gen.cs | 1 - .../OpenGL/OpenGL/Enums/DataTypeEXT.gen.cs | 1 - .../OpenGL/OpenGL/Enums/DebugSeverity.gen.cs | 1 - .../OpenGL/OpenGL/Enums/DebugSource.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/DebugType.gen.cs | 1 - .../OpenGL/OpenGL/Enums/DepthFunction.gen.cs | 1 - .../Enums/DepthStencilTextureMode.gen.cs | 1 - .../OpenGL/OpenGL/Enums/DrawBufferMode.gen.cs | 1 - .../OpenGL/Enums/DrawElementsType.gen.cs | 1 - .../OpenGL/Enums/ElementPointerType.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/EnableCap.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/ErrorCode.gen.cs | 1 - .../OpenGL/OpenGL/Enums/EvalMapsModeNV.gen.cs | 1 - .../OpenGL/OpenGL/Enums/EvalTargetNV.gen.cs | 1 - .../OpenGL/Enums/ExternalHandleType.gen.cs | 1 - .../OpenGL/OpenGL/Enums/FeedBackToken.gen.cs | 1 - .../OpenGL/OpenGL/Enums/FeedbackType.gen.cs | 1 - .../OpenGL/Enums/FenceConditionNV.gen.cs | 1 - .../OpenGL/Enums/FenceParameterNameNV.gen.cs | 1 - .../OpenGL/OpenGL/Enums/FfdMaskSGIX.gen.cs | 1 - .../OpenGL/OpenGL/Enums/FfdTargetSGIX.gen.cs | 1 - .../OpenGL/OpenGL/Enums/FogCoordSrc.gen.cs | 1 - .../Enums/FogCoordinatePointerType.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/FogMode.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/FogPName.gen.cs | 1 - .../OpenGL/OpenGL/Enums/FogParameter.gen.cs | 1 - .../OpenGL/Enums/FogPointerTypeEXT.gen.cs | 1 - .../OpenGL/Enums/FogPointerTypeIBM.gen.cs | 1 - .../Enums/FoveationConfigBitQCOM.gen.cs | 1 - .../FragmentLightModelParameterSGIX.gen.cs | 1 - .../OpenGL/Enums/FragmentLightNameSGIX.gen.cs | 1 - .../Enums/FragmentLightParameter.gen.cs | 1 - .../OpenGL/OpenGL/Enums/FragmentOp1ATI.gen.cs | 1 - .../OpenGL/OpenGL/Enums/FragmentOp2ATI.gen.cs | 1 - .../OpenGL/OpenGL/Enums/FragmentOp3ATI.gen.cs | 1 - .../FragmentShaderColorModMaskATI.gen.cs | 1 - .../OpenGL/Enums/FragmentShaderConATI.gen.cs | 1 - .../Enums/FragmentShaderDestMask.gen.cs | 1 - .../Enums/FragmentShaderDestModMask.gen.cs | 1 - .../Enums/FragmentShaderGenericSource.gen.cs | 1 - .../OpenGL/Enums/FragmentShaderRegATI.gen.cs | 1 - .../Enums/FragmentShaderTextureSource.gen.cs | 1 - .../Enums/FragmentShaderValueRep.gen.cs | 1 - .../OpenGL/Enums/FramebufferAttachment.gen.cs | 1 - .../FramebufferAttachmentParameterName.gen.cs | 1 - .../Enums/FramebufferParameterName.gen.cs | 1 - .../OpenGL/Enums/FramebufferStatus.gen.cs | 1 - .../OpenGL/Enums/FramebufferTarget.gen.cs | 1 - .../OpenGL/Enums/FrontFaceDirection.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/GLEnum.gen.cs | 1 - .../Enums/GetFramebufferParameter.gen.cs | 1 - .../Enums/GetHistogramParameterPName.gen.cs | 1 - .../OpenGL/OpenGL/Enums/GetMapQuery.gen.cs | 1 - .../Enums/GetMinmaxParameterPName.gen.cs | 1 - .../OpenGL/Enums/GetMultisamplePName.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/GetPName.gen.cs | 1 - .../OpenGL/Enums/GetPointervPName.gen.cs | 1 - .../Enums/GetTexBumpParameterATI.gen.cs | 1 - .../OpenGL/Enums/GetTextureParameter.gen.cs | 1 - .../OpenGL/Enums/GetVariantValueEXT.gen.cs | 1 - .../OpenGL/Enums/GraphicsResetStatus.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/HintMode.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/HintTarget.gen.cs | 1 - .../OpenGL/OpenGL/Enums/HintTargetPGI.gen.cs | 1 - .../OpenGL/Enums/HistogramTarget.gen.cs | 1 - .../OpenGL/Enums/HistogramTargetEXT.gen.cs | 1 - .../OpenGL/Enums/ImageTransformPNameHP.gen.cs | 1 - .../Enums/ImageTransformTargetHP.gen.cs | 1 - .../OpenGL/OpenGL/Enums/IndexFunction.gen.cs | 1 - .../Enums/IndexMaterialParameter.gen.cs | 1 - .../OpenGL/Enums/IndexPointerType.gen.cs | 1 - .../Enums/InstancedPathCoverMode.gen.cs | 1 - .../Enums/InterleavedArrayFormat.gen.cs | 1 - .../OpenGL/OpenGL/Enums/InternalFormat.gen.cs | 1 - .../OpenGL/Enums/InternalFormatPName.gen.cs | 1 - .../InvalidateFramebufferAttachment.gen.cs | 1 - .../OpenGL/OpenGL/Enums/LightEnvMode.gen.cs | 1 - .../OpenGL/Enums/LightEnvParameterSGIX.gen.cs | 1 - .../Enums/LightModelColorControl.gen.cs | 1 - .../OpenGL/Enums/LightModelParameter.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/LightName.gen.cs | 1 - .../OpenGL/OpenGL/Enums/LightParameter.gen.cs | 1 - .../OpenGL/Enums/LightTextureMode.gen.cs | 1 - .../OpenGL/Enums/LightTexturePNameEXT.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/ListMode.gen.cs | 1 - .../OpenGL/OpenGL/Enums/ListNameType.gen.cs | 1 - .../OpenGL/Enums/ListParameterName.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/LogicOp.gen.cs | 1 - .../OpenGL/Enums/MapAttribParameterNV.gen.cs | 1 - .../OpenGL/Enums/MapBufferAccessMask.gen.cs | 1 - .../OpenGL/OpenGL/Enums/MapParameterNV.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/MapQuery.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/MapTarget.gen.cs | 1 - .../OpenGL/Enums/MapTextureFormatINTEL.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/MapType.gen.cs | 1 - .../OpenGL/Enums/MaterialParameter.gen.cs | 1 - .../Enums/MatrixIndexPointerType.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/MatrixMode.gen.cs | 1 - .../OpenGL/Enums/MemoryBarrierMask.gen.cs | 1 - .../Enums/MemoryObjectParameterName.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/MeshMode1.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/MeshMode2.gen.cs | 1 - .../OpenGL/OpenGL/Enums/MinmaxTarget.gen.cs | 1 - .../OpenGL/Enums/MinmaxTargetEXT.gen.cs | 1 - .../OpenGL/Enums/NormalPointerType.gen.cs | 1 - .../OpenGL/Enums/ObjectIdentifier.gen.cs | 1 - .../OpenGL/Enums/ObjectTypeAPPLE.gen.cs | 1 - .../Enums/OcclusionQueryEventMaskAMD.gen.cs | 1 - .../OcclusionQueryParameterNameNV.gen.cs | 1 - .../OpenGL/Enums/PNTrianglesPNameATI.gen.cs | 1 - .../OpenGL/Enums/ParameterRangeEXT.gen.cs | 1 - .../OpenGL/Enums/PatchParameterName.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/PathColor.gen.cs | 1 - .../OpenGL/Enums/PathColorFormat.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PathCoordType.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PathCoverMode.gen.cs | 1 - .../OpenGL/Enums/PathElementType.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PathFillMode.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PathFontStyle.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PathFontTarget.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PathGenMode.gen.cs | 1 - .../Enums/PathHandleMissingGlyphs.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PathListMode.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PathMetricMask.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PathParameter.gen.cs | 1 - .../OpenGL/Enums/PathRenderingTokenNV.gen.cs | 1 - .../OpenGL/Enums/PathStringFormat.gen.cs | 1 - .../OpenGL/Enums/PathTransformType.gen.cs | 1 - .../OpenGL/Enums/PerfQueryDataFlags.gen.cs | 1 - .../PerformanceQueryCapsMaskINTEL.gen.cs | 1 - .../OpenGL/Enums/PipelineParameterName.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PixelCopyType.gen.cs | 1 - .../Enums/PixelDataRangeTargetNV.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PixelFormat.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/PixelMap.gen.cs | 1 - .../OpenGL/Enums/PixelStoreParameter.gen.cs | 1 - .../Enums/PixelStoreResampleMode.gen.cs | 1 - .../Enums/PixelStoreSubsampleRate.gen.cs | 1 - .../OpenGL/Enums/PixelTexGenMode.gen.cs | 1 - .../Enums/PixelTexGenParameterNameSGIS.gen.cs | 1 - .../Enums/PixelTransferParameter.gen.cs | 1 - .../Enums/PixelTransformPNameEXT.gen.cs | 1 - .../Enums/PixelTransformTargetEXT.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/PixelType.gen.cs | 1 - .../OpenGL/Enums/PointParameterName.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PolygonMode.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PrecisionType.gen.cs | 1 - .../OpenGL/Enums/PreserveModeATI.gen.cs | 1 - .../OpenGL/OpenGL/Enums/PrimitiveType.gen.cs | 1 - .../OpenGL/OpenGL/Enums/ProgramFormat.gen.cs | 1 - .../OpenGL/Enums/ProgramInterface.gen.cs | 1 - .../OpenGL/Enums/ProgramInterfacePName.gen.cs | 1 - .../OpenGL/Enums/ProgramParameterPName.gen.cs | 1 - .../OpenGL/Enums/ProgramProperty.gen.cs | 1 - .../Enums/ProgramResourceProperty.gen.cs | 1 - .../OpenGL/Enums/ProgramStagePName.gen.cs | 1 - .../OpenGL/Enums/ProgramStringProperty.gen.cs | 1 - .../OpenGL/OpenGL/Enums/ProgramTarget.gen.cs | 1 - .../OpenGL/Enums/QueryCounterTarget.gen.cs | 1 - .../Enums/QueryObjectParameterName.gen.cs | 1 - .../OpenGL/Enums/QueryParameterName.gen.cs | 1 - .../OpenGL/OpenGL/Enums/QueryTarget.gen.cs | 1 - .../OpenGL/OpenGL/Enums/ReadBufferMode.gen.cs | 1 - .../Enums/RenderbufferParameterName.gen.cs | 1 - .../OpenGL/Enums/RenderbufferTarget.gen.cs | 1 - .../OpenGL/OpenGL/Enums/RenderingMode.gen.cs | 1 - .../OpenGL/Enums/ReplacementCodeType.gen.cs | 1 - .../OpenGL/Enums/SamplePatternEXT.gen.cs | 1 - .../OpenGL/Enums/SamplePatternSGIS.gen.cs | 1 - .../OpenGL/Enums/SamplerParameterF.gen.cs | 1 - .../OpenGL/Enums/SamplerParameterI.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/ScalarType.gen.cs | 1 - .../Enums/SecondaryColorPointerType.gen.cs | 1 - .../Enums/SemaphoreParameterName.gen.cs | 1 - .../OpenGL/Enums/SeparableTarget.gen.cs | 1 - .../OpenGL/Enums/SeparableTargetEXT.gen.cs | 1 - .../OpenGL/Enums/ShaderBinaryFormat.gen.cs | 1 - .../OpenGL/Enums/ShaderParameterName.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/ShaderType.gen.cs | 1 - .../OpenGL/OpenGL/Enums/ShadingModel.gen.cs | 1 - .../OpenGL/OpenGL/Enums/ShadingRate.gen.cs | 1 - .../OpenGL/Enums/ShadingRateCombinerOp.gen.cs | 1 - .../OpenGL/Enums/ShadingRateQCOM.gen.cs | 1 - .../OpenGL/Enums/SizedInternalFormat.gen.cs | 1 - .../OpenGL/OpenGL/Enums/SpriteModeSGIX.gen.cs | 1 - .../Enums/SpriteParameterNameSGIX.gen.cs | 1 - .../OpenGL/Enums/StencilFunction.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/StencilOp.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/StringName.gen.cs | 1 - .../Enums/SubgroupSupportedFeatures.gen.cs | 1 - .../Enums/SubroutineParameterName.gen.cs | 1 - .../OpenGL/OpenGL/Enums/SwizzleOpATI.gen.cs | 1 - .../OpenGL/Enums/SyncBehaviorFlags.gen.cs | 1 - .../OpenGL/OpenGL/Enums/SyncCondition.gen.cs | 1 - .../OpenGL/OpenGL/Enums/SyncObjectMask.gen.cs | 1 - .../OpenGL/Enums/SyncParameterName.gen.cs | 1 - sources/OpenGL/OpenGL/Enums/SyncStatus.gen.cs | 1 - .../OpenGL/Enums/TangentPointerType.gen.cs | 1 - .../OpenGL/Enums/TexBumpParameterATI.gen.cs | 1 - .../OpenGL/Enums/TexCoordPointerType.gen.cs | 1 - .../OpenGL/Enums/TexStorageAttribs.gen.cs | 1 - .../OpenGL/Enums/TextureCompareMode.gen.cs | 1 - .../OpenGL/Enums/TextureCoordName.gen.cs | 1 - .../OpenGL/OpenGL/Enums/TextureEnvMode.gen.cs | 1 - .../OpenGL/Enums/TextureEnvParameter.gen.cs | 1 - .../OpenGL/Enums/TextureEnvTarget.gen.cs | 1 - .../OpenGL/Enums/TextureFilterSGIS.gen.cs | 1 - .../OpenGL/OpenGL/Enums/TextureGenMode.gen.cs | 1 - .../OpenGL/Enums/TextureGenParameter.gen.cs | 1 - .../OpenGL/OpenGL/Enums/TextureLayout.gen.cs | 1 - .../OpenGL/Enums/TextureMagFilter.gen.cs | 1 - .../OpenGL/Enums/TextureMinFilter.gen.cs | 1 - .../OpenGL/Enums/TextureNormalModeEXT.gen.cs | 1 - .../OpenGL/Enums/TextureParameterName.gen.cs | 1 - .../OpenGL/Enums/TextureStorageMaskAMD.gen.cs | 1 - .../OpenGL/OpenGL/Enums/TextureSwizzle.gen.cs | 1 - .../OpenGL/OpenGL/Enums/TextureTarget.gen.cs | 1 - .../OpenGL/OpenGL/Enums/TextureUnit.gen.cs | 1 - .../OpenGL/Enums/TextureWrapMode.gen.cs | 1 - .../OpenGL/OpenGL/Enums/TraceMaskMESA.gen.cs | 1 - .../Enums/TransformFeedbackBufferMode.gen.cs | 1 - .../Enums/TransformFeedbackPName.gen.cs | 1 - .../Enums/TransformFeedbackTokenNV.gen.cs | 1 - .../OpenGL/OpenGL/Enums/TriangleFace.gen.cs | 1 - .../OpenGL/Enums/TriangleListSUN.gen.cs | 1 - .../OpenGL/Enums/UniformBlockPName.gen.cs | 1 - .../OpenGL/OpenGL/Enums/UniformPName.gen.cs | 1 - .../OpenGL/OpenGL/Enums/UniformType.gen.cs | 1 - .../OpenGL/Enums/UseProgramStageMask.gen.cs | 1 - .../OpenGL/OpenGL/Enums/VariantCapEXT.gen.cs | 1 - .../OpenGL/Enums/VertexArrayPName.gen.cs | 1 - .../OpenGL/Enums/VertexArrayPNameAPPLE.gen.cs | 1 - .../OpenGL/Enums/VertexAttribEnum.gen.cs | 1 - .../OpenGL/Enums/VertexAttribEnumNV.gen.cs | 1 - .../OpenGL/Enums/VertexAttribIType.gen.cs | 1 - .../OpenGL/Enums/VertexAttribLType.gen.cs | 1 - .../Enums/VertexAttribPointerProperty.gen.cs | 1 - .../Enums/VertexAttribPointerType.gen.cs | 1 - .../OpenGL/Enums/VertexAttribProperty.gen.cs | 1 - .../OpenGL/Enums/VertexAttribType.gen.cs | 1 - .../Enums/VertexBufferObjectUsage.gen.cs | 1 - .../OpenGL/Enums/VertexHintsMaskPGI.gen.cs | 1 - .../OpenGL/Enums/VertexPointerType.gen.cs | 1 - .../OpenGL/Enums/VertexProvokingMode.gen.cs | 1 - .../Enums/VertexShaderCoordOutEXT.gen.cs | 1 - .../OpenGL/Enums/VertexShaderOpEXT.gen.cs | 1 - .../Enums/VertexShaderParameterEXT.gen.cs | 1 - .../Enums/VertexShaderStorageTypeEXT.gen.cs | 1 - .../VertexShaderTextureUnitParameter.gen.cs | 1 - .../OpenGL/Enums/VertexShaderWriteMask.gen.cs | 1 - .../OpenGL/Enums/VertexStreamATI.gen.cs | 1 - .../Enums/VertexWeightPointerType.gen.cs | 1 - .../OpenGL/Enums/WeightPointerType.gen.cs | 1 - sources/OpenGL/OpenGL/SyncHandle.gen.cs | 1 - sources/OpenGL/OpenGL/gl/GL.gen.cs | 1 - 316 files changed, 310 deletions(-) diff --git a/.silktouch/openal-clangsharp.stout b/.silktouch/openal-clangsharp.stout index b67feaa61973bcad9568376b94cfafff05b98b6f..0c83d976a0967bb1fb458087a29459a888fec51f 100644 GIT binary patch delta 91 zcmaE|pXtedCcXe~W)=|!CJqh;Wqse+jeLGFEFi|_gqVIN2|ydVg}VSXrtF>}5*0MXGLc>n+a delta 91 zcmaE|pXtedCcXe~W)=|!CJqjU#bKLbHuCw!uq**GHYddNGeKCN&vZ%$)BH03J>x*8l(j diff --git a/.silktouch/opencl-clangsharp.stout b/.silktouch/opencl-clangsharp.stout index c3cee4b0a4f119442ec61e3a5e70ddf46849d06b..6a8d9c4ec4c3e8a8a76c69421ce0a49cacfa09fc 100644 GIT binary patch delta 29911 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 diff --git a/.silktouch/opengl-clangsharp.stout b/.silktouch/opengl-clangsharp.stout index 400d3c820d7a399b5783cdc4df9b02c2eba7a6e5..e4980f7babb42c2ebfebc659bb5491d898d0f5d7 100644 GIT binary patch delta 100 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

0=_j2@dYE`c{$CASe~#aX{->dG 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 z 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 F{2$I9ZtMU6 diff --git a/.silktouch/sdl-clangsharp.stout b/.silktouch/sdl-clangsharp.stout index c172df67bfdcd7af824af9268e4d699be70bbf16..35961909a9531d7ab64f6310f71abe68194e11ee 100644 GIT binary patch delta 18348 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 CTG+<` diff --git a/.silktouch/vulkan-clangsharp.stout b/.silktouch/vulkan-clangsharp.stout index ec1dfbd7995c3996758f56f28c6d7bac8127eac9..358409a50d673e83cb2595f2a21ecf01e8ac0858 100644 GIT binary patch delta 678083 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

YuAoX}nA* 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�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

?yVIHs7)d3 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

00*Y%W%rxUvrhQVH%sP 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 diff --git a/sources/OpenGL/OpenGL/Enums/AccumOp.gen.cs b/sources/OpenGL/OpenGL/Enums/AccumOp.gen.cs index 88fe57aff2..6fa009800b 100644 --- a/sources/OpenGL/OpenGL/Enums/AccumOp.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/AccumOp.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/AlphaFunction.gen.cs b/sources/OpenGL/OpenGL/Enums/AlphaFunction.gen.cs index 1528c22a26..53b66f8bda 100644 --- a/sources/OpenGL/OpenGL/Enums/AlphaFunction.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/AlphaFunction.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ArrayObjectPNameATI.gen.cs b/sources/OpenGL/OpenGL/Enums/ArrayObjectPNameATI.gen.cs index ca6a22542a..17d7fd92b7 100644 --- a/sources/OpenGL/OpenGL/Enums/ArrayObjectPNameATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ArrayObjectPNameATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ArrayObjectUsageATI.gen.cs b/sources/OpenGL/OpenGL/Enums/ArrayObjectUsageATI.gen.cs index 72b80aaf8c..ba8de071ae 100644 --- a/sources/OpenGL/OpenGL/Enums/ArrayObjectUsageATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ArrayObjectUsageATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/AtomicCounterBufferPName.gen.cs b/sources/OpenGL/OpenGL/Enums/AtomicCounterBufferPName.gen.cs index c6d73e85bf..64a61df3ce 100644 --- a/sources/OpenGL/OpenGL/Enums/AtomicCounterBufferPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/AtomicCounterBufferPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/AttribMask.gen.cs b/sources/OpenGL/OpenGL/Enums/AttribMask.gen.cs index 07a055f06e..08f5e4e93e 100644 --- a/sources/OpenGL/OpenGL/Enums/AttribMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/AttribMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/AttributeType.gen.cs b/sources/OpenGL/OpenGL/Enums/AttributeType.gen.cs index f872dd0196..47c309a2e6 100644 --- a/sources/OpenGL/OpenGL/Enums/AttributeType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/AttributeType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BindTransformFeedbackTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/BindTransformFeedbackTarget.gen.cs index ea91e179c4..f23f6d8bb7 100644 --- a/sources/OpenGL/OpenGL/Enums/BindTransformFeedbackTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BindTransformFeedbackTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BinormalPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/BinormalPointerType.gen.cs index 7cdde1fd6f..2116d98f0c 100644 --- a/sources/OpenGL/OpenGL/Enums/BinormalPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BinormalPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BlendEquationMode.gen.cs b/sources/OpenGL/OpenGL/Enums/BlendEquationMode.gen.cs index f79f1f0d11..84a28167a7 100644 --- a/sources/OpenGL/OpenGL/Enums/BlendEquationMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BlendEquationMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BlendingFactor.gen.cs b/sources/OpenGL/OpenGL/Enums/BlendingFactor.gen.cs index c1cd4b02c7..a77262d9c5 100644 --- a/sources/OpenGL/OpenGL/Enums/BlendingFactor.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BlendingFactor.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BlitFramebufferFilter.gen.cs b/sources/OpenGL/OpenGL/Enums/BlitFramebufferFilter.gen.cs index 35ee595403..54cc8452c5 100644 --- a/sources/OpenGL/OpenGL/Enums/BlitFramebufferFilter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BlitFramebufferFilter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/Boolean.gen.cs b/sources/OpenGL/OpenGL/Enums/Boolean.gen.cs index e940ebffaa..46f72d6c43 100644 --- a/sources/OpenGL/OpenGL/Enums/Boolean.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/Boolean.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/Buffer.gen.cs b/sources/OpenGL/OpenGL/Enums/Buffer.gen.cs index 620e280667..b9fd457511 100644 --- a/sources/OpenGL/OpenGL/Enums/Buffer.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/Buffer.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferAccess.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferAccess.gen.cs index d5bfd2c3cc..6cac4f7c86 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferAccess.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferAccess.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferBitQCOM.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferBitQCOM.gen.cs index f5ee21bc99..184f9b6726 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferBitQCOM.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferBitQCOM.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferPName.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferPName.gen.cs index c649a0ace1..94ed6d4ccd 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferPointerName.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferPointerName.gen.cs index b58077c81b..84d08d37d4 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferPointerName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferPointerName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferStorageMask.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferStorageMask.gen.cs index 59d71ff1a6..8a120e1a8e 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferStorageMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferStorageMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferStorageTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferStorageTarget.gen.cs index 65a34d1986..dbba109146 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferStorageTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferStorageTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferTarget.gen.cs index 13369684cc..0a1ba37690 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferUsage.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferUsage.gen.cs index a9a02b367b..9587b90c9d 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferUsage.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferUsage.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClampColorMode.gen.cs b/sources/OpenGL/OpenGL/Enums/ClampColorMode.gen.cs index dc9faad270..f8e2420bf1 100644 --- a/sources/OpenGL/OpenGL/Enums/ClampColorMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClampColorMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClampColorTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/ClampColorTarget.gen.cs index 999cccc05c..312ad8ca3e 100644 --- a/sources/OpenGL/OpenGL/Enums/ClampColorTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClampColorTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClearBufferMask.gen.cs b/sources/OpenGL/OpenGL/Enums/ClearBufferMask.gen.cs index bea440ff7b..48a951513a 100644 --- a/sources/OpenGL/OpenGL/Enums/ClearBufferMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClearBufferMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClientAttribMask.gen.cs b/sources/OpenGL/OpenGL/Enums/ClientAttribMask.gen.cs index cf9d3f5ade..e107da4296 100644 --- a/sources/OpenGL/OpenGL/Enums/ClientAttribMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClientAttribMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClipControlDepth.gen.cs b/sources/OpenGL/OpenGL/Enums/ClipControlDepth.gen.cs index ff08df5ad7..ff25481270 100644 --- a/sources/OpenGL/OpenGL/Enums/ClipControlDepth.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClipControlDepth.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClipControlOrigin.gen.cs b/sources/OpenGL/OpenGL/Enums/ClipControlOrigin.gen.cs index 98c0387a54..de0b2e48f8 100644 --- a/sources/OpenGL/OpenGL/Enums/ClipControlOrigin.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClipControlOrigin.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClipPlaneName.gen.cs b/sources/OpenGL/OpenGL/Enums/ClipPlaneName.gen.cs index a21f2fd5c0..71aa9a1823 100644 --- a/sources/OpenGL/OpenGL/Enums/ClipPlaneName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClipPlaneName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorBuffer.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorBuffer.gen.cs index e75cce609b..321e65ae80 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorBuffer.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorBuffer.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorMaterialParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorMaterialParameter.gen.cs index 58e1d9cbfa..60f09126c6 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorMaterialParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorMaterialParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorPointerType.gen.cs index f30c8b0d82..6863b08263 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorTableParameterPName.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorTableParameterPName.gen.cs index f5dcf5c86b..072124fae9 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorTableParameterPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorTableParameterPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorTableTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorTableTarget.gen.cs index aae7c1a192..4d2dedfb68 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorTableTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorTableTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorTableTargetSGI.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorTableTargetSGI.gen.cs index acb2eb4c0f..3fa560996d 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorTableTargetSGI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorTableTargetSGI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerBias.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerBias.gen.cs index 19945e83ba..9449dc5629 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerBias.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerBias.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerComponentUsage.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerComponentUsage.gen.cs index 2f4ac7deaa..19ea64c6a6 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerComponentUsage.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerComponentUsage.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerMappingNV.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerMappingNV.gen.cs index cad12f80c5..d623292aef 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerMappingNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerMappingNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerParameterNV.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerParameterNV.gen.cs index 3c1e75b412..0ca44b3173 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerParameterNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerParameterNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerPortion.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerPortion.gen.cs index ff1078ec4c..b9a4f91619 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerPortion.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerPortion.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerRegister.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerRegister.gen.cs index adfe40902b..7b2170276f 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerRegister.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerRegister.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerScale.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerScale.gen.cs index a054a06722..77dbde98bf 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerScale.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerScale.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerStageNV.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerStageNV.gen.cs index 803ac25ad1..abaac38e26 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerStageNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerStageNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerVariableNV.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerVariableNV.gen.cs index cdc9625bcb..42f56f4290 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerVariableNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerVariableNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CommandOpcodesNV.gen.cs b/sources/OpenGL/OpenGL/Enums/CommandOpcodesNV.gen.cs index 7b4bb2903e..28f3a50264 100644 --- a/sources/OpenGL/OpenGL/Enums/CommandOpcodesNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CommandOpcodesNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ConditionalRenderMode.gen.cs b/sources/OpenGL/OpenGL/Enums/ConditionalRenderMode.gen.cs index dc44fdcd41..528bcc3538 100644 --- a/sources/OpenGL/OpenGL/Enums/ConditionalRenderMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ConditionalRenderMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ContainerType.gen.cs b/sources/OpenGL/OpenGL/Enums/ContainerType.gen.cs index 17ca21adda..15c0a7697b 100644 --- a/sources/OpenGL/OpenGL/Enums/ContainerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ContainerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ContextFlagMask.gen.cs b/sources/OpenGL/OpenGL/Enums/ContextFlagMask.gen.cs index 1167caed43..a120697304 100644 --- a/sources/OpenGL/OpenGL/Enums/ContextFlagMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ContextFlagMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ContextProfileMask.gen.cs b/sources/OpenGL/OpenGL/Enums/ContextProfileMask.gen.cs index 31d65304f4..9e888f5c9c 100644 --- a/sources/OpenGL/OpenGL/Enums/ContextProfileMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ContextProfileMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ConvolutionBorderMode.gen.cs b/sources/OpenGL/OpenGL/Enums/ConvolutionBorderMode.gen.cs index c7ebd71279..97833c2699 100644 --- a/sources/OpenGL/OpenGL/Enums/ConvolutionBorderMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ConvolutionBorderMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ConvolutionParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/ConvolutionParameter.gen.cs index fb0a23c59b..9e822ae63f 100644 --- a/sources/OpenGL/OpenGL/Enums/ConvolutionParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ConvolutionParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ConvolutionTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/ConvolutionTarget.gen.cs index ce7522cfc1..3416c79518 100644 --- a/sources/OpenGL/OpenGL/Enums/ConvolutionTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ConvolutionTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ConvolutionTargetEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/ConvolutionTargetEXT.gen.cs index a8a87baa76..ade293f42a 100644 --- a/sources/OpenGL/OpenGL/Enums/ConvolutionTargetEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ConvolutionTargetEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CopyBufferSubDataTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/CopyBufferSubDataTarget.gen.cs index f77f36ea79..e6d54b7b68 100644 --- a/sources/OpenGL/OpenGL/Enums/CopyBufferSubDataTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CopyBufferSubDataTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CopyImageSubDataTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/CopyImageSubDataTarget.gen.cs index b7cfb2c103..b093f02dc0 100644 --- a/sources/OpenGL/OpenGL/Enums/CopyImageSubDataTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CopyImageSubDataTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CullParameterEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/CullParameterEXT.gen.cs index 67040f7536..6ced66ce02 100644 --- a/sources/OpenGL/OpenGL/Enums/CullParameterEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CullParameterEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DataTypeEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/DataTypeEXT.gen.cs index bdbdce4403..429142bd3b 100644 --- a/sources/OpenGL/OpenGL/Enums/DataTypeEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DataTypeEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DebugSeverity.gen.cs b/sources/OpenGL/OpenGL/Enums/DebugSeverity.gen.cs index a618856536..1db8626038 100644 --- a/sources/OpenGL/OpenGL/Enums/DebugSeverity.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DebugSeverity.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DebugSource.gen.cs b/sources/OpenGL/OpenGL/Enums/DebugSource.gen.cs index 6a420c648f..c607ccf04e 100644 --- a/sources/OpenGL/OpenGL/Enums/DebugSource.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DebugSource.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DebugType.gen.cs b/sources/OpenGL/OpenGL/Enums/DebugType.gen.cs index 62ca9e1dda..b554e1006a 100644 --- a/sources/OpenGL/OpenGL/Enums/DebugType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DebugType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DepthFunction.gen.cs b/sources/OpenGL/OpenGL/Enums/DepthFunction.gen.cs index 535b29286c..3a3e2d7cfd 100644 --- a/sources/OpenGL/OpenGL/Enums/DepthFunction.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DepthFunction.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DepthStencilTextureMode.gen.cs b/sources/OpenGL/OpenGL/Enums/DepthStencilTextureMode.gen.cs index 7de1e803ea..b1c6677431 100644 --- a/sources/OpenGL/OpenGL/Enums/DepthStencilTextureMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DepthStencilTextureMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DrawBufferMode.gen.cs b/sources/OpenGL/OpenGL/Enums/DrawBufferMode.gen.cs index c6fff88ece..56c1e76275 100644 --- a/sources/OpenGL/OpenGL/Enums/DrawBufferMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DrawBufferMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DrawElementsType.gen.cs b/sources/OpenGL/OpenGL/Enums/DrawElementsType.gen.cs index 28f327695e..e9052ff049 100644 --- a/sources/OpenGL/OpenGL/Enums/DrawElementsType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DrawElementsType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ElementPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/ElementPointerType.gen.cs index 909fcffaa9..bf93cff3d9 100644 --- a/sources/OpenGL/OpenGL/Enums/ElementPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ElementPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/EnableCap.gen.cs b/sources/OpenGL/OpenGL/Enums/EnableCap.gen.cs index d0c3ba4c3a..0eee239918 100644 --- a/sources/OpenGL/OpenGL/Enums/EnableCap.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/EnableCap.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ErrorCode.gen.cs b/sources/OpenGL/OpenGL/Enums/ErrorCode.gen.cs index 83d21c6378..fad9947339 100644 --- a/sources/OpenGL/OpenGL/Enums/ErrorCode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ErrorCode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/EvalMapsModeNV.gen.cs b/sources/OpenGL/OpenGL/Enums/EvalMapsModeNV.gen.cs index 4b76f40f23..8ff1fa5623 100644 --- a/sources/OpenGL/OpenGL/Enums/EvalMapsModeNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/EvalMapsModeNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/EvalTargetNV.gen.cs b/sources/OpenGL/OpenGL/Enums/EvalTargetNV.gen.cs index abdbf4185e..82b89cd2c3 100644 --- a/sources/OpenGL/OpenGL/Enums/EvalTargetNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/EvalTargetNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ExternalHandleType.gen.cs b/sources/OpenGL/OpenGL/Enums/ExternalHandleType.gen.cs index 9e14480ffe..afd6ac8e68 100644 --- a/sources/OpenGL/OpenGL/Enums/ExternalHandleType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ExternalHandleType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FeedBackToken.gen.cs b/sources/OpenGL/OpenGL/Enums/FeedBackToken.gen.cs index 21fb4167ab..6bc7962064 100644 --- a/sources/OpenGL/OpenGL/Enums/FeedBackToken.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FeedBackToken.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FeedbackType.gen.cs b/sources/OpenGL/OpenGL/Enums/FeedbackType.gen.cs index 9efcf152ad..34fae817e9 100644 --- a/sources/OpenGL/OpenGL/Enums/FeedbackType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FeedbackType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FenceConditionNV.gen.cs b/sources/OpenGL/OpenGL/Enums/FenceConditionNV.gen.cs index e5468928a6..9d13fc51b9 100644 --- a/sources/OpenGL/OpenGL/Enums/FenceConditionNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FenceConditionNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FenceParameterNameNV.gen.cs b/sources/OpenGL/OpenGL/Enums/FenceParameterNameNV.gen.cs index f25d8d02aa..b03d85ce30 100644 --- a/sources/OpenGL/OpenGL/Enums/FenceParameterNameNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FenceParameterNameNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FfdMaskSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/FfdMaskSGIX.gen.cs index 49a9ff8782..70e1b12d36 100644 --- a/sources/OpenGL/OpenGL/Enums/FfdMaskSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FfdMaskSGIX.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FfdTargetSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/FfdTargetSGIX.gen.cs index afb32c6610..1b2b266552 100644 --- a/sources/OpenGL/OpenGL/Enums/FfdTargetSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FfdTargetSGIX.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogCoordSrc.gen.cs b/sources/OpenGL/OpenGL/Enums/FogCoordSrc.gen.cs index 0b17223c16..6e3b272660 100644 --- a/sources/OpenGL/OpenGL/Enums/FogCoordSrc.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogCoordSrc.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogCoordinatePointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/FogCoordinatePointerType.gen.cs index d1830ddf77..a3dd44d775 100644 --- a/sources/OpenGL/OpenGL/Enums/FogCoordinatePointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogCoordinatePointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogMode.gen.cs b/sources/OpenGL/OpenGL/Enums/FogMode.gen.cs index 277019dff1..81b993667d 100644 --- a/sources/OpenGL/OpenGL/Enums/FogMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogPName.gen.cs b/sources/OpenGL/OpenGL/Enums/FogPName.gen.cs index 7cbf29b721..dcb884329d 100644 --- a/sources/OpenGL/OpenGL/Enums/FogPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/FogParameter.gen.cs index 81e3f5d8b0..87d01ac8a9 100644 --- a/sources/OpenGL/OpenGL/Enums/FogParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogPointerTypeEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/FogPointerTypeEXT.gen.cs index de5f809086..a1279733b0 100644 --- a/sources/OpenGL/OpenGL/Enums/FogPointerTypeEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogPointerTypeEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogPointerTypeIBM.gen.cs b/sources/OpenGL/OpenGL/Enums/FogPointerTypeIBM.gen.cs index a9b81bdea5..1e961cf0c4 100644 --- a/sources/OpenGL/OpenGL/Enums/FogPointerTypeIBM.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogPointerTypeIBM.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FoveationConfigBitQCOM.gen.cs b/sources/OpenGL/OpenGL/Enums/FoveationConfigBitQCOM.gen.cs index abf13504f2..ad37de8535 100644 --- a/sources/OpenGL/OpenGL/Enums/FoveationConfigBitQCOM.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FoveationConfigBitQCOM.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentLightModelParameterSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentLightModelParameterSGIX.gen.cs index b9b7e2d70d..39a56242c9 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentLightModelParameterSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentLightModelParameterSGIX.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentLightNameSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentLightNameSGIX.gen.cs index 1e78060de9..4600ff6b7f 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentLightNameSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentLightNameSGIX.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentLightParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentLightParameter.gen.cs index 34fbfa56fb..8c202b6a22 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentLightParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentLightParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentOp1ATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentOp1ATI.gen.cs index f9571209c9..bfad7e7b18 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentOp1ATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentOp1ATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentOp2ATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentOp2ATI.gen.cs index 075e35e5fb..5aeedc9918 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentOp2ATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentOp2ATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentOp3ATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentOp3ATI.gen.cs index 5e8d23623c..e43d290be1 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentOp3ATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentOp3ATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderColorModMaskATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderColorModMaskATI.gen.cs index 394a2bd386..cd1c85ccdf 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderColorModMaskATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderColorModMaskATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderConATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderConATI.gen.cs index 88a9af8551..77c0d398b4 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderConATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderConATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderDestMask.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderDestMask.gen.cs index 5a3ac06402..cee95fe48e 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderDestMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderDestMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderDestModMask.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderDestModMask.gen.cs index cf98b9ca92..7a0b966cc3 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderDestModMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderDestModMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderGenericSource.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderGenericSource.gen.cs index 26052c9edd..fd2bf4b02f 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderGenericSource.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderGenericSource.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderRegATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderRegATI.gen.cs index 30042033fc..06dd8990c5 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderRegATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderRegATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderTextureSource.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderTextureSource.gen.cs index d15dc2e0f2..5a0ad90072 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderTextureSource.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderTextureSource.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderValueRep.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderValueRep.gen.cs index e79cb25388..951bcf64b7 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderValueRep.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderValueRep.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FramebufferAttachment.gen.cs b/sources/OpenGL/OpenGL/Enums/FramebufferAttachment.gen.cs index 404f40c7e9..2f734e2653 100644 --- a/sources/OpenGL/OpenGL/Enums/FramebufferAttachment.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FramebufferAttachment.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FramebufferAttachmentParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/FramebufferAttachmentParameterName.gen.cs index 9895337601..e1aaa457af 100644 --- a/sources/OpenGL/OpenGL/Enums/FramebufferAttachmentParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FramebufferAttachmentParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FramebufferParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/FramebufferParameterName.gen.cs index 0030679b5e..93613f4326 100644 --- a/sources/OpenGL/OpenGL/Enums/FramebufferParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FramebufferParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FramebufferStatus.gen.cs b/sources/OpenGL/OpenGL/Enums/FramebufferStatus.gen.cs index 62f9e48918..5dde8c0ad0 100644 --- a/sources/OpenGL/OpenGL/Enums/FramebufferStatus.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FramebufferStatus.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FramebufferTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/FramebufferTarget.gen.cs index 53e4f3dd4c..92427c98e3 100644 --- a/sources/OpenGL/OpenGL/Enums/FramebufferTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FramebufferTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FrontFaceDirection.gen.cs b/sources/OpenGL/OpenGL/Enums/FrontFaceDirection.gen.cs index 693084d981..88d10c675f 100644 --- a/sources/OpenGL/OpenGL/Enums/FrontFaceDirection.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FrontFaceDirection.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GLEnum.gen.cs b/sources/OpenGL/OpenGL/Enums/GLEnum.gen.cs index c1f9b5201f..b6d4e2a8de 100644 --- a/sources/OpenGL/OpenGL/Enums/GLEnum.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GLEnum.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetFramebufferParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/GetFramebufferParameter.gen.cs index 216f6a234c..fd4e9abc98 100644 --- a/sources/OpenGL/OpenGL/Enums/GetFramebufferParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetFramebufferParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetHistogramParameterPName.gen.cs b/sources/OpenGL/OpenGL/Enums/GetHistogramParameterPName.gen.cs index 2b07048e96..29a78b0379 100644 --- a/sources/OpenGL/OpenGL/Enums/GetHistogramParameterPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetHistogramParameterPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetMapQuery.gen.cs b/sources/OpenGL/OpenGL/Enums/GetMapQuery.gen.cs index 6e3eb63866..876b2b1c1c 100644 --- a/sources/OpenGL/OpenGL/Enums/GetMapQuery.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetMapQuery.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetMinmaxParameterPName.gen.cs b/sources/OpenGL/OpenGL/Enums/GetMinmaxParameterPName.gen.cs index ef7039dfd0..ee438cbe65 100644 --- a/sources/OpenGL/OpenGL/Enums/GetMinmaxParameterPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetMinmaxParameterPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetMultisamplePName.gen.cs b/sources/OpenGL/OpenGL/Enums/GetMultisamplePName.gen.cs index 728c090dd4..3fe2540f44 100644 --- a/sources/OpenGL/OpenGL/Enums/GetMultisamplePName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetMultisamplePName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetPName.gen.cs b/sources/OpenGL/OpenGL/Enums/GetPName.gen.cs index 0826b8aa2a..cc41f2eabd 100644 --- a/sources/OpenGL/OpenGL/Enums/GetPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetPointervPName.gen.cs b/sources/OpenGL/OpenGL/Enums/GetPointervPName.gen.cs index 275e9fe7a8..f8d3a75422 100644 --- a/sources/OpenGL/OpenGL/Enums/GetPointervPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetPointervPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetTexBumpParameterATI.gen.cs b/sources/OpenGL/OpenGL/Enums/GetTexBumpParameterATI.gen.cs index 8df40fba1f..42861c6dd2 100644 --- a/sources/OpenGL/OpenGL/Enums/GetTexBumpParameterATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetTexBumpParameterATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetTextureParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/GetTextureParameter.gen.cs index 957936c722..b994e64bc1 100644 --- a/sources/OpenGL/OpenGL/Enums/GetTextureParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetTextureParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetVariantValueEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/GetVariantValueEXT.gen.cs index 5bce7eb8bc..bb35d2fe83 100644 --- a/sources/OpenGL/OpenGL/Enums/GetVariantValueEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetVariantValueEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GraphicsResetStatus.gen.cs b/sources/OpenGL/OpenGL/Enums/GraphicsResetStatus.gen.cs index 227e760860..7225537160 100644 --- a/sources/OpenGL/OpenGL/Enums/GraphicsResetStatus.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GraphicsResetStatus.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/HintMode.gen.cs b/sources/OpenGL/OpenGL/Enums/HintMode.gen.cs index d5e0cb744e..a70299b9eb 100644 --- a/sources/OpenGL/OpenGL/Enums/HintMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/HintMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/HintTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/HintTarget.gen.cs index aa4b87f546..2f0cf0c8e9 100644 --- a/sources/OpenGL/OpenGL/Enums/HintTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/HintTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/HintTargetPGI.gen.cs b/sources/OpenGL/OpenGL/Enums/HintTargetPGI.gen.cs index 8731b9c299..fd08d7d562 100644 --- a/sources/OpenGL/OpenGL/Enums/HintTargetPGI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/HintTargetPGI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/HistogramTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/HistogramTarget.gen.cs index f9c44034cc..52f31b1cde 100644 --- a/sources/OpenGL/OpenGL/Enums/HistogramTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/HistogramTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/HistogramTargetEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/HistogramTargetEXT.gen.cs index a15af45cc2..e4ee939d74 100644 --- a/sources/OpenGL/OpenGL/Enums/HistogramTargetEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/HistogramTargetEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ImageTransformPNameHP.gen.cs b/sources/OpenGL/OpenGL/Enums/ImageTransformPNameHP.gen.cs index 7b43e40fd6..b689d99d4d 100644 --- a/sources/OpenGL/OpenGL/Enums/ImageTransformPNameHP.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ImageTransformPNameHP.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ImageTransformTargetHP.gen.cs b/sources/OpenGL/OpenGL/Enums/ImageTransformTargetHP.gen.cs index 4a5073a20a..cd44fc414d 100644 --- a/sources/OpenGL/OpenGL/Enums/ImageTransformTargetHP.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ImageTransformTargetHP.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/IndexFunction.gen.cs b/sources/OpenGL/OpenGL/Enums/IndexFunction.gen.cs index c68ec19b39..af25d0f7b5 100644 --- a/sources/OpenGL/OpenGL/Enums/IndexFunction.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/IndexFunction.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/IndexMaterialParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/IndexMaterialParameter.gen.cs index 10f72d2443..641011d36a 100644 --- a/sources/OpenGL/OpenGL/Enums/IndexMaterialParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/IndexMaterialParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/IndexPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/IndexPointerType.gen.cs index 30d015ac4b..d91af41cd9 100644 --- a/sources/OpenGL/OpenGL/Enums/IndexPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/IndexPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/InstancedPathCoverMode.gen.cs b/sources/OpenGL/OpenGL/Enums/InstancedPathCoverMode.gen.cs index 815aceaea4..5fb32301ff 100644 --- a/sources/OpenGL/OpenGL/Enums/InstancedPathCoverMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/InstancedPathCoverMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/InterleavedArrayFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/InterleavedArrayFormat.gen.cs index a2ef4f90a2..f855cb6621 100644 --- a/sources/OpenGL/OpenGL/Enums/InterleavedArrayFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/InterleavedArrayFormat.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/InternalFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/InternalFormat.gen.cs index dc942b436a..2e781a6703 100644 --- a/sources/OpenGL/OpenGL/Enums/InternalFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/InternalFormat.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/InternalFormatPName.gen.cs b/sources/OpenGL/OpenGL/Enums/InternalFormatPName.gen.cs index 320d6e4a33..661f630fad 100644 --- a/sources/OpenGL/OpenGL/Enums/InternalFormatPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/InternalFormatPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/InvalidateFramebufferAttachment.gen.cs b/sources/OpenGL/OpenGL/Enums/InvalidateFramebufferAttachment.gen.cs index a581a9a75c..3f511c7903 100644 --- a/sources/OpenGL/OpenGL/Enums/InvalidateFramebufferAttachment.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/InvalidateFramebufferAttachment.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightEnvMode.gen.cs b/sources/OpenGL/OpenGL/Enums/LightEnvMode.gen.cs index 3979fedf2e..98c525723e 100644 --- a/sources/OpenGL/OpenGL/Enums/LightEnvMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightEnvMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightEnvParameterSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/LightEnvParameterSGIX.gen.cs index 7a732bb6ac..b76dfb52e0 100644 --- a/sources/OpenGL/OpenGL/Enums/LightEnvParameterSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightEnvParameterSGIX.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightModelColorControl.gen.cs b/sources/OpenGL/OpenGL/Enums/LightModelColorControl.gen.cs index 7752c68a31..75541c89e9 100644 --- a/sources/OpenGL/OpenGL/Enums/LightModelColorControl.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightModelColorControl.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightModelParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/LightModelParameter.gen.cs index ab5e385f81..58197ab174 100644 --- a/sources/OpenGL/OpenGL/Enums/LightModelParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightModelParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightName.gen.cs b/sources/OpenGL/OpenGL/Enums/LightName.gen.cs index ced449fc8b..04a0fabb97 100644 --- a/sources/OpenGL/OpenGL/Enums/LightName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/LightParameter.gen.cs index 55f579671f..92f8b6aa19 100644 --- a/sources/OpenGL/OpenGL/Enums/LightParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightTextureMode.gen.cs b/sources/OpenGL/OpenGL/Enums/LightTextureMode.gen.cs index 4068dc125d..9ff1ecb1df 100644 --- a/sources/OpenGL/OpenGL/Enums/LightTextureMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightTextureMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightTexturePNameEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/LightTexturePNameEXT.gen.cs index dd72b9f1a9..89f1e59367 100644 --- a/sources/OpenGL/OpenGL/Enums/LightTexturePNameEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightTexturePNameEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ListMode.gen.cs b/sources/OpenGL/OpenGL/Enums/ListMode.gen.cs index 845ea0e065..d1e79b3a71 100644 --- a/sources/OpenGL/OpenGL/Enums/ListMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ListMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ListNameType.gen.cs b/sources/OpenGL/OpenGL/Enums/ListNameType.gen.cs index d58094cf91..e7726c9cba 100644 --- a/sources/OpenGL/OpenGL/Enums/ListNameType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ListNameType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ListParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/ListParameterName.gen.cs index 2a1c6d0187..ce4175c99b 100644 --- a/sources/OpenGL/OpenGL/Enums/ListParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ListParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LogicOp.gen.cs b/sources/OpenGL/OpenGL/Enums/LogicOp.gen.cs index 0b99183c4a..48d407a150 100644 --- a/sources/OpenGL/OpenGL/Enums/LogicOp.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LogicOp.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapAttribParameterNV.gen.cs b/sources/OpenGL/OpenGL/Enums/MapAttribParameterNV.gen.cs index 88684776cb..fa1c8eb59b 100644 --- a/sources/OpenGL/OpenGL/Enums/MapAttribParameterNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapAttribParameterNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapBufferAccessMask.gen.cs b/sources/OpenGL/OpenGL/Enums/MapBufferAccessMask.gen.cs index 82585f8a87..8ba6a6820a 100644 --- a/sources/OpenGL/OpenGL/Enums/MapBufferAccessMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapBufferAccessMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapParameterNV.gen.cs b/sources/OpenGL/OpenGL/Enums/MapParameterNV.gen.cs index 05e6fe2e77..9e66cff06e 100644 --- a/sources/OpenGL/OpenGL/Enums/MapParameterNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapParameterNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapQuery.gen.cs b/sources/OpenGL/OpenGL/Enums/MapQuery.gen.cs index c6228137f8..e320bae112 100644 --- a/sources/OpenGL/OpenGL/Enums/MapQuery.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapQuery.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/MapTarget.gen.cs index dcc501bb48..6c9738449b 100644 --- a/sources/OpenGL/OpenGL/Enums/MapTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapTextureFormatINTEL.gen.cs b/sources/OpenGL/OpenGL/Enums/MapTextureFormatINTEL.gen.cs index 035117f39b..3e4a42bba3 100644 --- a/sources/OpenGL/OpenGL/Enums/MapTextureFormatINTEL.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapTextureFormatINTEL.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapType.gen.cs b/sources/OpenGL/OpenGL/Enums/MapType.gen.cs index d881e36ec5..5f0a2b6078 100644 --- a/sources/OpenGL/OpenGL/Enums/MapType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MaterialParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/MaterialParameter.gen.cs index eb0d20d953..9d07c8e24c 100644 --- a/sources/OpenGL/OpenGL/Enums/MaterialParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MaterialParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MatrixIndexPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/MatrixIndexPointerType.gen.cs index 5b48964c7e..8d172a729f 100644 --- a/sources/OpenGL/OpenGL/Enums/MatrixIndexPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MatrixIndexPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MatrixMode.gen.cs b/sources/OpenGL/OpenGL/Enums/MatrixMode.gen.cs index f52453fa29..875a3d84ec 100644 --- a/sources/OpenGL/OpenGL/Enums/MatrixMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MatrixMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MemoryBarrierMask.gen.cs b/sources/OpenGL/OpenGL/Enums/MemoryBarrierMask.gen.cs index 6b7f48bd64..a200342522 100644 --- a/sources/OpenGL/OpenGL/Enums/MemoryBarrierMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MemoryBarrierMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MemoryObjectParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/MemoryObjectParameterName.gen.cs index b733f643ca..a4833378c1 100644 --- a/sources/OpenGL/OpenGL/Enums/MemoryObjectParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MemoryObjectParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MeshMode1.gen.cs b/sources/OpenGL/OpenGL/Enums/MeshMode1.gen.cs index 8d8e552e64..25419a7aa3 100644 --- a/sources/OpenGL/OpenGL/Enums/MeshMode1.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MeshMode1.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MeshMode2.gen.cs b/sources/OpenGL/OpenGL/Enums/MeshMode2.gen.cs index f65023db46..3618959193 100644 --- a/sources/OpenGL/OpenGL/Enums/MeshMode2.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MeshMode2.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MinmaxTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/MinmaxTarget.gen.cs index d1d9c64aa7..687bd99f88 100644 --- a/sources/OpenGL/OpenGL/Enums/MinmaxTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MinmaxTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MinmaxTargetEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/MinmaxTargetEXT.gen.cs index 8199f01818..60a930c750 100644 --- a/sources/OpenGL/OpenGL/Enums/MinmaxTargetEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MinmaxTargetEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/NormalPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/NormalPointerType.gen.cs index 16574db95a..cbc0709689 100644 --- a/sources/OpenGL/OpenGL/Enums/NormalPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/NormalPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ObjectIdentifier.gen.cs b/sources/OpenGL/OpenGL/Enums/ObjectIdentifier.gen.cs index 0b297763db..ce99f617aa 100644 --- a/sources/OpenGL/OpenGL/Enums/ObjectIdentifier.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ObjectIdentifier.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ObjectTypeAPPLE.gen.cs b/sources/OpenGL/OpenGL/Enums/ObjectTypeAPPLE.gen.cs index 54f3dc3719..1ae529e478 100644 --- a/sources/OpenGL/OpenGL/Enums/ObjectTypeAPPLE.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ObjectTypeAPPLE.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/OcclusionQueryEventMaskAMD.gen.cs b/sources/OpenGL/OpenGL/Enums/OcclusionQueryEventMaskAMD.gen.cs index bd63b2068b..01f0a53a3a 100644 --- a/sources/OpenGL/OpenGL/Enums/OcclusionQueryEventMaskAMD.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/OcclusionQueryEventMaskAMD.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/OcclusionQueryParameterNameNV.gen.cs b/sources/OpenGL/OpenGL/Enums/OcclusionQueryParameterNameNV.gen.cs index 4f6002550d..a88c1cc49b 100644 --- a/sources/OpenGL/OpenGL/Enums/OcclusionQueryParameterNameNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/OcclusionQueryParameterNameNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PNTrianglesPNameATI.gen.cs b/sources/OpenGL/OpenGL/Enums/PNTrianglesPNameATI.gen.cs index 453c2a493f..8ff7588775 100644 --- a/sources/OpenGL/OpenGL/Enums/PNTrianglesPNameATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PNTrianglesPNameATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ParameterRangeEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/ParameterRangeEXT.gen.cs index 8409975951..f4cc3c2fa0 100644 --- a/sources/OpenGL/OpenGL/Enums/ParameterRangeEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ParameterRangeEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PatchParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/PatchParameterName.gen.cs index 6c007a00db..9e63d1493f 100644 --- a/sources/OpenGL/OpenGL/Enums/PatchParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PatchParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathColor.gen.cs b/sources/OpenGL/OpenGL/Enums/PathColor.gen.cs index c2c70ba2c9..737958600f 100644 --- a/sources/OpenGL/OpenGL/Enums/PathColor.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathColor.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathColorFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/PathColorFormat.gen.cs index e325e01d26..4512a0a493 100644 --- a/sources/OpenGL/OpenGL/Enums/PathColorFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathColorFormat.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathCoordType.gen.cs b/sources/OpenGL/OpenGL/Enums/PathCoordType.gen.cs index 4a8609ac8b..b142235617 100644 --- a/sources/OpenGL/OpenGL/Enums/PathCoordType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathCoordType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathCoverMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PathCoverMode.gen.cs index 56fc55c26f..8e9d1a8e45 100644 --- a/sources/OpenGL/OpenGL/Enums/PathCoverMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathCoverMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathElementType.gen.cs b/sources/OpenGL/OpenGL/Enums/PathElementType.gen.cs index 9d331f3b19..7def9b957f 100644 --- a/sources/OpenGL/OpenGL/Enums/PathElementType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathElementType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathFillMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PathFillMode.gen.cs index caf36378c1..27b3787f85 100644 --- a/sources/OpenGL/OpenGL/Enums/PathFillMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathFillMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathFontStyle.gen.cs b/sources/OpenGL/OpenGL/Enums/PathFontStyle.gen.cs index 63ade9981e..e4166b0b52 100644 --- a/sources/OpenGL/OpenGL/Enums/PathFontStyle.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathFontStyle.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathFontTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/PathFontTarget.gen.cs index 68e70e4524..9550997122 100644 --- a/sources/OpenGL/OpenGL/Enums/PathFontTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathFontTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathGenMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PathGenMode.gen.cs index 8e01273759..fbb67f3c79 100644 --- a/sources/OpenGL/OpenGL/Enums/PathGenMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathGenMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathHandleMissingGlyphs.gen.cs b/sources/OpenGL/OpenGL/Enums/PathHandleMissingGlyphs.gen.cs index fdd5018d12..0d0fe6bc53 100644 --- a/sources/OpenGL/OpenGL/Enums/PathHandleMissingGlyphs.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathHandleMissingGlyphs.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathListMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PathListMode.gen.cs index 84f4cce437..1daf06b186 100644 --- a/sources/OpenGL/OpenGL/Enums/PathListMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathListMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathMetricMask.gen.cs b/sources/OpenGL/OpenGL/Enums/PathMetricMask.gen.cs index af058a9829..568f698b83 100644 --- a/sources/OpenGL/OpenGL/Enums/PathMetricMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathMetricMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/PathParameter.gen.cs index 389bb36972..ebc05d829b 100644 --- a/sources/OpenGL/OpenGL/Enums/PathParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathRenderingTokenNV.gen.cs b/sources/OpenGL/OpenGL/Enums/PathRenderingTokenNV.gen.cs index 40a99aba87..994d7a3f93 100644 --- a/sources/OpenGL/OpenGL/Enums/PathRenderingTokenNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathRenderingTokenNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathStringFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/PathStringFormat.gen.cs index 5b34736a2c..d805d307d5 100644 --- a/sources/OpenGL/OpenGL/Enums/PathStringFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathStringFormat.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathTransformType.gen.cs b/sources/OpenGL/OpenGL/Enums/PathTransformType.gen.cs index 2ae0eabe7d..d6251848aa 100644 --- a/sources/OpenGL/OpenGL/Enums/PathTransformType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathTransformType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PerfQueryDataFlags.gen.cs b/sources/OpenGL/OpenGL/Enums/PerfQueryDataFlags.gen.cs index 2637015946..135b480997 100644 --- a/sources/OpenGL/OpenGL/Enums/PerfQueryDataFlags.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PerfQueryDataFlags.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PerformanceQueryCapsMaskINTEL.gen.cs b/sources/OpenGL/OpenGL/Enums/PerformanceQueryCapsMaskINTEL.gen.cs index 09d6443432..a464c4804a 100644 --- a/sources/OpenGL/OpenGL/Enums/PerformanceQueryCapsMaskINTEL.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PerformanceQueryCapsMaskINTEL.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PipelineParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/PipelineParameterName.gen.cs index 39a037180a..878f6bf579 100644 --- a/sources/OpenGL/OpenGL/Enums/PipelineParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PipelineParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelCopyType.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelCopyType.gen.cs index 75ef4b6c52..f13b440d7b 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelCopyType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelCopyType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelDataRangeTargetNV.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelDataRangeTargetNV.gen.cs index b68bbf29ae..40f39ac0ec 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelDataRangeTargetNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelDataRangeTargetNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelFormat.gen.cs index 07d29dfa77..54e72196a1 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelFormat.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelMap.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelMap.gen.cs index 942972a998..6da906f429 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelMap.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelMap.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelStoreParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelStoreParameter.gen.cs index a88615dcb4..73745cd2fb 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelStoreParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelStoreParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelStoreResampleMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelStoreResampleMode.gen.cs index 8bf5c5dabb..d308045070 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelStoreResampleMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelStoreResampleMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelStoreSubsampleRate.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelStoreSubsampleRate.gen.cs index 4eca1924d0..ba2bbc09d7 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelStoreSubsampleRate.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelStoreSubsampleRate.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelTexGenMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelTexGenMode.gen.cs index 1ebdba497e..c0bcdc82e3 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelTexGenMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelTexGenMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelTexGenParameterNameSGIS.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelTexGenParameterNameSGIS.gen.cs index c8cb8b69a6..d385f32dff 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelTexGenParameterNameSGIS.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelTexGenParameterNameSGIS.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelTransferParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelTransferParameter.gen.cs index a747fbafc0..52d5aa4d93 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelTransferParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelTransferParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelTransformPNameEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelTransformPNameEXT.gen.cs index b90dd5efe2..3e926a941a 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelTransformPNameEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelTransformPNameEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelTransformTargetEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelTransformTargetEXT.gen.cs index f500dd5b06..56f39882e3 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelTransformTargetEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelTransformTargetEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelType.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelType.gen.cs index a234fb8762..b921196cd4 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PointParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/PointParameterName.gen.cs index 13f740bb1c..36d26e291a 100644 --- a/sources/OpenGL/OpenGL/Enums/PointParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PointParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PolygonMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PolygonMode.gen.cs index 438edc835e..a4e638aed9 100644 --- a/sources/OpenGL/OpenGL/Enums/PolygonMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PolygonMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PrecisionType.gen.cs b/sources/OpenGL/OpenGL/Enums/PrecisionType.gen.cs index 1077e891e6..cc081fcad4 100644 --- a/sources/OpenGL/OpenGL/Enums/PrecisionType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PrecisionType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PreserveModeATI.gen.cs b/sources/OpenGL/OpenGL/Enums/PreserveModeATI.gen.cs index 79d384bebf..fab795bd34 100644 --- a/sources/OpenGL/OpenGL/Enums/PreserveModeATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PreserveModeATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PrimitiveType.gen.cs b/sources/OpenGL/OpenGL/Enums/PrimitiveType.gen.cs index 974957821a..e8dfb46601 100644 --- a/sources/OpenGL/OpenGL/Enums/PrimitiveType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PrimitiveType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramFormat.gen.cs index 2b1b6f4136..f945faee65 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramFormat.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramInterface.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramInterface.gen.cs index 9346082610..12e2866466 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramInterface.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramInterface.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramInterfacePName.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramInterfacePName.gen.cs index aca4658bd2..267a7ef820 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramInterfacePName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramInterfacePName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramParameterPName.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramParameterPName.gen.cs index 925c60406f..e3d8bd02d6 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramParameterPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramParameterPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramProperty.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramProperty.gen.cs index da7466b34c..63dd97f4b3 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramProperty.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramProperty.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramResourceProperty.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramResourceProperty.gen.cs index c1204ffd54..e97e09bd9b 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramResourceProperty.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramResourceProperty.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramStagePName.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramStagePName.gen.cs index 06c55fd599..24a24e770b 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramStagePName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramStagePName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramStringProperty.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramStringProperty.gen.cs index dc4fe6f733..81caf495a3 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramStringProperty.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramStringProperty.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramTarget.gen.cs index 95874b2b09..5a80bc03d5 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/QueryCounterTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/QueryCounterTarget.gen.cs index bd03349fec..b258a57e8c 100644 --- a/sources/OpenGL/OpenGL/Enums/QueryCounterTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/QueryCounterTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/QueryObjectParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/QueryObjectParameterName.gen.cs index da9466f9f8..0e320f5e8f 100644 --- a/sources/OpenGL/OpenGL/Enums/QueryObjectParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/QueryObjectParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/QueryParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/QueryParameterName.gen.cs index 21471fa90f..bf6617cd71 100644 --- a/sources/OpenGL/OpenGL/Enums/QueryParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/QueryParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/QueryTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/QueryTarget.gen.cs index 56fcd2e4e0..2cf634a8f9 100644 --- a/sources/OpenGL/OpenGL/Enums/QueryTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/QueryTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ReadBufferMode.gen.cs b/sources/OpenGL/OpenGL/Enums/ReadBufferMode.gen.cs index 95b28c2bdc..69f63031aa 100644 --- a/sources/OpenGL/OpenGL/Enums/ReadBufferMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ReadBufferMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/RenderbufferParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/RenderbufferParameterName.gen.cs index 1702290dd5..b9f9d33268 100644 --- a/sources/OpenGL/OpenGL/Enums/RenderbufferParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/RenderbufferParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/RenderbufferTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/RenderbufferTarget.gen.cs index b8f0f0c54e..b4d91c8f32 100644 --- a/sources/OpenGL/OpenGL/Enums/RenderbufferTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/RenderbufferTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/RenderingMode.gen.cs b/sources/OpenGL/OpenGL/Enums/RenderingMode.gen.cs index 3e406c35db..acd64eaf5a 100644 --- a/sources/OpenGL/OpenGL/Enums/RenderingMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/RenderingMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ReplacementCodeType.gen.cs b/sources/OpenGL/OpenGL/Enums/ReplacementCodeType.gen.cs index 9a68ab30cf..429bf4b016 100644 --- a/sources/OpenGL/OpenGL/Enums/ReplacementCodeType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ReplacementCodeType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SamplePatternEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/SamplePatternEXT.gen.cs index 7d9d054f83..cac83311d7 100644 --- a/sources/OpenGL/OpenGL/Enums/SamplePatternEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SamplePatternEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SamplePatternSGIS.gen.cs b/sources/OpenGL/OpenGL/Enums/SamplePatternSGIS.gen.cs index 6af887f8db..95dfdb754f 100644 --- a/sources/OpenGL/OpenGL/Enums/SamplePatternSGIS.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SamplePatternSGIS.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SamplerParameterF.gen.cs b/sources/OpenGL/OpenGL/Enums/SamplerParameterF.gen.cs index eda47b63c9..4b70cac339 100644 --- a/sources/OpenGL/OpenGL/Enums/SamplerParameterF.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SamplerParameterF.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SamplerParameterI.gen.cs b/sources/OpenGL/OpenGL/Enums/SamplerParameterI.gen.cs index b4c540fc1a..56ce182840 100644 --- a/sources/OpenGL/OpenGL/Enums/SamplerParameterI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SamplerParameterI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ScalarType.gen.cs b/sources/OpenGL/OpenGL/Enums/ScalarType.gen.cs index 3ba7a4645c..d496195dbd 100644 --- a/sources/OpenGL/OpenGL/Enums/ScalarType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ScalarType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SecondaryColorPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/SecondaryColorPointerType.gen.cs index 0419d36629..78f58090e9 100644 --- a/sources/OpenGL/OpenGL/Enums/SecondaryColorPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SecondaryColorPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SemaphoreParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/SemaphoreParameterName.gen.cs index 4c6b93cb7b..5a0de37ad5 100644 --- a/sources/OpenGL/OpenGL/Enums/SemaphoreParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SemaphoreParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SeparableTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/SeparableTarget.gen.cs index 93b7495e30..1eded69d3b 100644 --- a/sources/OpenGL/OpenGL/Enums/SeparableTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SeparableTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SeparableTargetEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/SeparableTargetEXT.gen.cs index acaf1e0941..55657fd9c5 100644 --- a/sources/OpenGL/OpenGL/Enums/SeparableTargetEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SeparableTargetEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShaderBinaryFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/ShaderBinaryFormat.gen.cs index 72901cabc4..13c6ad86d5 100644 --- a/sources/OpenGL/OpenGL/Enums/ShaderBinaryFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShaderBinaryFormat.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShaderParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/ShaderParameterName.gen.cs index 8d38a5778e..fdcc586a96 100644 --- a/sources/OpenGL/OpenGL/Enums/ShaderParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShaderParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShaderType.gen.cs b/sources/OpenGL/OpenGL/Enums/ShaderType.gen.cs index 444fa1f4db..e29cb13e97 100644 --- a/sources/OpenGL/OpenGL/Enums/ShaderType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShaderType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShadingModel.gen.cs b/sources/OpenGL/OpenGL/Enums/ShadingModel.gen.cs index 9315e246c6..9cf1ac7b95 100644 --- a/sources/OpenGL/OpenGL/Enums/ShadingModel.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShadingModel.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShadingRate.gen.cs b/sources/OpenGL/OpenGL/Enums/ShadingRate.gen.cs index f195e7def9..4053665378 100644 --- a/sources/OpenGL/OpenGL/Enums/ShadingRate.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShadingRate.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShadingRateCombinerOp.gen.cs b/sources/OpenGL/OpenGL/Enums/ShadingRateCombinerOp.gen.cs index bd5c1efeea..1333304b31 100644 --- a/sources/OpenGL/OpenGL/Enums/ShadingRateCombinerOp.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShadingRateCombinerOp.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShadingRateQCOM.gen.cs b/sources/OpenGL/OpenGL/Enums/ShadingRateQCOM.gen.cs index 84b4368260..7e2547737e 100644 --- a/sources/OpenGL/OpenGL/Enums/ShadingRateQCOM.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShadingRateQCOM.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SizedInternalFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/SizedInternalFormat.gen.cs index 596c5c93d8..ff451d864c 100644 --- a/sources/OpenGL/OpenGL/Enums/SizedInternalFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SizedInternalFormat.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SpriteModeSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/SpriteModeSGIX.gen.cs index d30283355f..8d9e33e757 100644 --- a/sources/OpenGL/OpenGL/Enums/SpriteModeSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SpriteModeSGIX.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SpriteParameterNameSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/SpriteParameterNameSGIX.gen.cs index 28645b062a..72d9798cbc 100644 --- a/sources/OpenGL/OpenGL/Enums/SpriteParameterNameSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SpriteParameterNameSGIX.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/StencilFunction.gen.cs b/sources/OpenGL/OpenGL/Enums/StencilFunction.gen.cs index dbc80dcbd9..da02b47f9d 100644 --- a/sources/OpenGL/OpenGL/Enums/StencilFunction.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/StencilFunction.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/StencilOp.gen.cs b/sources/OpenGL/OpenGL/Enums/StencilOp.gen.cs index 5ef2b27f5e..1ffa26b33b 100644 --- a/sources/OpenGL/OpenGL/Enums/StencilOp.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/StencilOp.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/StringName.gen.cs b/sources/OpenGL/OpenGL/Enums/StringName.gen.cs index 418eeee781..ccec67333a 100644 --- a/sources/OpenGL/OpenGL/Enums/StringName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/StringName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SubgroupSupportedFeatures.gen.cs b/sources/OpenGL/OpenGL/Enums/SubgroupSupportedFeatures.gen.cs index 5ae0418990..59264fc10d 100644 --- a/sources/OpenGL/OpenGL/Enums/SubgroupSupportedFeatures.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SubgroupSupportedFeatures.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SubroutineParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/SubroutineParameterName.gen.cs index 99c1888e74..e86a89f67d 100644 --- a/sources/OpenGL/OpenGL/Enums/SubroutineParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SubroutineParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SwizzleOpATI.gen.cs b/sources/OpenGL/OpenGL/Enums/SwizzleOpATI.gen.cs index 186f6243d1..f6646bdb8a 100644 --- a/sources/OpenGL/OpenGL/Enums/SwizzleOpATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SwizzleOpATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SyncBehaviorFlags.gen.cs b/sources/OpenGL/OpenGL/Enums/SyncBehaviorFlags.gen.cs index c1aa641a00..6bc2b824aa 100644 --- a/sources/OpenGL/OpenGL/Enums/SyncBehaviorFlags.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SyncBehaviorFlags.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SyncCondition.gen.cs b/sources/OpenGL/OpenGL/Enums/SyncCondition.gen.cs index eba72a0bf4..f12269a7e1 100644 --- a/sources/OpenGL/OpenGL/Enums/SyncCondition.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SyncCondition.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SyncObjectMask.gen.cs b/sources/OpenGL/OpenGL/Enums/SyncObjectMask.gen.cs index a65f43a609..cabcb30c0f 100644 --- a/sources/OpenGL/OpenGL/Enums/SyncObjectMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SyncObjectMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SyncParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/SyncParameterName.gen.cs index 3966cd0d3f..daa6ab4b46 100644 --- a/sources/OpenGL/OpenGL/Enums/SyncParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SyncParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SyncStatus.gen.cs b/sources/OpenGL/OpenGL/Enums/SyncStatus.gen.cs index 91b3a4f282..c0de371c89 100644 --- a/sources/OpenGL/OpenGL/Enums/SyncStatus.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SyncStatus.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TangentPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/TangentPointerType.gen.cs index 0300be418c..638d2c7de2 100644 --- a/sources/OpenGL/OpenGL/Enums/TangentPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TangentPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TexBumpParameterATI.gen.cs b/sources/OpenGL/OpenGL/Enums/TexBumpParameterATI.gen.cs index 2ff5fbb2e6..07283a3322 100644 --- a/sources/OpenGL/OpenGL/Enums/TexBumpParameterATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TexBumpParameterATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TexCoordPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/TexCoordPointerType.gen.cs index 005db3d985..85fa680802 100644 --- a/sources/OpenGL/OpenGL/Enums/TexCoordPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TexCoordPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TexStorageAttribs.gen.cs b/sources/OpenGL/OpenGL/Enums/TexStorageAttribs.gen.cs index f64eb187f7..9b0ec556aa 100644 --- a/sources/OpenGL/OpenGL/Enums/TexStorageAttribs.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TexStorageAttribs.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureCompareMode.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureCompareMode.gen.cs index 50747a2be7..2900739247 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureCompareMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureCompareMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureCoordName.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureCoordName.gen.cs index d1afc5b6cd..1a20e306a3 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureCoordName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureCoordName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureEnvMode.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureEnvMode.gen.cs index fe0d7820da..144a92cc64 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureEnvMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureEnvMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureEnvParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureEnvParameter.gen.cs index d9d35f6571..666eb42dfd 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureEnvParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureEnvParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureEnvTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureEnvTarget.gen.cs index fd799766fe..1fb0ef42a7 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureEnvTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureEnvTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureFilterSGIS.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureFilterSGIS.gen.cs index 53251188c1..43f6951586 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureFilterSGIS.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureFilterSGIS.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureGenMode.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureGenMode.gen.cs index f58c1f3fa7..f059c60e22 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureGenMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureGenMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureGenParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureGenParameter.gen.cs index 2047fd346d..ef9e571f43 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureGenParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureGenParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureLayout.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureLayout.gen.cs index e5eed606c4..22b4fd6c41 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureLayout.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureLayout.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureMagFilter.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureMagFilter.gen.cs index b3e460bc0a..f0be50515c 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureMagFilter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureMagFilter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureMinFilter.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureMinFilter.gen.cs index 264c5ece67..a44ea8a945 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureMinFilter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureMinFilter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureNormalModeEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureNormalModeEXT.gen.cs index 487d0627e5..5d26e8c503 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureNormalModeEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureNormalModeEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureParameterName.gen.cs index d86b3743ca..0bdceb599d 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureParameterName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureStorageMaskAMD.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureStorageMaskAMD.gen.cs index f81c00b6d9..54812e3aaa 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureStorageMaskAMD.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureStorageMaskAMD.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureSwizzle.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureSwizzle.gen.cs index 93c2dcd936..69b6aeb48a 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureSwizzle.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureSwizzle.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureTarget.gen.cs index 64aa063c76..e4bf90242f 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureTarget.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureUnit.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureUnit.gen.cs index 1098afe164..cfc1c41448 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureUnit.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureUnit.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureWrapMode.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureWrapMode.gen.cs index 836c333cae..6d3a9be966 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureWrapMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureWrapMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TraceMaskMESA.gen.cs b/sources/OpenGL/OpenGL/Enums/TraceMaskMESA.gen.cs index 5cc8a2d1c7..88489c6ccf 100644 --- a/sources/OpenGL/OpenGL/Enums/TraceMaskMESA.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TraceMaskMESA.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TransformFeedbackBufferMode.gen.cs b/sources/OpenGL/OpenGL/Enums/TransformFeedbackBufferMode.gen.cs index 42bc57f744..657250409f 100644 --- a/sources/OpenGL/OpenGL/Enums/TransformFeedbackBufferMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TransformFeedbackBufferMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TransformFeedbackPName.gen.cs b/sources/OpenGL/OpenGL/Enums/TransformFeedbackPName.gen.cs index 436a81bfc2..61174f1a6e 100644 --- a/sources/OpenGL/OpenGL/Enums/TransformFeedbackPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TransformFeedbackPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TransformFeedbackTokenNV.gen.cs b/sources/OpenGL/OpenGL/Enums/TransformFeedbackTokenNV.gen.cs index db13771325..16efd87cb4 100644 --- a/sources/OpenGL/OpenGL/Enums/TransformFeedbackTokenNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TransformFeedbackTokenNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TriangleFace.gen.cs b/sources/OpenGL/OpenGL/Enums/TriangleFace.gen.cs index f78c95ab03..b3b6b04a2c 100644 --- a/sources/OpenGL/OpenGL/Enums/TriangleFace.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TriangleFace.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TriangleListSUN.gen.cs b/sources/OpenGL/OpenGL/Enums/TriangleListSUN.gen.cs index abcab1cc25..d918a33a3e 100644 --- a/sources/OpenGL/OpenGL/Enums/TriangleListSUN.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TriangleListSUN.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/UniformBlockPName.gen.cs b/sources/OpenGL/OpenGL/Enums/UniformBlockPName.gen.cs index e3fe2bcdae..842bcb105f 100644 --- a/sources/OpenGL/OpenGL/Enums/UniformBlockPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/UniformBlockPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/UniformPName.gen.cs b/sources/OpenGL/OpenGL/Enums/UniformPName.gen.cs index cdf1ae44f2..11f1f32203 100644 --- a/sources/OpenGL/OpenGL/Enums/UniformPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/UniformPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/UniformType.gen.cs b/sources/OpenGL/OpenGL/Enums/UniformType.gen.cs index 5ea81712de..1edecfdc13 100644 --- a/sources/OpenGL/OpenGL/Enums/UniformType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/UniformType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/UseProgramStageMask.gen.cs b/sources/OpenGL/OpenGL/Enums/UseProgramStageMask.gen.cs index 692c35364f..0cf0787e39 100644 --- a/sources/OpenGL/OpenGL/Enums/UseProgramStageMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/UseProgramStageMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VariantCapEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/VariantCapEXT.gen.cs index 6916b7703d..a8f7ce1484 100644 --- a/sources/OpenGL/OpenGL/Enums/VariantCapEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VariantCapEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexArrayPName.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexArrayPName.gen.cs index 289776153d..8da7bf7857 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexArrayPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexArrayPName.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexArrayPNameAPPLE.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexArrayPNameAPPLE.gen.cs index 4c9204dc1e..208f4e95ed 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexArrayPNameAPPLE.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexArrayPNameAPPLE.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribEnum.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribEnum.gen.cs index 90e966e2c4..2500eca702 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribEnum.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribEnum.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribEnumNV.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribEnumNV.gen.cs index 8bd9719e44..8d6fbcf076 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribEnumNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribEnumNV.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribIType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribIType.gen.cs index bdff9cf1cb..38d583688f 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribIType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribIType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribLType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribLType.gen.cs index 722dd86918..8f2b51b595 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribLType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribLType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribPointerProperty.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribPointerProperty.gen.cs index aa7caf8507..f14a948fdc 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribPointerProperty.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribPointerProperty.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribPointerType.gen.cs index 70862db289..9e4c5881c4 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribProperty.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribProperty.gen.cs index 8cb16fe81f..9e4b4570ec 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribProperty.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribProperty.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribType.gen.cs index 84e51d07c4..50b8922196 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexBufferObjectUsage.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexBufferObjectUsage.gen.cs index c08f806dfa..dc3a2026fb 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexBufferObjectUsage.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexBufferObjectUsage.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexHintsMaskPGI.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexHintsMaskPGI.gen.cs index 1c0ff1b319..2cc1b7c34f 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexHintsMaskPGI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexHintsMaskPGI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexPointerType.gen.cs index f749918f73..8c525b5ce0 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexProvokingMode.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexProvokingMode.gen.cs index e3bb639a7a..a4d0e60acc 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexProvokingMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexProvokingMode.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderCoordOutEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderCoordOutEXT.gen.cs index 4d45f52659..e4230c3c2c 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderCoordOutEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderCoordOutEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderOpEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderOpEXT.gen.cs index 23d09398d5..231d91986b 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderOpEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderOpEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderParameterEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderParameterEXT.gen.cs index 6f5fd6c617..904e8dc441 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderParameterEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderParameterEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderStorageTypeEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderStorageTypeEXT.gen.cs index 726beb0653..51289ed63a 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderStorageTypeEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderStorageTypeEXT.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderTextureUnitParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderTextureUnitParameter.gen.cs index 5a5e226595..073b0fda32 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderTextureUnitParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderTextureUnitParameter.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderWriteMask.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderWriteMask.gen.cs index fb1cc5a983..60b6d8a637 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderWriteMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderWriteMask.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexStreamATI.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexStreamATI.gen.cs index b5afa02043..12a2b17a02 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexStreamATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexStreamATI.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexWeightPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexWeightPointerType.gen.cs index 95c345d420..88deab1394 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexWeightPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexWeightPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/WeightPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/WeightPointerType.gen.cs index c779586875..017ddc0ff9 100644 --- a/sources/OpenGL/OpenGL/Enums/WeightPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/WeightPointerType.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/SyncHandle.gen.cs b/sources/OpenGL/OpenGL/SyncHandle.gen.cs index 69dee19c41..aea749194b 100644 --- a/sources/OpenGL/OpenGL/SyncHandle.gen.cs +++ b/sources/OpenGL/OpenGL/SyncHandle.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/gl/GL.gen.cs b/sources/OpenGL/OpenGL/gl/GL.gen.cs index 2acb87dd9f..e78e7731f8 100644 --- a/sources/OpenGL/OpenGL/gl/GL.gen.cs +++ b/sources/OpenGL/OpenGL/gl/GL.gen.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; From 5e069f32b0b947a8d721b5c42f63adc3026c1c40 Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 06:29:08 -0400 Subject: [PATCH 77/93] Have AddVTables add using System.Runtime.CompilerServices to all vtables generated --- sources/SilkTouch/SilkTouch/Mods/AddVTables.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index 6a28d51815..02bcac0161 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -512,7 +512,7 @@ public record Configuration }; } - private class Rewriter(VTable[] vTables, DocumentFactory documentFactory) : CSharpSyntaxRewriter + private class Rewriter(VTable[] vTables) : CSharpSyntaxRewriter { private InterfaceDeclarationSyntax? _currentInterface; private ClassDeclarationSyntax? _currentClass; @@ -1051,9 +1051,6 @@ public IEnumerable> GetExtraFiles() ) ); - documentFactory.AddUsing("Silk.NET.Core.Loader"); - documentFactory.AddUsing("System.Reflection"); - yield return new KeyValuePair( $"{outputName}.gen.cs", CompilationUnit() @@ -1380,8 +1377,12 @@ public void Reset() /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { + documentFactory.AddUsing("Silk.NET.Core.Loader"); + documentFactory.AddUsing("System.Reflection"); + documentFactory.AddUsing("System.Runtime.CompilerServices"); + var vTables = config.VTables; - var rw = new Rewriter(vTables, documentFactory); + var rw = new Rewriter(vTables); var newFiles = new List<(string, CSharpSyntaxNode)>(rw.FullClassNames.Count); var proj = ctx.SourceProject; foreach (var docId in ctx.SourceProject?.DocumentIds ?? []) @@ -1396,7 +1397,9 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) rw.Reset(); proj = doc.WithSyntaxRoot( - rw.Visit(node) ?? throw new InvalidOperationException("Visit returned null") + documentFactory.PopulateDocument( + rw.Visit(node) ?? throw new InvalidOperationException("Visit returned null") + ) ).Project; if (rw.InterfacePartials.Count == 0) { From 46b590401d01edee6b10ae1a752c883fb4d2bc95 Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 07:20:35 -0400 Subject: [PATCH 78/93] Rework how using statements are gathered (WIP) --- .../SilkTouch/SilkTouch/Clang/ClangScraper.cs | 39 +++++++++++++++---- .../SilkTouch/SilkTouch/Mods/AddVTables.cs | 39 ++++++++++--------- .../SilkTouch/Mods/Common/DocumentFactory.cs | 12 +----- sources/SilkTouch/SilkTouch/SilkTouchJob.cs | 4 ++ 4 files changed, 58 insertions(+), 36 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index 476bd8d39f..3a60596dd6 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -339,18 +339,17 @@ await inputResolver.ResolvePath(@override) await (cacheDir?.CommitAsync() ?? ValueTask.CompletedTask); var src = job.SourceProject; + + var documents = new List(); foreach (var (fname, tree) in aggregatedSources) { var root = await tree.GetRootAsync(ct); - src = src - ?.AddDocument( - Path.GetFileName(fname), - documentFactory.PopulateDocument(root), - filePath: src.FullPath(fname) - ) - .Project; + documentFactory.ReportDocument(root); + documents.Add(new ScrapedDocument(fname, root)); } + src = AddDocuments(src, documents); + job.SourceProject = src; var test = job.TestProject; foreach (var (fname, tree) in aggregatedTests) @@ -367,6 +366,27 @@ await tree.GetRootAsync(ct), job.TestProject = test; } + private Project? AddDocuments(Project? project, List documents) + { + if (project == null) + { + return null; + } + + foreach (var (fileName, root) in documents) + { + project = project + .AddDocument( + Path.GetFileName(fileName), + documentFactory.PopulateDocument(root), + filePath: project.FullPath(fileName) + ) + .Project; + } + + return project; + } + /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { @@ -454,6 +474,8 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) ); var src = ctx.SourceProject; var tst = ctx.TestProject; + + var documents = new List(); await foreach ( var file in ( cacheDir?.GetCommittedFilesAsync() ?? AsyncEnumerable.Empty() @@ -482,6 +504,7 @@ var file in ( .GetRootAsync(ct); ref var proj = ref isSource ? ref src : ref tst; var filePath = proj!.FullPath(rel); + documents.Add(new ScrapedDocument(file, root)); proj = proj ?.AddDocument( Path.GetFileName(file), @@ -519,6 +542,8 @@ var file in ( } } + private record struct ScrapedDocument(string FileName, SyntaxNode Root); + ///

/// Returns true if starts with the path . /// The comparison is case-insensitive, handles / and \ slashes as folder separators and diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index 02bcac0161..5c271e085e 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -512,7 +512,7 @@ public record Configuration }; } - private class Rewriter(VTable[] vTables) : CSharpSyntaxRewriter + private class Rewriter(VTable[] vTables, DocumentFactory documentFactory) : CSharpSyntaxRewriter { private InterfaceDeclarationSyntax? _currentInterface; private ClassDeclarationSyntax? _currentClass; @@ -1051,21 +1051,26 @@ public IEnumerable> GetExtraFiles() ) ); + documentFactory.AddUsing("Silk.NET.Core.Loader"); + documentFactory.AddUsing("System.Reflection"); + yield return new KeyValuePair( $"{outputName}.gen.cs", - CompilationUnit() - .WithMembers( - string.IsNullOrWhiteSpace(ns) - ? SingletonList(boilerplate) - : SingletonList( - FileScopedNamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName(ns) - ) - .WithMembers( - SingletonList(boilerplate) - ) - ) - ) + documentFactory.PopulateDocument( + CompilationUnit() + .WithMembers( + string.IsNullOrWhiteSpace(ns) + ? SingletonList(boilerplate) + : SingletonList( + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName(ns) + ) + .WithMembers( + SingletonList(boilerplate) + ) + ) + ) + ) ); } } @@ -1377,12 +1382,8 @@ public void Reset() /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { - documentFactory.AddUsing("Silk.NET.Core.Loader"); - documentFactory.AddUsing("System.Reflection"); - documentFactory.AddUsing("System.Runtime.CompilerServices"); - var vTables = config.VTables; - var rw = new Rewriter(vTables); + var rw = new Rewriter(vTables, documentFactory.Clone()); var newFiles = new List<(string, CSharpSyntaxNode)>(rw.FullClassNames.Count); var proj = ctx.SourceProject; foreach (var docId in ctx.SourceProject?.DocumentIds ?? []) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index eb05f38161..feea701076 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -89,18 +89,10 @@ public string PathForFullyQualified(string fullyQualified, string extension = ". public void ReportDocument(SyntaxNode root) => _reporter.Visit(root); /// - /// Initializes and reports information about a new document. + /// Initializes a new document with using statements, header comments, and a namespace. /// - /// - /// This currently adds using statements and header comments if not added already. - /// This also calls . - /// public T PopulateDocument(T root) - where T : SyntaxNode - { - _reporter.Visit(root); - return (T)_initializer.Visit(root); - } + where T : SyntaxNode => (T)_initializer.Visit(root); /// /// Registers a using directive to be added for all newly initialized documents. diff --git a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs index 24505a8343..9158d374fe 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs @@ -97,6 +97,10 @@ await File.ReadAllTextAsync(Config.DefaultLicenseHeader, ct) ); } + // Add commonly used namespaces + _documentFactory.AddUsing("System.Runtime.CompilerServices"); + _documentFactory.AddUsing("System.Runtime.InteropServices"); + // Just in case a mod gets naughty and tries to modify at the initialization stage. var srcProj = context.SourceProject; var testProj = context.TestProject; From e9ff48ac52c0fb150046dd87ddb8c99ec61b8acd Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 07:39:00 -0400 Subject: [PATCH 79/93] Rework how ClangScraper outputs documents --- .../SilkTouch/SilkTouch/Clang/ClangScraper.cs | 126 ++++++++++-------- 1 file changed, 71 insertions(+), 55 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index 3a60596dd6..0fb44f5779 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -338,55 +338,30 @@ await inputResolver.ResolvePath(@override) await (cacheDir?.CommitAsync() ?? ValueTask.CompletedTask); - var src = job.SourceProject; - - var documents = new List(); - foreach (var (fname, tree) in aggregatedSources) - { - var root = await tree.GetRootAsync(ct); - documentFactory.ReportDocument(root); - documents.Add(new ScrapedDocument(fname, root)); - } + var sourceDocuments = await Task.WhenAll( + aggregatedSources.Select(async kvp => + { + var root = await kvp.Value.GetRootAsync(ct); + return new ScrapedDocument(kvp.Key, root); + }) + ); - src = AddDocuments(src, documents); + var testDocuments = await Task.WhenAll( + aggregatedTests.Select(async kvp => + { + var root = await kvp.Value.GetRootAsync(ct); + return new ScrapedDocument(kvp.Key, root); + }) + ); - job.SourceProject = src; + var src = job.SourceProject; var test = job.TestProject; - foreach (var (fname, tree) in aggregatedTests) - { - test = test - ?.AddDocument( - Path.GetFileName(fname), - await tree.GetRootAsync(ct), - filePath: test.FullPath(fname) - ) - .Project; - } + AddDocuments(ref src, ref test, sourceDocuments, testDocuments); + job.SourceProject = src; job.TestProject = test; } - private Project? AddDocuments(Project? project, List documents) - { - if (project == null) - { - return null; - } - - foreach (var (fileName, root) in documents) - { - project = project - .AddDocument( - Path.GetFileName(fileName), - documentFactory.PopulateDocument(root), - filePath: project.FullPath(fileName) - ) - .Project; - } - - return project; - } - /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { @@ -472,10 +447,11 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) CacheFlags.None, FileAccess.Read ); + var src = ctx.SourceProject; var tst = ctx.TestProject; - - var documents = new List(); + var sourceDocuments = new List(); + var testDocuments = new List(); await foreach ( var file in ( cacheDir?.GetCommittedFilesAsync() ?? AsyncEnumerable.Empty() @@ -502,21 +478,20 @@ var file in ( var root = await CSharpSyntaxTree .ParseText(SourceText.From(content), path: rel, cancellationToken: ct) .GetRootAsync(ct); - ref var proj = ref isSource ? ref src : ref tst; - var filePath = proj!.FullPath(rel); - documents.Add(new ScrapedDocument(file, root)); - proj = proj - ?.AddDocument( - Path.GetFileName(file), - documentFactory.PopulateDocument(root), - filePath: filePath - ) - .Project; + if (isSource) + { + sourceDocuments.Add(new ScrapedDocument(rel, root)); + } + else + { + testDocuments.Add(new ScrapedDocument(rel, root)); + } } skip = cacheDir is not null; if (!skip) { + AddDocuments(ref src, ref tst, sourceDocuments, testDocuments); ctx.SourceProject = src; ctx.TestProject = tst; } @@ -542,7 +517,48 @@ var file in ( } } - private record struct ScrapedDocument(string FileName, SyntaxNode Root); + private record struct ScrapedDocument(string FilePath, SyntaxNode Root); + + private void AddDocuments( + ref Project? sourceProject, + ref Project? testProject, + ICollection sourceDocuments, + ICollection testDocuments + ) + { + foreach (var scrapedDocument in sourceDocuments) + { + documentFactory.ReportDocument(scrapedDocument.Root); + } + + if (sourceProject != null) + { + foreach (var (filePath, root) in sourceDocuments) + { + sourceProject = sourceProject + .AddDocument( + Path.GetFileName(filePath), + documentFactory.PopulateDocument(root), + filePath: sourceProject.FullPath(filePath) + ) + .Project; + } + } + + if (testProject != null) + { + foreach (var (filePath, tree) in testDocuments) + { + testProject = testProject + ?.AddDocument( + Path.GetFileName(filePath), + tree, + filePath: testProject.FullPath(filePath) + ) + .Project; + } + } + } /// /// Returns true if starts with the path . From d19f8b8c019a4292da81962bbb8ce3d07331182d Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 07:54:57 -0400 Subject: [PATCH 80/93] Cleanup --- sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index 0fb44f5779..0686a69fcd 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -357,7 +357,6 @@ await inputResolver.ResolvePath(@override) var src = job.SourceProject; var test = job.TestProject; AddDocuments(ref src, ref test, sourceDocuments, testDocuments); - job.SourceProject = src; job.TestProject = test; } @@ -526,9 +525,9 @@ private void AddDocuments( ICollection testDocuments ) { - foreach (var scrapedDocument in sourceDocuments) + foreach (var document in sourceDocuments) { - documentFactory.ReportDocument(scrapedDocument.Root); + documentFactory.ReportDocument(document.Root); } if (sourceProject != null) @@ -547,12 +546,12 @@ ICollection testDocuments if (testProject != null) { - foreach (var (filePath, tree) in testDocuments) + foreach (var (filePath, root) in testDocuments) { testProject = testProject ?.AddDocument( Path.GetFileName(filePath), - tree, + root, filePath: testProject.FullPath(filePath) ) .Project; From 180bc570147cdf3db959a93fa844a1f04d4e4f81 Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 08:06:33 -0400 Subject: [PATCH 81/93] Unify the scrape and read from cache paths of ClangScraper This was driving me crazy --- sources/SilkTouch/Jobs/Jobs.Microsoft.cs | 2 +- .../SilkTouch/SilkTouch/Clang/ClangScraper.cs | 185 +++++++----------- 2 files changed, 74 insertions(+), 113 deletions(-) diff --git a/sources/SilkTouch/Jobs/Jobs.Microsoft.cs b/sources/SilkTouch/Jobs/Jobs.Microsoft.cs index 11b612a05e..1f37b30ae3 100644 --- a/sources/SilkTouch/Jobs/Jobs.Microsoft.cs +++ b/sources/SilkTouch/Jobs/Jobs.Microsoft.cs @@ -45,7 +45,7 @@ public static SilkTouchHost DefineMicrosoftJob(this SilkTouchHost host) => "eng/submodules/terrafx.interop.windows/sources/Interop/Windows", InputTestRoot = "eng/submodules/terrafx.interop.windows/tests/Interop/Windows", - SkipScrapeIf = ["!win"], + SkipScrapeIf = static () => !OperatingSystem.IsWindows(), } ) .ChangeNamespace( diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index 0686a69fcd..c92a9df77b 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -73,10 +73,9 @@ public record Configuration public int Parallelism { get; init; } /// - /// Skips generation if any of the given strings are in the applicable "skip ifs" are set. + /// Skips generation if evaluates to true. /// - // TODO document - public string[]? SkipScrapeIf { get; init; } + public Func SkipScrapeIf { get; init; } = static () => false; /// /// Forces the scraper to use cache. Best used on the command line. @@ -215,14 +214,12 @@ out var handle /// Runs ClangSharp for each of the given response files and aggregates the raw outputs. /// /// The response files. - /// The job context. /// The configuration. /// The cache key. /// The cancellation token. /// The scraper output wasn't as expected. - private async Task ScrapeBindingsAsync( + private async Task ScrapeBindingsAsync( IReadOnlyList rsps, - IModContext job, Configuration cfg, string cacheKey, CancellationToken ct = default @@ -354,11 +351,7 @@ await inputResolver.ResolvePath(@override) }) ); - var src = job.SourceProject; - var test = job.TestProject; - AddDocuments(ref src, ref test, sourceDocuments, testDocuments); - job.SourceProject = src; - job.TestProject = test; + return new ScrapeResult(sourceDocuments, testDocuments); } /// @@ -369,31 +362,6 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) throw new NotSupportedException("I/O not available."); } - var applicableSkipIfs = new HashSet(StringComparer.OrdinalIgnoreCase) - { - // Windows-specific conditions - OperatingSystem.IsWindows() - ? "win" - : "!win", - OperatingSystem.IsWindowsVersionAtLeast(10) ? "win10" : "!win10", - // Linux-specific conditions - OperatingSystem.IsLinux() - ? "linux" - : "!linux", - // macOS-specific conditions - .NET 6 doesn't support anything less than Mojave - OperatingSystem.IsMacOS() - ? "macos" - : "!macos", - OperatingSystem.IsMacOSVersionAtLeast(10, 14) ? "macos-mojave" : "!macos-mojave", - OperatingSystem.IsMacOSVersionAtLeast(10, 15) ? "macos-catalina" : "!macos-catalina", - OperatingSystem.IsMacOSVersionAtLeast(11) ? "macos-big-sur" : "!macos-big-sur", - OperatingSystem.IsMacOSVersionAtLeast(12) ? "macos-monterey" : "!macos-monterey", - // Others - VisualStudioResolver.TryGetVisualStudioInfo(out _) - ? "vs" - : "!vs", - }; - // Read the configuration. var resolvedConfig = await inputResolver.Resolve(config); @@ -416,89 +384,74 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) // Resolve any foreign paths referenced in the response files await inputResolver.ResolveInPlace(rsps); - // Should we completely skip running ClangSharp (e.g. we can't get Windows SDK bindings on macOS) - var skip = ( - resolvedConfig.SkipScrapeIf?.Any(applicableSkipIfs.Contains) - ).GetValueOrDefault(); + // Try generating the raw bindings with ClangSharp + // If scraping needs to be skipped or if the scrape fails, then fall back to a cache if available + var skipScrape = config.SkipScrapeIf.Invoke(); var cacheKey = $"{ctx.JobKey}-ClangSharp"; + Exception? innerException = null; - try + ScrapeResult? scrapeResult = null; + if (!skipScrape) { - if (!skip) + try { - // Run the scraper over the response files - await ScrapeBindingsAsync(rsps, ctx, resolvedConfig, cacheKey, ct); + scrapeResult = await ScrapeBindingsAsync(rsps, resolvedConfig, cacheKey, ct); } - } - catch (Exception e) - { - logger.LogError(e, "Failed to scrape raw bindings, will attempt to use the cache..."); - skip = true; - innerException = e; - } - finally - { - if (skip && cacheProvider is not null) + catch (Exception e) { - await using var cacheDir = await cacheProvider.GetDirectoryAsync( - cacheKey, - CacheIntent.StageIntermediateOutput, - CacheFlags.None, - FileAccess.Read + logger.LogError( + e, + "Failed to scrape raw bindings, will attempt to use the cache..." ); + innerException = e; + } + } - var src = ctx.SourceProject; - var tst = ctx.TestProject; - var sourceDocuments = new List(); - var testDocuments = new List(); - await foreach ( - var file in ( - cacheDir?.GetCommittedFilesAsync() ?? AsyncEnumerable.Empty() - ).WithCancellation(ct) - ) - { - await cacheDir!.GetCommittedFileAsync(file); - var isSource = file.StartsWith("sources"); - var isTest = file.StartsWith("tests"); - if (!isSource && !isTest) - { - continue; - } + if (!scrapeResult.HasValue && cacheProvider is not null) + { + await using var cacheDir = await cacheProvider.GetDirectoryAsync( + cacheKey, + CacheIntent.StageIntermediateOutput, + CacheFlags.None, + FileAccess.Read + ); - // Have to do this if statement this way as we can't have a ref var over an await point - if ((isSource && src is null) || (isTest && tst is null)) - { - continue; - } - - var rel = file[(isSource ? "sources".Length : "tests".Length)..] - .TrimStart('/', '\\'); - var content = await cacheDir.GetCommittedFileAsync(file); - var root = await CSharpSyntaxTree - .ParseText(SourceText.From(content), path: rel, cancellationToken: ct) - .GetRootAsync(ct); - if (isSource) - { - sourceDocuments.Add(new ScrapedDocument(rel, root)); - } - else - { - testDocuments.Add(new ScrapedDocument(rel, root)); - } + var sourceDocuments = new List(); + var testDocuments = new List(); + await foreach ( + var file in ( + cacheDir?.GetCommittedFilesAsync() ?? AsyncEnumerable.Empty() + ).WithCancellation(ct) + ) + { + await cacheDir!.GetCommittedFileAsync(file); + var isSource = file.StartsWith("sources"); + var isTest = file.StartsWith("tests"); + if (!isSource && !isTest) + { + continue; } - skip = cacheDir is not null; - if (!skip) + var rel = file[(isSource ? "sources".Length : "tests".Length)..] + .TrimStart('/', '\\'); + var content = await cacheDir.GetCommittedFileAsync(file); + var root = await CSharpSyntaxTree + .ParseText(SourceText.From(content), path: rel, cancellationToken: ct) + .GetRootAsync(ct); + if (isSource) { - AddDocuments(ref src, ref tst, sourceDocuments, testDocuments); - ctx.SourceProject = src; - ctx.TestProject = tst; + sourceDocuments.Add(new ScrapedDocument(rel, root)); + } + else + { + testDocuments.Add(new ScrapedDocument(rel, root)); } } + + scrapeResult = new ScrapeResult(sourceDocuments, testDocuments); } - // CA2219: Do not raise exceptions in exception clauses - if (skip) + if (!scrapeResult.HasValue) { if (innerException is not null) { @@ -514,25 +467,30 @@ var file in ( + "fall back on." ); } + + AddDocuments(ctx, scrapeResult.Value); } private record struct ScrapedDocument(string FilePath, SyntaxNode Root); - private void AddDocuments( - ref Project? sourceProject, - ref Project? testProject, - ICollection sourceDocuments, - ICollection testDocuments - ) + private record struct ScrapeResult( + ICollection SourceDocuments, + ICollection TestDocuments + ); + + private void AddDocuments(IModContext ctx, ScrapeResult result) { - foreach (var document in sourceDocuments) + var sourceProject = ctx.SourceProject; + var testProject = ctx.TestProject; + + foreach (var document in result.SourceDocuments) { documentFactory.ReportDocument(document.Root); } if (sourceProject != null) { - foreach (var (filePath, root) in sourceDocuments) + foreach (var (filePath, root) in result.SourceDocuments) { sourceProject = sourceProject .AddDocument( @@ -546,7 +504,7 @@ ICollection testDocuments if (testProject != null) { - foreach (var (filePath, root) in testDocuments) + foreach (var (filePath, root) in result.TestDocuments) { testProject = testProject ?.AddDocument( @@ -557,6 +515,9 @@ ICollection testDocuments .Project; } } + + ctx.SourceProject = sourceProject; + ctx.TestProject = testProject; } /// From 70b412e6d9b645f5f489988ed547d06625e078f0 Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 08:56:08 -0400 Subject: [PATCH 82/93] Fix source documents being dropped --- sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index c92a9df77b..8f4807076f 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -480,14 +480,12 @@ ICollection TestDocuments private void AddDocuments(IModContext ctx, ScrapeResult result) { - var sourceProject = ctx.SourceProject; - var testProject = ctx.TestProject; - foreach (var document in result.SourceDocuments) { documentFactory.ReportDocument(document.Root); } + var sourceProject = ctx.SourceProject; if (sourceProject != null) { foreach (var (filePath, root) in result.SourceDocuments) @@ -501,7 +499,9 @@ private void AddDocuments(IModContext ctx, ScrapeResult result) .Project; } } + ctx.SourceProject = sourceProject; + var testProject = ctx.TestProject; if (testProject != null) { foreach (var (filePath, root) in result.TestDocuments) @@ -515,8 +515,6 @@ private void AddDocuments(IModContext ctx, ScrapeResult result) .Project; } } - - ctx.SourceProject = sourceProject; ctx.TestProject = testProject; } From f636e7e4315bcbde0a480634c6bcc829039fb0c1 Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 22:07:35 -0400 Subject: [PATCH 83/93] Fix using statement formatting --- sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs index feea701076..2e23f249e0 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/DocumentFactory.cs @@ -107,8 +107,8 @@ public void AddUsing(string ns) => /// The using directive. public void AddUsing(UsingDirectiveSyntax directive) { - var directiveNoTrivia = directive.WithoutTrivia(); - var discriminator = GetDiscriminator(directiveNoTrivia); + directive = directive.WithoutTrivia().NormalizeWhitespace(); + var discriminator = GetDiscriminator(directive); if (_usingDiscriminators.Add(discriminator)) { var index = ~_orderedUsingDiscriminators.BinarySearch( @@ -117,7 +117,7 @@ public void AddUsing(UsingDirectiveSyntax directive) ); _orderedUsingDiscriminators.Insert(index, discriminator); - _usings.Insert(index, directiveNoTrivia); + _usings.Insert(index, directive); } } From f92f7cc01d0789ed5bcd0b4b76dfbc3e7304e368 Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 22:07:48 -0400 Subject: [PATCH 84/93] Isolate using statements added by AddVTables --- .../SilkTouch/SilkTouch/Mods/AddVTables.cs | 55 ++++++++++--------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs index 5c271e085e..4294987eb0 100644 --- a/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs +++ b/sources/SilkTouch/SilkTouch/Mods/AddVTables.cs @@ -27,7 +27,8 @@ namespace Silk.NET.SilkTouch.Mods; /// -based partial class implementation of the static interface. However, in some cases this /// could be any other implementation such as the implementation. /// -public class AddVTables(AddVTables.Configuration config, DocumentFactory documentFactory) : IMod +public class AddVTables(AddVTables.Configuration config, DocumentFactory sharedDocumentFactory) + : IMod { /// /// Base class for VTable configurations. @@ -512,7 +513,7 @@ public record Configuration }; } - private class Rewriter(VTable[] vTables, DocumentFactory documentFactory) : CSharpSyntaxRewriter + private class Rewriter(VTable[] vTables) : CSharpSyntaxRewriter { private InterfaceDeclarationSyntax? _currentInterface; private ClassDeclarationSyntax? _currentClass; @@ -1051,26 +1052,21 @@ public IEnumerable> GetExtraFiles() ) ); - documentFactory.AddUsing("Silk.NET.Core.Loader"); - documentFactory.AddUsing("System.Reflection"); - yield return new KeyValuePair( $"{outputName}.gen.cs", - documentFactory.PopulateDocument( - CompilationUnit() - .WithMembers( - string.IsNullOrWhiteSpace(ns) - ? SingletonList(boilerplate) - : SingletonList( - FileScopedNamespaceDeclaration( - ModUtils.NamespaceIntoIdentifierName(ns) - ) - .WithMembers( - SingletonList(boilerplate) - ) - ) - ) - ) + CompilationUnit() + .WithMembers( + string.IsNullOrWhiteSpace(ns) + ? SingletonList(boilerplate) + : SingletonList( + FileScopedNamespaceDeclaration( + ModUtils.NamespaceIntoIdentifierName(ns) + ) + .WithMembers( + SingletonList(boilerplate) + ) + ) + ) ); } } @@ -1382,8 +1378,12 @@ public void Reset() /// public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) { + var documentFactory = sharedDocumentFactory.Clone(); + documentFactory.AddUsing("Silk.NET.Core.Loader"); + documentFactory.AddUsing("System.Reflection"); + var vTables = config.VTables; - var rw = new Rewriter(vTables, documentFactory.Clone()); + var rw = new Rewriter(vTables); var newFiles = new List<(string, CSharpSyntaxNode)>(rw.FullClassNames.Count); var proj = ctx.SourceProject; foreach (var docId in ctx.SourceProject?.DocumentIds ?? []) @@ -1397,11 +1397,14 @@ public async Task ExecuteAsync(IModContext ctx, CancellationToken ct = default) } rw.Reset(); - proj = doc.WithSyntaxRoot( - documentFactory.PopulateDocument( - rw.Visit(node) ?? throw new InvalidOperationException("Visit returned null") - ) - ).Project; + var newNode = + rw.Visit(node) ?? throw new InvalidOperationException("Visit returned null"); + if (newNode != node) + { + newNode = documentFactory.PopulateDocument(newNode); + } + + proj = doc.WithSyntaxRoot(newNode).Project; if (rw.InterfacePartials.Count == 0) { continue; From aa1a059a99f6f1cc3088059efc14ca2b5dcecf4f Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 20:19:08 -0400 Subject: [PATCH 85/93] Regenerate all bindings except Microsoft on Windows --- .silktouch/openal-clangsharp.stout | Bin 40932 -> 40932 bytes .silktouch/opencl-clangsharp.stout | Bin 46376 -> 46376 bytes .silktouch/opengl-clangsharp.stout | Bin 232226 -> 232226 bytes .silktouch/openxr-clangsharp.stout | Bin 1019435 -> 1019435 bytes .silktouch/sdl-clangsharp.stout | Bin 230648 -> 230648 bytes .silktouch/vulkan-clangsharp.stout | Bin 2169860 -> 2169860 bytes sources/OpenAL/OpenAL/al/AL.gen.cs | 2 ++ sources/OpenAL/OpenAL/al/ALContext.gen.cs | 2 ++ sources/OpenAL/OpenAL/al/IAL.gen.cs | 2 ++ sources/OpenAL/OpenAL/al/IALContext.gen.cs | 2 ++ .../OpenCL/OpenCL/OpenCL/BufferRegion.gen.cs | 1 + sources/OpenCL/OpenCL/OpenCL/Cl.gen.cs | 2 ++ ...gerDotProductAccelerationProperties.gen.cs | 1 + ...DotProductAccelerationPropertiesKHR.gen.cs | 1 + .../OpenCL/OpenCL/DevicePciBusInfoKHR.gen.cs | 1 + sources/OpenCL/OpenCL/OpenCL/ICl.gen.cs | 2 ++ sources/OpenCL/OpenCL/OpenCL/ImageDesc.gen.cs | 1 + .../OpenCL/OpenCL/OpenCL/ImageFormat.gen.cs | 1 + .../OpenCL/KernelAllocationInfoINTEL.gen.cs | 1 + .../MemAndroidNativeBufferHostPtr.gen.cs | 1 + .../OpenCL/OpenCL/OpenCL/MemExtHostPtr.gen.cs | 1 + .../OpenCL/OpenCL/OpenCL/MemIonHostPtr.gen.cs | 1 + .../OpenCL/MotionEstimationDescINTEL.gen.cs | 1 + .../OpenCL/OpenCL/OpenCL/NameVersion.gen.cs | 1 + .../OpenCL/OpenCL/NameVersionKHR.gen.cs | 1 + .../OpenCL/QueueFamilyPropertiesINTEL.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/AccumOp.gen.cs | 1 + .../OpenGL/OpenGL/Enums/AlphaFunction.gen.cs | 1 + .../OpenGL/Enums/ArrayObjectPNameATI.gen.cs | 1 + .../OpenGL/Enums/ArrayObjectUsageATI.gen.cs | 1 + .../Enums/AtomicCounterBufferPName.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/AttribMask.gen.cs | 1 + .../OpenGL/OpenGL/Enums/AttributeType.gen.cs | 1 + .../Enums/BindTransformFeedbackTarget.gen.cs | 1 + .../OpenGL/Enums/BinormalPointerType.gen.cs | 1 + .../OpenGL/Enums/BlendEquationMode.gen.cs | 1 + .../OpenGL/OpenGL/Enums/BlendingFactor.gen.cs | 1 + .../OpenGL/Enums/BlitFramebufferFilter.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/Boolean.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/Buffer.gen.cs | 1 + .../OpenGL/OpenGL/Enums/BufferAccess.gen.cs | 1 + .../OpenGL/OpenGL/Enums/BufferBitQCOM.gen.cs | 1 + .../OpenGL/OpenGL/Enums/BufferPName.gen.cs | 1 + .../OpenGL/Enums/BufferPointerName.gen.cs | 1 + .../OpenGL/Enums/BufferStorageMask.gen.cs | 1 + .../OpenGL/Enums/BufferStorageTarget.gen.cs | 1 + .../OpenGL/OpenGL/Enums/BufferTarget.gen.cs | 1 + .../OpenGL/OpenGL/Enums/BufferUsage.gen.cs | 1 + .../OpenGL/OpenGL/Enums/ClampColorMode.gen.cs | 1 + .../OpenGL/Enums/ClampColorTarget.gen.cs | 1 + .../OpenGL/Enums/ClearBufferMask.gen.cs | 1 + .../OpenGL/Enums/ClientAttribMask.gen.cs | 1 + .../OpenGL/Enums/ClipControlDepth.gen.cs | 1 + .../OpenGL/Enums/ClipControlOrigin.gen.cs | 1 + .../OpenGL/OpenGL/Enums/ClipPlaneName.gen.cs | 1 + .../OpenGL/OpenGL/Enums/ColorBuffer.gen.cs | 1 + .../Enums/ColorMaterialParameter.gen.cs | 1 + .../OpenGL/Enums/ColorPointerType.gen.cs | 1 + .../Enums/ColorTableParameterPName.gen.cs | 1 + .../OpenGL/Enums/ColorTableTarget.gen.cs | 1 + .../OpenGL/Enums/ColorTableTargetSGI.gen.cs | 1 + .../OpenGL/OpenGL/Enums/CombinerBias.gen.cs | 1 + .../Enums/CombinerComponentUsage.gen.cs | 1 + .../OpenGL/Enums/CombinerMappingNV.gen.cs | 1 + .../OpenGL/Enums/CombinerParameterNV.gen.cs | 1 + .../OpenGL/Enums/CombinerPortion.gen.cs | 1 + .../OpenGL/Enums/CombinerRegister.gen.cs | 1 + .../OpenGL/OpenGL/Enums/CombinerScale.gen.cs | 1 + .../OpenGL/Enums/CombinerStageNV.gen.cs | 1 + .../OpenGL/Enums/CombinerVariableNV.gen.cs | 1 + .../OpenGL/Enums/CommandOpcodesNV.gen.cs | 1 + .../OpenGL/Enums/ConditionalRenderMode.gen.cs | 1 + .../OpenGL/OpenGL/Enums/ContainerType.gen.cs | 1 + .../OpenGL/Enums/ContextFlagMask.gen.cs | 1 + .../OpenGL/Enums/ContextProfileMask.gen.cs | 1 + .../OpenGL/Enums/ConvolutionBorderMode.gen.cs | 1 + .../OpenGL/Enums/ConvolutionParameter.gen.cs | 1 + .../OpenGL/Enums/ConvolutionTarget.gen.cs | 1 + .../OpenGL/Enums/ConvolutionTargetEXT.gen.cs | 1 + .../Enums/CopyBufferSubDataTarget.gen.cs | 1 + .../Enums/CopyImageSubDataTarget.gen.cs | 1 + .../OpenGL/Enums/CullParameterEXT.gen.cs | 1 + .../OpenGL/OpenGL/Enums/DataTypeEXT.gen.cs | 1 + .../OpenGL/OpenGL/Enums/DebugSeverity.gen.cs | 1 + .../OpenGL/OpenGL/Enums/DebugSource.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/DebugType.gen.cs | 1 + .../OpenGL/OpenGL/Enums/DepthFunction.gen.cs | 1 + .../Enums/DepthStencilTextureMode.gen.cs | 1 + .../OpenGL/OpenGL/Enums/DrawBufferMode.gen.cs | 1 + .../OpenGL/Enums/DrawElementsType.gen.cs | 1 + .../OpenGL/Enums/ElementPointerType.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/EnableCap.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/ErrorCode.gen.cs | 1 + .../OpenGL/OpenGL/Enums/EvalMapsModeNV.gen.cs | 1 + .../OpenGL/OpenGL/Enums/EvalTargetNV.gen.cs | 1 + .../OpenGL/Enums/ExternalHandleType.gen.cs | 1 + .../OpenGL/OpenGL/Enums/FeedBackToken.gen.cs | 1 + .../OpenGL/OpenGL/Enums/FeedbackType.gen.cs | 1 + .../OpenGL/Enums/FenceConditionNV.gen.cs | 1 + .../OpenGL/Enums/FenceParameterNameNV.gen.cs | 1 + .../OpenGL/OpenGL/Enums/FfdMaskSGIX.gen.cs | 1 + .../OpenGL/OpenGL/Enums/FfdTargetSGIX.gen.cs | 1 + .../OpenGL/OpenGL/Enums/FogCoordSrc.gen.cs | 1 + .../Enums/FogCoordinatePointerType.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/FogMode.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/FogPName.gen.cs | 1 + .../OpenGL/OpenGL/Enums/FogParameter.gen.cs | 1 + .../OpenGL/Enums/FogPointerTypeEXT.gen.cs | 1 + .../OpenGL/Enums/FogPointerTypeIBM.gen.cs | 1 + .../Enums/FoveationConfigBitQCOM.gen.cs | 1 + .../FragmentLightModelParameterSGIX.gen.cs | 1 + .../OpenGL/Enums/FragmentLightNameSGIX.gen.cs | 1 + .../Enums/FragmentLightParameter.gen.cs | 1 + .../OpenGL/OpenGL/Enums/FragmentOp1ATI.gen.cs | 1 + .../OpenGL/OpenGL/Enums/FragmentOp2ATI.gen.cs | 1 + .../OpenGL/OpenGL/Enums/FragmentOp3ATI.gen.cs | 1 + .../FragmentShaderColorModMaskATI.gen.cs | 1 + .../OpenGL/Enums/FragmentShaderConATI.gen.cs | 1 + .../Enums/FragmentShaderDestMask.gen.cs | 1 + .../Enums/FragmentShaderDestModMask.gen.cs | 1 + .../Enums/FragmentShaderGenericSource.gen.cs | 1 + .../OpenGL/Enums/FragmentShaderRegATI.gen.cs | 1 + .../Enums/FragmentShaderTextureSource.gen.cs | 1 + .../Enums/FragmentShaderValueRep.gen.cs | 1 + .../OpenGL/Enums/FramebufferAttachment.gen.cs | 1 + .../FramebufferAttachmentParameterName.gen.cs | 1 + .../Enums/FramebufferParameterName.gen.cs | 1 + .../OpenGL/Enums/FramebufferStatus.gen.cs | 1 + .../OpenGL/Enums/FramebufferTarget.gen.cs | 1 + .../OpenGL/Enums/FrontFaceDirection.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/GLEnum.gen.cs | 1 + .../Enums/GetFramebufferParameter.gen.cs | 1 + .../Enums/GetHistogramParameterPName.gen.cs | 1 + .../OpenGL/OpenGL/Enums/GetMapQuery.gen.cs | 1 + .../Enums/GetMinmaxParameterPName.gen.cs | 1 + .../OpenGL/Enums/GetMultisamplePName.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/GetPName.gen.cs | 1 + .../OpenGL/Enums/GetPointervPName.gen.cs | 1 + .../Enums/GetTexBumpParameterATI.gen.cs | 1 + .../OpenGL/Enums/GetTextureParameter.gen.cs | 1 + .../OpenGL/Enums/GetVariantValueEXT.gen.cs | 1 + .../OpenGL/Enums/GraphicsResetStatus.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/HintMode.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/HintTarget.gen.cs | 1 + .../OpenGL/OpenGL/Enums/HintTargetPGI.gen.cs | 1 + .../OpenGL/Enums/HistogramTarget.gen.cs | 1 + .../OpenGL/Enums/HistogramTargetEXT.gen.cs | 1 + .../OpenGL/Enums/ImageTransformPNameHP.gen.cs | 1 + .../Enums/ImageTransformTargetHP.gen.cs | 1 + .../OpenGL/OpenGL/Enums/IndexFunction.gen.cs | 1 + .../Enums/IndexMaterialParameter.gen.cs | 1 + .../OpenGL/Enums/IndexPointerType.gen.cs | 1 + .../Enums/InstancedPathCoverMode.gen.cs | 1 + .../Enums/InterleavedArrayFormat.gen.cs | 1 + .../OpenGL/OpenGL/Enums/InternalFormat.gen.cs | 1 + .../OpenGL/Enums/InternalFormatPName.gen.cs | 1 + .../InvalidateFramebufferAttachment.gen.cs | 1 + .../OpenGL/OpenGL/Enums/LightEnvMode.gen.cs | 1 + .../OpenGL/Enums/LightEnvParameterSGIX.gen.cs | 1 + .../Enums/LightModelColorControl.gen.cs | 1 + .../OpenGL/Enums/LightModelParameter.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/LightName.gen.cs | 1 + .../OpenGL/OpenGL/Enums/LightParameter.gen.cs | 1 + .../OpenGL/Enums/LightTextureMode.gen.cs | 1 + .../OpenGL/Enums/LightTexturePNameEXT.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/ListMode.gen.cs | 1 + .../OpenGL/OpenGL/Enums/ListNameType.gen.cs | 1 + .../OpenGL/Enums/ListParameterName.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/LogicOp.gen.cs | 1 + .../OpenGL/Enums/MapAttribParameterNV.gen.cs | 1 + .../OpenGL/Enums/MapBufferAccessMask.gen.cs | 1 + .../OpenGL/OpenGL/Enums/MapParameterNV.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/MapQuery.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/MapTarget.gen.cs | 1 + .../OpenGL/Enums/MapTextureFormatINTEL.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/MapType.gen.cs | 1 + .../OpenGL/Enums/MaterialParameter.gen.cs | 1 + .../Enums/MatrixIndexPointerType.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/MatrixMode.gen.cs | 1 + .../OpenGL/Enums/MemoryBarrierMask.gen.cs | 1 + .../Enums/MemoryObjectParameterName.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/MeshMode1.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/MeshMode2.gen.cs | 1 + .../OpenGL/OpenGL/Enums/MinmaxTarget.gen.cs | 1 + .../OpenGL/Enums/MinmaxTargetEXT.gen.cs | 1 + .../OpenGL/Enums/NormalPointerType.gen.cs | 1 + .../OpenGL/Enums/ObjectIdentifier.gen.cs | 1 + .../OpenGL/Enums/ObjectTypeAPPLE.gen.cs | 1 + .../Enums/OcclusionQueryEventMaskAMD.gen.cs | 1 + .../OcclusionQueryParameterNameNV.gen.cs | 1 + .../OpenGL/Enums/PNTrianglesPNameATI.gen.cs | 1 + .../OpenGL/Enums/ParameterRangeEXT.gen.cs | 1 + .../OpenGL/Enums/PatchParameterName.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/PathColor.gen.cs | 1 + .../OpenGL/Enums/PathColorFormat.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PathCoordType.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PathCoverMode.gen.cs | 1 + .../OpenGL/Enums/PathElementType.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PathFillMode.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PathFontStyle.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PathFontTarget.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PathGenMode.gen.cs | 1 + .../Enums/PathHandleMissingGlyphs.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PathListMode.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PathMetricMask.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PathParameter.gen.cs | 1 + .../OpenGL/Enums/PathRenderingTokenNV.gen.cs | 1 + .../OpenGL/Enums/PathStringFormat.gen.cs | 1 + .../OpenGL/Enums/PathTransformType.gen.cs | 1 + .../OpenGL/Enums/PerfQueryDataFlags.gen.cs | 1 + .../PerformanceQueryCapsMaskINTEL.gen.cs | 1 + .../OpenGL/Enums/PipelineParameterName.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PixelCopyType.gen.cs | 1 + .../Enums/PixelDataRangeTargetNV.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PixelFormat.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/PixelMap.gen.cs | 1 + .../OpenGL/Enums/PixelStoreParameter.gen.cs | 1 + .../Enums/PixelStoreResampleMode.gen.cs | 1 + .../Enums/PixelStoreSubsampleRate.gen.cs | 1 + .../OpenGL/Enums/PixelTexGenMode.gen.cs | 1 + .../Enums/PixelTexGenParameterNameSGIS.gen.cs | 1 + .../Enums/PixelTransferParameter.gen.cs | 1 + .../Enums/PixelTransformPNameEXT.gen.cs | 1 + .../Enums/PixelTransformTargetEXT.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/PixelType.gen.cs | 1 + .../OpenGL/Enums/PointParameterName.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PolygonMode.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PrecisionType.gen.cs | 1 + .../OpenGL/Enums/PreserveModeATI.gen.cs | 1 + .../OpenGL/OpenGL/Enums/PrimitiveType.gen.cs | 1 + .../OpenGL/OpenGL/Enums/ProgramFormat.gen.cs | 1 + .../OpenGL/Enums/ProgramInterface.gen.cs | 1 + .../OpenGL/Enums/ProgramInterfacePName.gen.cs | 1 + .../OpenGL/Enums/ProgramParameterPName.gen.cs | 1 + .../OpenGL/Enums/ProgramProperty.gen.cs | 1 + .../Enums/ProgramResourceProperty.gen.cs | 1 + .../OpenGL/Enums/ProgramStagePName.gen.cs | 1 + .../OpenGL/Enums/ProgramStringProperty.gen.cs | 1 + .../OpenGL/OpenGL/Enums/ProgramTarget.gen.cs | 1 + .../OpenGL/Enums/QueryCounterTarget.gen.cs | 1 + .../Enums/QueryObjectParameterName.gen.cs | 1 + .../OpenGL/Enums/QueryParameterName.gen.cs | 1 + .../OpenGL/OpenGL/Enums/QueryTarget.gen.cs | 1 + .../OpenGL/OpenGL/Enums/ReadBufferMode.gen.cs | 1 + .../Enums/RenderbufferParameterName.gen.cs | 1 + .../OpenGL/Enums/RenderbufferTarget.gen.cs | 1 + .../OpenGL/OpenGL/Enums/RenderingMode.gen.cs | 1 + .../OpenGL/Enums/ReplacementCodeType.gen.cs | 1 + .../OpenGL/Enums/SamplePatternEXT.gen.cs | 1 + .../OpenGL/Enums/SamplePatternSGIS.gen.cs | 1 + .../OpenGL/Enums/SamplerParameterF.gen.cs | 1 + .../OpenGL/Enums/SamplerParameterI.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/ScalarType.gen.cs | 1 + .../Enums/SecondaryColorPointerType.gen.cs | 1 + .../Enums/SemaphoreParameterName.gen.cs | 1 + .../OpenGL/Enums/SeparableTarget.gen.cs | 1 + .../OpenGL/Enums/SeparableTargetEXT.gen.cs | 1 + .../OpenGL/Enums/ShaderBinaryFormat.gen.cs | 1 + .../OpenGL/Enums/ShaderParameterName.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/ShaderType.gen.cs | 1 + .../OpenGL/OpenGL/Enums/ShadingModel.gen.cs | 1 + .../OpenGL/OpenGL/Enums/ShadingRate.gen.cs | 1 + .../OpenGL/Enums/ShadingRateCombinerOp.gen.cs | 1 + .../OpenGL/Enums/ShadingRateQCOM.gen.cs | 1 + .../OpenGL/Enums/SizedInternalFormat.gen.cs | 1 + .../OpenGL/OpenGL/Enums/SpriteModeSGIX.gen.cs | 1 + .../Enums/SpriteParameterNameSGIX.gen.cs | 1 + .../OpenGL/Enums/StencilFunction.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/StencilOp.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/StringName.gen.cs | 1 + .../Enums/SubgroupSupportedFeatures.gen.cs | 1 + .../Enums/SubroutineParameterName.gen.cs | 1 + .../OpenGL/OpenGL/Enums/SwizzleOpATI.gen.cs | 1 + .../OpenGL/Enums/SyncBehaviorFlags.gen.cs | 1 + .../OpenGL/OpenGL/Enums/SyncCondition.gen.cs | 1 + .../OpenGL/OpenGL/Enums/SyncObjectMask.gen.cs | 1 + .../OpenGL/Enums/SyncParameterName.gen.cs | 1 + sources/OpenGL/OpenGL/Enums/SyncStatus.gen.cs | 1 + .../OpenGL/Enums/TangentPointerType.gen.cs | 1 + .../OpenGL/Enums/TexBumpParameterATI.gen.cs | 1 + .../OpenGL/Enums/TexCoordPointerType.gen.cs | 1 + .../OpenGL/Enums/TexStorageAttribs.gen.cs | 1 + .../OpenGL/Enums/TextureCompareMode.gen.cs | 1 + .../OpenGL/Enums/TextureCoordName.gen.cs | 1 + .../OpenGL/OpenGL/Enums/TextureEnvMode.gen.cs | 1 + .../OpenGL/Enums/TextureEnvParameter.gen.cs | 1 + .../OpenGL/Enums/TextureEnvTarget.gen.cs | 1 + .../OpenGL/Enums/TextureFilterSGIS.gen.cs | 1 + .../OpenGL/OpenGL/Enums/TextureGenMode.gen.cs | 1 + .../OpenGL/Enums/TextureGenParameter.gen.cs | 1 + .../OpenGL/OpenGL/Enums/TextureLayout.gen.cs | 1 + .../OpenGL/Enums/TextureMagFilter.gen.cs | 1 + .../OpenGL/Enums/TextureMinFilter.gen.cs | 1 + .../OpenGL/Enums/TextureNormalModeEXT.gen.cs | 1 + .../OpenGL/Enums/TextureParameterName.gen.cs | 1 + .../OpenGL/Enums/TextureStorageMaskAMD.gen.cs | 1 + .../OpenGL/OpenGL/Enums/TextureSwizzle.gen.cs | 1 + .../OpenGL/OpenGL/Enums/TextureTarget.gen.cs | 1 + .../OpenGL/OpenGL/Enums/TextureUnit.gen.cs | 1 + .../OpenGL/Enums/TextureWrapMode.gen.cs | 1 + .../OpenGL/OpenGL/Enums/TraceMaskMESA.gen.cs | 1 + .../Enums/TransformFeedbackBufferMode.gen.cs | 1 + .../Enums/TransformFeedbackPName.gen.cs | 1 + .../Enums/TransformFeedbackTokenNV.gen.cs | 1 + .../OpenGL/OpenGL/Enums/TriangleFace.gen.cs | 1 + .../OpenGL/Enums/TriangleListSUN.gen.cs | 1 + .../OpenGL/Enums/UniformBlockPName.gen.cs | 1 + .../OpenGL/OpenGL/Enums/UniformPName.gen.cs | 1 + .../OpenGL/OpenGL/Enums/UniformType.gen.cs | 1 + .../OpenGL/Enums/UseProgramStageMask.gen.cs | 1 + .../OpenGL/OpenGL/Enums/VariantCapEXT.gen.cs | 1 + .../OpenGL/Enums/VertexArrayPName.gen.cs | 1 + .../OpenGL/Enums/VertexArrayPNameAPPLE.gen.cs | 1 + .../OpenGL/Enums/VertexAttribEnum.gen.cs | 1 + .../OpenGL/Enums/VertexAttribEnumNV.gen.cs | 1 + .../OpenGL/Enums/VertexAttribIType.gen.cs | 1 + .../OpenGL/Enums/VertexAttribLType.gen.cs | 1 + .../Enums/VertexAttribPointerProperty.gen.cs | 1 + .../Enums/VertexAttribPointerType.gen.cs | 1 + .../OpenGL/Enums/VertexAttribProperty.gen.cs | 1 + .../OpenGL/Enums/VertexAttribType.gen.cs | 1 + .../Enums/VertexBufferObjectUsage.gen.cs | 1 + .../OpenGL/Enums/VertexHintsMaskPGI.gen.cs | 1 + .../OpenGL/Enums/VertexPointerType.gen.cs | 1 + .../OpenGL/Enums/VertexProvokingMode.gen.cs | 1 + .../Enums/VertexShaderCoordOutEXT.gen.cs | 1 + .../OpenGL/Enums/VertexShaderOpEXT.gen.cs | 1 + .../Enums/VertexShaderParameterEXT.gen.cs | 1 + .../Enums/VertexShaderStorageTypeEXT.gen.cs | 1 + .../VertexShaderTextureUnitParameter.gen.cs | 1 + .../OpenGL/Enums/VertexShaderWriteMask.gen.cs | 1 + .../OpenGL/Enums/VertexStreamATI.gen.cs | 1 + .../Enums/VertexWeightPointerType.gen.cs | 1 + .../OpenGL/Enums/WeightPointerType.gen.cs | 1 + sources/OpenGL/OpenGL/SyncHandle.gen.cs | 1 + sources/OpenGL/OpenGL/gl/GL.gen.cs | 3 +++ sources/OpenGL/OpenGL/gl/IGL.gen.cs | 2 ++ .../OpenXR/OpenXR/ActionStatePose.gen.cs | 2 ++ sources/OpenXR/OpenXR/OpenXR/IXr.gen.cs | 2 ++ .../OpenXR/RoomMeshFaceIndicesMETA.gen.cs | 2 ++ .../OpenXR/SenseDataQueryCompletionBD.gen.cs | 4 ++++ .../OpenXR/OpenXR/SpaceFilterUuidMETA.gen.cs | 2 ++ .../SpatialAnchorsQueryCompletionML.gen.cs | 4 ++++ ...SpatialGraphNodeSpaceCreateInfoMSFT.gen.cs | 2 ++ .../SwapchainCreateInfoFoveationFB.gen.cs | 2 ++ ...mPropertiesBodyTrackingFullBodyMETA.gen.cs | 2 ++ .../OpenXR/TrackableImageANDROID.gen.cs | 2 ++ sources/OpenXR/OpenXR/OpenXR/Xr.gen.cs | 2 ++ sources/SDL/SDL/SDL3/AlignmentTest.gen.cs | 1 + sources/SDL/SDL/SDL3/AppResult.gen.cs | 1 + sources/SDL/SDL/SDL3/ArrayOrder.gen.cs | 1 + sources/SDL/SDL/SDL3/AssertData.gen.cs | 1 + sources/SDL/SDL/SDL3/AssertState.gen.cs | 1 + sources/SDL/SDL/SDL3/AtomicInt.gen.cs | 1 + sources/SDL/SDL/SDL3/AtomicU32.gen.cs | 1 + sources/SDL/SDL/SDL3/AudioDeviceEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/AudioFormat.gen.cs | 1 + sources/SDL/SDL/SDL3/AudioSpec.gen.cs | 1 + sources/SDL/SDL/SDL3/BlendFactor.gen.cs | 4 ++++ sources/SDL/SDL/SDL3/BlendOperation.gen.cs | 1 + sources/SDL/SDL/SDL3/CameraDeviceEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/CameraPosition.gen.cs | 1 + sources/SDL/SDL/SDL3/CameraSpec.gen.cs | 1 + sources/SDL/SDL/SDL3/Capitalization.gen.cs | 1 + sources/SDL/SDL/SDL3/ChromaLocation.gen.cs | 1 + sources/SDL/SDL/SDL3/ClipboardEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/Color.gen.cs | 1 + sources/SDL/SDL/SDL3/ColorRange.gen.cs | 1 + sources/SDL/SDL/SDL3/CommonEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/CursorFrameInfo.gen.cs | 1 + sources/SDL/SDL/SDL3/DateTime.gen.cs | 1 + sources/SDL/SDL/SDL3/DialogFileFilter.gen.cs | 1 + sources/SDL/SDL/SDL3/DisplayEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/DisplayMode.gen.cs | 1 + .../SDL/SDL/SDL3/DisplayOrientation.gen.cs | 1 + sources/SDL/SDL/SDL3/DummyEnum.gen.cs | 1 + sources/SDL/SDL/SDL3/EnumerationResult.gen.cs | 1 + sources/SDL/SDL/SDL3/Event.gen.cs | 1 + sources/SDL/SDL/SDL3/EventType.gen.cs | 1 + sources/SDL/SDL/SDL3/FColor.gen.cs | 1 + sources/SDL/SDL/SDL3/FPoint.gen.cs | 1 + sources/SDL/SDL/SDL3/FRect.gen.cs | 1 + sources/SDL/SDL/SDL3/FileDialogType.gen.cs | 1 + sources/SDL/SDL/SDL3/Finger.gen.cs | 1 + sources/SDL/SDL/SDL3/FlashOperation.gen.cs | 1 + sources/SDL/SDL/SDL3/FlipMode.gen.cs | 1 + sources/SDL/SDL/SDL3/Folder.gen.cs | 1 + sources/SDL/SDL/SDL3/GLAttr.gen.cs | 1 + sources/SDL/SDL/SDL3/GamepadAxis.gen.cs | 1 + sources/SDL/SDL/SDL3/GamepadAxisEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/GamepadBinding.gen.cs | 1 + .../SDL/SDL/SDL3/GamepadBindingType.gen.cs | 1 + .../SDL/SDL/SDL3/GamepadButtonEvent.gen.cs | 1 + .../SDL/SDL/SDL3/GamepadButtonLabel.gen.cs | 1 + .../SDL/SDL/SDL3/GamepadDeviceEvent.gen.cs | 1 + .../SDL/SDL/SDL3/GamepadSensorEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/GamepadType.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuBlendFactor.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuBlendOp.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuBlitInfo.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuBlitRegion.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuBufferBinding.gen.cs | 1 + .../SDL/SDL/SDL3/GpuBufferCreateInfo.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuBufferLocation.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuBufferRegion.gen.cs | 1 + .../SDL/SDL3/GpuColorTargetDescription.gen.cs | 1 + .../SDL/SDL/SDL3/GpuColorTargetInfo.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuCompareOp.gen.cs | 1 + .../SDL3/GpuComputePipelineCreateInfo.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuCubeMapFace.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuCullMode.gen.cs | 1 + .../SDL/SDL/SDL3/GpuDepthStencilState.gen.cs | 4 ++++ .../SDL/SDL3/GpuDepthStencilTargetInfo.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuFillMode.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuFrontFace.gen.cs | 1 + .../SDL3/GpuGraphicsPipelineCreateInfo.gen.cs | 1 + .../SDL3/GpuGraphicsPipelineTargetInfo.gen.cs | 1 + .../SDL/SDL/SDL3/GpuIndexElementSize.gen.cs | 1 + .../SDL3/GpuIndexedIndirectDrawCommand.gen.cs | 1 + .../SDL3/GpuIndirectDispatchCommand.gen.cs | 1 + .../SDL/SDL3/GpuIndirectDrawCommand.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuLoadOp.gen.cs | 4 ++++ .../SDL/SDL/SDL3/GpuMultisampleState.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuPresentMode.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuPrimitiveType.gen.cs | 1 + .../SDL/SDL/SDL3/GpuRasterizerState.gen.cs | 1 + .../SDL/SDL3/GpuRenderStateCreateInfo.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuSampleCount.gen.cs | 1 + .../SDL/SDL/SDL3/GpuSamplerAddressMode.gen.cs | 1 + .../SDL/SDL/SDL3/GpuSamplerCreateInfo.gen.cs | 1 + .../SDL/SDL/SDL3/GpuSamplerMipmapMode.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuShaderStage.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuStencilOp.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuStencilOpState.gen.cs | 1 + .../GpuStorageBufferReadWriteBinding.gen.cs | 1 + .../GpuStorageTextureReadWriteBinding.gen.cs | 1 + .../SDL/SDL3/GpuSwapchainComposition.gen.cs | 1 + .../SDL/SDL/SDL3/GpuTextureCreateInfo.gen.cs | 4 ++++ sources/SDL/SDL/SDL3/GpuTextureFormat.gen.cs | 1 + .../SDL/SDL/SDL3/GpuTextureLocation.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuTextureRegion.gen.cs | 1 + .../SDL/SDL3/GpuTextureTransferInfo.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuTextureType.gen.cs | 4 ++++ .../SDL3/GpuTransferBufferCreateInfo.gen.cs | 1 + .../SDL/SDL3/GpuTransferBufferLocation.gen.cs | 1 + .../SDL/SDL3/GpuTransferBufferUsage.gen.cs | 1 + .../SDL/SDL/SDL3/GpuVertexAttribute.gen.cs | 1 + .../SDL3/GpuVertexBufferDescription.gen.cs | 1 + .../SDL/SDL/SDL3/GpuVertexInputState.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuViewport.gen.cs | 1 + sources/SDL/SDL/SDL3/GpuVulkanOptions.gen.cs | 1 + sources/SDL/SDL/SDL3/HapticCondition.gen.cs | 1 + sources/SDL/SDL/SDL3/HapticConstant.gen.cs | 1 + sources/SDL/SDL/SDL3/HapticCustom.gen.cs | 1 + sources/SDL/SDL/SDL3/HapticDirection.gen.cs | 1 + sources/SDL/SDL/SDL3/HapticEffect.gen.cs | 1 + sources/SDL/SDL/SDL3/HapticLeftRight.gen.cs | 1 + sources/SDL/SDL/SDL3/HapticPeriodic.gen.cs | 1 + sources/SDL/SDL/SDL3/HapticRamp.gen.cs | 1 + sources/SDL/SDL/SDL3/HidBusType.gen.cs | 1 + sources/SDL/SDL/SDL3/HidDeviceInfo.gen.cs | 1 + sources/SDL/SDL/SDL3/HintPriority.gen.cs | 1 + sources/SDL/SDL/SDL3/HitTestResult.gen.cs | 1 + sources/SDL/SDL/SDL3/IOStatus.gen.cs | 1 + sources/SDL/SDL/SDL3/IOStreamInterface.gen.cs | 1 + sources/SDL/SDL/SDL3/IOWhence.gen.cs | 1 + sources/SDL/SDL/SDL3/ISdl.gen.cs | 2 ++ sources/SDL/SDL/SDL3/InitState.gen.cs | 1 + sources/SDL/SDL/SDL3/JoyAxisEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/JoyBallEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/JoyBatteryEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/JoyButtonEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/JoyDeviceEvent.gen.cs | 1 + .../SDL/SDL3/JoystickConnectionState.gen.cs | 1 + sources/SDL/SDL/SDL3/JoystickType.gen.cs | 1 + .../SDL/SDL/SDL3/KeyboardDeviceEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/Locale.gen.cs | 1 + sources/SDL/SDL/SDL3/LogCategory.gen.cs | 1 + sources/SDL/SDL/SDL3/LogPriority.gen.cs | 1 + .../SDL/SDL/SDL3/MatrixCoefficients.gen.cs | 1 + .../SDL/SDL/SDL3/MessageBoxButtonData.gen.cs | 1 + sources/SDL/SDL/SDL3/MessageBoxColor.gen.cs | 1 + .../SDL/SDL/SDL3/MessageBoxColorScheme.gen.cs | 1 + .../SDL/SDL/SDL3/MessageBoxColorType.gen.cs | 1 + sources/SDL/SDL/SDL3/MessageBoxData.gen.cs | 1 + sources/SDL/SDL/SDL3/MouseButtonEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/MouseDeviceEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/MouseMotionEvent.gen.cs | 1 + .../SDL/SDL/SDL3/MouseWheelDirection.gen.cs | 1 + sources/SDL/SDL/SDL3/MouseWheelEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/PackedOrder.gen.cs | 1 + sources/SDL/SDL/SDL3/Palette.gen.cs | 1 + sources/SDL/SDL/SDL3/PathInfo.gen.cs | 1 + sources/SDL/SDL/SDL3/PathType.gen.cs | 1 + sources/SDL/SDL/SDL3/PenAxis.gen.cs | 1 + sources/SDL/SDL/SDL3/PenAxisEvent.gen.cs | 4 ++++ sources/SDL/SDL/SDL3/PenButtonEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/PenDeviceType.gen.cs | 1 + sources/SDL/SDL/SDL3/PenMotionEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/PenProximityEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/PinchFingerEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/PixelFormat.gen.cs | 1 + .../SDL/SDL/SDL3/PixelFormatDetails.gen.cs | 1 + sources/SDL/SDL/SDL3/PixelType.gen.cs | 1 + sources/SDL/SDL/SDL3/Point.gen.cs | 1 + sources/SDL/SDL/SDL3/PowerState.gen.cs | 1 + sources/SDL/SDL/SDL3/ProcessIO.gen.cs | 1 + sources/SDL/SDL/SDL3/ProgressState.gen.cs | 1 + sources/SDL/SDL/SDL3/QuitEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/Rect.gen.cs | 1 + .../SDL3/RendererLogicalPresentation.gen.cs | 1 + sources/SDL/SDL/SDL3/Sandbox.gen.cs | 1 + sources/SDL/SDL/SDL3/ScaleMode.gen.cs | 1 + sources/SDL/SDL/SDL3/Sdl.gen.cs | 2 ++ sources/SDL/SDL/SDL3/SensorEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/SensorType.gen.cs | 1 + sources/SDL/SDL/SDL3/StorageInterface.gen.cs | 1 + sources/SDL/SDL/SDL3/SystemCursor.gen.cs | 1 + sources/SDL/SDL/SDL3/SystemTheme.gen.cs | 1 + sources/SDL/SDL/SDL3/TextEditingEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/TextInputEvent.gen.cs | 4 ++++ sources/SDL/SDL/SDL3/Texture.gen.cs | 1 + .../SDL/SDL/SDL3/TextureAddressMode.gen.cs | 1 + sources/SDL/SDL/SDL3/ThreadPriority.gen.cs | 1 + sources/SDL/SDL/SDL3/TimeFormat.gen.cs | 1 + sources/SDL/SDL/SDL3/TouchDeviceType.gen.cs | 1 + sources/SDL/SDL/SDL3/TouchFingerEvent.gen.cs | 1 + .../SDL/SDL3/TransferCharacteristics.gen.cs | 1 + sources/SDL/SDL/SDL3/UserEvent.gen.cs | 1 + sources/SDL/SDL/SDL3/Vertex.gen.cs | 1 + .../SDL/SDL/SDL3/VirtualJoystickDesc.gen.cs | 1 + .../SDL/SDL3/VirtualJoystickSensorDesc.gen.cs | 1 + .../SDL3/VirtualJoystickTouchpadDesc.gen.cs | 1 + sources/SDL/SDL/SDL3/WindowEvent.gen.cs | 1 + .../AccelerationStructureBuildTypeKHR.gen.cs | 1 + ...AccelerationStructureCreateInfo2KHR.gen.cs | 1 + ...rationStructureGeometryAabbsDataKHR.gen.cs | 1 + ...ureGeometryLinearSweptSpheresDataNV.gen.cs | 1 + ...ionStructureGeometryMicromapDataKHR.gen.cs | 1 + ...onStructureGeometryTrianglesDataKHR.gen.cs | 1 + ...tionStructureMatrixMotionInstanceNV.gen.cs | 1 + ...onStructureMemoryRequirementsTypeNV.gen.cs | 1 + ...rationStructureMotionInstanceDataNV.gen.cs | 1 + ...celerationStructureMotionInstanceNV.gen.cs | 1 + ...tructureTrianglesOpacityMicromapEXT.gen.cs | 1 + .../AcquireProfilingLockFlagsKHR.gen.cs | 1 + .../Vulkan/Vulkan/AddressCopyFlagsKHR.gen.cs | 1 + .../Vulkan/AmigoProfilingSubmitInfoSEC.gen.cs | 1 + .../Vulkan/Vulkan/AntiLagStageAMD.gen.cs | 1 + .../Vulkan/AttachmentDescription2.gen.cs | 1 + .../Vulkan/Vulkan/AttachmentLoadOp.gen.cs | 1 + .../Vulkan/Vulkan/AttachmentReference.gen.cs | 2 ++ .../AttachmentReferenceStencilLayout.gen.cs | 1 + .../Vulkan/Vulkan/BaseOutStructure.gen.cs | 1 + .../BindBufferMemoryDeviceGroupInfo.gen.cs | 1 + .../Vulkan/Vulkan/BindImageMemoryInfo.gen.cs | 2 ++ .../Vulkan/BindIndexBuffer3InfoKHR.gen.cs | 1 + .../BindShaderGroupIndirectCommandNV.gen.cs | 1 + ...BindTransformFeedbackBuffer2InfoEXT.gen.cs | 1 + .../BindVertexBufferIndirectCommandEXT.gen.cs | 1 + .../Vulkan/Vulkan/BlitImageInfo2.gen.cs | 1 + .../Vulkan/Vulkan/Vulkan/BufferCopy2.gen.cs | 1 + .../Vulkan/Vulkan/BufferCreateFlags.gen.cs | 1 + .../Vulkan/Vulkan/BufferImageCopy.gen.cs | 1 + .../Vulkan/BufferUsageFlags2CreateInfo.gen.cs | 1 + .../Vulkan/Vulkan/BufferViewCreateInfo.gen.cs | 4 ++++ .../Vulkan/Vulkan/BuildMicromapModeEXT.gen.cs | 1 + .../Vulkan/Vulkan/CheckpointData2NV.gen.cs | 2 ++ .../Vulkan/Vulkan/CheckpointDataNV.gen.cs | 1 + .../Vulkan/Vulkan/ChromaLocation.gen.cs | 1 + .../Vulkan/Vulkan/ClearAttachment.gen.cs | 1 + .../Vulkan/ClearDepthStencilValue.gen.cs | 1 + sources/Vulkan/Vulkan/Vulkan/ClearRect.gen.cs | 1 + ...eBuildTriangleClusterTemplateInfoNV.gen.cs | 1 + ...AccelerationStructureCommandsInfoNV.gen.cs | 1 + ...tureGeometryIndexAndGeometryFlagsNV.gen.cs | 1 + ...elerationStructureMoveObjectsInfoNV.gen.cs | 1 + ...usterAccelerationStructureOpInputNV.gen.cs | 1 + .../Vulkan/CoarseSampleLocationNV.gen.cs | 1 + .../Vulkan/CoarseSampleOrderCustomNV.gen.cs | 1 + .../Vulkan/ColorBlendAdvancedEXT.gen.cs | 1 + .../Vulkan/ColorBlendEquationEXT.gen.cs | 1 + .../Vulkan/Vulkan/ColorComponentFlags.gen.cs | 1 + .../Vulkan/CommandBufferAllocateInfo.gen.cs | 1 + ...ferInheritanceViewportScissorInfoNV.gen.cs | 1 + .../Vulkan/Vulkan/CommandBufferLevel.gen.cs | 1 + .../Vulkan/CommandBufferResetFlags.gen.cs | 1 + .../Vulkan/CommandBufferSubmitInfo.gen.cs | 1 + .../Vulkan/CommandBufferUsageFlags.gen.cs | 1 + .../Vulkan/CommandPoolCreateFlags.gen.cs | 2 ++ .../Vulkan/CommandPoolResetFlags.gen.cs | 1 + sources/Vulkan/Vulkan/Vulkan/CompareOp.gen.cs | 1 + .../Vulkan/Vulkan/ComponentTypeKHR.gen.cs | 1 + .../Vulkan/CompositeAlphaFlagsKHR.gen.cs | 1 + ...omputeOccupancyPriorityParametersNV.gen.cs | 1 + ...ComputePipelineIndirectBufferInfoNV.gen.cs | 1 + .../ConditionalRenderingFlagsEXT.gen.cs | 1 + .../Vulkan/Vulkan/ConformanceVersion.gen.cs | 1 + .../Vulkan/Vulkan/CopyBufferInfo2.gen.cs | 1 + .../CopyDeviceMemoryImageInfoKHR.gen.cs | 1 + .../Vulkan/CopyDeviceMemoryInfoKHR.gen.cs | 1 + .../Vulkan/Vulkan/CopyImageInfo2.gen.cs | 1 + .../Vulkan/Vulkan/CopyImageToImageInfo.gen.cs | 1 + .../Vulkan/CopyMemoryIndirectInfoKHR.gen.cs | 1 + ...emoryToAccelerationStructureInfoKHR.gen.cs | 1 + .../Vulkan/CopyMemoryToMicromapInfoEXT.gen.cs | 1 + .../Vulkan/Vulkan/CopyMicromapInfoEXT.gen.cs | 1 + .../Vulkan/Vulkan/CopyMicromapModeEXT.gen.cs | 2 ++ .../Vulkan/CuFunctionCreateInfoNVX.gen.cs | 1 + .../Vulkan/CuModuleCreateInfoNVX.gen.cs | 1 + .../Vulkan/CubicFilterWeightsQCOM.gen.cs | 1 + ...hPipelineBuiltinModelCreateInfoQCOM.gen.cs | 1 + ...ipelineCompilerControlCreateInfoARM.gen.cs | 1 + ...TensorSemiStructuredSparsityInfoARM.gen.cs | 2 ++ .../DataGraphPipelineDispatchInfoARM.gen.cs | 1 + ...raphPipelineIdentifierCreateInfoARM.gen.cs | 1 + ...aGraphPipelineNodeConnectionTypeARM.gen.cs | 2 ++ .../DataGraphPipelineNodeTypeARM.gen.cs | 1 + ...hPipelineOpticalFlowDispatchInfoARM.gen.cs | 1 + ...ataGraphPipelineSessionBindPointARM.gen.cs | 1 + ...SessionBindPointRequirementsInfoARM.gen.cs | 1 + ...aGraphProcessingEngineCreateInfoARM.gen.cs | 1 + .../DataGraphTosaQualityFlagsARM.gen.cs | 1 + .../DebugUtilsMessageTypeFlagsEXT.gen.cs | 1 + .../Vulkan/DebugUtilsObjectNameInfoEXT.gen.cs | 1 + .../Vulkan/DecompressMemoryRegionEXT.gen.cs | 1 + .../DefaultVertexAttributeValueKHR.gen.cs | 1 + .../Vulkan/Vulkan/DepthClampRangeEXT.gen.cs | 1 + .../Vulkan/Vulkan/DescriptorGetInfoEXT.gen.cs | 1 + .../Vulkan/Vulkan/DescriptorImageInfo.gen.cs | 1 + .../Vulkan/DescriptorMappingSourceEXT.gen.cs | 2 ++ .../DescriptorMappingSourceHeapDataEXT.gen.cs | 1 + ...DescriptorMappingSourcePushIndexEXT.gen.cs | 1 + ...torPoolInlineUniformBlockCreateInfo.gen.cs | 1 + .../Vulkan/DescriptorSetAllocateInfo.gen.cs | 1 + .../DescriptorSetBindingReferenceVALVE.gen.cs | 1 + .../Vulkan/DescriptorSetLayoutBinding.gen.cs | 1 + ...riptorSetLayoutHostMappingInfoVALVE.gen.cs | 1 + ...VariableDescriptorCountAllocateInfo.gen.cs | 1 + .../Vulkan/Vulkan/DescriptorType.gen.cs | 1 + .../DescriptorUpdateTemplateCreateInfo.gen.cs | 1 + .../DeviceDiagnosticsConfigFlagsNV.gen.cs | 1 + .../Vulkan/Vulkan/DeviceEventTypeEXT.gen.cs | 1 + .../Vulkan/DeviceFaultAddressInfoKHR.gen.cs | 1 + .../Vulkan/DeviceFaultAddressTypeKHR.gen.cs | 1 + .../Vulkan/Vulkan/DeviceFaultCountsEXT.gen.cs | 2 ++ .../Vulkan/Vulkan/DeviceFaultInfoEXT.gen.cs | 1 + ...eviceFaultShaderAbortMessageInfoKHR.gen.cs | 1 + ...aultVendorBinaryHeaderVersionOneKHR.gen.cs | 1 + .../DeviceGroupCommandBufferBeginInfo.gen.cs | 1 + .../DeviceGroupRenderPassBeginInfo.gen.cs | 1 + .../DeviceImageMemoryRequirements.gen.cs | 1 + .../Vulkan/DeviceMemoryImageCopyKHR.gen.cs | 1 + .../Vulkan/DeviceOrHostAddressConstKHR.gen.cs | 1 + .../Vulkan/DeviceOrHostAddressKHR.gen.cs | 1 + .../Vulkan/DevicePrivateDataCreateInfo.gen.cs | 1 + .../Vulkan/Vulkan/DeviceQueueInfo2.gen.cs | 1 + .../Vulkan/DispatchIndirectCommand.gen.cs | 1 + .../Vulkan/Vulkan/DisplayEventTypeEXT.gen.cs | 2 ++ .../Vulkan/DisplayModeCreateInfoKHR.gen.cs | 1 + .../Vulkan/DisplayModeParametersKHR.gen.cs | 1 + .../Vulkan/DisplayModeProperties2KHR.gen.cs | 1 + .../DisplaySurfaceStereoCreateInfoNV.gen.cs | 1 + .../Vulkan/Vulkan/DrawIndirectCommand.gen.cs | 1 + ...DrmFormatModifierPropertiesList2EXT.gen.cs | 1 + .../Vulkan/Vulkan/Vulkan/DynamicState.gen.cs | 1 + .../Vulkan/Vulkan/EventCreateInfo.gen.cs | 1 + .../Vulkan/ExportFenceCreateInfo.gen.cs | 1 + .../Vulkan/ExportMemoryAllocateInfo.gen.cs | 1 + .../Vulkan/Vulkan/ExtensionProperties.gen.cs | 1 + .../ExternalComputeQueueCreateInfoNV.gen.cs | 1 + .../ExternalComputeQueueDataParamsNV.gen.cs | 1 + .../Vulkan/ExternalFenceFeatureFlags.gen.cs | 1 + .../Vulkan/ExternalFenceProperties.gen.cs | 1 + .../ExternalImageFormatProperties.gen.cs | 1 + .../ExternalMemoryAcquireUnmodifiedEXT.gen.cs | 1 + .../ExternalMemoryImageCreateInfo.gen.cs | 1 + .../Vulkan/ExternalMemoryProperties.gen.cs | 2 ++ .../Vulkan/Vulkan/FenceCreateFlags.gen.cs | 1 + .../Vulkan/Vulkan/FenceCreateInfo.gen.cs | 1 + .../Vulkan/Vulkan/FenceGetFdInfoKHR.gen.cs | 1 + sources/Vulkan/Vulkan/Vulkan/Filter.gen.cs | 2 ++ .../Vulkan/Vulkan/FormatProperties2.gen.cs | 1 + ...ragmentShadingRateAttachmentInfoKHR.gen.cs | 1 + .../Vulkan/FragmentShadingRateNV.gen.cs | 1 + .../Vulkan/FragmentShadingRateTypeNV.gen.cs | 1 + .../Vulkan/FrameBoundaryFlagsEXT.gen.cs | 1 + .../FramebufferAttachmentsCreateInfo.gen.cs | 1 + ...ramebufferMixedSamplesCombinationNV.gen.cs | 1 + .../Vulkan/GeneratedCommandsInfoEXT.gen.cs | 1 + .../Vulkan/Vulkan/GeometryDataNV.gen.cs | 1 + .../Vulkan/Vulkan/GeometryTrianglesNV.gen.cs | 1 + .../Vulkan/GpaDeviceClockModeInfoAMD.gen.cs | 1 + .../Vulkan/GpaDeviceGetClockInfoAMD.gen.cs | 1 + .../Vulkan/GpaPerfBlockPropertiesAMD.gen.cs | 1 + .../Vulkan/Vulkan/GpaPerfCounterAMD.gen.cs | 2 ++ .../Vulkan/Vulkan/GpaSampleTypeAMD.gen.cs | 1 + .../HeadlessSurfaceCreateInfoEXT.gen.cs | 1 + .../Vulkan/HostAddressRangeConstEXT.gen.cs | 1 + .../HostImageLayoutTransitionInfo.gen.cs | 1 + sources/Vulkan/Vulkan/Vulkan/IVk.gen.cs | 2 ++ sources/Vulkan/Vulkan/Vulkan/ImageBlit.gen.cs | 1 + .../ImageCaptureDescriptorDataInfoEXT.gen.cs | 1 + .../ImageCompressionFixedRateFlagsEXT.gen.cs | 1 + .../ImageCompressionPropertiesEXT.gen.cs | 1 + sources/Vulkan/Vulkan/Vulkan/ImageCopy.gen.cs | 1 + .../Vulkan/Vulkan/ImageCreateFlags.gen.cs | 1 + .../ImageCreateFlags2CreateInfoKHR.gen.cs | 1 + ...FormatModifierExplicitCreateInfoEXT.gen.cs | 1 + ...ImageDrmFormatModifierPropertiesEXT.gen.cs | 1 + .../Vulkan/ImageFormatListCreateInfo.gen.cs | 1 + .../Vulkan/Vulkan/Vulkan/ImageLayout.gen.cs | 2 ++ .../Vulkan/Vulkan/Vulkan/ImageResolve.gen.cs | 2 ++ .../ImageStencilUsage2CreateInfoKHR.gen.cs | 1 + .../Vulkan/ImageStencilUsageCreateInfo.gen.cs | 2 ++ .../Vulkan/Vulkan/ImageSubresource.gen.cs | 1 + .../Vulkan/Vulkan/ImageSubresource2.gen.cs | 1 + .../ImageViewAddressPropertiesNVX.gen.cs | 1 + ...ImageViewSampleWeightCreateInfoQCOM.gen.cs | 1 + .../ImageViewSlicedCreateInfoEXT.gen.cs | 1 + .../ImageViewUsage2CreateInfoKHR.gen.cs | 1 + .../Vulkan/ImageViewUsageCreateInfo.gen.cs | 1 + .../Vulkan/Vulkan/ImportFenceFdInfoKHR.gen.cs | 2 ++ .../Vulkan/ImportMemoryFdInfoKHR.gen.cs | 1 + .../Vulkan/ImportSemaphoreFdInfoKHR.gen.cs | 1 + ...IndirectCommandsLayoutCreateInfoEXT.gen.cs | 1 + .../IndirectCommandsLayoutTokenEXT.gen.cs | 1 + ...IndirectCommandsLayoutUsageFlagsEXT.gen.cs | 1 + .../Vulkan/IndirectCommandsStreamNV.gen.cs | 1 + .../IndirectExecutionSetCreateInfoEXT.gen.cs | 1 + .../Vulkan/IndirectExecutionSetInfoEXT.gen.cs | 1 + ...rectExecutionSetShaderLayoutInfoEXT.gen.cs | 1 + .../InitializePerformanceApiInfoINTEL.gen.cs | 1 + .../Vulkan/Vulkan/InstanceCreateFlags.gen.cs | 1 + .../Vulkan/LatencySleepModeInfoNV.gen.cs | 1 + .../LatencySubmissionPresentIdNV.gen.cs | 1 + .../Vulkan/Vulkan/LayerProperties.gen.cs | 1 + .../Vulkan/Vulkan/LayerSettingEXT.gen.cs | 1 + .../Vulkan/Vulkan/LayerSettingTypeEXT.gen.cs | 2 ++ .../LayeredDriverUnderlyingApiMSFT.gen.cs | 1 + sources/Vulkan/Vulkan/Vulkan/LogicOp.gen.cs | 1 + .../Vulkan/Vulkan/MemoryBarrier2.gen.cs | 1 + .../MemoryBarrierAccessFlags3KHR.gen.cs | 1 + .../Vulkan/MemoryDedicatedAllocateInfo.gen.cs | 1 + .../Vulkan/MemoryDedicatedRequirements.gen.cs | 1 + .../Vulkan/Vulkan/MemoryGetFdInfoKHR.gen.cs | 1 + .../MemoryGetRemoteAddressInfoNV.gen.cs | 1 + .../Vulkan/Vulkan/MemoryHeapFlags.gen.cs | 1 + .../Vulkan/MemoryRangeBarrierKHR.gen.cs | 1 + .../Vulkan/Vulkan/MemoryUnmapFlags.gen.cs | 1 + .../Vulkan/Vulkan/MemoryUnmapInfo.gen.cs | 1 + .../Vulkan/Vulkan/MicromapBuildInfoEXT.gen.cs | 1 + .../Vulkan/MicromapBuildSizesInfoEXT.gen.cs | 1 + .../Vulkan/MicromapCreateFlagsEXT.gen.cs | 1 + .../Vulkan/MicromapCreateInfoEXT.gen.cs | 1 + .../Vulkan/Vulkan/MicromapUsageEXT.gen.cs | 1 + .../Vulkan/Vulkan/MicromapUsageKHR.gen.cs | 1 + .../Vulkan/MicromapVersionInfoEXT.gen.cs | 1 + .../Vulkan/MultisamplePropertiesEXT.gen.cs | 1 + ...sampledRenderToSingleSampledInfoEXT.gen.cs | 1 + .../MultiviewPerViewAttributesInfoNVX.gen.cs | 2 ++ ...wRenderAreasRenderPassBeginInfoQCOM.gen.cs | 2 ++ .../NeuralAcceleratorStatisticsModeARM.gen.cs | 1 + .../Vulkan/OpacityMicromapFormatKHR.gen.cs | 1 + ...eCaptureDescriptorDataCreateInfoEXT.gen.cs | 1 + .../Vulkan/OpticalFlowExecuteInfoNV.gen.cs | 1 + .../OpticalFlowImageFormatPropertiesNV.gen.cs | 1 + .../OpticalFlowSessionBindingPointNV.gen.cs | 2 ++ ...lFlowSessionCreatePrivateDataInfoNV.gen.cs | 1 + .../Vulkan/OpticalFlowUsageFlagsNV.gen.cs | 1 + ...erationStructureWriteInstanceDataNV.gen.cs | 1 + .../PastPresentationTimingFlagsEXT.gen.cs | 1 + .../PastPresentationTimingInfoEXT.gen.cs | 1 + .../Vulkan/PeerMemoryFeatureFlags.gen.cs | 1 + .../Vulkan/Vulkan/PerTileBeginInfoQCOM.gen.cs | 1 + .../Vulkan/Vulkan/PerfHintTypeQCOM.gen.cs | 1 + .../PerformanceCounterDescriptionKHR.gen.cs | 1 + .../Vulkan/PerformanceCounterKHR.gen.cs | 1 + .../Vulkan/PerformanceCounterScopeKHR.gen.cs | 1 + .../PerformanceOverrideInfoINTEL.gen.cs | 1 + .../PerformanceParameterTypeINTEL.gen.cs | 1 + ...iceAccelerationStructureFeaturesKHR.gen.cs | 1 + ...eAccelerationStructurePropertiesKHR.gen.cs | 1 + ...viceAddressBindingReportFeaturesEXT.gen.cs | 1 + .../PhysicalDeviceAntiLagFeaturesAMD.gen.cs | 1 + ...chmentFeedbackLoopLayoutFeaturesEXT.gen.cs | 1 + ...BlendOperationAdvancedPropertiesEXT.gen.cs | 1 + ...usterCullingShaderVrsFeaturesHUAWEI.gen.cs | 1 + ...mputeShaderDerivativesPropertiesKHR.gen.cs | 1 + ...servativeRasterizationPropertiesEXT.gen.cs | 1 + ...erativeMatrixDecodeVectorFeaturesNV.gen.cs | 1 + ...alDeviceCooperativeMatrixFeaturesNV.gen.cs | 1 + ...lDeviceCustomBorderColorFeaturesEXT.gen.cs | 1 + ...ralAcceleratorStatisticsFeaturesARM.gen.cs | 1 + ...lDeviceDataGraphProcessingEngineARM.gen.cs | 1 + ...ceDescriptorBufferTensorFeaturesARM.gen.cs | 1 + ...DescriptorBufferTensorPropertiesARM.gen.cs | 1 + ...alDeviceDescriptorHeapPropertiesEXT.gen.cs | 1 + ...calDeviceDescriptorIndexingFeatures.gen.cs | 1 + ...ceDeviceGeneratedCommandsFeaturesNV.gen.cs | 1 + ...eviceGeneratedCommandsPropertiesEXT.gen.cs | 1 + ...DeviceDeviceMemoryReportFeaturesEXT.gen.cs | 1 + .../PhysicalDeviceDriverProperties.gen.cs | 1 + ...sicalDeviceDynamicRenderingFeatures.gen.cs | 1 + ...DeviceElapsedTimerQueryFeaturesQCOM.gen.cs | 1 + ...eExtendedDynamicState3PropertiesEXT.gen.cs | 1 + ...iceExternalComputeQueuePropertiesNV.gen.cs | 1 + .../PhysicalDeviceExternalFenceInfo.gen.cs | 1 + ...viceExternalMemoryHostPropertiesEXT.gen.cs | 1 + .../PhysicalDeviceFaultFeaturesKHR.gen.cs | 1 + .../PhysicalDeviceFaultPropertiesKHR.gen.cs | 1 + ...eviceFragmentDensityMap2FeaturesEXT.gen.cs | 1 + ...entDensityMapLayeredPropertiesVALVE.gen.cs | 1 + ...agmentDensityMapOffsetPropertiesEXT.gen.cs | 1 + ...viceFragmentDensityMapPropertiesEXT.gen.cs | 1 + ...ragmentShadingRateEnumsPropertiesNV.gen.cs | 1 + ...iceFragmentShadingRatePropertiesKHR.gen.cs | 1 + ...alDeviceGlobalPriorityQueryFeatures.gen.cs | 1 + .../PhysicalDeviceGpaProperties2AMD.gen.cs | 2 ++ ...raphicsPipelineLibraryPropertiesEXT.gen.cs | 1 + .../PhysicalDeviceGroupProperties.gen.cs | 1 + ...hysicalDeviceHostQueryResetFeatures.gen.cs | 1 + .../Vulkan/PhysicalDeviceIDProperties.gen.cs | 2 ++ ...eImageCompressionControlFeaturesEXT.gen.cs | 1 + ...DeviceImageDrmFormatModifierInfoEXT.gen.cs | 1 + .../PhysicalDeviceImageFormatInfo2.gen.cs | 1 + ...eviceImageProcessing2PropertiesQCOM.gen.cs | 1 + ...alDeviceImageProcessingFeaturesQCOM.gen.cs | 1 + ...calDeviceImageViewMinLodFeaturesEXT.gen.cs | 2 ++ ...lDeviceInvocationMaskFeaturesHUAWEI.gen.cs | 1 + ...DeviceLayeredApiVulkanPropertiesKHR.gen.cs | 1 + ...alDeviceLayeredDriverPropertiesMSFT.gen.cs | 1 + ...calDeviceLegacyDitheringFeaturesEXT.gen.cs | 1 + ...ceLegacyVertexAttributesFeaturesEXT.gen.cs | 1 + ...LegacyVertexAttributesPropertiesEXT.gen.cs | 1 + ...alDeviceLineRasterizationProperties.gen.cs | 1 + ...sicalDeviceMaintenance10FeaturesKHR.gen.cs | 2 ++ ...calDeviceMaintenance10PropertiesKHR.gen.cs | 1 + ...sicalDeviceMaintenance11FeaturesKHR.gen.cs | 1 + .../PhysicalDeviceMaintenance4Features.gen.cs | 1 + ...hysicalDeviceMaintenance4Properties.gen.cs | 1 + ...ysicalDeviceMaintenance7FeaturesKHR.gen.cs | 1 + ...ysicalDeviceMaintenance8FeaturesKHR.gen.cs | 1 + ...icalDeviceMaintenance9PropertiesKHR.gen.cs | 1 + ...calDeviceMapMemoryPlacedFeaturesEXT.gen.cs | 1 + ...eviceMemoryDecompressionFeaturesEXT.gen.cs | 1 + ...icalDeviceMemoryPriorityFeaturesEXT.gen.cs | 1 + .../PhysicalDeviceMemoryProperties.gen.cs | 1 + ...PhysicalDeviceMeshShaderFeaturesEXT.gen.cs | 2 ++ .../PhysicalDeviceMeshShaderFeaturesNV.gen.cs | 1 + ...iviewPerViewRenderAreasFeaturesQCOM.gen.cs | 1 + ...iceNestedCommandBufferPropertiesEXT.gen.cs | 1 + ...ysicalDevicePciBusInfoPropertiesEXT.gen.cs | 1 + ...formanceCountersByRegionFeaturesARM.gen.cs | 1 + ...rmanceCountersByRegionPropertiesARM.gen.cs | 1 + ...DevicePerformanceQueryPropertiesKHR.gen.cs | 1 + ...alDevicePipelineBinaryPropertiesKHR.gen.cs | 1 + ...ipelineCreationCacheControlFeatures.gen.cs | 1 + ...elineLibraryGroupHandlesFeaturesEXT.gen.cs | 1 + ...vicePipelineProtectedAccessFeatures.gen.cs | 1 + ...calDevicePipelineRobustnessFeatures.gen.cs | 1 + ...lDevicePipelineRobustnessProperties.gen.cs | 1 + ...PhysicalDevicePresentId2FeaturesKHR.gen.cs | 1 + ...ysicalDevicePresentWait2FeaturesKHR.gen.cs | 1 + .../Vulkan/PhysicalDeviceProperties.gen.cs | 1 + .../Vulkan/PhysicalDeviceProperties2.gen.cs | 1 + ...sicalDevicePushDescriptorProperties.gen.cs | 1 + ...TracingInvocationReorderFeaturesEXT.gen.cs | 1 + ...ceRayTracingMaintenance1FeaturesKHR.gen.cs | 1 + ...viceRayTracingPipelinePropertiesKHR.gen.cs | 2 ++ ...eRayTracingPositionFetchFeaturesKHR.gen.cs | 1 + ...RelaxedLineRasterizationFeaturesIMG.gen.cs | 1 + ...epresentativeFragmentTestFeaturesNV.gen.cs | 1 + ...calDeviceRgba10x6FormatsFeaturesEXT.gen.cs | 1 + ...icalDeviceScalarBlockLayoutFeatures.gen.cs | 1 + ...rolsDispatchParametersPropertiesARM.gen.cs | 1 + ...DeviceSchedulingControlsFeaturesARM.gen.cs | 2 ++ ...hysicalDeviceShaderAbortFeaturesKHR.gen.cs | 1 + ...DeviceShaderAtomicFloat2FeaturesEXT.gen.cs | 1 + ...icalDeviceShaderAtomicInt64Features.gen.cs | 1 + ...DeviceShaderCoreBuiltinsFeaturesARM.gen.cs | 1 + ...ysicalDeviceShaderCorePropertiesARM.gen.cs | 1 + ...lDeviceShaderDrawParametersFeatures.gen.cs | 1 + ...icalDeviceShaderFloat16Int8Features.gen.cs | 1 + ...lDeviceShaderFloatControls2Features.gen.cs | 1 + .../PhysicalDeviceShaderFmaFeaturesKHR.gen.cs | 1 + ...ceShaderImageAtomicInt64FeaturesEXT.gen.cs | 1 + ...viceShaderIntegerDotProductFeatures.gen.cs | 2 ++ ...erMixedFloatDotProductFeaturesVALVE.gen.cs | 1 + ...ysicalDeviceShaderObjectFeaturesEXT.gen.cs | 1 + ...laxedExtendedInstructionFeaturesKHR.gen.cs | 1 + ...aderReplicatedCompositesFeaturesEXT.gen.cs | 1 + ...calDeviceShaderSMBuiltinsFeaturesNV.gen.cs | 1 + ...lDeviceShaderSMBuiltinsPropertiesNV.gen.cs | 1 + ...DeviceShaderSplitBarrierFeaturesEXT.gen.cs | 1 + ...viceShaderSplitBarrierPropertiesEXT.gen.cs | 2 ++ ...ShaderSubgroupExtendedTypesFeatures.gen.cs | 1 + ...calDeviceShaderTileImageFeaturesEXT.gen.cs | 2 ++ ...iceShaderUntypedPointersFeaturesKHR.gen.cs | 1 + .../PhysicalDeviceSubgroupProperties.gen.cs | 1 + ...lDeviceSubpassShadingFeaturesHUAWEI.gen.cs | 1 + .../PhysicalDeviceSurfaceInfo2KHR.gen.cs | 1 + ...sicalDeviceSynchronization2Features.gen.cs | 1 + .../PhysicalDeviceTensorFeaturesARM.gen.cs | 1 + ...viceTexelBufferAlignmentFeaturesEXT.gen.cs | 1 + ...calDeviceTileMemoryHeapFeaturesQCOM.gen.cs | 1 + ...calDeviceTilePropertiesFeaturesQCOM.gen.cs | 1 + ...ysicalDeviceTileShadingFeaturesQCOM.gen.cs | 1 + .../PhysicalDeviceToolProperties.gen.cs | 1 + .../Vulkan/Vulkan/PhysicalDeviceType.gen.cs | 1 + ...eviceUnifiedImageLayoutsFeaturesKHR.gen.cs | 1 + ...UniformBufferStandardLayoutFeatures.gen.cs | 1 + ...viceVideoEncodeFeedback2FeaturesKHR.gen.cs | 1 + ...deoEncodeQuantizationMapFeaturesKHR.gen.cs | 1 + .../PhysicalDeviceVideoFormatInfoKHR.gen.cs | 1 + ...lDeviceVideoMaintenance1FeaturesKHR.gen.cs | 1 + ...lDeviceVideoMaintenance2FeaturesKHR.gen.cs | 1 + .../PhysicalDeviceVulkan12Features.gen.cs | 1 + .../PhysicalDeviceVulkan12Properties.gen.cs | 1 + ...icalDeviceVulkanMemoryModelFeatures.gen.cs | 1 + ...iceYcbcr2Plane444FormatsFeaturesEXT.gen.cs | 1 + .../Vulkan/PipelineBinaryDataInfoKHR.gen.cs | 1 + .../PipelineBinaryKeysAndDataKHR.gen.cs | 1 + .../Vulkan/PipelineCacheCreateFlags.gen.cs | 1 + ...lineCacheHeaderVersionDataGraphQCOM.gen.cs | 1 + ...olorBlendAdvancedStateCreateInfoEXT.gen.cs | 1 + .../PipelineColorWriteCreateInfoEXT.gen.cs | 1 + ...ipelineCompilerControlCreateInfoAMD.gen.cs | 1 + .../PipelineCompilerControlFlagsAMD.gen.cs | 1 + .../Vulkan/PipelineCreateInfoKHR.gen.cs | 1 + .../PipelineCreationFeedbackCreateInfo.gen.cs | 1 + ...eDiscardRectangleStateCreateInfoEXT.gen.cs | 1 + .../Vulkan/PipelineExecutableInfoKHR.gen.cs | 1 + ...ExecutableInternalRepresentationKHR.gen.cs | 1 + ...ipelineExecutableStatisticFormatKHR.gen.cs | 2 ++ ...PipelineExecutableStatisticValueKHR.gen.cs | 1 + ...entShadingRateEnumStateCreateInfoNV.gen.cs | 1 + .../Vulkan/PipelineLayoutCreateFlags.gen.cs | 1 + .../PipelinePropertiesIdentifierEXT.gen.cs | 1 + ...ationConservativeStateCreateInfoEXT.gen.cs | 1 + ...ipelineRasterizationStateCreateInfo.gen.cs | 1 + .../Vulkan/PipelineRenderingCreateInfo.gen.cs | 1 + .../PipelineRobustnessCreateInfo.gen.cs | 1 + .../PipelineShaderStageCreateInfo.gen.cs | 1 + ...PipelineTessellationStateCreateInfo.gen.cs | 1 + ...neVertexInputDivisorStateCreateInfo.gen.cs | 1 + .../PipelineVertexInputStateCreateInfo.gen.cs | 1 + ...tCoarseSampleOrderStateCreateInfoNV.gen.cs | 1 + ...ineViewportSwizzleStateCreateInfoNV.gen.cs | 1 + .../Vulkan/Vulkan/Vulkan/PresentIdKHR.gen.cs | 1 + .../Vulkan/Vulkan/PresentInfoKHR.gen.cs | 1 + .../Vulkan/Vulkan/PresentModeKHR.gen.cs | 1 + .../Vulkan/Vulkan/PresentRegionKHR.gen.cs | 1 + .../Vulkan/Vulkan/PresentRegionsKHR.gen.cs | 1 + .../Vulkan/PresentTimesInfoGOOGLE.gen.cs | 1 + .../Vulkan/Vulkan/PresentTimingInfoEXT.gen.cs | 1 + .../Vulkan/Vulkan/PrimitiveTopology.gen.cs | 1 + .../Vulkan/ProvokingVertexModeEXT.gen.cs | 1 + .../Vulkan/PushConstantBankInfoNV.gen.cs | 1 + .../Vulkan/Vulkan/PushConstantRange.gen.cs | 1 + .../Vulkan/Vulkan/PushConstantsInfo.gen.cs | 2 ++ .../Vulkan/PushDescriptorSetInfo.gen.cs | 1 + .../Vulkan/QueryLowLatencySupportNV.gen.cs | 1 + .../Vulkan/Vulkan/QueryResultFlags.gen.cs | 1 + ...QueueFamilyGlobalPriorityProperties.gen.cs | 1 + .../RayTracingShaderGroupCreateInfoNV.gen.cs | 1 + .../RayTracingShaderGroupTypeKHR.gen.cs | 1 + .../Vulkan/RenderPassCreateFlags.gen.cs | 1 + ...erPassCreationFeedbackCreateInfoEXT.gen.cs | 1 + ...sFragmentDensityMapOffsetEndInfoEXT.gen.cs | 4 ++++ ...PassInputAttachmentAspectCreateInfo.gen.cs | 1 + .../RenderPassStripeBeginInfoARM.gen.cs | 1 + .../RenderPassStripeSubmitInfoARM.gen.cs | 1 + .../RenderPassSubpassFeedbackInfoEXT.gen.cs | 1 + ...RenderPassTileShadingCreateInfoQCOM.gen.cs | 1 + .../Vulkan/Vulkan/RenderingAreaInfo.gen.cs | 1 + .../RenderingAttachmentFlagsInfoKHR.gen.cs | 1 + .../Vulkan/RenderingAttachmentFlagsKHR.gen.cs | 1 + .../Vulkan/RenderingAttachmentInfo.gen.cs | 1 + .../RenderingAttachmentLocationInfo.gen.cs | 1 + ...ragmentShadingRateAttachmentInfoKHR.gen.cs | 1 + .../Vulkan/Vulkan/ResolveImageInfo2.gen.cs | 1 + .../Vulkan/ResolveImageModeInfoKHR.gen.cs | 1 + .../Vulkan/Vulkan/SampleCountFlags.gen.cs | 1 + ...rColorComponentMappingCreateInfoEXT.gen.cs | 1 + ...mplerCustomBorderColorCreateInfoEXT.gen.cs | 1 + ...CustomBorderColorIndexCreateInfoEXT.gen.cs | 1 + .../Vulkan/Vulkan/SamplerMipmapMode.gen.cs | 1 + .../SamplerYcbcrConversionCreateInfo.gen.cs | 2 ++ .../Vulkan/SamplerYcbcrConversionInfo.gen.cs | 1 + .../Vulkan/Vulkan/SamplerYcbcrRange.gen.cs | 1 + .../Vulkan/Vulkan/SemaphoreSubmitInfo.gen.cs | 1 + .../Vulkan/Vulkan/Vulkan/SemaphoreType.gen.cs | 1 + .../Vulkan/Vulkan/ShaderCodeTypeEXT.gen.cs | 1 + .../ShaderCorePropertiesFlagsAMD.gen.cs | 1 + .../Vulkan/ShaderResourceUsageAMD.gen.cs | 1 + .../Vulkan/Vulkan/ShaderStageFlags.gen.cs | 1 + .../Vulkan/Vulkan/ShadingRatePaletteNV.gen.cs | 1 + ...haredPresentSurfaceCapabilities2KHR.gen.cs | 1 + .../Vulkan/SparseBufferMemoryBindInfo.gen.cs | 2 ++ .../Vulkan/SparseImageFormatFlags.gen.cs | 1 + .../Vulkan/SparseImageMemoryBind.gen.cs | 1 + .../Vulkan/SparseImageMemoryBindInfo.gen.cs | 2 ++ .../SparseImageMemoryRequirements2.gen.cs | 1 + .../Vulkan/Vulkan/StdVideoAv1Cdef.gen.cs | 1 + .../Vulkan/StdVideoAv1ColorPrimaries.gen.cs | 1 + .../Vulkan/Vulkan/StdVideoAv1FilmGrain.gen.cs | 1 + .../StdVideoAv1FrameRestorationType.gen.cs | 1 + .../Vulkan/Vulkan/StdVideoAv1Level.gen.cs | 1 + .../Vulkan/StdVideoAv1LoopRestoration.gen.cs | 1 + .../StdVideoAv1MatrixCoefficients.gen.cs | 1 + .../Vulkan/Vulkan/StdVideoAv1Profile.gen.cs | 1 + .../Vulkan/StdVideoAv1Quantization.gen.cs | 1 + .../Vulkan/StdVideoAv1ReferenceName.gen.cs | 1 + .../Vulkan/Vulkan/StdVideoAv1TileInfo.gen.cs | 1 + .../StdVideoAv1TransferCharacteristics.gen.cs | 1 + .../Vulkan/Vulkan/StdVideoAv1TxMode.gen.cs | 1 + .../StdVideoDecodeAv1PictureInfoFlags.gen.cs | 1 + .../StdVideoDecodeAv1ReferenceInfo.gen.cs | 1 + .../StdVideoDecodeH265PictureInfo.gen.cs | 1 + .../StdVideoEncodeAv1DecoderModelInfo.gen.cs | 1 + .../StdVideoEncodeH264PictureInfoFlags.gen.cs | 1 + .../StdVideoEncodeH264SliceHeaderFlags.gen.cs | 1 + .../StdVideoEncodeH265LongTermRefPics.gen.cs | 1 + .../StdVideoEncodeH265PictureInfoFlags.gen.cs | 1 + ...tdVideoEncodeH265ReferenceInfoFlags.gen.cs | 1 + ...tdVideoEncodeH265ReferenceListsInfo.gen.cs | 1 + ...eoEncodeH265SliceSegmentHeaderFlags.gen.cs | 2 ++ .../StdVideoEncodeH265WeightTableFlags.gen.cs | 1 + ...VideoH264DisableDeblockingFilterIdc.gen.cs | 1 + .../Vulkan/StdVideoH264HrdParameters.gen.cs | 1 + .../Vulkan/StdVideoH264ScalingLists.gen.cs | 1 + .../Vulkan/StdVideoH265AspectRatioIdc.gen.cs | 1 + .../Vulkan/StdVideoH265ChromaFormatIdc.gen.cs | 2 ++ .../Vulkan/StdVideoH265DecPicBufMgr.gen.cs | 1 + .../Vulkan/Vulkan/StdVideoH265HrdFlags.gen.cs | 1 + .../Vulkan/Vulkan/StdVideoH265LevelIdc.gen.cs | 1 + .../StdVideoH265PictureParameterSet.gen.cs | 2 ++ .../Vulkan/StdVideoH265PictureType.gen.cs | 1 + .../Vulkan/StdVideoH265ProfileIdc.gen.cs | 1 + .../StdVideoH265SequenceParameterSet.gen.cs | 1 + ...StdVideoH265ShortTermRefPicSetFlags.gen.cs | 1 + .../Vulkan/StdVideoH265SliceType.gen.cs | 1 + .../Vulkan/StdVideoH265SpsVuiFlags.gen.cs | 1 + .../StdVideoH265VideoParameterSet.gen.cs | 1 + .../Vulkan/StdVideoVp9ColorConfigFlags.gen.cs | 2 ++ .../Vulkan/StdVideoVp9ColorSpace.gen.cs | 2 ++ .../StdVideoVp9InterpolationFilter.gen.cs | 2 ++ .../Vulkan/Vulkan/StdVideoVp9Profile.gen.cs | 1 + .../Vulkan/StdVideoVp9ReferenceName.gen.cs | 1 + .../Vulkan/StdVideoVp9Segmentation.gen.cs | 1 + sources/Vulkan/Vulkan/Vulkan/StencilOp.gen.cs | 1 + .../Vulkan/Vulkan/StencilOpState.gen.cs | 1 + .../Vulkan/Vulkan/Vulkan/StructureType.gen.cs | 1 + .../Vulkan/Vulkan/SubpassDescription2.gen.cs | 1 + .../SubpassResolvePerformanceQueryEXT.gen.cs | 1 + .../Vulkan/SubpassSampleLocationsEXT.gen.cs | 1 + ...passShadingPipelineCreateInfoHUAWEI.gen.cs | 1 + .../Vulkan/SurfaceCapabilities2KHR.gen.cs | 2 ++ .../SurfaceCapabilitiesPresentWait2KHR.gen.cs | 1 + .../Vulkan/Vulkan/SurfaceFormat2KHR.gen.cs | 1 + .../Vulkan/Vulkan/SurfaceFormatKHR.gen.cs | 1 + .../SurfacePresentModeCompatibilityKHR.gen.cs | 2 ++ .../Vulkan/SurfacePresentModeKHR.gen.cs | 1 + .../SwapchainCounterCreateInfoEXT.gen.cs | 1 + .../Vulkan/SwapchainCreateFlagsKHR.gen.cs | 1 + ...wapchainFlagsSurfaceCapabilitiesEXT.gen.cs | 1 + .../SwapchainLatencyCreateInfoNV.gen.cs | 1 + .../SwapchainPresentFenceInfoKHR.gen.cs | 1 + .../SwapchainTimeDomainPropertiesEXT.gen.cs | 2 ++ .../SwapchainTimingPropertiesEXT.gen.cs | 2 ++ .../Vulkan/TensorFormatPropertiesARM.gen.cs | 1 + .../TensorMemoryRequirementsInfoARM.gen.cs | 1 + ...sorViewCaptureDescriptorDataInfoARM.gen.cs | 1 + .../TexelBufferDescriptorInfoEXT.gen.cs | 1 + .../Vulkan/TileMemoryBindInfoQCOM.gen.cs | 2 ++ .../Vulkan/TileMemoryRequirementsQCOM.gen.cs | 1 + .../Vulkan/Vulkan/ValidationCheckEXT.gen.cs | 1 + .../Vulkan/Vulkan/ValidationFlagsEXT.gen.cs | 1 + .../VertexInputBindingDescription.gen.cs | 1 + .../VertexInputBindingDescription2EXT.gen.cs | 1 + .../Vulkan/Vulkan/VideoCapabilitiesKHR.gen.cs | 1 + .../Vulkan/VideoCodingControlFlagsKHR.gen.cs | 1 + .../VideoDecodeAv1CapabilitiesKHR.gen.cs | 1 + .../VideoDecodeAv1DpbSlotInfoKHR.gen.cs | 1 + .../VideoDecodeCapabilityFlagsKHR.gen.cs | 1 + .../VideoDecodeH264CapabilitiesKHR.gen.cs | 1 + .../VideoDecodeH264PictureInfoKHR.gen.cs | 1 + .../VideoDecodeH265CapabilitiesKHR.gen.cs | 1 + .../VideoDecodeVp9PictureInfoKHR.gen.cs | 1 + .../VideoDecodeVp9ProfileInfoKHR.gen.cs | 1 + .../VideoEncodeAv1CapabilitiesKHR.gen.cs | 1 + ...eoEncodeAv1GopRemainingFrameInfoKHR.gen.cs | 1 + .../VideoEncodeAv1PictureInfoKHR.gen.cs | 1 + .../VideoEncodeAv1ProfileInfoKHR.gen.cs | 2 ++ ...deAv1QuantizationMapCapabilitiesKHR.gen.cs | 1 + .../VideoEncodeAv1RateControlFlagsKHR.gen.cs | 1 + .../VideoEncodeAv1RateControlGroupKHR.gen.cs | 1 + .../Vulkan/VideoEncodeAv1StdFlagsKHR.gen.cs | 1 + .../Vulkan/VideoEncodeCapabilitiesKHR.gen.cs | 1 + .../VideoEncodeCapabilityFlagsKHR.gen.cs | 1 + .../Vulkan/Vulkan/VideoEncodeFlagsKHR.gen.cs | 1 + .../VideoEncodeH264DpbSlotInfoKHR.gen.cs | 1 + ...oEncodeH264GopRemainingFrameInfoKHR.gen.cs | 1 + .../VideoEncodeH264ProfileInfoKHR.gen.cs | 1 + ...eH264QuantizationMapCapabilitiesKHR.gen.cs | 1 + ...codeH264SessionParametersAddInfoKHR.gen.cs | 1 + ...264SessionParametersFeedbackInfoKHR.gen.cs | 2 ++ ...oEncodeH265GopRemainingFrameInfoKHR.gen.cs | 1 + .../VideoEncodeH265ProfileInfoKHR.gen.cs | 1 + .../Vulkan/Vulkan/VideoEncodeH265QpKHR.gen.cs | 1 + ...EncodeH265QualityLevelPropertiesKHR.gen.cs | 1 + ...codeH265SessionParametersAddInfoKHR.gen.cs | 1 + ...265SessionParametersFeedbackInfoKHR.gen.cs | 1 + ...ncodeH265TransformBlockSizeFlagsKHR.gen.cs | 1 + ...eoEncodeIntraRefreshCapabilitiesKHR.gen.cs | 1 + ...ncodeQuantizationMapCapabilitiesKHR.gen.cs | 1 + .../VideoEncodeRateControlModeFlagsKHR.gen.cs | 1 + ...ncodeRgbConversionCapabilitiesVALVE.gen.cs | 1 + ...EncodeRgbRangeCompressionFlagsVALVE.gen.cs | 1 + ...odeSessionIntraRefreshCreateInfoKHR.gen.cs | 1 + ...odeSessionParametersFeedbackInfoKHR.gen.cs | 1 + .../Vulkan/VideoEncodeUsageFlagsKHR.gen.cs | 1 + .../Vulkan/VideoEncodeUsageInfoKHR.gen.cs | 1 + ...rmatAv1QuantizationMapPropertiesKHR.gen.cs | 1 + ...matH265QuantizationMapPropertiesKHR.gen.cs | 1 + .../Vulkan/VideoFormatPropertiesKHR.gen.cs | 1 + ...oFormatQuantizationMapPropertiesKHR.gen.cs | 1 + .../Vulkan/VideoReferenceSlotInfoKHR.gen.cs | 1 + .../Vulkan/VideoSessionCreateFlagsKHR.gen.cs | 1 + ...ideoSessionParametersCreateFlagsKHR.gen.cs | 1 + ...VideoSessionParametersCreateInfoKHR.gen.cs | 2 ++ ...VideoSessionParametersUpdateInfoKHR.gen.cs | 1 + sources/Vulkan/Vulkan/Vulkan/Viewport.gen.cs | 2 ++ sources/Vulkan/Vulkan/Vulkan/Vk.gen.cs | 2 ++ ...scriptorSetAccelerationStructureKHR.gen.cs | 1 + ...escriptorSetAccelerationStructureNV.gen.cs | 1 + ...riteDescriptorSetInlineUniformBlock.gen.cs | 4 ++++ .../Vulkan/WriteDescriptorSetTensorARM.gen.cs | 1 + .../WriteIndirectExecutionSetShaderEXT.gen.cs | 1 + 1140 files changed, 1243 insertions(+) diff --git a/.silktouch/openal-clangsharp.stout b/.silktouch/openal-clangsharp.stout index 0c83d976a0967bb1fb458087a29459a888fec51f..d84ad03c4c8f4fbef1a5d2403a0c5dfd23ac92dd 100644 GIT binary patch delta 75 zcmaE|pXtedCY}IqW)=|!CJqjU+VvZG0%DkI*KdxCnaBj9KgP{uVq(~^xhGM=7RaBx XY@P#%dND5qMA^*`2TD$!KHnDr`+OYn delta 75 zcmaE|pXtedCY}IqW)=|!CJqh;W&Mpj0WnO<`kUioCNhEOk8v}>bWfs$Es#HX**pgj S^4x*;d_XPku=oc9P diff --git a/.silktouch/opencl-clangsharp.stout b/.silktouch/opencl-clangsharp.stout index 6a8d9c4ec4c3e8a8a76c69421ce0a49cacfa09fc..15b3302966c8b7321ee89db1561b8c287be426eb 100644 GIT binary patch delta 450 zcmXBNF-rn*9L90Iv%KiWpt+?%TALagYKzE{3!95h+VZZDuG!VkNu;P}|C#R88 delta 450 zcmXBNKTASk9K~_HS>EW5L32xj1Wrv24YfsNNrr@0EkV%|=Qw@%o*xfStu55rg5;j;vh`a8QM5Q*hO}uF94<3vl?CXu z1=+=JjgH$NXj3IT}Ax=h!$*}}Np nWDC=Qt4uZPr+@2Yb^|J!Zr25*88=LC>tc2XDw=-2i#Zqo<%S;M delta 84 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 delta 41458 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 R+I$r8KFh%N?qz)T{{xY`<8c50 diff --git a/.silktouch/sdl-clangsharp.stout b/.silktouch/sdl-clangsharp.stout index 35961909a9531d7ab64f6310f71abe68194e11ee..9d337d338697e99474bfc08f26c3adebec7307ad 100644 GIT binary patch delta 7236 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 YLLS$$Wblcf^Ke|JFTh!BUclo12iTDn`Tzg` delta 7236 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 Lh_l$Tkj4KGGOZqU diff --git a/.silktouch/vulkan-clangsharp.stout b/.silktouch/vulkan-clangsharp.stout index 358409a50d673e83cb2595f2a21ecf01e8ac0858..faeb5ccb44df9c9f3410cf5b48448d9c9e35b460 100644 GIT binary patch delta 88784 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 delta 88784 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�*B5C@nbKtjntZzc4B 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 diff --git a/sources/OpenAL/OpenAL/al/AL.gen.cs b/sources/OpenAL/OpenAL/al/AL.gen.cs index aecf2deb58..33c4a52a79 100644 --- a/sources/OpenAL/OpenAL/al/AL.gen.cs +++ b/sources/OpenAL/OpenAL/al/AL.gen.cs @@ -5,8 +5,10 @@ // being header-derived only, implementations of the headers may have a less permissive license. using System; using System.Diagnostics; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.OpenAL; diff --git a/sources/OpenAL/OpenAL/al/ALContext.gen.cs b/sources/OpenAL/OpenAL/al/ALContext.gen.cs index 9dc8207788..ce101fddf7 100644 --- a/sources/OpenAL/OpenAL/al/ALContext.gen.cs +++ b/sources/OpenAL/OpenAL/al/ALContext.gen.cs @@ -5,8 +5,10 @@ // being header-derived only, implementations of the headers may have a less permissive license. using System; using System.Diagnostics; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.OpenAL; diff --git a/sources/OpenAL/OpenAL/al/IAL.gen.cs b/sources/OpenAL/OpenAL/al/IAL.gen.cs index 8d198744cf..58541c8e07 100644 --- a/sources/OpenAL/OpenAL/al/IAL.gen.cs +++ b/sources/OpenAL/OpenAL/al/IAL.gen.cs @@ -5,8 +5,10 @@ // being header-derived only, implementations of the headers may have a less permissive license. using System; using System.Diagnostics; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.OpenAL; diff --git a/sources/OpenAL/OpenAL/al/IALContext.gen.cs b/sources/OpenAL/OpenAL/al/IALContext.gen.cs index 6baac04f1c..6cc68ddb5a 100644 --- a/sources/OpenAL/OpenAL/al/IALContext.gen.cs +++ b/sources/OpenAL/OpenAL/al/IALContext.gen.cs @@ -5,8 +5,10 @@ // being header-derived only, implementations of the headers may have a less permissive license. using System; using System.Diagnostics; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.OpenAL; diff --git a/sources/OpenCL/OpenCL/OpenCL/BufferRegion.gen.cs b/sources/OpenCL/OpenCL/OpenCL/BufferRegion.gen.cs index 952e888a79..97df851e8e 100644 --- a/sources/OpenCL/OpenCL/OpenCL/BufferRegion.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/BufferRegion.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/Cl.gen.cs b/sources/OpenCL/OpenCL/OpenCL/Cl.gen.cs index e0bb192aa2..844d317c06 100644 --- a/sources/OpenCL/OpenCL/OpenCL/Cl.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/Cl.gen.cs @@ -4,8 +4,10 @@ // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. using System; using System.Diagnostics.CodeAnalysis; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.OpenCL; diff --git a/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationProperties.gen.cs b/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationProperties.gen.cs index c53b191323..f49775bf10 100644 --- a/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationProperties.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationPropertiesKHR.gen.cs b/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationPropertiesKHR.gen.cs index bca0c96a5e..464525ff03 100644 --- a/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationPropertiesKHR.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/DeviceIntegerDotProductAccelerationPropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/DevicePciBusInfoKHR.gen.cs b/sources/OpenCL/OpenCL/OpenCL/DevicePciBusInfoKHR.gen.cs index befbd6b2c6..6de15f94e4 100644 --- a/sources/OpenCL/OpenCL/OpenCL/DevicePciBusInfoKHR.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/DevicePciBusInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/ICl.gen.cs b/sources/OpenCL/OpenCL/OpenCL/ICl.gen.cs index eb97ae97da..db0b18e5c4 100644 --- a/sources/OpenCL/OpenCL/OpenCL/ICl.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/ICl.gen.cs @@ -4,8 +4,10 @@ // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. using System; using System.Diagnostics.CodeAnalysis; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.OpenCL; diff --git a/sources/OpenCL/OpenCL/OpenCL/ImageDesc.gen.cs b/sources/OpenCL/OpenCL/OpenCL/ImageDesc.gen.cs index d817688085..b343c876d1 100644 --- a/sources/OpenCL/OpenCL/OpenCL/ImageDesc.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/ImageDesc.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/ImageFormat.gen.cs b/sources/OpenCL/OpenCL/OpenCL/ImageFormat.gen.cs index 9d1e48c8e8..f078c2222a 100644 --- a/sources/OpenCL/OpenCL/OpenCL/ImageFormat.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/ImageFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/KernelAllocationInfoINTEL.gen.cs b/sources/OpenCL/OpenCL/OpenCL/KernelAllocationInfoINTEL.gen.cs index 5383565c86..041d722950 100644 --- a/sources/OpenCL/OpenCL/OpenCL/KernelAllocationInfoINTEL.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/KernelAllocationInfoINTEL.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/MemAndroidNativeBufferHostPtr.gen.cs b/sources/OpenCL/OpenCL/OpenCL/MemAndroidNativeBufferHostPtr.gen.cs index 5b21b5f701..c35f4474d5 100644 --- a/sources/OpenCL/OpenCL/OpenCL/MemAndroidNativeBufferHostPtr.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/MemAndroidNativeBufferHostPtr.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/MemExtHostPtr.gen.cs b/sources/OpenCL/OpenCL/OpenCL/MemExtHostPtr.gen.cs index fe128e3b5a..f07d7f3e4c 100644 --- a/sources/OpenCL/OpenCL/OpenCL/MemExtHostPtr.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/MemExtHostPtr.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/MemIonHostPtr.gen.cs b/sources/OpenCL/OpenCL/OpenCL/MemIonHostPtr.gen.cs index 734a86b178..58b1263e5a 100644 --- a/sources/OpenCL/OpenCL/OpenCL/MemIonHostPtr.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/MemIonHostPtr.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/MotionEstimationDescINTEL.gen.cs b/sources/OpenCL/OpenCL/OpenCL/MotionEstimationDescINTEL.gen.cs index fc4eb4d390..7eaa16d383 100644 --- a/sources/OpenCL/OpenCL/OpenCL/MotionEstimationDescINTEL.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/MotionEstimationDescINTEL.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/NameVersion.gen.cs b/sources/OpenCL/OpenCL/OpenCL/NameVersion.gen.cs index dbe0b25338..5cf705e97c 100644 --- a/sources/OpenCL/OpenCL/OpenCL/NameVersion.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/NameVersion.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/NameVersionKHR.gen.cs b/sources/OpenCL/OpenCL/OpenCL/NameVersionKHR.gen.cs index f4ddac74cd..960cc1c60e 100644 --- a/sources/OpenCL/OpenCL/OpenCL/NameVersionKHR.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/NameVersionKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenCL/OpenCL/OpenCL/QueueFamilyPropertiesINTEL.gen.cs b/sources/OpenCL/OpenCL/OpenCL/QueueFamilyPropertiesINTEL.gen.cs index 89a86c0264..4898f7e9a0 100644 --- a/sources/OpenCL/OpenCL/OpenCL/QueueFamilyPropertiesINTEL.gen.cs +++ b/sources/OpenCL/OpenCL/OpenCL/QueueFamilyPropertiesINTEL.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenCL headers and corresponding dependencies. // Original source is Copyright 2013-2026 The Khronos Group Inc. Licensed under the Apache 2.0 license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/OpenGL/OpenGL/Enums/AccumOp.gen.cs b/sources/OpenGL/OpenGL/Enums/AccumOp.gen.cs index 6fa009800b..88fe57aff2 100644 --- a/sources/OpenGL/OpenGL/Enums/AccumOp.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/AccumOp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/AlphaFunction.gen.cs b/sources/OpenGL/OpenGL/Enums/AlphaFunction.gen.cs index 53b66f8bda..1528c22a26 100644 --- a/sources/OpenGL/OpenGL/Enums/AlphaFunction.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/AlphaFunction.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ArrayObjectPNameATI.gen.cs b/sources/OpenGL/OpenGL/Enums/ArrayObjectPNameATI.gen.cs index 17d7fd92b7..ca6a22542a 100644 --- a/sources/OpenGL/OpenGL/Enums/ArrayObjectPNameATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ArrayObjectPNameATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ArrayObjectUsageATI.gen.cs b/sources/OpenGL/OpenGL/Enums/ArrayObjectUsageATI.gen.cs index ba8de071ae..72b80aaf8c 100644 --- a/sources/OpenGL/OpenGL/Enums/ArrayObjectUsageATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ArrayObjectUsageATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/AtomicCounterBufferPName.gen.cs b/sources/OpenGL/OpenGL/Enums/AtomicCounterBufferPName.gen.cs index 64a61df3ce..c6d73e85bf 100644 --- a/sources/OpenGL/OpenGL/Enums/AtomicCounterBufferPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/AtomicCounterBufferPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/AttribMask.gen.cs b/sources/OpenGL/OpenGL/Enums/AttribMask.gen.cs index 08f5e4e93e..07a055f06e 100644 --- a/sources/OpenGL/OpenGL/Enums/AttribMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/AttribMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/AttributeType.gen.cs b/sources/OpenGL/OpenGL/Enums/AttributeType.gen.cs index 47c309a2e6..f872dd0196 100644 --- a/sources/OpenGL/OpenGL/Enums/AttributeType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/AttributeType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BindTransformFeedbackTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/BindTransformFeedbackTarget.gen.cs index f23f6d8bb7..ea91e179c4 100644 --- a/sources/OpenGL/OpenGL/Enums/BindTransformFeedbackTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BindTransformFeedbackTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BinormalPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/BinormalPointerType.gen.cs index 2116d98f0c..7cdde1fd6f 100644 --- a/sources/OpenGL/OpenGL/Enums/BinormalPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BinormalPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BlendEquationMode.gen.cs b/sources/OpenGL/OpenGL/Enums/BlendEquationMode.gen.cs index 84a28167a7..f79f1f0d11 100644 --- a/sources/OpenGL/OpenGL/Enums/BlendEquationMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BlendEquationMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BlendingFactor.gen.cs b/sources/OpenGL/OpenGL/Enums/BlendingFactor.gen.cs index a77262d9c5..c1cd4b02c7 100644 --- a/sources/OpenGL/OpenGL/Enums/BlendingFactor.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BlendingFactor.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BlitFramebufferFilter.gen.cs b/sources/OpenGL/OpenGL/Enums/BlitFramebufferFilter.gen.cs index 54cc8452c5..35ee595403 100644 --- a/sources/OpenGL/OpenGL/Enums/BlitFramebufferFilter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BlitFramebufferFilter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/Boolean.gen.cs b/sources/OpenGL/OpenGL/Enums/Boolean.gen.cs index 46f72d6c43..e940ebffaa 100644 --- a/sources/OpenGL/OpenGL/Enums/Boolean.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/Boolean.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/Buffer.gen.cs b/sources/OpenGL/OpenGL/Enums/Buffer.gen.cs index b9fd457511..620e280667 100644 --- a/sources/OpenGL/OpenGL/Enums/Buffer.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/Buffer.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferAccess.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferAccess.gen.cs index 6cac4f7c86..d5bfd2c3cc 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferAccess.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferAccess.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferBitQCOM.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferBitQCOM.gen.cs index 184f9b6726..f5ee21bc99 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferBitQCOM.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferBitQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferPName.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferPName.gen.cs index 94ed6d4ccd..c649a0ace1 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferPointerName.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferPointerName.gen.cs index 84d08d37d4..b58077c81b 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferPointerName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferPointerName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferStorageMask.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferStorageMask.gen.cs index 8a120e1a8e..59d71ff1a6 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferStorageMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferStorageMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferStorageTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferStorageTarget.gen.cs index dbba109146..65a34d1986 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferStorageTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferStorageTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferTarget.gen.cs index 0a1ba37690..13369684cc 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/BufferUsage.gen.cs b/sources/OpenGL/OpenGL/Enums/BufferUsage.gen.cs index 9587b90c9d..a9a02b367b 100644 --- a/sources/OpenGL/OpenGL/Enums/BufferUsage.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/BufferUsage.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClampColorMode.gen.cs b/sources/OpenGL/OpenGL/Enums/ClampColorMode.gen.cs index f8e2420bf1..dc9faad270 100644 --- a/sources/OpenGL/OpenGL/Enums/ClampColorMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClampColorMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClampColorTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/ClampColorTarget.gen.cs index 312ad8ca3e..999cccc05c 100644 --- a/sources/OpenGL/OpenGL/Enums/ClampColorTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClampColorTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClearBufferMask.gen.cs b/sources/OpenGL/OpenGL/Enums/ClearBufferMask.gen.cs index 48a951513a..bea440ff7b 100644 --- a/sources/OpenGL/OpenGL/Enums/ClearBufferMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClearBufferMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClientAttribMask.gen.cs b/sources/OpenGL/OpenGL/Enums/ClientAttribMask.gen.cs index e107da4296..cf9d3f5ade 100644 --- a/sources/OpenGL/OpenGL/Enums/ClientAttribMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClientAttribMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClipControlDepth.gen.cs b/sources/OpenGL/OpenGL/Enums/ClipControlDepth.gen.cs index ff25481270..ff08df5ad7 100644 --- a/sources/OpenGL/OpenGL/Enums/ClipControlDepth.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClipControlDepth.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClipControlOrigin.gen.cs b/sources/OpenGL/OpenGL/Enums/ClipControlOrigin.gen.cs index de0b2e48f8..98c0387a54 100644 --- a/sources/OpenGL/OpenGL/Enums/ClipControlOrigin.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClipControlOrigin.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ClipPlaneName.gen.cs b/sources/OpenGL/OpenGL/Enums/ClipPlaneName.gen.cs index 71aa9a1823..a21f2fd5c0 100644 --- a/sources/OpenGL/OpenGL/Enums/ClipPlaneName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ClipPlaneName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorBuffer.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorBuffer.gen.cs index 321e65ae80..e75cce609b 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorBuffer.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorBuffer.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorMaterialParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorMaterialParameter.gen.cs index 60f09126c6..58e1d9cbfa 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorMaterialParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorMaterialParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorPointerType.gen.cs index 6863b08263..f30c8b0d82 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorTableParameterPName.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorTableParameterPName.gen.cs index 072124fae9..f5dcf5c86b 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorTableParameterPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorTableParameterPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorTableTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorTableTarget.gen.cs index 4d2dedfb68..aae7c1a192 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorTableTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorTableTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ColorTableTargetSGI.gen.cs b/sources/OpenGL/OpenGL/Enums/ColorTableTargetSGI.gen.cs index 3fa560996d..acb2eb4c0f 100644 --- a/sources/OpenGL/OpenGL/Enums/ColorTableTargetSGI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ColorTableTargetSGI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerBias.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerBias.gen.cs index 9449dc5629..19945e83ba 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerBias.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerBias.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerComponentUsage.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerComponentUsage.gen.cs index 19ea64c6a6..2f4ac7deaa 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerComponentUsage.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerComponentUsage.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerMappingNV.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerMappingNV.gen.cs index d623292aef..cad12f80c5 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerMappingNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerMappingNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerParameterNV.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerParameterNV.gen.cs index 0ca44b3173..3c1e75b412 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerParameterNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerParameterNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerPortion.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerPortion.gen.cs index b9a4f91619..ff1078ec4c 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerPortion.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerPortion.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerRegister.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerRegister.gen.cs index 7b2170276f..adfe40902b 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerRegister.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerRegister.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerScale.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerScale.gen.cs index 77dbde98bf..a054a06722 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerScale.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerScale.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerStageNV.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerStageNV.gen.cs index abaac38e26..803ac25ad1 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerStageNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerStageNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CombinerVariableNV.gen.cs b/sources/OpenGL/OpenGL/Enums/CombinerVariableNV.gen.cs index 42f56f4290..cdc9625bcb 100644 --- a/sources/OpenGL/OpenGL/Enums/CombinerVariableNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CombinerVariableNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CommandOpcodesNV.gen.cs b/sources/OpenGL/OpenGL/Enums/CommandOpcodesNV.gen.cs index 28f3a50264..7b4bb2903e 100644 --- a/sources/OpenGL/OpenGL/Enums/CommandOpcodesNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CommandOpcodesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ConditionalRenderMode.gen.cs b/sources/OpenGL/OpenGL/Enums/ConditionalRenderMode.gen.cs index 528bcc3538..dc44fdcd41 100644 --- a/sources/OpenGL/OpenGL/Enums/ConditionalRenderMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ConditionalRenderMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ContainerType.gen.cs b/sources/OpenGL/OpenGL/Enums/ContainerType.gen.cs index 15c0a7697b..17ca21adda 100644 --- a/sources/OpenGL/OpenGL/Enums/ContainerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ContainerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ContextFlagMask.gen.cs b/sources/OpenGL/OpenGL/Enums/ContextFlagMask.gen.cs index a120697304..1167caed43 100644 --- a/sources/OpenGL/OpenGL/Enums/ContextFlagMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ContextFlagMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ContextProfileMask.gen.cs b/sources/OpenGL/OpenGL/Enums/ContextProfileMask.gen.cs index 9e888f5c9c..31d65304f4 100644 --- a/sources/OpenGL/OpenGL/Enums/ContextProfileMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ContextProfileMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ConvolutionBorderMode.gen.cs b/sources/OpenGL/OpenGL/Enums/ConvolutionBorderMode.gen.cs index 97833c2699..c7ebd71279 100644 --- a/sources/OpenGL/OpenGL/Enums/ConvolutionBorderMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ConvolutionBorderMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ConvolutionParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/ConvolutionParameter.gen.cs index 9e822ae63f..fb0a23c59b 100644 --- a/sources/OpenGL/OpenGL/Enums/ConvolutionParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ConvolutionParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ConvolutionTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/ConvolutionTarget.gen.cs index 3416c79518..ce7522cfc1 100644 --- a/sources/OpenGL/OpenGL/Enums/ConvolutionTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ConvolutionTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ConvolutionTargetEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/ConvolutionTargetEXT.gen.cs index ade293f42a..a8a87baa76 100644 --- a/sources/OpenGL/OpenGL/Enums/ConvolutionTargetEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ConvolutionTargetEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CopyBufferSubDataTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/CopyBufferSubDataTarget.gen.cs index e6d54b7b68..f77f36ea79 100644 --- a/sources/OpenGL/OpenGL/Enums/CopyBufferSubDataTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CopyBufferSubDataTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CopyImageSubDataTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/CopyImageSubDataTarget.gen.cs index b093f02dc0..b7cfb2c103 100644 --- a/sources/OpenGL/OpenGL/Enums/CopyImageSubDataTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CopyImageSubDataTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/CullParameterEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/CullParameterEXT.gen.cs index 6ced66ce02..67040f7536 100644 --- a/sources/OpenGL/OpenGL/Enums/CullParameterEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/CullParameterEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DataTypeEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/DataTypeEXT.gen.cs index 429142bd3b..bdbdce4403 100644 --- a/sources/OpenGL/OpenGL/Enums/DataTypeEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DataTypeEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DebugSeverity.gen.cs b/sources/OpenGL/OpenGL/Enums/DebugSeverity.gen.cs index 1db8626038..a618856536 100644 --- a/sources/OpenGL/OpenGL/Enums/DebugSeverity.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DebugSeverity.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DebugSource.gen.cs b/sources/OpenGL/OpenGL/Enums/DebugSource.gen.cs index c607ccf04e..6a420c648f 100644 --- a/sources/OpenGL/OpenGL/Enums/DebugSource.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DebugSource.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DebugType.gen.cs b/sources/OpenGL/OpenGL/Enums/DebugType.gen.cs index b554e1006a..62ca9e1dda 100644 --- a/sources/OpenGL/OpenGL/Enums/DebugType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DebugType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DepthFunction.gen.cs b/sources/OpenGL/OpenGL/Enums/DepthFunction.gen.cs index 3a3e2d7cfd..535b29286c 100644 --- a/sources/OpenGL/OpenGL/Enums/DepthFunction.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DepthFunction.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DepthStencilTextureMode.gen.cs b/sources/OpenGL/OpenGL/Enums/DepthStencilTextureMode.gen.cs index b1c6677431..7de1e803ea 100644 --- a/sources/OpenGL/OpenGL/Enums/DepthStencilTextureMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DepthStencilTextureMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DrawBufferMode.gen.cs b/sources/OpenGL/OpenGL/Enums/DrawBufferMode.gen.cs index 56c1e76275..c6fff88ece 100644 --- a/sources/OpenGL/OpenGL/Enums/DrawBufferMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DrawBufferMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/DrawElementsType.gen.cs b/sources/OpenGL/OpenGL/Enums/DrawElementsType.gen.cs index e9052ff049..28f327695e 100644 --- a/sources/OpenGL/OpenGL/Enums/DrawElementsType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/DrawElementsType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ElementPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/ElementPointerType.gen.cs index bf93cff3d9..909fcffaa9 100644 --- a/sources/OpenGL/OpenGL/Enums/ElementPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ElementPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/EnableCap.gen.cs b/sources/OpenGL/OpenGL/Enums/EnableCap.gen.cs index 0eee239918..d0c3ba4c3a 100644 --- a/sources/OpenGL/OpenGL/Enums/EnableCap.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/EnableCap.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ErrorCode.gen.cs b/sources/OpenGL/OpenGL/Enums/ErrorCode.gen.cs index fad9947339..83d21c6378 100644 --- a/sources/OpenGL/OpenGL/Enums/ErrorCode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ErrorCode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/EvalMapsModeNV.gen.cs b/sources/OpenGL/OpenGL/Enums/EvalMapsModeNV.gen.cs index 8ff1fa5623..4b76f40f23 100644 --- a/sources/OpenGL/OpenGL/Enums/EvalMapsModeNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/EvalMapsModeNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/EvalTargetNV.gen.cs b/sources/OpenGL/OpenGL/Enums/EvalTargetNV.gen.cs index 82b89cd2c3..abdbf4185e 100644 --- a/sources/OpenGL/OpenGL/Enums/EvalTargetNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/EvalTargetNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ExternalHandleType.gen.cs b/sources/OpenGL/OpenGL/Enums/ExternalHandleType.gen.cs index afd6ac8e68..9e14480ffe 100644 --- a/sources/OpenGL/OpenGL/Enums/ExternalHandleType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ExternalHandleType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FeedBackToken.gen.cs b/sources/OpenGL/OpenGL/Enums/FeedBackToken.gen.cs index 6bc7962064..21fb4167ab 100644 --- a/sources/OpenGL/OpenGL/Enums/FeedBackToken.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FeedBackToken.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FeedbackType.gen.cs b/sources/OpenGL/OpenGL/Enums/FeedbackType.gen.cs index 34fae817e9..9efcf152ad 100644 --- a/sources/OpenGL/OpenGL/Enums/FeedbackType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FeedbackType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FenceConditionNV.gen.cs b/sources/OpenGL/OpenGL/Enums/FenceConditionNV.gen.cs index 9d13fc51b9..e5468928a6 100644 --- a/sources/OpenGL/OpenGL/Enums/FenceConditionNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FenceConditionNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FenceParameterNameNV.gen.cs b/sources/OpenGL/OpenGL/Enums/FenceParameterNameNV.gen.cs index b03d85ce30..f25d8d02aa 100644 --- a/sources/OpenGL/OpenGL/Enums/FenceParameterNameNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FenceParameterNameNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FfdMaskSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/FfdMaskSGIX.gen.cs index 70e1b12d36..49a9ff8782 100644 --- a/sources/OpenGL/OpenGL/Enums/FfdMaskSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FfdMaskSGIX.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FfdTargetSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/FfdTargetSGIX.gen.cs index 1b2b266552..afb32c6610 100644 --- a/sources/OpenGL/OpenGL/Enums/FfdTargetSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FfdTargetSGIX.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogCoordSrc.gen.cs b/sources/OpenGL/OpenGL/Enums/FogCoordSrc.gen.cs index 6e3b272660..0b17223c16 100644 --- a/sources/OpenGL/OpenGL/Enums/FogCoordSrc.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogCoordSrc.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogCoordinatePointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/FogCoordinatePointerType.gen.cs index a3dd44d775..d1830ddf77 100644 --- a/sources/OpenGL/OpenGL/Enums/FogCoordinatePointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogCoordinatePointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogMode.gen.cs b/sources/OpenGL/OpenGL/Enums/FogMode.gen.cs index 81b993667d..277019dff1 100644 --- a/sources/OpenGL/OpenGL/Enums/FogMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogPName.gen.cs b/sources/OpenGL/OpenGL/Enums/FogPName.gen.cs index dcb884329d..7cbf29b721 100644 --- a/sources/OpenGL/OpenGL/Enums/FogPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/FogParameter.gen.cs index 87d01ac8a9..81e3f5d8b0 100644 --- a/sources/OpenGL/OpenGL/Enums/FogParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogPointerTypeEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/FogPointerTypeEXT.gen.cs index a1279733b0..de5f809086 100644 --- a/sources/OpenGL/OpenGL/Enums/FogPointerTypeEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogPointerTypeEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FogPointerTypeIBM.gen.cs b/sources/OpenGL/OpenGL/Enums/FogPointerTypeIBM.gen.cs index 1e961cf0c4..a9b81bdea5 100644 --- a/sources/OpenGL/OpenGL/Enums/FogPointerTypeIBM.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FogPointerTypeIBM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FoveationConfigBitQCOM.gen.cs b/sources/OpenGL/OpenGL/Enums/FoveationConfigBitQCOM.gen.cs index ad37de8535..abf13504f2 100644 --- a/sources/OpenGL/OpenGL/Enums/FoveationConfigBitQCOM.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FoveationConfigBitQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentLightModelParameterSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentLightModelParameterSGIX.gen.cs index 39a56242c9..b9b7e2d70d 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentLightModelParameterSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentLightModelParameterSGIX.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentLightNameSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentLightNameSGIX.gen.cs index 4600ff6b7f..1e78060de9 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentLightNameSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentLightNameSGIX.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentLightParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentLightParameter.gen.cs index 8c202b6a22..34fbfa56fb 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentLightParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentLightParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentOp1ATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentOp1ATI.gen.cs index bfad7e7b18..f9571209c9 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentOp1ATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentOp1ATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentOp2ATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentOp2ATI.gen.cs index 5aeedc9918..075e35e5fb 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentOp2ATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentOp2ATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentOp3ATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentOp3ATI.gen.cs index e43d290be1..5e8d23623c 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentOp3ATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentOp3ATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderColorModMaskATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderColorModMaskATI.gen.cs index cd1c85ccdf..394a2bd386 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderColorModMaskATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderColorModMaskATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderConATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderConATI.gen.cs index 77c0d398b4..88a9af8551 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderConATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderConATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderDestMask.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderDestMask.gen.cs index cee95fe48e..5a3ac06402 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderDestMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderDestMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderDestModMask.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderDestModMask.gen.cs index 7a0b966cc3..cf98b9ca92 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderDestModMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderDestModMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderGenericSource.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderGenericSource.gen.cs index fd2bf4b02f..26052c9edd 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderGenericSource.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderGenericSource.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderRegATI.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderRegATI.gen.cs index 06dd8990c5..30042033fc 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderRegATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderRegATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderTextureSource.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderTextureSource.gen.cs index 5a0ad90072..d15dc2e0f2 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderTextureSource.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderTextureSource.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FragmentShaderValueRep.gen.cs b/sources/OpenGL/OpenGL/Enums/FragmentShaderValueRep.gen.cs index 951bcf64b7..e79cb25388 100644 --- a/sources/OpenGL/OpenGL/Enums/FragmentShaderValueRep.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FragmentShaderValueRep.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FramebufferAttachment.gen.cs b/sources/OpenGL/OpenGL/Enums/FramebufferAttachment.gen.cs index 2f734e2653..404f40c7e9 100644 --- a/sources/OpenGL/OpenGL/Enums/FramebufferAttachment.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FramebufferAttachment.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FramebufferAttachmentParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/FramebufferAttachmentParameterName.gen.cs index e1aaa457af..9895337601 100644 --- a/sources/OpenGL/OpenGL/Enums/FramebufferAttachmentParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FramebufferAttachmentParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FramebufferParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/FramebufferParameterName.gen.cs index 93613f4326..0030679b5e 100644 --- a/sources/OpenGL/OpenGL/Enums/FramebufferParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FramebufferParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FramebufferStatus.gen.cs b/sources/OpenGL/OpenGL/Enums/FramebufferStatus.gen.cs index 5dde8c0ad0..62f9e48918 100644 --- a/sources/OpenGL/OpenGL/Enums/FramebufferStatus.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FramebufferStatus.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FramebufferTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/FramebufferTarget.gen.cs index 92427c98e3..53e4f3dd4c 100644 --- a/sources/OpenGL/OpenGL/Enums/FramebufferTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FramebufferTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/FrontFaceDirection.gen.cs b/sources/OpenGL/OpenGL/Enums/FrontFaceDirection.gen.cs index 88d10c675f..693084d981 100644 --- a/sources/OpenGL/OpenGL/Enums/FrontFaceDirection.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/FrontFaceDirection.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GLEnum.gen.cs b/sources/OpenGL/OpenGL/Enums/GLEnum.gen.cs index b6d4e2a8de..c1f9b5201f 100644 --- a/sources/OpenGL/OpenGL/Enums/GLEnum.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GLEnum.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetFramebufferParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/GetFramebufferParameter.gen.cs index fd4e9abc98..216f6a234c 100644 --- a/sources/OpenGL/OpenGL/Enums/GetFramebufferParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetFramebufferParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetHistogramParameterPName.gen.cs b/sources/OpenGL/OpenGL/Enums/GetHistogramParameterPName.gen.cs index 29a78b0379..2b07048e96 100644 --- a/sources/OpenGL/OpenGL/Enums/GetHistogramParameterPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetHistogramParameterPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetMapQuery.gen.cs b/sources/OpenGL/OpenGL/Enums/GetMapQuery.gen.cs index 876b2b1c1c..6e3eb63866 100644 --- a/sources/OpenGL/OpenGL/Enums/GetMapQuery.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetMapQuery.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetMinmaxParameterPName.gen.cs b/sources/OpenGL/OpenGL/Enums/GetMinmaxParameterPName.gen.cs index ee438cbe65..ef7039dfd0 100644 --- a/sources/OpenGL/OpenGL/Enums/GetMinmaxParameterPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetMinmaxParameterPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetMultisamplePName.gen.cs b/sources/OpenGL/OpenGL/Enums/GetMultisamplePName.gen.cs index 3fe2540f44..728c090dd4 100644 --- a/sources/OpenGL/OpenGL/Enums/GetMultisamplePName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetMultisamplePName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetPName.gen.cs b/sources/OpenGL/OpenGL/Enums/GetPName.gen.cs index cc41f2eabd..0826b8aa2a 100644 --- a/sources/OpenGL/OpenGL/Enums/GetPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetPointervPName.gen.cs b/sources/OpenGL/OpenGL/Enums/GetPointervPName.gen.cs index f8d3a75422..275e9fe7a8 100644 --- a/sources/OpenGL/OpenGL/Enums/GetPointervPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetPointervPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetTexBumpParameterATI.gen.cs b/sources/OpenGL/OpenGL/Enums/GetTexBumpParameterATI.gen.cs index 42861c6dd2..8df40fba1f 100644 --- a/sources/OpenGL/OpenGL/Enums/GetTexBumpParameterATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetTexBumpParameterATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetTextureParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/GetTextureParameter.gen.cs index b994e64bc1..957936c722 100644 --- a/sources/OpenGL/OpenGL/Enums/GetTextureParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetTextureParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GetVariantValueEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/GetVariantValueEXT.gen.cs index bb35d2fe83..5bce7eb8bc 100644 --- a/sources/OpenGL/OpenGL/Enums/GetVariantValueEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GetVariantValueEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/GraphicsResetStatus.gen.cs b/sources/OpenGL/OpenGL/Enums/GraphicsResetStatus.gen.cs index 7225537160..227e760860 100644 --- a/sources/OpenGL/OpenGL/Enums/GraphicsResetStatus.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/GraphicsResetStatus.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/HintMode.gen.cs b/sources/OpenGL/OpenGL/Enums/HintMode.gen.cs index a70299b9eb..d5e0cb744e 100644 --- a/sources/OpenGL/OpenGL/Enums/HintMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/HintMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/HintTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/HintTarget.gen.cs index 2f0cf0c8e9..aa4b87f546 100644 --- a/sources/OpenGL/OpenGL/Enums/HintTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/HintTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/HintTargetPGI.gen.cs b/sources/OpenGL/OpenGL/Enums/HintTargetPGI.gen.cs index fd08d7d562..8731b9c299 100644 --- a/sources/OpenGL/OpenGL/Enums/HintTargetPGI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/HintTargetPGI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/HistogramTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/HistogramTarget.gen.cs index 52f31b1cde..f9c44034cc 100644 --- a/sources/OpenGL/OpenGL/Enums/HistogramTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/HistogramTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/HistogramTargetEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/HistogramTargetEXT.gen.cs index e4ee939d74..a15af45cc2 100644 --- a/sources/OpenGL/OpenGL/Enums/HistogramTargetEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/HistogramTargetEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ImageTransformPNameHP.gen.cs b/sources/OpenGL/OpenGL/Enums/ImageTransformPNameHP.gen.cs index b689d99d4d..7b43e40fd6 100644 --- a/sources/OpenGL/OpenGL/Enums/ImageTransformPNameHP.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ImageTransformPNameHP.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ImageTransformTargetHP.gen.cs b/sources/OpenGL/OpenGL/Enums/ImageTransformTargetHP.gen.cs index cd44fc414d..4a5073a20a 100644 --- a/sources/OpenGL/OpenGL/Enums/ImageTransformTargetHP.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ImageTransformTargetHP.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/IndexFunction.gen.cs b/sources/OpenGL/OpenGL/Enums/IndexFunction.gen.cs index af25d0f7b5..c68ec19b39 100644 --- a/sources/OpenGL/OpenGL/Enums/IndexFunction.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/IndexFunction.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/IndexMaterialParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/IndexMaterialParameter.gen.cs index 641011d36a..10f72d2443 100644 --- a/sources/OpenGL/OpenGL/Enums/IndexMaterialParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/IndexMaterialParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/IndexPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/IndexPointerType.gen.cs index d91af41cd9..30d015ac4b 100644 --- a/sources/OpenGL/OpenGL/Enums/IndexPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/IndexPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/InstancedPathCoverMode.gen.cs b/sources/OpenGL/OpenGL/Enums/InstancedPathCoverMode.gen.cs index 5fb32301ff..815aceaea4 100644 --- a/sources/OpenGL/OpenGL/Enums/InstancedPathCoverMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/InstancedPathCoverMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/InterleavedArrayFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/InterleavedArrayFormat.gen.cs index f855cb6621..a2ef4f90a2 100644 --- a/sources/OpenGL/OpenGL/Enums/InterleavedArrayFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/InterleavedArrayFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/InternalFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/InternalFormat.gen.cs index 2e781a6703..dc942b436a 100644 --- a/sources/OpenGL/OpenGL/Enums/InternalFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/InternalFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/InternalFormatPName.gen.cs b/sources/OpenGL/OpenGL/Enums/InternalFormatPName.gen.cs index 661f630fad..320d6e4a33 100644 --- a/sources/OpenGL/OpenGL/Enums/InternalFormatPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/InternalFormatPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/InvalidateFramebufferAttachment.gen.cs b/sources/OpenGL/OpenGL/Enums/InvalidateFramebufferAttachment.gen.cs index 3f511c7903..a581a9a75c 100644 --- a/sources/OpenGL/OpenGL/Enums/InvalidateFramebufferAttachment.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/InvalidateFramebufferAttachment.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightEnvMode.gen.cs b/sources/OpenGL/OpenGL/Enums/LightEnvMode.gen.cs index 98c525723e..3979fedf2e 100644 --- a/sources/OpenGL/OpenGL/Enums/LightEnvMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightEnvMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightEnvParameterSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/LightEnvParameterSGIX.gen.cs index b76dfb52e0..7a732bb6ac 100644 --- a/sources/OpenGL/OpenGL/Enums/LightEnvParameterSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightEnvParameterSGIX.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightModelColorControl.gen.cs b/sources/OpenGL/OpenGL/Enums/LightModelColorControl.gen.cs index 75541c89e9..7752c68a31 100644 --- a/sources/OpenGL/OpenGL/Enums/LightModelColorControl.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightModelColorControl.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightModelParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/LightModelParameter.gen.cs index 58197ab174..ab5e385f81 100644 --- a/sources/OpenGL/OpenGL/Enums/LightModelParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightModelParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightName.gen.cs b/sources/OpenGL/OpenGL/Enums/LightName.gen.cs index 04a0fabb97..ced449fc8b 100644 --- a/sources/OpenGL/OpenGL/Enums/LightName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/LightParameter.gen.cs index 92f8b6aa19..55f579671f 100644 --- a/sources/OpenGL/OpenGL/Enums/LightParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightTextureMode.gen.cs b/sources/OpenGL/OpenGL/Enums/LightTextureMode.gen.cs index 9ff1ecb1df..4068dc125d 100644 --- a/sources/OpenGL/OpenGL/Enums/LightTextureMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightTextureMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LightTexturePNameEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/LightTexturePNameEXT.gen.cs index 89f1e59367..dd72b9f1a9 100644 --- a/sources/OpenGL/OpenGL/Enums/LightTexturePNameEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LightTexturePNameEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ListMode.gen.cs b/sources/OpenGL/OpenGL/Enums/ListMode.gen.cs index d1e79b3a71..845ea0e065 100644 --- a/sources/OpenGL/OpenGL/Enums/ListMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ListMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ListNameType.gen.cs b/sources/OpenGL/OpenGL/Enums/ListNameType.gen.cs index e7726c9cba..d58094cf91 100644 --- a/sources/OpenGL/OpenGL/Enums/ListNameType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ListNameType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ListParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/ListParameterName.gen.cs index ce4175c99b..2a1c6d0187 100644 --- a/sources/OpenGL/OpenGL/Enums/ListParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ListParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/LogicOp.gen.cs b/sources/OpenGL/OpenGL/Enums/LogicOp.gen.cs index 48d407a150..0b99183c4a 100644 --- a/sources/OpenGL/OpenGL/Enums/LogicOp.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/LogicOp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapAttribParameterNV.gen.cs b/sources/OpenGL/OpenGL/Enums/MapAttribParameterNV.gen.cs index fa1c8eb59b..88684776cb 100644 --- a/sources/OpenGL/OpenGL/Enums/MapAttribParameterNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapAttribParameterNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapBufferAccessMask.gen.cs b/sources/OpenGL/OpenGL/Enums/MapBufferAccessMask.gen.cs index 8ba6a6820a..82585f8a87 100644 --- a/sources/OpenGL/OpenGL/Enums/MapBufferAccessMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapBufferAccessMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapParameterNV.gen.cs b/sources/OpenGL/OpenGL/Enums/MapParameterNV.gen.cs index 9e66cff06e..05e6fe2e77 100644 --- a/sources/OpenGL/OpenGL/Enums/MapParameterNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapParameterNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapQuery.gen.cs b/sources/OpenGL/OpenGL/Enums/MapQuery.gen.cs index e320bae112..c6228137f8 100644 --- a/sources/OpenGL/OpenGL/Enums/MapQuery.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapQuery.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/MapTarget.gen.cs index 6c9738449b..dcc501bb48 100644 --- a/sources/OpenGL/OpenGL/Enums/MapTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapTextureFormatINTEL.gen.cs b/sources/OpenGL/OpenGL/Enums/MapTextureFormatINTEL.gen.cs index 3e4a42bba3..035117f39b 100644 --- a/sources/OpenGL/OpenGL/Enums/MapTextureFormatINTEL.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapTextureFormatINTEL.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MapType.gen.cs b/sources/OpenGL/OpenGL/Enums/MapType.gen.cs index 5f0a2b6078..d881e36ec5 100644 --- a/sources/OpenGL/OpenGL/Enums/MapType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MapType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MaterialParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/MaterialParameter.gen.cs index 9d07c8e24c..eb0d20d953 100644 --- a/sources/OpenGL/OpenGL/Enums/MaterialParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MaterialParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MatrixIndexPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/MatrixIndexPointerType.gen.cs index 8d172a729f..5b48964c7e 100644 --- a/sources/OpenGL/OpenGL/Enums/MatrixIndexPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MatrixIndexPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MatrixMode.gen.cs b/sources/OpenGL/OpenGL/Enums/MatrixMode.gen.cs index 875a3d84ec..f52453fa29 100644 --- a/sources/OpenGL/OpenGL/Enums/MatrixMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MatrixMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MemoryBarrierMask.gen.cs b/sources/OpenGL/OpenGL/Enums/MemoryBarrierMask.gen.cs index a200342522..6b7f48bd64 100644 --- a/sources/OpenGL/OpenGL/Enums/MemoryBarrierMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MemoryBarrierMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MemoryObjectParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/MemoryObjectParameterName.gen.cs index a4833378c1..b733f643ca 100644 --- a/sources/OpenGL/OpenGL/Enums/MemoryObjectParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MemoryObjectParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MeshMode1.gen.cs b/sources/OpenGL/OpenGL/Enums/MeshMode1.gen.cs index 25419a7aa3..8d8e552e64 100644 --- a/sources/OpenGL/OpenGL/Enums/MeshMode1.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MeshMode1.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MeshMode2.gen.cs b/sources/OpenGL/OpenGL/Enums/MeshMode2.gen.cs index 3618959193..f65023db46 100644 --- a/sources/OpenGL/OpenGL/Enums/MeshMode2.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MeshMode2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MinmaxTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/MinmaxTarget.gen.cs index 687bd99f88..d1d9c64aa7 100644 --- a/sources/OpenGL/OpenGL/Enums/MinmaxTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MinmaxTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/MinmaxTargetEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/MinmaxTargetEXT.gen.cs index 60a930c750..8199f01818 100644 --- a/sources/OpenGL/OpenGL/Enums/MinmaxTargetEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/MinmaxTargetEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/NormalPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/NormalPointerType.gen.cs index cbc0709689..16574db95a 100644 --- a/sources/OpenGL/OpenGL/Enums/NormalPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/NormalPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ObjectIdentifier.gen.cs b/sources/OpenGL/OpenGL/Enums/ObjectIdentifier.gen.cs index ce99f617aa..0b297763db 100644 --- a/sources/OpenGL/OpenGL/Enums/ObjectIdentifier.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ObjectIdentifier.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ObjectTypeAPPLE.gen.cs b/sources/OpenGL/OpenGL/Enums/ObjectTypeAPPLE.gen.cs index 1ae529e478..54f3dc3719 100644 --- a/sources/OpenGL/OpenGL/Enums/ObjectTypeAPPLE.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ObjectTypeAPPLE.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/OcclusionQueryEventMaskAMD.gen.cs b/sources/OpenGL/OpenGL/Enums/OcclusionQueryEventMaskAMD.gen.cs index 01f0a53a3a..bd63b2068b 100644 --- a/sources/OpenGL/OpenGL/Enums/OcclusionQueryEventMaskAMD.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/OcclusionQueryEventMaskAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/OcclusionQueryParameterNameNV.gen.cs b/sources/OpenGL/OpenGL/Enums/OcclusionQueryParameterNameNV.gen.cs index a88c1cc49b..4f6002550d 100644 --- a/sources/OpenGL/OpenGL/Enums/OcclusionQueryParameterNameNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/OcclusionQueryParameterNameNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PNTrianglesPNameATI.gen.cs b/sources/OpenGL/OpenGL/Enums/PNTrianglesPNameATI.gen.cs index 8ff7588775..453c2a493f 100644 --- a/sources/OpenGL/OpenGL/Enums/PNTrianglesPNameATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PNTrianglesPNameATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ParameterRangeEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/ParameterRangeEXT.gen.cs index f4cc3c2fa0..8409975951 100644 --- a/sources/OpenGL/OpenGL/Enums/ParameterRangeEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ParameterRangeEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PatchParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/PatchParameterName.gen.cs index 9e63d1493f..6c007a00db 100644 --- a/sources/OpenGL/OpenGL/Enums/PatchParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PatchParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathColor.gen.cs b/sources/OpenGL/OpenGL/Enums/PathColor.gen.cs index 737958600f..c2c70ba2c9 100644 --- a/sources/OpenGL/OpenGL/Enums/PathColor.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathColor.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathColorFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/PathColorFormat.gen.cs index 4512a0a493..e325e01d26 100644 --- a/sources/OpenGL/OpenGL/Enums/PathColorFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathColorFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathCoordType.gen.cs b/sources/OpenGL/OpenGL/Enums/PathCoordType.gen.cs index b142235617..4a8609ac8b 100644 --- a/sources/OpenGL/OpenGL/Enums/PathCoordType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathCoordType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathCoverMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PathCoverMode.gen.cs index 8e9d1a8e45..56fc55c26f 100644 --- a/sources/OpenGL/OpenGL/Enums/PathCoverMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathCoverMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathElementType.gen.cs b/sources/OpenGL/OpenGL/Enums/PathElementType.gen.cs index 7def9b957f..9d331f3b19 100644 --- a/sources/OpenGL/OpenGL/Enums/PathElementType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathElementType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathFillMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PathFillMode.gen.cs index 27b3787f85..caf36378c1 100644 --- a/sources/OpenGL/OpenGL/Enums/PathFillMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathFillMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathFontStyle.gen.cs b/sources/OpenGL/OpenGL/Enums/PathFontStyle.gen.cs index e4166b0b52..63ade9981e 100644 --- a/sources/OpenGL/OpenGL/Enums/PathFontStyle.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathFontStyle.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathFontTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/PathFontTarget.gen.cs index 9550997122..68e70e4524 100644 --- a/sources/OpenGL/OpenGL/Enums/PathFontTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathFontTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathGenMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PathGenMode.gen.cs index fbb67f3c79..8e01273759 100644 --- a/sources/OpenGL/OpenGL/Enums/PathGenMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathGenMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathHandleMissingGlyphs.gen.cs b/sources/OpenGL/OpenGL/Enums/PathHandleMissingGlyphs.gen.cs index 0d0fe6bc53..fdd5018d12 100644 --- a/sources/OpenGL/OpenGL/Enums/PathHandleMissingGlyphs.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathHandleMissingGlyphs.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathListMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PathListMode.gen.cs index 1daf06b186..84f4cce437 100644 --- a/sources/OpenGL/OpenGL/Enums/PathListMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathListMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathMetricMask.gen.cs b/sources/OpenGL/OpenGL/Enums/PathMetricMask.gen.cs index 568f698b83..af058a9829 100644 --- a/sources/OpenGL/OpenGL/Enums/PathMetricMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathMetricMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/PathParameter.gen.cs index ebc05d829b..389bb36972 100644 --- a/sources/OpenGL/OpenGL/Enums/PathParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathRenderingTokenNV.gen.cs b/sources/OpenGL/OpenGL/Enums/PathRenderingTokenNV.gen.cs index 994d7a3f93..40a99aba87 100644 --- a/sources/OpenGL/OpenGL/Enums/PathRenderingTokenNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathRenderingTokenNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathStringFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/PathStringFormat.gen.cs index d805d307d5..5b34736a2c 100644 --- a/sources/OpenGL/OpenGL/Enums/PathStringFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathStringFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PathTransformType.gen.cs b/sources/OpenGL/OpenGL/Enums/PathTransformType.gen.cs index d6251848aa..2ae0eabe7d 100644 --- a/sources/OpenGL/OpenGL/Enums/PathTransformType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PathTransformType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PerfQueryDataFlags.gen.cs b/sources/OpenGL/OpenGL/Enums/PerfQueryDataFlags.gen.cs index 135b480997..2637015946 100644 --- a/sources/OpenGL/OpenGL/Enums/PerfQueryDataFlags.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PerfQueryDataFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PerformanceQueryCapsMaskINTEL.gen.cs b/sources/OpenGL/OpenGL/Enums/PerformanceQueryCapsMaskINTEL.gen.cs index a464c4804a..09d6443432 100644 --- a/sources/OpenGL/OpenGL/Enums/PerformanceQueryCapsMaskINTEL.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PerformanceQueryCapsMaskINTEL.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PipelineParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/PipelineParameterName.gen.cs index 878f6bf579..39a037180a 100644 --- a/sources/OpenGL/OpenGL/Enums/PipelineParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PipelineParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelCopyType.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelCopyType.gen.cs index f13b440d7b..75ef4b6c52 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelCopyType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelCopyType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelDataRangeTargetNV.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelDataRangeTargetNV.gen.cs index 40f39ac0ec..b68bbf29ae 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelDataRangeTargetNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelDataRangeTargetNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelFormat.gen.cs index 54e72196a1..07d29dfa77 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelMap.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelMap.gen.cs index 6da906f429..942972a998 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelMap.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelMap.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelStoreParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelStoreParameter.gen.cs index 73745cd2fb..a88615dcb4 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelStoreParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelStoreParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelStoreResampleMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelStoreResampleMode.gen.cs index d308045070..8bf5c5dabb 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelStoreResampleMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelStoreResampleMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelStoreSubsampleRate.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelStoreSubsampleRate.gen.cs index ba2bbc09d7..4eca1924d0 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelStoreSubsampleRate.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelStoreSubsampleRate.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelTexGenMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelTexGenMode.gen.cs index c0bcdc82e3..1ebdba497e 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelTexGenMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelTexGenMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelTexGenParameterNameSGIS.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelTexGenParameterNameSGIS.gen.cs index d385f32dff..c8cb8b69a6 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelTexGenParameterNameSGIS.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelTexGenParameterNameSGIS.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelTransferParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelTransferParameter.gen.cs index 52d5aa4d93..a747fbafc0 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelTransferParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelTransferParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelTransformPNameEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelTransformPNameEXT.gen.cs index 3e926a941a..b90dd5efe2 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelTransformPNameEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelTransformPNameEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelTransformTargetEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelTransformTargetEXT.gen.cs index 56f39882e3..f500dd5b06 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelTransformTargetEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelTransformTargetEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PixelType.gen.cs b/sources/OpenGL/OpenGL/Enums/PixelType.gen.cs index b921196cd4..a234fb8762 100644 --- a/sources/OpenGL/OpenGL/Enums/PixelType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PixelType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PointParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/PointParameterName.gen.cs index 36d26e291a..13f740bb1c 100644 --- a/sources/OpenGL/OpenGL/Enums/PointParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PointParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PolygonMode.gen.cs b/sources/OpenGL/OpenGL/Enums/PolygonMode.gen.cs index a4e638aed9..438edc835e 100644 --- a/sources/OpenGL/OpenGL/Enums/PolygonMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PolygonMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PrecisionType.gen.cs b/sources/OpenGL/OpenGL/Enums/PrecisionType.gen.cs index cc081fcad4..1077e891e6 100644 --- a/sources/OpenGL/OpenGL/Enums/PrecisionType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PrecisionType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PreserveModeATI.gen.cs b/sources/OpenGL/OpenGL/Enums/PreserveModeATI.gen.cs index fab795bd34..79d384bebf 100644 --- a/sources/OpenGL/OpenGL/Enums/PreserveModeATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PreserveModeATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/PrimitiveType.gen.cs b/sources/OpenGL/OpenGL/Enums/PrimitiveType.gen.cs index e8dfb46601..974957821a 100644 --- a/sources/OpenGL/OpenGL/Enums/PrimitiveType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/PrimitiveType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramFormat.gen.cs index f945faee65..2b1b6f4136 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramInterface.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramInterface.gen.cs index 12e2866466..9346082610 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramInterface.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramInterface.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramInterfacePName.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramInterfacePName.gen.cs index 267a7ef820..aca4658bd2 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramInterfacePName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramInterfacePName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramParameterPName.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramParameterPName.gen.cs index e3d8bd02d6..925c60406f 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramParameterPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramParameterPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramProperty.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramProperty.gen.cs index 63dd97f4b3..da7466b34c 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramProperty.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramProperty.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramResourceProperty.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramResourceProperty.gen.cs index e97e09bd9b..c1204ffd54 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramResourceProperty.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramResourceProperty.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramStagePName.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramStagePName.gen.cs index 24a24e770b..06c55fd599 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramStagePName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramStagePName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramStringProperty.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramStringProperty.gen.cs index 81caf495a3..dc4fe6f733 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramStringProperty.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramStringProperty.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ProgramTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/ProgramTarget.gen.cs index 5a80bc03d5..95874b2b09 100644 --- a/sources/OpenGL/OpenGL/Enums/ProgramTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ProgramTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/QueryCounterTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/QueryCounterTarget.gen.cs index b258a57e8c..bd03349fec 100644 --- a/sources/OpenGL/OpenGL/Enums/QueryCounterTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/QueryCounterTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/QueryObjectParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/QueryObjectParameterName.gen.cs index 0e320f5e8f..da9466f9f8 100644 --- a/sources/OpenGL/OpenGL/Enums/QueryObjectParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/QueryObjectParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/QueryParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/QueryParameterName.gen.cs index bf6617cd71..21471fa90f 100644 --- a/sources/OpenGL/OpenGL/Enums/QueryParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/QueryParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/QueryTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/QueryTarget.gen.cs index 2cf634a8f9..56fcd2e4e0 100644 --- a/sources/OpenGL/OpenGL/Enums/QueryTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/QueryTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ReadBufferMode.gen.cs b/sources/OpenGL/OpenGL/Enums/ReadBufferMode.gen.cs index 69f63031aa..95b28c2bdc 100644 --- a/sources/OpenGL/OpenGL/Enums/ReadBufferMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ReadBufferMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/RenderbufferParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/RenderbufferParameterName.gen.cs index b9f9d33268..1702290dd5 100644 --- a/sources/OpenGL/OpenGL/Enums/RenderbufferParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/RenderbufferParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/RenderbufferTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/RenderbufferTarget.gen.cs index b4d91c8f32..b8f0f0c54e 100644 --- a/sources/OpenGL/OpenGL/Enums/RenderbufferTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/RenderbufferTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/RenderingMode.gen.cs b/sources/OpenGL/OpenGL/Enums/RenderingMode.gen.cs index acd64eaf5a..3e406c35db 100644 --- a/sources/OpenGL/OpenGL/Enums/RenderingMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/RenderingMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ReplacementCodeType.gen.cs b/sources/OpenGL/OpenGL/Enums/ReplacementCodeType.gen.cs index 429bf4b016..9a68ab30cf 100644 --- a/sources/OpenGL/OpenGL/Enums/ReplacementCodeType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ReplacementCodeType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SamplePatternEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/SamplePatternEXT.gen.cs index cac83311d7..7d9d054f83 100644 --- a/sources/OpenGL/OpenGL/Enums/SamplePatternEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SamplePatternEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SamplePatternSGIS.gen.cs b/sources/OpenGL/OpenGL/Enums/SamplePatternSGIS.gen.cs index 95dfdb754f..6af887f8db 100644 --- a/sources/OpenGL/OpenGL/Enums/SamplePatternSGIS.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SamplePatternSGIS.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SamplerParameterF.gen.cs b/sources/OpenGL/OpenGL/Enums/SamplerParameterF.gen.cs index 4b70cac339..eda47b63c9 100644 --- a/sources/OpenGL/OpenGL/Enums/SamplerParameterF.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SamplerParameterF.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SamplerParameterI.gen.cs b/sources/OpenGL/OpenGL/Enums/SamplerParameterI.gen.cs index 56ce182840..b4c540fc1a 100644 --- a/sources/OpenGL/OpenGL/Enums/SamplerParameterI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SamplerParameterI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ScalarType.gen.cs b/sources/OpenGL/OpenGL/Enums/ScalarType.gen.cs index d496195dbd..3ba7a4645c 100644 --- a/sources/OpenGL/OpenGL/Enums/ScalarType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ScalarType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SecondaryColorPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/SecondaryColorPointerType.gen.cs index 78f58090e9..0419d36629 100644 --- a/sources/OpenGL/OpenGL/Enums/SecondaryColorPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SecondaryColorPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SemaphoreParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/SemaphoreParameterName.gen.cs index 5a0de37ad5..4c6b93cb7b 100644 --- a/sources/OpenGL/OpenGL/Enums/SemaphoreParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SemaphoreParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SeparableTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/SeparableTarget.gen.cs index 1eded69d3b..93b7495e30 100644 --- a/sources/OpenGL/OpenGL/Enums/SeparableTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SeparableTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SeparableTargetEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/SeparableTargetEXT.gen.cs index 55657fd9c5..acaf1e0941 100644 --- a/sources/OpenGL/OpenGL/Enums/SeparableTargetEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SeparableTargetEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShaderBinaryFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/ShaderBinaryFormat.gen.cs index 13c6ad86d5..72901cabc4 100644 --- a/sources/OpenGL/OpenGL/Enums/ShaderBinaryFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShaderBinaryFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShaderParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/ShaderParameterName.gen.cs index fdcc586a96..8d38a5778e 100644 --- a/sources/OpenGL/OpenGL/Enums/ShaderParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShaderParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShaderType.gen.cs b/sources/OpenGL/OpenGL/Enums/ShaderType.gen.cs index e29cb13e97..444fa1f4db 100644 --- a/sources/OpenGL/OpenGL/Enums/ShaderType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShaderType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShadingModel.gen.cs b/sources/OpenGL/OpenGL/Enums/ShadingModel.gen.cs index 9cf1ac7b95..9315e246c6 100644 --- a/sources/OpenGL/OpenGL/Enums/ShadingModel.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShadingModel.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShadingRate.gen.cs b/sources/OpenGL/OpenGL/Enums/ShadingRate.gen.cs index 4053665378..f195e7def9 100644 --- a/sources/OpenGL/OpenGL/Enums/ShadingRate.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShadingRate.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShadingRateCombinerOp.gen.cs b/sources/OpenGL/OpenGL/Enums/ShadingRateCombinerOp.gen.cs index 1333304b31..bd5c1efeea 100644 --- a/sources/OpenGL/OpenGL/Enums/ShadingRateCombinerOp.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShadingRateCombinerOp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/ShadingRateQCOM.gen.cs b/sources/OpenGL/OpenGL/Enums/ShadingRateQCOM.gen.cs index 7e2547737e..84b4368260 100644 --- a/sources/OpenGL/OpenGL/Enums/ShadingRateQCOM.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/ShadingRateQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SizedInternalFormat.gen.cs b/sources/OpenGL/OpenGL/Enums/SizedInternalFormat.gen.cs index ff451d864c..596c5c93d8 100644 --- a/sources/OpenGL/OpenGL/Enums/SizedInternalFormat.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SizedInternalFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SpriteModeSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/SpriteModeSGIX.gen.cs index 8d9e33e757..d30283355f 100644 --- a/sources/OpenGL/OpenGL/Enums/SpriteModeSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SpriteModeSGIX.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SpriteParameterNameSGIX.gen.cs b/sources/OpenGL/OpenGL/Enums/SpriteParameterNameSGIX.gen.cs index 72d9798cbc..28645b062a 100644 --- a/sources/OpenGL/OpenGL/Enums/SpriteParameterNameSGIX.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SpriteParameterNameSGIX.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/StencilFunction.gen.cs b/sources/OpenGL/OpenGL/Enums/StencilFunction.gen.cs index da02b47f9d..dbc80dcbd9 100644 --- a/sources/OpenGL/OpenGL/Enums/StencilFunction.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/StencilFunction.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/StencilOp.gen.cs b/sources/OpenGL/OpenGL/Enums/StencilOp.gen.cs index 1ffa26b33b..5ef2b27f5e 100644 --- a/sources/OpenGL/OpenGL/Enums/StencilOp.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/StencilOp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/StringName.gen.cs b/sources/OpenGL/OpenGL/Enums/StringName.gen.cs index ccec67333a..418eeee781 100644 --- a/sources/OpenGL/OpenGL/Enums/StringName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/StringName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SubgroupSupportedFeatures.gen.cs b/sources/OpenGL/OpenGL/Enums/SubgroupSupportedFeatures.gen.cs index 59264fc10d..5ae0418990 100644 --- a/sources/OpenGL/OpenGL/Enums/SubgroupSupportedFeatures.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SubgroupSupportedFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SubroutineParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/SubroutineParameterName.gen.cs index e86a89f67d..99c1888e74 100644 --- a/sources/OpenGL/OpenGL/Enums/SubroutineParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SubroutineParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SwizzleOpATI.gen.cs b/sources/OpenGL/OpenGL/Enums/SwizzleOpATI.gen.cs index f6646bdb8a..186f6243d1 100644 --- a/sources/OpenGL/OpenGL/Enums/SwizzleOpATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SwizzleOpATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SyncBehaviorFlags.gen.cs b/sources/OpenGL/OpenGL/Enums/SyncBehaviorFlags.gen.cs index 6bc2b824aa..c1aa641a00 100644 --- a/sources/OpenGL/OpenGL/Enums/SyncBehaviorFlags.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SyncBehaviorFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SyncCondition.gen.cs b/sources/OpenGL/OpenGL/Enums/SyncCondition.gen.cs index f12269a7e1..eba72a0bf4 100644 --- a/sources/OpenGL/OpenGL/Enums/SyncCondition.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SyncCondition.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SyncObjectMask.gen.cs b/sources/OpenGL/OpenGL/Enums/SyncObjectMask.gen.cs index cabcb30c0f..a65f43a609 100644 --- a/sources/OpenGL/OpenGL/Enums/SyncObjectMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SyncObjectMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SyncParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/SyncParameterName.gen.cs index daa6ab4b46..3966cd0d3f 100644 --- a/sources/OpenGL/OpenGL/Enums/SyncParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SyncParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/SyncStatus.gen.cs b/sources/OpenGL/OpenGL/Enums/SyncStatus.gen.cs index c0de371c89..91b3a4f282 100644 --- a/sources/OpenGL/OpenGL/Enums/SyncStatus.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/SyncStatus.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TangentPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/TangentPointerType.gen.cs index 638d2c7de2..0300be418c 100644 --- a/sources/OpenGL/OpenGL/Enums/TangentPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TangentPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TexBumpParameterATI.gen.cs b/sources/OpenGL/OpenGL/Enums/TexBumpParameterATI.gen.cs index 07283a3322..2ff5fbb2e6 100644 --- a/sources/OpenGL/OpenGL/Enums/TexBumpParameterATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TexBumpParameterATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TexCoordPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/TexCoordPointerType.gen.cs index 85fa680802..005db3d985 100644 --- a/sources/OpenGL/OpenGL/Enums/TexCoordPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TexCoordPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TexStorageAttribs.gen.cs b/sources/OpenGL/OpenGL/Enums/TexStorageAttribs.gen.cs index 9b0ec556aa..f64eb187f7 100644 --- a/sources/OpenGL/OpenGL/Enums/TexStorageAttribs.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TexStorageAttribs.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureCompareMode.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureCompareMode.gen.cs index 2900739247..50747a2be7 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureCompareMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureCompareMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureCoordName.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureCoordName.gen.cs index 1a20e306a3..d1afc5b6cd 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureCoordName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureCoordName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureEnvMode.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureEnvMode.gen.cs index 144a92cc64..fe0d7820da 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureEnvMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureEnvMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureEnvParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureEnvParameter.gen.cs index 666eb42dfd..d9d35f6571 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureEnvParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureEnvParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureEnvTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureEnvTarget.gen.cs index 1fb0ef42a7..fd799766fe 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureEnvTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureEnvTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureFilterSGIS.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureFilterSGIS.gen.cs index 43f6951586..53251188c1 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureFilterSGIS.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureFilterSGIS.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureGenMode.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureGenMode.gen.cs index f059c60e22..f58c1f3fa7 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureGenMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureGenMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureGenParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureGenParameter.gen.cs index ef9e571f43..2047fd346d 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureGenParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureGenParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureLayout.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureLayout.gen.cs index 22b4fd6c41..e5eed606c4 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureLayout.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureLayout.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureMagFilter.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureMagFilter.gen.cs index f0be50515c..b3e460bc0a 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureMagFilter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureMagFilter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureMinFilter.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureMinFilter.gen.cs index a44ea8a945..264c5ece67 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureMinFilter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureMinFilter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureNormalModeEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureNormalModeEXT.gen.cs index 5d26e8c503..487d0627e5 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureNormalModeEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureNormalModeEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureParameterName.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureParameterName.gen.cs index 0bdceb599d..d86b3743ca 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureParameterName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureParameterName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureStorageMaskAMD.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureStorageMaskAMD.gen.cs index 54812e3aaa..f81c00b6d9 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureStorageMaskAMD.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureStorageMaskAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureSwizzle.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureSwizzle.gen.cs index 69b6aeb48a..93c2dcd936 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureSwizzle.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureSwizzle.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureTarget.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureTarget.gen.cs index e4bf90242f..64aa063c76 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureTarget.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureTarget.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureUnit.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureUnit.gen.cs index cfc1c41448..1098afe164 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureUnit.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureUnit.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TextureWrapMode.gen.cs b/sources/OpenGL/OpenGL/Enums/TextureWrapMode.gen.cs index 6d3a9be966..836c333cae 100644 --- a/sources/OpenGL/OpenGL/Enums/TextureWrapMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TextureWrapMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TraceMaskMESA.gen.cs b/sources/OpenGL/OpenGL/Enums/TraceMaskMESA.gen.cs index 88489c6ccf..5cc8a2d1c7 100644 --- a/sources/OpenGL/OpenGL/Enums/TraceMaskMESA.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TraceMaskMESA.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TransformFeedbackBufferMode.gen.cs b/sources/OpenGL/OpenGL/Enums/TransformFeedbackBufferMode.gen.cs index 657250409f..42bc57f744 100644 --- a/sources/OpenGL/OpenGL/Enums/TransformFeedbackBufferMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TransformFeedbackBufferMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TransformFeedbackPName.gen.cs b/sources/OpenGL/OpenGL/Enums/TransformFeedbackPName.gen.cs index 61174f1a6e..436a81bfc2 100644 --- a/sources/OpenGL/OpenGL/Enums/TransformFeedbackPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TransformFeedbackPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TransformFeedbackTokenNV.gen.cs b/sources/OpenGL/OpenGL/Enums/TransformFeedbackTokenNV.gen.cs index 16efd87cb4..db13771325 100644 --- a/sources/OpenGL/OpenGL/Enums/TransformFeedbackTokenNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TransformFeedbackTokenNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TriangleFace.gen.cs b/sources/OpenGL/OpenGL/Enums/TriangleFace.gen.cs index b3b6b04a2c..f78c95ab03 100644 --- a/sources/OpenGL/OpenGL/Enums/TriangleFace.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TriangleFace.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/TriangleListSUN.gen.cs b/sources/OpenGL/OpenGL/Enums/TriangleListSUN.gen.cs index d918a33a3e..abcab1cc25 100644 --- a/sources/OpenGL/OpenGL/Enums/TriangleListSUN.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/TriangleListSUN.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/UniformBlockPName.gen.cs b/sources/OpenGL/OpenGL/Enums/UniformBlockPName.gen.cs index 842bcb105f..e3fe2bcdae 100644 --- a/sources/OpenGL/OpenGL/Enums/UniformBlockPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/UniformBlockPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/UniformPName.gen.cs b/sources/OpenGL/OpenGL/Enums/UniformPName.gen.cs index 11f1f32203..cdf1ae44f2 100644 --- a/sources/OpenGL/OpenGL/Enums/UniformPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/UniformPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/UniformType.gen.cs b/sources/OpenGL/OpenGL/Enums/UniformType.gen.cs index 1edecfdc13..5ea81712de 100644 --- a/sources/OpenGL/OpenGL/Enums/UniformType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/UniformType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/UseProgramStageMask.gen.cs b/sources/OpenGL/OpenGL/Enums/UseProgramStageMask.gen.cs index 0cf0787e39..692c35364f 100644 --- a/sources/OpenGL/OpenGL/Enums/UseProgramStageMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/UseProgramStageMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VariantCapEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/VariantCapEXT.gen.cs index a8f7ce1484..6916b7703d 100644 --- a/sources/OpenGL/OpenGL/Enums/VariantCapEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VariantCapEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexArrayPName.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexArrayPName.gen.cs index 8da7bf7857..289776153d 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexArrayPName.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexArrayPName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexArrayPNameAPPLE.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexArrayPNameAPPLE.gen.cs index 208f4e95ed..4c9204dc1e 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexArrayPNameAPPLE.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexArrayPNameAPPLE.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribEnum.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribEnum.gen.cs index 2500eca702..90e966e2c4 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribEnum.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribEnum.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribEnumNV.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribEnumNV.gen.cs index 8d6fbcf076..8bd9719e44 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribEnumNV.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribEnumNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribIType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribIType.gen.cs index 38d583688f..bdff9cf1cb 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribIType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribIType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribLType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribLType.gen.cs index 8f2b51b595..722dd86918 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribLType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribLType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribPointerProperty.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribPointerProperty.gen.cs index f14a948fdc..aa7caf8507 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribPointerProperty.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribPointerProperty.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribPointerType.gen.cs index 9e4c5881c4..70862db289 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribProperty.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribProperty.gen.cs index 9e4b4570ec..8cb16fe81f 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribProperty.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribProperty.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexAttribType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexAttribType.gen.cs index 50b8922196..84e51d07c4 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexAttribType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexAttribType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexBufferObjectUsage.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexBufferObjectUsage.gen.cs index dc3a2026fb..c08f806dfa 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexBufferObjectUsage.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexBufferObjectUsage.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexHintsMaskPGI.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexHintsMaskPGI.gen.cs index 2cc1b7c34f..1c0ff1b319 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexHintsMaskPGI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexHintsMaskPGI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexPointerType.gen.cs index 8c525b5ce0..f749918f73 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexProvokingMode.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexProvokingMode.gen.cs index a4d0e60acc..e3bb639a7a 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexProvokingMode.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexProvokingMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderCoordOutEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderCoordOutEXT.gen.cs index e4230c3c2c..4d45f52659 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderCoordOutEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderCoordOutEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderOpEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderOpEXT.gen.cs index 231d91986b..23d09398d5 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderOpEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderOpEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderParameterEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderParameterEXT.gen.cs index 904e8dc441..6f5fd6c617 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderParameterEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderParameterEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderStorageTypeEXT.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderStorageTypeEXT.gen.cs index 51289ed63a..726beb0653 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderStorageTypeEXT.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderStorageTypeEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderTextureUnitParameter.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderTextureUnitParameter.gen.cs index 073b0fda32..5a5e226595 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderTextureUnitParameter.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderTextureUnitParameter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexShaderWriteMask.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexShaderWriteMask.gen.cs index 60b6d8a637..fb1cc5a983 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexShaderWriteMask.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexShaderWriteMask.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexStreamATI.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexStreamATI.gen.cs index 12a2b17a02..b5afa02043 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexStreamATI.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexStreamATI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/VertexWeightPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/VertexWeightPointerType.gen.cs index 88deab1394..95c345d420 100644 --- a/sources/OpenGL/OpenGL/Enums/VertexWeightPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/VertexWeightPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/Enums/WeightPointerType.gen.cs b/sources/OpenGL/OpenGL/Enums/WeightPointerType.gen.cs index 017ddc0ff9..c779586875 100644 --- a/sources/OpenGL/OpenGL/Enums/WeightPointerType.gen.cs +++ b/sources/OpenGL/OpenGL/Enums/WeightPointerType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/SyncHandle.gen.cs b/sources/OpenGL/OpenGL/SyncHandle.gen.cs index aea749194b..69dee19c41 100644 --- a/sources/OpenGL/OpenGL/SyncHandle.gen.cs +++ b/sources/OpenGL/OpenGL/SyncHandle.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/gl/GL.gen.cs b/sources/OpenGL/OpenGL/gl/GL.gen.cs index e78e7731f8..1f2b796264 100644 --- a/sources/OpenGL/OpenGL/gl/GL.gen.cs +++ b/sources/OpenGL/OpenGL/gl/GL.gen.cs @@ -2,7 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Reflection; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.OpenGL; diff --git a/sources/OpenGL/OpenGL/gl/IGL.gen.cs b/sources/OpenGL/OpenGL/gl/IGL.gen.cs index fc896947a1..9408e36b07 100644 --- a/sources/OpenGL/OpenGL/gl/IGL.gen.cs +++ b/sources/OpenGL/OpenGL/gl/IGL.gen.cs @@ -2,8 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenGL headers and corresponding dependencies. // Original source is Copyright 2013-2020 The Khronos Group Inc. Licensed under the MIT license. +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.OpenGL; diff --git a/sources/OpenXR/OpenXR/OpenXR/ActionStatePose.gen.cs b/sources/OpenXR/OpenXR/OpenXR/ActionStatePose.gen.cs index 8fa65d3718..9a900eaa92 100644 --- a/sources/OpenXR/OpenXR/OpenXR/ActionStatePose.gen.cs +++ b/sources/OpenXR/OpenXR/OpenXR/ActionStatePose.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenXR headers and corresponding dependencies. // Original source is Copyright 2017-2026 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.OpenXR; diff --git a/sources/OpenXR/OpenXR/OpenXR/IXr.gen.cs b/sources/OpenXR/OpenXR/OpenXR/IXr.gen.cs index 36a9a74981..d6a4c9f409 100644 --- a/sources/OpenXR/OpenXR/OpenXR/IXr.gen.cs +++ b/sources/OpenXR/OpenXR/OpenXR/IXr.gen.cs @@ -3,8 +3,10 @@ // Ported from the OpenXR headers and corresponding dependencies. // Original source is Copyright 2017-2026 The Khronos Group Inc. Licensed under the MIT license. using System; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.OpenXR; diff --git a/sources/OpenXR/OpenXR/OpenXR/RoomMeshFaceIndicesMETA.gen.cs b/sources/OpenXR/OpenXR/OpenXR/RoomMeshFaceIndicesMETA.gen.cs index 5baef96b32..38226482a6 100644 --- a/sources/OpenXR/OpenXR/OpenXR/RoomMeshFaceIndicesMETA.gen.cs +++ b/sources/OpenXR/OpenXR/OpenXR/RoomMeshFaceIndicesMETA.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenXR headers and corresponding dependencies. // Original source is Copyright 2017-2026 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.OpenXR; diff --git a/sources/OpenXR/OpenXR/OpenXR/SenseDataQueryCompletionBD.gen.cs b/sources/OpenXR/OpenXR/OpenXR/SenseDataQueryCompletionBD.gen.cs index 46edc56cf3..a00c8f9f9a 100644 --- a/sources/OpenXR/OpenXR/OpenXR/SenseDataQueryCompletionBD.gen.cs +++ b/sources/OpenXR/OpenXR/OpenXR/SenseDataQueryCompletionBD.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenXR headers and corresponding dependencies. // Original source is Copyright 2017-2026 The Khronos Group Inc. Licensed under the MIT license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.OpenXR; [NativeName("XrSenseDataQueryCompletionBD")] diff --git a/sources/OpenXR/OpenXR/OpenXR/SpaceFilterUuidMETA.gen.cs b/sources/OpenXR/OpenXR/OpenXR/SpaceFilterUuidMETA.gen.cs index 88fb7b971f..51b54559a3 100644 --- a/sources/OpenXR/OpenXR/OpenXR/SpaceFilterUuidMETA.gen.cs +++ b/sources/OpenXR/OpenXR/OpenXR/SpaceFilterUuidMETA.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenXR headers and corresponding dependencies. // Original source is Copyright 2017-2026 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.OpenXR; diff --git a/sources/OpenXR/OpenXR/OpenXR/SpatialAnchorsQueryCompletionML.gen.cs b/sources/OpenXR/OpenXR/OpenXR/SpatialAnchorsQueryCompletionML.gen.cs index 35adecfb99..1155d00353 100644 --- a/sources/OpenXR/OpenXR/OpenXR/SpatialAnchorsQueryCompletionML.gen.cs +++ b/sources/OpenXR/OpenXR/OpenXR/SpatialAnchorsQueryCompletionML.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenXR headers and corresponding dependencies. // Original source is Copyright 2017-2026 The Khronos Group Inc. Licensed under the MIT license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.OpenXR; [NativeName("XrSpatialAnchorsQueryCompletionML")] diff --git a/sources/OpenXR/OpenXR/OpenXR/SpatialGraphNodeSpaceCreateInfoMSFT.gen.cs b/sources/OpenXR/OpenXR/OpenXR/SpatialGraphNodeSpaceCreateInfoMSFT.gen.cs index 72b5ba1a53..bfcad87af5 100644 --- a/sources/OpenXR/OpenXR/OpenXR/SpatialGraphNodeSpaceCreateInfoMSFT.gen.cs +++ b/sources/OpenXR/OpenXR/OpenXR/SpatialGraphNodeSpaceCreateInfoMSFT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenXR headers and corresponding dependencies. // Original source is Copyright 2017-2026 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.OpenXR; diff --git a/sources/OpenXR/OpenXR/OpenXR/SwapchainCreateInfoFoveationFB.gen.cs b/sources/OpenXR/OpenXR/OpenXR/SwapchainCreateInfoFoveationFB.gen.cs index eb4c4dff48..69cccb92ee 100644 --- a/sources/OpenXR/OpenXR/OpenXR/SwapchainCreateInfoFoveationFB.gen.cs +++ b/sources/OpenXR/OpenXR/OpenXR/SwapchainCreateInfoFoveationFB.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenXR headers and corresponding dependencies. // Original source is Copyright 2017-2026 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.OpenXR; diff --git a/sources/OpenXR/OpenXR/OpenXR/SystemPropertiesBodyTrackingFullBodyMETA.gen.cs b/sources/OpenXR/OpenXR/OpenXR/SystemPropertiesBodyTrackingFullBodyMETA.gen.cs index 93fb609049..00e1ae7bd0 100644 --- a/sources/OpenXR/OpenXR/OpenXR/SystemPropertiesBodyTrackingFullBodyMETA.gen.cs +++ b/sources/OpenXR/OpenXR/OpenXR/SystemPropertiesBodyTrackingFullBodyMETA.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenXR headers and corresponding dependencies. // Original source is Copyright 2017-2026 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.OpenXR; diff --git a/sources/OpenXR/OpenXR/OpenXR/TrackableImageANDROID.gen.cs b/sources/OpenXR/OpenXR/OpenXR/TrackableImageANDROID.gen.cs index 62a01f3c28..2841ec4a46 100644 --- a/sources/OpenXR/OpenXR/OpenXR/TrackableImageANDROID.gen.cs +++ b/sources/OpenXR/OpenXR/OpenXR/TrackableImageANDROID.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the OpenXR headers and corresponding dependencies. // Original source is Copyright 2017-2026 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.OpenXR; diff --git a/sources/OpenXR/OpenXR/OpenXR/Xr.gen.cs b/sources/OpenXR/OpenXR/OpenXR/Xr.gen.cs index 694a381486..ece6309823 100644 --- a/sources/OpenXR/OpenXR/OpenXR/Xr.gen.cs +++ b/sources/OpenXR/OpenXR/OpenXR/Xr.gen.cs @@ -3,8 +3,10 @@ // Ported from the OpenXR headers and corresponding dependencies. // Original source is Copyright 2017-2026 The Khronos Group Inc. Licensed under the MIT license. using System; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.OpenXR; diff --git a/sources/SDL/SDL/SDL3/AlignmentTest.gen.cs b/sources/SDL/SDL/SDL3/AlignmentTest.gen.cs index d393a4196b..bd682b3254 100644 --- a/sources/SDL/SDL/SDL3/AlignmentTest.gen.cs +++ b/sources/SDL/SDL/SDL3/AlignmentTest.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/AppResult.gen.cs b/sources/SDL/SDL/SDL3/AppResult.gen.cs index fe89ebf8a1..0e93dec4aa 100644 --- a/sources/SDL/SDL/SDL3/AppResult.gen.cs +++ b/sources/SDL/SDL/SDL3/AppResult.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/ArrayOrder.gen.cs b/sources/SDL/SDL/SDL3/ArrayOrder.gen.cs index 9a75cd3bd3..8014a30de5 100644 --- a/sources/SDL/SDL/SDL3/ArrayOrder.gen.cs +++ b/sources/SDL/SDL/SDL3/ArrayOrder.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/AssertData.gen.cs b/sources/SDL/SDL/SDL3/AssertData.gen.cs index 78a3d8ea11..f848094588 100644 --- a/sources/SDL/SDL/SDL3/AssertData.gen.cs +++ b/sources/SDL/SDL/SDL3/AssertData.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/AssertState.gen.cs b/sources/SDL/SDL/SDL3/AssertState.gen.cs index 948471eb6b..a594b6fb09 100644 --- a/sources/SDL/SDL/SDL3/AssertState.gen.cs +++ b/sources/SDL/SDL/SDL3/AssertState.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/AtomicInt.gen.cs b/sources/SDL/SDL/SDL3/AtomicInt.gen.cs index 73cc95cfa5..638c6bd96d 100644 --- a/sources/SDL/SDL/SDL3/AtomicInt.gen.cs +++ b/sources/SDL/SDL/SDL3/AtomicInt.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/AtomicU32.gen.cs b/sources/SDL/SDL/SDL3/AtomicU32.gen.cs index 5bba2cfaa1..9b8a2854a8 100644 --- a/sources/SDL/SDL/SDL3/AtomicU32.gen.cs +++ b/sources/SDL/SDL/SDL3/AtomicU32.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/AudioDeviceEvent.gen.cs b/sources/SDL/SDL/SDL3/AudioDeviceEvent.gen.cs index 3a9ba3cbea..d161b79a94 100644 --- a/sources/SDL/SDL/SDL3/AudioDeviceEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/AudioDeviceEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/AudioFormat.gen.cs b/sources/SDL/SDL/SDL3/AudioFormat.gen.cs index 115f9414aa..cbfcacaed8 100644 --- a/sources/SDL/SDL/SDL3/AudioFormat.gen.cs +++ b/sources/SDL/SDL/SDL3/AudioFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/AudioSpec.gen.cs b/sources/SDL/SDL/SDL3/AudioSpec.gen.cs index 651aa44f14..810bcf947e 100644 --- a/sources/SDL/SDL/SDL3/AudioSpec.gen.cs +++ b/sources/SDL/SDL/SDL3/AudioSpec.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/BlendFactor.gen.cs b/sources/SDL/SDL/SDL3/BlendFactor.gen.cs index 4d51518657..c4f4fe3fdd 100644 --- a/sources/SDL/SDL/SDL3/BlendFactor.gen.cs +++ b/sources/SDL/SDL/SDL3/BlendFactor.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.SDL; [NativeName("SDL_BlendFactor")] diff --git a/sources/SDL/SDL/SDL3/BlendOperation.gen.cs b/sources/SDL/SDL/SDL3/BlendOperation.gen.cs index bd7a801a39..c4897a5803 100644 --- a/sources/SDL/SDL/SDL3/BlendOperation.gen.cs +++ b/sources/SDL/SDL/SDL3/BlendOperation.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/CameraDeviceEvent.gen.cs b/sources/SDL/SDL/SDL3/CameraDeviceEvent.gen.cs index ce425c2881..6d33d4daee 100644 --- a/sources/SDL/SDL/SDL3/CameraDeviceEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/CameraDeviceEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/CameraPosition.gen.cs b/sources/SDL/SDL/SDL3/CameraPosition.gen.cs index 5fdb6bdfed..f2d1e5dc18 100644 --- a/sources/SDL/SDL/SDL3/CameraPosition.gen.cs +++ b/sources/SDL/SDL/SDL3/CameraPosition.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/CameraSpec.gen.cs b/sources/SDL/SDL/SDL3/CameraSpec.gen.cs index 148c9c9407..7295e9fde7 100644 --- a/sources/SDL/SDL/SDL3/CameraSpec.gen.cs +++ b/sources/SDL/SDL/SDL3/CameraSpec.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Capitalization.gen.cs b/sources/SDL/SDL/SDL3/Capitalization.gen.cs index f5bc8d4ff2..dcf432b6a7 100644 --- a/sources/SDL/SDL/SDL3/Capitalization.gen.cs +++ b/sources/SDL/SDL/SDL3/Capitalization.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/ChromaLocation.gen.cs b/sources/SDL/SDL/SDL3/ChromaLocation.gen.cs index 93cc60f729..a9ea13625f 100644 --- a/sources/SDL/SDL/SDL3/ChromaLocation.gen.cs +++ b/sources/SDL/SDL/SDL3/ChromaLocation.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/ClipboardEvent.gen.cs b/sources/SDL/SDL/SDL3/ClipboardEvent.gen.cs index fcba12fb88..1ec913d890 100644 --- a/sources/SDL/SDL/SDL3/ClipboardEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/ClipboardEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Color.gen.cs b/sources/SDL/SDL/SDL3/Color.gen.cs index 09aaeb185c..27b9347470 100644 --- a/sources/SDL/SDL/SDL3/Color.gen.cs +++ b/sources/SDL/SDL/SDL3/Color.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/ColorRange.gen.cs b/sources/SDL/SDL/SDL3/ColorRange.gen.cs index 6e781ce9f1..19818db4df 100644 --- a/sources/SDL/SDL/SDL3/ColorRange.gen.cs +++ b/sources/SDL/SDL/SDL3/ColorRange.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/CommonEvent.gen.cs b/sources/SDL/SDL/SDL3/CommonEvent.gen.cs index b5b3ec9caf..af13c3ede0 100644 --- a/sources/SDL/SDL/SDL3/CommonEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/CommonEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/CursorFrameInfo.gen.cs b/sources/SDL/SDL/SDL3/CursorFrameInfo.gen.cs index 801e66226f..2c6d1c2dd3 100644 --- a/sources/SDL/SDL/SDL3/CursorFrameInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/CursorFrameInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/DateTime.gen.cs b/sources/SDL/SDL/SDL3/DateTime.gen.cs index 830ea95d61..94380f25be 100644 --- a/sources/SDL/SDL/SDL3/DateTime.gen.cs +++ b/sources/SDL/SDL/SDL3/DateTime.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/DialogFileFilter.gen.cs b/sources/SDL/SDL/SDL3/DialogFileFilter.gen.cs index ba12179341..e39cf41d28 100644 --- a/sources/SDL/SDL/SDL3/DialogFileFilter.gen.cs +++ b/sources/SDL/SDL/SDL3/DialogFileFilter.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/DisplayEvent.gen.cs b/sources/SDL/SDL/SDL3/DisplayEvent.gen.cs index 4fb25883e7..886d0a2a85 100644 --- a/sources/SDL/SDL/SDL3/DisplayEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/DisplayEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/DisplayMode.gen.cs b/sources/SDL/SDL/SDL3/DisplayMode.gen.cs index c71bc6236e..01c3bf6cc9 100644 --- a/sources/SDL/SDL/SDL3/DisplayMode.gen.cs +++ b/sources/SDL/SDL/SDL3/DisplayMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/DisplayOrientation.gen.cs b/sources/SDL/SDL/SDL3/DisplayOrientation.gen.cs index d17057bfa9..8fd11fcbd1 100644 --- a/sources/SDL/SDL/SDL3/DisplayOrientation.gen.cs +++ b/sources/SDL/SDL/SDL3/DisplayOrientation.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/DummyEnum.gen.cs b/sources/SDL/SDL/SDL3/DummyEnum.gen.cs index 89ed4f117b..f29ac005a9 100644 --- a/sources/SDL/SDL/SDL3/DummyEnum.gen.cs +++ b/sources/SDL/SDL/SDL3/DummyEnum.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/EnumerationResult.gen.cs b/sources/SDL/SDL/SDL3/EnumerationResult.gen.cs index ccf3b4b389..92defee791 100644 --- a/sources/SDL/SDL/SDL3/EnumerationResult.gen.cs +++ b/sources/SDL/SDL/SDL3/EnumerationResult.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Event.gen.cs b/sources/SDL/SDL/SDL3/Event.gen.cs index 3c2d64455e..924f9899a6 100644 --- a/sources/SDL/SDL/SDL3/Event.gen.cs +++ b/sources/SDL/SDL/SDL3/Event.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/EventType.gen.cs b/sources/SDL/SDL/SDL3/EventType.gen.cs index 49bc076c61..1dd1236062 100644 --- a/sources/SDL/SDL/SDL3/EventType.gen.cs +++ b/sources/SDL/SDL/SDL3/EventType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/FColor.gen.cs b/sources/SDL/SDL/SDL3/FColor.gen.cs index 4c8be797ee..582771f191 100644 --- a/sources/SDL/SDL/SDL3/FColor.gen.cs +++ b/sources/SDL/SDL/SDL3/FColor.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/FPoint.gen.cs b/sources/SDL/SDL/SDL3/FPoint.gen.cs index f156546a5e..6e3c287214 100644 --- a/sources/SDL/SDL/SDL3/FPoint.gen.cs +++ b/sources/SDL/SDL/SDL3/FPoint.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/FRect.gen.cs b/sources/SDL/SDL/SDL3/FRect.gen.cs index 6c27741d0e..50d8071fec 100644 --- a/sources/SDL/SDL/SDL3/FRect.gen.cs +++ b/sources/SDL/SDL/SDL3/FRect.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/FileDialogType.gen.cs b/sources/SDL/SDL/SDL3/FileDialogType.gen.cs index 4ddf9bf083..fa269bf751 100644 --- a/sources/SDL/SDL/SDL3/FileDialogType.gen.cs +++ b/sources/SDL/SDL/SDL3/FileDialogType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Finger.gen.cs b/sources/SDL/SDL/SDL3/Finger.gen.cs index edd3bea5b3..62df37289a 100644 --- a/sources/SDL/SDL/SDL3/Finger.gen.cs +++ b/sources/SDL/SDL/SDL3/Finger.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/FlashOperation.gen.cs b/sources/SDL/SDL/SDL3/FlashOperation.gen.cs index 2402b5af37..612b06169c 100644 --- a/sources/SDL/SDL/SDL3/FlashOperation.gen.cs +++ b/sources/SDL/SDL/SDL3/FlashOperation.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/FlipMode.gen.cs b/sources/SDL/SDL/SDL3/FlipMode.gen.cs index 30554e2a80..d9c0c2d5f9 100644 --- a/sources/SDL/SDL/SDL3/FlipMode.gen.cs +++ b/sources/SDL/SDL/SDL3/FlipMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Folder.gen.cs b/sources/SDL/SDL/SDL3/Folder.gen.cs index b5181d09cd..5b5a5b6254 100644 --- a/sources/SDL/SDL/SDL3/Folder.gen.cs +++ b/sources/SDL/SDL/SDL3/Folder.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GLAttr.gen.cs b/sources/SDL/SDL/SDL3/GLAttr.gen.cs index 3fb9c2c838..059b995a87 100644 --- a/sources/SDL/SDL/SDL3/GLAttr.gen.cs +++ b/sources/SDL/SDL/SDL3/GLAttr.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GamepadAxis.gen.cs b/sources/SDL/SDL/SDL3/GamepadAxis.gen.cs index 34d1e42d84..3aaf1a8323 100644 --- a/sources/SDL/SDL/SDL3/GamepadAxis.gen.cs +++ b/sources/SDL/SDL/SDL3/GamepadAxis.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GamepadAxisEvent.gen.cs b/sources/SDL/SDL/SDL3/GamepadAxisEvent.gen.cs index 56c07e7c19..2a604cc927 100644 --- a/sources/SDL/SDL/SDL3/GamepadAxisEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/GamepadAxisEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GamepadBinding.gen.cs b/sources/SDL/SDL/SDL3/GamepadBinding.gen.cs index ae2b9923dd..a6fff3f7aa 100644 --- a/sources/SDL/SDL/SDL3/GamepadBinding.gen.cs +++ b/sources/SDL/SDL/SDL3/GamepadBinding.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GamepadBindingType.gen.cs b/sources/SDL/SDL/SDL3/GamepadBindingType.gen.cs index cc74343755..f332580ffa 100644 --- a/sources/SDL/SDL/SDL3/GamepadBindingType.gen.cs +++ b/sources/SDL/SDL/SDL3/GamepadBindingType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GamepadButtonEvent.gen.cs b/sources/SDL/SDL/SDL3/GamepadButtonEvent.gen.cs index 18b975422e..733341d2ed 100644 --- a/sources/SDL/SDL/SDL3/GamepadButtonEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/GamepadButtonEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GamepadButtonLabel.gen.cs b/sources/SDL/SDL/SDL3/GamepadButtonLabel.gen.cs index 7c463ebfe0..8b7ffc7d9d 100644 --- a/sources/SDL/SDL/SDL3/GamepadButtonLabel.gen.cs +++ b/sources/SDL/SDL/SDL3/GamepadButtonLabel.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GamepadDeviceEvent.gen.cs b/sources/SDL/SDL/SDL3/GamepadDeviceEvent.gen.cs index cc52f049a7..e0819c936e 100644 --- a/sources/SDL/SDL/SDL3/GamepadDeviceEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/GamepadDeviceEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GamepadSensorEvent.gen.cs b/sources/SDL/SDL/SDL3/GamepadSensorEvent.gen.cs index 66acd5007b..688b960281 100644 --- a/sources/SDL/SDL/SDL3/GamepadSensorEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/GamepadSensorEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GamepadType.gen.cs b/sources/SDL/SDL/SDL3/GamepadType.gen.cs index fa7ad93970..9f67653723 100644 --- a/sources/SDL/SDL/SDL3/GamepadType.gen.cs +++ b/sources/SDL/SDL/SDL3/GamepadType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuBlendFactor.gen.cs b/sources/SDL/SDL/SDL3/GpuBlendFactor.gen.cs index 7c1c00471e..6bfeaddd65 100644 --- a/sources/SDL/SDL/SDL3/GpuBlendFactor.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuBlendFactor.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuBlendOp.gen.cs b/sources/SDL/SDL/SDL3/GpuBlendOp.gen.cs index 71b6fa87de..1644d564fa 100644 --- a/sources/SDL/SDL/SDL3/GpuBlendOp.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuBlendOp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuBlitInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuBlitInfo.gen.cs index 23606d8f4a..e98645c9d8 100644 --- a/sources/SDL/SDL/SDL3/GpuBlitInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuBlitInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuBlitRegion.gen.cs b/sources/SDL/SDL/SDL3/GpuBlitRegion.gen.cs index c0c5328c95..27053dde2e 100644 --- a/sources/SDL/SDL/SDL3/GpuBlitRegion.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuBlitRegion.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuBufferBinding.gen.cs b/sources/SDL/SDL/SDL3/GpuBufferBinding.gen.cs index ea6cf77dde..6cd2ad5b61 100644 --- a/sources/SDL/SDL/SDL3/GpuBufferBinding.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuBufferBinding.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuBufferCreateInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuBufferCreateInfo.gen.cs index decb15601d..ca285382f5 100644 --- a/sources/SDL/SDL/SDL3/GpuBufferCreateInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuBufferCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuBufferLocation.gen.cs b/sources/SDL/SDL/SDL3/GpuBufferLocation.gen.cs index 2b3c8521e2..19c82e97db 100644 --- a/sources/SDL/SDL/SDL3/GpuBufferLocation.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuBufferLocation.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuBufferRegion.gen.cs b/sources/SDL/SDL/SDL3/GpuBufferRegion.gen.cs index cf33340ce3..004d0c1e3a 100644 --- a/sources/SDL/SDL/SDL3/GpuBufferRegion.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuBufferRegion.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuColorTargetDescription.gen.cs b/sources/SDL/SDL/SDL3/GpuColorTargetDescription.gen.cs index f98ce1a4c7..c07b3cafc0 100644 --- a/sources/SDL/SDL/SDL3/GpuColorTargetDescription.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuColorTargetDescription.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuColorTargetInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuColorTargetInfo.gen.cs index fdd1500e9b..247b78e090 100644 --- a/sources/SDL/SDL/SDL3/GpuColorTargetInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuColorTargetInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuCompareOp.gen.cs b/sources/SDL/SDL/SDL3/GpuCompareOp.gen.cs index b3b9639e25..816f1f4956 100644 --- a/sources/SDL/SDL/SDL3/GpuCompareOp.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuCompareOp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuComputePipelineCreateInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuComputePipelineCreateInfo.gen.cs index 50df5afc93..0f903701f0 100644 --- a/sources/SDL/SDL/SDL3/GpuComputePipelineCreateInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuComputePipelineCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuCubeMapFace.gen.cs b/sources/SDL/SDL/SDL3/GpuCubeMapFace.gen.cs index bcc07f01fb..f1596b11a3 100644 --- a/sources/SDL/SDL/SDL3/GpuCubeMapFace.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuCubeMapFace.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuCullMode.gen.cs b/sources/SDL/SDL/SDL3/GpuCullMode.gen.cs index 933ea05087..5072ec12c2 100644 --- a/sources/SDL/SDL/SDL3/GpuCullMode.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuCullMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuDepthStencilState.gen.cs b/sources/SDL/SDL/SDL3/GpuDepthStencilState.gen.cs index be099d0547..2e08deab84 100644 --- a/sources/SDL/SDL/SDL3/GpuDepthStencilState.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuDepthStencilState.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.SDL; [NativeName("SDL_GPUDepthStencilState")] diff --git a/sources/SDL/SDL/SDL3/GpuDepthStencilTargetInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuDepthStencilTargetInfo.gen.cs index 291b688ef5..9a8ac5bfe1 100644 --- a/sources/SDL/SDL/SDL3/GpuDepthStencilTargetInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuDepthStencilTargetInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuFillMode.gen.cs b/sources/SDL/SDL/SDL3/GpuFillMode.gen.cs index 99b73bcfa8..258e0c25aa 100644 --- a/sources/SDL/SDL/SDL3/GpuFillMode.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuFillMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuFrontFace.gen.cs b/sources/SDL/SDL/SDL3/GpuFrontFace.gen.cs index 43b96fd0b3..682baeed0c 100644 --- a/sources/SDL/SDL/SDL3/GpuFrontFace.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuFrontFace.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuGraphicsPipelineCreateInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuGraphicsPipelineCreateInfo.gen.cs index 523437846f..5e404d713c 100644 --- a/sources/SDL/SDL/SDL3/GpuGraphicsPipelineCreateInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuGraphicsPipelineCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuGraphicsPipelineTargetInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuGraphicsPipelineTargetInfo.gen.cs index 55ddb234bc..09ea5123f5 100644 --- a/sources/SDL/SDL/SDL3/GpuGraphicsPipelineTargetInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuGraphicsPipelineTargetInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuIndexElementSize.gen.cs b/sources/SDL/SDL/SDL3/GpuIndexElementSize.gen.cs index f6e90a18bb..80c489770d 100644 --- a/sources/SDL/SDL/SDL3/GpuIndexElementSize.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuIndexElementSize.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuIndexedIndirectDrawCommand.gen.cs b/sources/SDL/SDL/SDL3/GpuIndexedIndirectDrawCommand.gen.cs index d9e76f1193..b10ed43c74 100644 --- a/sources/SDL/SDL/SDL3/GpuIndexedIndirectDrawCommand.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuIndexedIndirectDrawCommand.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuIndirectDispatchCommand.gen.cs b/sources/SDL/SDL/SDL3/GpuIndirectDispatchCommand.gen.cs index 7cc5331063..61e92cd119 100644 --- a/sources/SDL/SDL/SDL3/GpuIndirectDispatchCommand.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuIndirectDispatchCommand.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuIndirectDrawCommand.gen.cs b/sources/SDL/SDL/SDL3/GpuIndirectDrawCommand.gen.cs index a4287d4275..a3f09b70d3 100644 --- a/sources/SDL/SDL/SDL3/GpuIndirectDrawCommand.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuIndirectDrawCommand.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuLoadOp.gen.cs b/sources/SDL/SDL/SDL3/GpuLoadOp.gen.cs index d1445d0101..eb83974657 100644 --- a/sources/SDL/SDL/SDL3/GpuLoadOp.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuLoadOp.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.SDL; [NativeName("SDL_GPULoadOp")] diff --git a/sources/SDL/SDL/SDL3/GpuMultisampleState.gen.cs b/sources/SDL/SDL/SDL3/GpuMultisampleState.gen.cs index 3b5a5b1200..50be8af0be 100644 --- a/sources/SDL/SDL/SDL3/GpuMultisampleState.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuMultisampleState.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuPresentMode.gen.cs b/sources/SDL/SDL/SDL3/GpuPresentMode.gen.cs index c3e4bd75ee..35c251ea31 100644 --- a/sources/SDL/SDL/SDL3/GpuPresentMode.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuPresentMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuPrimitiveType.gen.cs b/sources/SDL/SDL/SDL3/GpuPrimitiveType.gen.cs index 54d4ae095f..d05fc5eb53 100644 --- a/sources/SDL/SDL/SDL3/GpuPrimitiveType.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuPrimitiveType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuRasterizerState.gen.cs b/sources/SDL/SDL/SDL3/GpuRasterizerState.gen.cs index 2a952bf970..62b959cf4a 100644 --- a/sources/SDL/SDL/SDL3/GpuRasterizerState.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuRasterizerState.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuRenderStateCreateInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuRenderStateCreateInfo.gen.cs index b3c3a27a44..d5bad71bc8 100644 --- a/sources/SDL/SDL/SDL3/GpuRenderStateCreateInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuRenderStateCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuSampleCount.gen.cs b/sources/SDL/SDL/SDL3/GpuSampleCount.gen.cs index 5f64db6b65..9cb24a58e4 100644 --- a/sources/SDL/SDL/SDL3/GpuSampleCount.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuSampleCount.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuSamplerAddressMode.gen.cs b/sources/SDL/SDL/SDL3/GpuSamplerAddressMode.gen.cs index 3423c8dce0..e10cfa19ca 100644 --- a/sources/SDL/SDL/SDL3/GpuSamplerAddressMode.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuSamplerAddressMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuSamplerCreateInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuSamplerCreateInfo.gen.cs index 4fd9b3a124..52346a715f 100644 --- a/sources/SDL/SDL/SDL3/GpuSamplerCreateInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuSamplerCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuSamplerMipmapMode.gen.cs b/sources/SDL/SDL/SDL3/GpuSamplerMipmapMode.gen.cs index 7f8b2cb5dd..0518557e59 100644 --- a/sources/SDL/SDL/SDL3/GpuSamplerMipmapMode.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuSamplerMipmapMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuShaderStage.gen.cs b/sources/SDL/SDL/SDL3/GpuShaderStage.gen.cs index 8d00231f9d..d9e459b3b6 100644 --- a/sources/SDL/SDL/SDL3/GpuShaderStage.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuShaderStage.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuStencilOp.gen.cs b/sources/SDL/SDL/SDL3/GpuStencilOp.gen.cs index 5e4952e5b3..04bd8fd8f2 100644 --- a/sources/SDL/SDL/SDL3/GpuStencilOp.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuStencilOp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuStencilOpState.gen.cs b/sources/SDL/SDL/SDL3/GpuStencilOpState.gen.cs index d47dd1da22..8ce0db8094 100644 --- a/sources/SDL/SDL/SDL3/GpuStencilOpState.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuStencilOpState.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuStorageBufferReadWriteBinding.gen.cs b/sources/SDL/SDL/SDL3/GpuStorageBufferReadWriteBinding.gen.cs index 8c3cb3837d..2c0f1d7fce 100644 --- a/sources/SDL/SDL/SDL3/GpuStorageBufferReadWriteBinding.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuStorageBufferReadWriteBinding.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuStorageTextureReadWriteBinding.gen.cs b/sources/SDL/SDL/SDL3/GpuStorageTextureReadWriteBinding.gen.cs index 031a971b71..18f39fdd98 100644 --- a/sources/SDL/SDL/SDL3/GpuStorageTextureReadWriteBinding.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuStorageTextureReadWriteBinding.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuSwapchainComposition.gen.cs b/sources/SDL/SDL/SDL3/GpuSwapchainComposition.gen.cs index 01fa4a40d6..fe614251f3 100644 --- a/sources/SDL/SDL/SDL3/GpuSwapchainComposition.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuSwapchainComposition.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuTextureCreateInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuTextureCreateInfo.gen.cs index 4a678bdd77..203eb313fa 100644 --- a/sources/SDL/SDL/SDL3/GpuTextureCreateInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuTextureCreateInfo.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.SDL; [NativeName("SDL_GPUTextureCreateInfo")] diff --git a/sources/SDL/SDL/SDL3/GpuTextureFormat.gen.cs b/sources/SDL/SDL/SDL3/GpuTextureFormat.gen.cs index 4f5a6cb05b..434d483878 100644 --- a/sources/SDL/SDL/SDL3/GpuTextureFormat.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuTextureFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuTextureLocation.gen.cs b/sources/SDL/SDL/SDL3/GpuTextureLocation.gen.cs index 6a59bbc798..2349221ae5 100644 --- a/sources/SDL/SDL/SDL3/GpuTextureLocation.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuTextureLocation.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuTextureRegion.gen.cs b/sources/SDL/SDL/SDL3/GpuTextureRegion.gen.cs index 963347670c..8516208542 100644 --- a/sources/SDL/SDL/SDL3/GpuTextureRegion.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuTextureRegion.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuTextureTransferInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuTextureTransferInfo.gen.cs index 35fd70987b..08d4cebc5b 100644 --- a/sources/SDL/SDL/SDL3/GpuTextureTransferInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuTextureTransferInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuTextureType.gen.cs b/sources/SDL/SDL/SDL3/GpuTextureType.gen.cs index 624a4cbcc6..d5dd221ec1 100644 --- a/sources/SDL/SDL/SDL3/GpuTextureType.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuTextureType.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.SDL; [NativeName("SDL_GPUTextureType")] diff --git a/sources/SDL/SDL/SDL3/GpuTransferBufferCreateInfo.gen.cs b/sources/SDL/SDL/SDL3/GpuTransferBufferCreateInfo.gen.cs index 5a5ce2f139..e8b16ec666 100644 --- a/sources/SDL/SDL/SDL3/GpuTransferBufferCreateInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuTransferBufferCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuTransferBufferLocation.gen.cs b/sources/SDL/SDL/SDL3/GpuTransferBufferLocation.gen.cs index 797aec80b7..040d2148fa 100644 --- a/sources/SDL/SDL/SDL3/GpuTransferBufferLocation.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuTransferBufferLocation.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuTransferBufferUsage.gen.cs b/sources/SDL/SDL/SDL3/GpuTransferBufferUsage.gen.cs index b0637c69ab..a95756f3a5 100644 --- a/sources/SDL/SDL/SDL3/GpuTransferBufferUsage.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuTransferBufferUsage.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuVertexAttribute.gen.cs b/sources/SDL/SDL/SDL3/GpuVertexAttribute.gen.cs index 5747ab87d8..0d7ac9274a 100644 --- a/sources/SDL/SDL/SDL3/GpuVertexAttribute.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuVertexAttribute.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuVertexBufferDescription.gen.cs b/sources/SDL/SDL/SDL3/GpuVertexBufferDescription.gen.cs index dc79aeb53b..cb830185bb 100644 --- a/sources/SDL/SDL/SDL3/GpuVertexBufferDescription.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuVertexBufferDescription.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuVertexInputState.gen.cs b/sources/SDL/SDL/SDL3/GpuVertexInputState.gen.cs index 7f6c4e27a3..e225690bce 100644 --- a/sources/SDL/SDL/SDL3/GpuVertexInputState.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuVertexInputState.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuViewport.gen.cs b/sources/SDL/SDL/SDL3/GpuViewport.gen.cs index 22a890aafd..fcf7d5c093 100644 --- a/sources/SDL/SDL/SDL3/GpuViewport.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuViewport.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/GpuVulkanOptions.gen.cs b/sources/SDL/SDL/SDL3/GpuVulkanOptions.gen.cs index aa0ccc5ed7..30ee82c7c7 100644 --- a/sources/SDL/SDL/SDL3/GpuVulkanOptions.gen.cs +++ b/sources/SDL/SDL/SDL3/GpuVulkanOptions.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HapticCondition.gen.cs b/sources/SDL/SDL/SDL3/HapticCondition.gen.cs index 25dcc98fd4..b819d84f1b 100644 --- a/sources/SDL/SDL/SDL3/HapticCondition.gen.cs +++ b/sources/SDL/SDL/SDL3/HapticCondition.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HapticConstant.gen.cs b/sources/SDL/SDL/SDL3/HapticConstant.gen.cs index dee3fcdae7..4a78f9f7c7 100644 --- a/sources/SDL/SDL/SDL3/HapticConstant.gen.cs +++ b/sources/SDL/SDL/SDL3/HapticConstant.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HapticCustom.gen.cs b/sources/SDL/SDL/SDL3/HapticCustom.gen.cs index a30ba28205..b45607f5b0 100644 --- a/sources/SDL/SDL/SDL3/HapticCustom.gen.cs +++ b/sources/SDL/SDL/SDL3/HapticCustom.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HapticDirection.gen.cs b/sources/SDL/SDL/SDL3/HapticDirection.gen.cs index eb8587bbb0..0e58608825 100644 --- a/sources/SDL/SDL/SDL3/HapticDirection.gen.cs +++ b/sources/SDL/SDL/SDL3/HapticDirection.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HapticEffect.gen.cs b/sources/SDL/SDL/SDL3/HapticEffect.gen.cs index 94d8ee6eb3..c8096e71f1 100644 --- a/sources/SDL/SDL/SDL3/HapticEffect.gen.cs +++ b/sources/SDL/SDL/SDL3/HapticEffect.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HapticLeftRight.gen.cs b/sources/SDL/SDL/SDL3/HapticLeftRight.gen.cs index b586059949..85c17b70e8 100644 --- a/sources/SDL/SDL/SDL3/HapticLeftRight.gen.cs +++ b/sources/SDL/SDL/SDL3/HapticLeftRight.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HapticPeriodic.gen.cs b/sources/SDL/SDL/SDL3/HapticPeriodic.gen.cs index eea1601497..890c9e4064 100644 --- a/sources/SDL/SDL/SDL3/HapticPeriodic.gen.cs +++ b/sources/SDL/SDL/SDL3/HapticPeriodic.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HapticRamp.gen.cs b/sources/SDL/SDL/SDL3/HapticRamp.gen.cs index fcd34c5ba1..fdefdac5ed 100644 --- a/sources/SDL/SDL/SDL3/HapticRamp.gen.cs +++ b/sources/SDL/SDL/SDL3/HapticRamp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HidBusType.gen.cs b/sources/SDL/SDL/SDL3/HidBusType.gen.cs index 65d8acc3f3..4aaacde7b1 100644 --- a/sources/SDL/SDL/SDL3/HidBusType.gen.cs +++ b/sources/SDL/SDL/SDL3/HidBusType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HidDeviceInfo.gen.cs b/sources/SDL/SDL/SDL3/HidDeviceInfo.gen.cs index 65c69eb362..255f33e181 100644 --- a/sources/SDL/SDL/SDL3/HidDeviceInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/HidDeviceInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HintPriority.gen.cs b/sources/SDL/SDL/SDL3/HintPriority.gen.cs index 0fdb82a717..ed59b142d1 100644 --- a/sources/SDL/SDL/SDL3/HintPriority.gen.cs +++ b/sources/SDL/SDL/SDL3/HintPriority.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/HitTestResult.gen.cs b/sources/SDL/SDL/SDL3/HitTestResult.gen.cs index 0aeea432ce..fbfcf79516 100644 --- a/sources/SDL/SDL/SDL3/HitTestResult.gen.cs +++ b/sources/SDL/SDL/SDL3/HitTestResult.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/IOStatus.gen.cs b/sources/SDL/SDL/SDL3/IOStatus.gen.cs index db2a9acdfa..a38e2c4c3e 100644 --- a/sources/SDL/SDL/SDL3/IOStatus.gen.cs +++ b/sources/SDL/SDL/SDL3/IOStatus.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/IOStreamInterface.gen.cs b/sources/SDL/SDL/SDL3/IOStreamInterface.gen.cs index 44f2e3aded..680ee5506c 100644 --- a/sources/SDL/SDL/SDL3/IOStreamInterface.gen.cs +++ b/sources/SDL/SDL/SDL3/IOStreamInterface.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/IOWhence.gen.cs b/sources/SDL/SDL/SDL3/IOWhence.gen.cs index 845a9a6492..236bb85e1f 100644 --- a/sources/SDL/SDL/SDL3/IOWhence.gen.cs +++ b/sources/SDL/SDL/SDL3/IOWhence.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/ISdl.gen.cs b/sources/SDL/SDL/SDL3/ISdl.gen.cs index 608dfe1d1d..fe32bef04f 100644 --- a/sources/SDL/SDL/SDL3/ISdl.gen.cs +++ b/sources/SDL/SDL/SDL3/ISdl.gen.cs @@ -3,8 +3,10 @@ // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. using System; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.SDL; diff --git a/sources/SDL/SDL/SDL3/InitState.gen.cs b/sources/SDL/SDL/SDL3/InitState.gen.cs index 749a0026f1..506a622651 100644 --- a/sources/SDL/SDL/SDL3/InitState.gen.cs +++ b/sources/SDL/SDL/SDL3/InitState.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/JoyAxisEvent.gen.cs b/sources/SDL/SDL/SDL3/JoyAxisEvent.gen.cs index d32eddb077..914a2196df 100644 --- a/sources/SDL/SDL/SDL3/JoyAxisEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/JoyAxisEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/JoyBallEvent.gen.cs b/sources/SDL/SDL/SDL3/JoyBallEvent.gen.cs index 5945e65c95..19328bf068 100644 --- a/sources/SDL/SDL/SDL3/JoyBallEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/JoyBallEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/JoyBatteryEvent.gen.cs b/sources/SDL/SDL/SDL3/JoyBatteryEvent.gen.cs index 8185d45ae4..6e8ffc29df 100644 --- a/sources/SDL/SDL/SDL3/JoyBatteryEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/JoyBatteryEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/JoyButtonEvent.gen.cs b/sources/SDL/SDL/SDL3/JoyButtonEvent.gen.cs index 39c3202648..4e054f2aab 100644 --- a/sources/SDL/SDL/SDL3/JoyButtonEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/JoyButtonEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/JoyDeviceEvent.gen.cs b/sources/SDL/SDL/SDL3/JoyDeviceEvent.gen.cs index 84365deb8a..4eed47a135 100644 --- a/sources/SDL/SDL/SDL3/JoyDeviceEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/JoyDeviceEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/JoystickConnectionState.gen.cs b/sources/SDL/SDL/SDL3/JoystickConnectionState.gen.cs index 846516723c..5d8c9702bd 100644 --- a/sources/SDL/SDL/SDL3/JoystickConnectionState.gen.cs +++ b/sources/SDL/SDL/SDL3/JoystickConnectionState.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/JoystickType.gen.cs b/sources/SDL/SDL/SDL3/JoystickType.gen.cs index d39d5407f6..c71215e216 100644 --- a/sources/SDL/SDL/SDL3/JoystickType.gen.cs +++ b/sources/SDL/SDL/SDL3/JoystickType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/KeyboardDeviceEvent.gen.cs b/sources/SDL/SDL/SDL3/KeyboardDeviceEvent.gen.cs index b0db511faa..b76deb9c39 100644 --- a/sources/SDL/SDL/SDL3/KeyboardDeviceEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/KeyboardDeviceEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Locale.gen.cs b/sources/SDL/SDL/SDL3/Locale.gen.cs index 69da043b96..80c25d6eca 100644 --- a/sources/SDL/SDL/SDL3/Locale.gen.cs +++ b/sources/SDL/SDL/SDL3/Locale.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/LogCategory.gen.cs b/sources/SDL/SDL/SDL3/LogCategory.gen.cs index 23d02de139..ce951b5dce 100644 --- a/sources/SDL/SDL/SDL3/LogCategory.gen.cs +++ b/sources/SDL/SDL/SDL3/LogCategory.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/LogPriority.gen.cs b/sources/SDL/SDL/SDL3/LogPriority.gen.cs index e0d6bc5f0c..fb1bfad4c7 100644 --- a/sources/SDL/SDL/SDL3/LogPriority.gen.cs +++ b/sources/SDL/SDL/SDL3/LogPriority.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/MatrixCoefficients.gen.cs b/sources/SDL/SDL/SDL3/MatrixCoefficients.gen.cs index 3e5ce999fe..cee582ac7a 100644 --- a/sources/SDL/SDL/SDL3/MatrixCoefficients.gen.cs +++ b/sources/SDL/SDL/SDL3/MatrixCoefficients.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/MessageBoxButtonData.gen.cs b/sources/SDL/SDL/SDL3/MessageBoxButtonData.gen.cs index a84d50ae4c..9ae1d2efa4 100644 --- a/sources/SDL/SDL/SDL3/MessageBoxButtonData.gen.cs +++ b/sources/SDL/SDL/SDL3/MessageBoxButtonData.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/MessageBoxColor.gen.cs b/sources/SDL/SDL/SDL3/MessageBoxColor.gen.cs index d19922eb65..e22fa36126 100644 --- a/sources/SDL/SDL/SDL3/MessageBoxColor.gen.cs +++ b/sources/SDL/SDL/SDL3/MessageBoxColor.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/MessageBoxColorScheme.gen.cs b/sources/SDL/SDL/SDL3/MessageBoxColorScheme.gen.cs index 4c8cd08719..1130b0ab81 100644 --- a/sources/SDL/SDL/SDL3/MessageBoxColorScheme.gen.cs +++ b/sources/SDL/SDL/SDL3/MessageBoxColorScheme.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/MessageBoxColorType.gen.cs b/sources/SDL/SDL/SDL3/MessageBoxColorType.gen.cs index 422ab6e568..992e664edb 100644 --- a/sources/SDL/SDL/SDL3/MessageBoxColorType.gen.cs +++ b/sources/SDL/SDL/SDL3/MessageBoxColorType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/MessageBoxData.gen.cs b/sources/SDL/SDL/SDL3/MessageBoxData.gen.cs index f47df56d68..9cbe783826 100644 --- a/sources/SDL/SDL/SDL3/MessageBoxData.gen.cs +++ b/sources/SDL/SDL/SDL3/MessageBoxData.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/MouseButtonEvent.gen.cs b/sources/SDL/SDL/SDL3/MouseButtonEvent.gen.cs index 309a3d72a4..3bacdc988f 100644 --- a/sources/SDL/SDL/SDL3/MouseButtonEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/MouseButtonEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/MouseDeviceEvent.gen.cs b/sources/SDL/SDL/SDL3/MouseDeviceEvent.gen.cs index 6c1b0668f7..ecd053ba9a 100644 --- a/sources/SDL/SDL/SDL3/MouseDeviceEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/MouseDeviceEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/MouseMotionEvent.gen.cs b/sources/SDL/SDL/SDL3/MouseMotionEvent.gen.cs index 2e0dcd8075..3a98f0a35c 100644 --- a/sources/SDL/SDL/SDL3/MouseMotionEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/MouseMotionEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/MouseWheelDirection.gen.cs b/sources/SDL/SDL/SDL3/MouseWheelDirection.gen.cs index dd90106f32..11814724e9 100644 --- a/sources/SDL/SDL/SDL3/MouseWheelDirection.gen.cs +++ b/sources/SDL/SDL/SDL3/MouseWheelDirection.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/MouseWheelEvent.gen.cs b/sources/SDL/SDL/SDL3/MouseWheelEvent.gen.cs index db67e54aeb..475528495b 100644 --- a/sources/SDL/SDL/SDL3/MouseWheelEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/MouseWheelEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PackedOrder.gen.cs b/sources/SDL/SDL/SDL3/PackedOrder.gen.cs index aee6a19b69..dd634f5eea 100644 --- a/sources/SDL/SDL/SDL3/PackedOrder.gen.cs +++ b/sources/SDL/SDL/SDL3/PackedOrder.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Palette.gen.cs b/sources/SDL/SDL/SDL3/Palette.gen.cs index 2c227c6aef..daa5f42c95 100644 --- a/sources/SDL/SDL/SDL3/Palette.gen.cs +++ b/sources/SDL/SDL/SDL3/Palette.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PathInfo.gen.cs b/sources/SDL/SDL/SDL3/PathInfo.gen.cs index bd1a6fc025..0d22f2ed32 100644 --- a/sources/SDL/SDL/SDL3/PathInfo.gen.cs +++ b/sources/SDL/SDL/SDL3/PathInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PathType.gen.cs b/sources/SDL/SDL/SDL3/PathType.gen.cs index 75e70331a5..9ab512c008 100644 --- a/sources/SDL/SDL/SDL3/PathType.gen.cs +++ b/sources/SDL/SDL/SDL3/PathType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PenAxis.gen.cs b/sources/SDL/SDL/SDL3/PenAxis.gen.cs index 66ac128f5a..be4a9b0e50 100644 --- a/sources/SDL/SDL/SDL3/PenAxis.gen.cs +++ b/sources/SDL/SDL/SDL3/PenAxis.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PenAxisEvent.gen.cs b/sources/SDL/SDL/SDL3/PenAxisEvent.gen.cs index c70a408442..b0b492c33f 100644 --- a/sources/SDL/SDL/SDL3/PenAxisEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/PenAxisEvent.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.SDL; [NativeName("SDL_PenAxisEvent")] diff --git a/sources/SDL/SDL/SDL3/PenButtonEvent.gen.cs b/sources/SDL/SDL/SDL3/PenButtonEvent.gen.cs index b2ef7f5a44..b5246630a5 100644 --- a/sources/SDL/SDL/SDL3/PenButtonEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/PenButtonEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PenDeviceType.gen.cs b/sources/SDL/SDL/SDL3/PenDeviceType.gen.cs index 75dfff96f0..5abbfe7896 100644 --- a/sources/SDL/SDL/SDL3/PenDeviceType.gen.cs +++ b/sources/SDL/SDL/SDL3/PenDeviceType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PenMotionEvent.gen.cs b/sources/SDL/SDL/SDL3/PenMotionEvent.gen.cs index edd4e0277f..d7d23f6b56 100644 --- a/sources/SDL/SDL/SDL3/PenMotionEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/PenMotionEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PenProximityEvent.gen.cs b/sources/SDL/SDL/SDL3/PenProximityEvent.gen.cs index ce066bfadc..1b3c1c2c87 100644 --- a/sources/SDL/SDL/SDL3/PenProximityEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/PenProximityEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PinchFingerEvent.gen.cs b/sources/SDL/SDL/SDL3/PinchFingerEvent.gen.cs index 4a7df38627..991b08d67c 100644 --- a/sources/SDL/SDL/SDL3/PinchFingerEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/PinchFingerEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PixelFormat.gen.cs b/sources/SDL/SDL/SDL3/PixelFormat.gen.cs index 42c5aa5e8e..0dd7bbd86a 100644 --- a/sources/SDL/SDL/SDL3/PixelFormat.gen.cs +++ b/sources/SDL/SDL/SDL3/PixelFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PixelFormatDetails.gen.cs b/sources/SDL/SDL/SDL3/PixelFormatDetails.gen.cs index 37b4a7d33d..ee964ac4a1 100644 --- a/sources/SDL/SDL/SDL3/PixelFormatDetails.gen.cs +++ b/sources/SDL/SDL/SDL3/PixelFormatDetails.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PixelType.gen.cs b/sources/SDL/SDL/SDL3/PixelType.gen.cs index 43c6a7278f..793e3f4205 100644 --- a/sources/SDL/SDL/SDL3/PixelType.gen.cs +++ b/sources/SDL/SDL/SDL3/PixelType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Point.gen.cs b/sources/SDL/SDL/SDL3/Point.gen.cs index e47745d461..6bb59f85ab 100644 --- a/sources/SDL/SDL/SDL3/Point.gen.cs +++ b/sources/SDL/SDL/SDL3/Point.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/PowerState.gen.cs b/sources/SDL/SDL/SDL3/PowerState.gen.cs index dc1cb0411f..47178080a1 100644 --- a/sources/SDL/SDL/SDL3/PowerState.gen.cs +++ b/sources/SDL/SDL/SDL3/PowerState.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/ProcessIO.gen.cs b/sources/SDL/SDL/SDL3/ProcessIO.gen.cs index 51d39af5cc..fee19e8f4d 100644 --- a/sources/SDL/SDL/SDL3/ProcessIO.gen.cs +++ b/sources/SDL/SDL/SDL3/ProcessIO.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/ProgressState.gen.cs b/sources/SDL/SDL/SDL3/ProgressState.gen.cs index 53d6895394..8bc6aba741 100644 --- a/sources/SDL/SDL/SDL3/ProgressState.gen.cs +++ b/sources/SDL/SDL/SDL3/ProgressState.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/QuitEvent.gen.cs b/sources/SDL/SDL/SDL3/QuitEvent.gen.cs index cc73dc345b..e38521b4d3 100644 --- a/sources/SDL/SDL/SDL3/QuitEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/QuitEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Rect.gen.cs b/sources/SDL/SDL/SDL3/Rect.gen.cs index 8bfdcad34b..e9eb2b0271 100644 --- a/sources/SDL/SDL/SDL3/Rect.gen.cs +++ b/sources/SDL/SDL/SDL3/Rect.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/RendererLogicalPresentation.gen.cs b/sources/SDL/SDL/SDL3/RendererLogicalPresentation.gen.cs index 2adcccc492..6e6db3a71e 100644 --- a/sources/SDL/SDL/SDL3/RendererLogicalPresentation.gen.cs +++ b/sources/SDL/SDL/SDL3/RendererLogicalPresentation.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Sandbox.gen.cs b/sources/SDL/SDL/SDL3/Sandbox.gen.cs index 64d4e5b477..74e4ec5ac5 100644 --- a/sources/SDL/SDL/SDL3/Sandbox.gen.cs +++ b/sources/SDL/SDL/SDL3/Sandbox.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/ScaleMode.gen.cs b/sources/SDL/SDL/SDL3/ScaleMode.gen.cs index 49f902e011..4f850b43de 100644 --- a/sources/SDL/SDL/SDL3/ScaleMode.gen.cs +++ b/sources/SDL/SDL/SDL3/ScaleMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Sdl.gen.cs b/sources/SDL/SDL/SDL3/Sdl.gen.cs index ca5c5513e2..415b5c690a 100644 --- a/sources/SDL/SDL/SDL3/Sdl.gen.cs +++ b/sources/SDL/SDL/SDL3/Sdl.gen.cs @@ -3,8 +3,10 @@ // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. using System; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.SDL; diff --git a/sources/SDL/SDL/SDL3/SensorEvent.gen.cs b/sources/SDL/SDL/SDL3/SensorEvent.gen.cs index a2ad448020..e38bc70037 100644 --- a/sources/SDL/SDL/SDL3/SensorEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/SensorEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/SensorType.gen.cs b/sources/SDL/SDL/SDL3/SensorType.gen.cs index 2ddf414cb0..f46b91c27b 100644 --- a/sources/SDL/SDL/SDL3/SensorType.gen.cs +++ b/sources/SDL/SDL/SDL3/SensorType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/StorageInterface.gen.cs b/sources/SDL/SDL/SDL3/StorageInterface.gen.cs index 1a3bff95d5..08caaf50ac 100644 --- a/sources/SDL/SDL/SDL3/StorageInterface.gen.cs +++ b/sources/SDL/SDL/SDL3/StorageInterface.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/SystemCursor.gen.cs b/sources/SDL/SDL/SDL3/SystemCursor.gen.cs index 2b85f5faee..f3c5358707 100644 --- a/sources/SDL/SDL/SDL3/SystemCursor.gen.cs +++ b/sources/SDL/SDL/SDL3/SystemCursor.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/SystemTheme.gen.cs b/sources/SDL/SDL/SDL3/SystemTheme.gen.cs index 18e22dedb5..7fc269e79a 100644 --- a/sources/SDL/SDL/SDL3/SystemTheme.gen.cs +++ b/sources/SDL/SDL/SDL3/SystemTheme.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/TextEditingEvent.gen.cs b/sources/SDL/SDL/SDL3/TextEditingEvent.gen.cs index df58e498bb..24f1938c37 100644 --- a/sources/SDL/SDL/SDL3/TextEditingEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/TextEditingEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/TextInputEvent.gen.cs b/sources/SDL/SDL/SDL3/TextInputEvent.gen.cs index 4c33c88588..232691b577 100644 --- a/sources/SDL/SDL/SDL3/TextInputEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/TextInputEvent.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.SDL; [NativeName("SDL_TextInputEvent")] diff --git a/sources/SDL/SDL/SDL3/Texture.gen.cs b/sources/SDL/SDL/SDL3/Texture.gen.cs index 14f2ab5004..ce0c188f5b 100644 --- a/sources/SDL/SDL/SDL3/Texture.gen.cs +++ b/sources/SDL/SDL/SDL3/Texture.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/TextureAddressMode.gen.cs b/sources/SDL/SDL/SDL3/TextureAddressMode.gen.cs index 963e8c5121..9779334f01 100644 --- a/sources/SDL/SDL/SDL3/TextureAddressMode.gen.cs +++ b/sources/SDL/SDL/SDL3/TextureAddressMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/ThreadPriority.gen.cs b/sources/SDL/SDL/SDL3/ThreadPriority.gen.cs index f0aa8eb66e..f250a831bf 100644 --- a/sources/SDL/SDL/SDL3/ThreadPriority.gen.cs +++ b/sources/SDL/SDL/SDL3/ThreadPriority.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/TimeFormat.gen.cs b/sources/SDL/SDL/SDL3/TimeFormat.gen.cs index 95f906fa0a..db49bc96a2 100644 --- a/sources/SDL/SDL/SDL3/TimeFormat.gen.cs +++ b/sources/SDL/SDL/SDL3/TimeFormat.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/TouchDeviceType.gen.cs b/sources/SDL/SDL/SDL3/TouchDeviceType.gen.cs index 216747edc8..82d666ac67 100644 --- a/sources/SDL/SDL/SDL3/TouchDeviceType.gen.cs +++ b/sources/SDL/SDL/SDL3/TouchDeviceType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/TouchFingerEvent.gen.cs b/sources/SDL/SDL/SDL3/TouchFingerEvent.gen.cs index 496cb5bb14..0a7ddf3f3d 100644 --- a/sources/SDL/SDL/SDL3/TouchFingerEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/TouchFingerEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/TransferCharacteristics.gen.cs b/sources/SDL/SDL/SDL3/TransferCharacteristics.gen.cs index 0e17b9b1ee..32c2c7979c 100644 --- a/sources/SDL/SDL/SDL3/TransferCharacteristics.gen.cs +++ b/sources/SDL/SDL/SDL3/TransferCharacteristics.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/UserEvent.gen.cs b/sources/SDL/SDL/SDL3/UserEvent.gen.cs index f7ab8f590e..0aca77dcba 100644 --- a/sources/SDL/SDL/SDL3/UserEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/UserEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/Vertex.gen.cs b/sources/SDL/SDL/SDL3/Vertex.gen.cs index 698a7e124c..204a41de8a 100644 --- a/sources/SDL/SDL/SDL3/Vertex.gen.cs +++ b/sources/SDL/SDL/SDL3/Vertex.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/VirtualJoystickDesc.gen.cs b/sources/SDL/SDL/SDL3/VirtualJoystickDesc.gen.cs index ae4be98021..f93b81e507 100644 --- a/sources/SDL/SDL/SDL3/VirtualJoystickDesc.gen.cs +++ b/sources/SDL/SDL/SDL3/VirtualJoystickDesc.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/VirtualJoystickSensorDesc.gen.cs b/sources/SDL/SDL/SDL3/VirtualJoystickSensorDesc.gen.cs index a84ba37571..5d1534a810 100644 --- a/sources/SDL/SDL/SDL3/VirtualJoystickSensorDesc.gen.cs +++ b/sources/SDL/SDL/SDL3/VirtualJoystickSensorDesc.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/VirtualJoystickTouchpadDesc.gen.cs b/sources/SDL/SDL/SDL3/VirtualJoystickTouchpadDesc.gen.cs index 1555ed14bc..96a04e6437 100644 --- a/sources/SDL/SDL/SDL3/VirtualJoystickTouchpadDesc.gen.cs +++ b/sources/SDL/SDL/SDL3/VirtualJoystickTouchpadDesc.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/SDL/SDL/SDL3/WindowEvent.gen.cs b/sources/SDL/SDL/SDL3/WindowEvent.gen.cs index 729007ede4..008a26e94f 100644 --- a/sources/SDL/SDL/SDL3/WindowEvent.gen.cs +++ b/sources/SDL/SDL/SDL3/WindowEvent.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from SDL.h and corresponding dependencies of SDL3. // Original source is Copyright (C) 1997-2024 Sam Lantinga. Licensed under the zlib license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureBuildTypeKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureBuildTypeKHR.gen.cs index e690cc4546..58784d00ff 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureBuildTypeKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureBuildTypeKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureCreateInfo2KHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureCreateInfo2KHR.gen.cs index e15ea9846c..34e650d452 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureCreateInfo2KHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureCreateInfo2KHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryAabbsDataKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryAabbsDataKHR.gen.cs index e1e78a57e2..d568ef8fd4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryAabbsDataKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryAabbsDataKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryLinearSweptSpheresDataNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryLinearSweptSpheresDataNV.gen.cs index 0daceacb74..094ca2d339 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryLinearSweptSpheresDataNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryLinearSweptSpheresDataNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryMicromapDataKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryMicromapDataKHR.gen.cs index 0cdc60b5ed..e07da4c735 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryMicromapDataKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryMicromapDataKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryTrianglesDataKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryTrianglesDataKHR.gen.cs index f4399cbfef..772dd66a99 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryTrianglesDataKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureGeometryTrianglesDataKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMatrixMotionInstanceNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMatrixMotionInstanceNV.gen.cs index 8b4b6a25e8..75d1f20e02 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMatrixMotionInstanceNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMatrixMotionInstanceNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMemoryRequirementsTypeNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMemoryRequirementsTypeNV.gen.cs index 511307d1f5..3c32ad57a9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMemoryRequirementsTypeNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMemoryRequirementsTypeNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMotionInstanceDataNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMotionInstanceDataNV.gen.cs index ab51dbbd47..d3c99266d5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMotionInstanceDataNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMotionInstanceDataNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMotionInstanceNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMotionInstanceNV.gen.cs index f928fe43a4..2099697cac 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMotionInstanceNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureMotionInstanceNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureTrianglesOpacityMicromapEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureTrianglesOpacityMicromapEXT.gen.cs index df609296fc..1cf62309a1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureTrianglesOpacityMicromapEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AccelerationStructureTrianglesOpacityMicromapEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AcquireProfilingLockFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AcquireProfilingLockFlagsKHR.gen.cs index c9d41b9553..ee43a891d4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AcquireProfilingLockFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AcquireProfilingLockFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AddressCopyFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AddressCopyFlagsKHR.gen.cs index 2afefe05ab..5de40f0703 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AddressCopyFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AddressCopyFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AmigoProfilingSubmitInfoSEC.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AmigoProfilingSubmitInfoSEC.gen.cs index cca620cc77..77ca6be398 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AmigoProfilingSubmitInfoSEC.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AmigoProfilingSubmitInfoSEC.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AntiLagStageAMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AntiLagStageAMD.gen.cs index bf792519e6..ea919519a8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AntiLagStageAMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AntiLagStageAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AttachmentDescription2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AttachmentDescription2.gen.cs index 2a62cbccc5..da0575bd4d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AttachmentDescription2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AttachmentDescription2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AttachmentLoadOp.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AttachmentLoadOp.gen.cs index fb6ec739e4..1634ae69b9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AttachmentLoadOp.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AttachmentLoadOp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/AttachmentReference.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AttachmentReference.gen.cs index e68ba1acb6..7dd93805de 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AttachmentReference.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AttachmentReference.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/AttachmentReferenceStencilLayout.gen.cs b/sources/Vulkan/Vulkan/Vulkan/AttachmentReferenceStencilLayout.gen.cs index 964e826a23..6c8f7c27a2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/AttachmentReferenceStencilLayout.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/AttachmentReferenceStencilLayout.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BaseOutStructure.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BaseOutStructure.gen.cs index 976e819501..72ed9bb5a0 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BaseOutStructure.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BaseOutStructure.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BindBufferMemoryDeviceGroupInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BindBufferMemoryDeviceGroupInfo.gen.cs index e6be016c71..60a13084b5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BindBufferMemoryDeviceGroupInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BindBufferMemoryDeviceGroupInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BindImageMemoryInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BindImageMemoryInfo.gen.cs index 089e2e5725..10ddf96200 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BindImageMemoryInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BindImageMemoryInfo.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/BindIndexBuffer3InfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BindIndexBuffer3InfoKHR.gen.cs index ce273445ba..3d25af078f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BindIndexBuffer3InfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BindIndexBuffer3InfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BindShaderGroupIndirectCommandNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BindShaderGroupIndirectCommandNV.gen.cs index 99c8ee3f46..a914e349cd 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BindShaderGroupIndirectCommandNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BindShaderGroupIndirectCommandNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BindTransformFeedbackBuffer2InfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BindTransformFeedbackBuffer2InfoEXT.gen.cs index 9545d4c780..97614150d8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BindTransformFeedbackBuffer2InfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BindTransformFeedbackBuffer2InfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BindVertexBufferIndirectCommandEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BindVertexBufferIndirectCommandEXT.gen.cs index b01be9d4ae..a83a5a6e1b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BindVertexBufferIndirectCommandEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BindVertexBufferIndirectCommandEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BlitImageInfo2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BlitImageInfo2.gen.cs index 818517c34d..1d4cb303a4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BlitImageInfo2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BlitImageInfo2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BufferCopy2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BufferCopy2.gen.cs index d7e96a3a4f..452a94e728 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BufferCopy2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BufferCopy2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BufferCreateFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BufferCreateFlags.gen.cs index 22ee285cdf..a7b9f5c85b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BufferCreateFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BufferCreateFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BufferImageCopy.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BufferImageCopy.gen.cs index 59e9b34935..aad8694bcd 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BufferImageCopy.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BufferImageCopy.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BufferUsageFlags2CreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BufferUsageFlags2CreateInfo.gen.cs index 7a81677b80..7522800c08 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BufferUsageFlags2CreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BufferUsageFlags2CreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/BufferViewCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BufferViewCreateInfo.gen.cs index 6674638d8d..bf9307be21 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BufferViewCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BufferViewCreateInfo.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.Vulkan; [NativeName("VkBufferViewCreateInfo")] diff --git a/sources/Vulkan/Vulkan/Vulkan/BuildMicromapModeEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/BuildMicromapModeEXT.gen.cs index 2f754f08f2..d44176b5ba 100644 --- a/sources/Vulkan/Vulkan/Vulkan/BuildMicromapModeEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/BuildMicromapModeEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CheckpointData2NV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CheckpointData2NV.gen.cs index 1ef4e689f4..45eb5d196e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CheckpointData2NV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CheckpointData2NV.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/CheckpointDataNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CheckpointDataNV.gen.cs index f2e86a9ea6..d5bd71db4c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CheckpointDataNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CheckpointDataNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ChromaLocation.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ChromaLocation.gen.cs index acc211787f..92a3fcf018 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ChromaLocation.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ChromaLocation.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ClearAttachment.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ClearAttachment.gen.cs index 6d15b126c4..f4ec473654 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ClearAttachment.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ClearAttachment.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ClearDepthStencilValue.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ClearDepthStencilValue.gen.cs index 7ddc98a623..5ddebb3e5f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ClearDepthStencilValue.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ClearDepthStencilValue.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ClearRect.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ClearRect.gen.cs index beed14c6fe..3972b985d7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ClearRect.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ClearRect.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.gen.cs index 9e653c579e..cde6488f36 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureCommandsInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureCommandsInfoNV.gen.cs index 7d32b45e9f..e684ba013d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureCommandsInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureCommandsInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.gen.cs index ff289456dd..93e164f679 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureMoveObjectsInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureMoveObjectsInfoNV.gen.cs index 169e92f6ab..55b79c8aaf 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureMoveObjectsInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureMoveObjectsInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureOpInputNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureOpInputNV.gen.cs index e129d0a228..21363d23e5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureOpInputNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ClusterAccelerationStructureOpInputNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CoarseSampleLocationNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CoarseSampleLocationNV.gen.cs index 3456084c7b..aa5b179b12 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CoarseSampleLocationNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CoarseSampleLocationNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CoarseSampleOrderCustomNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CoarseSampleOrderCustomNV.gen.cs index 5fc4bec1f4..66dce39b0c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CoarseSampleOrderCustomNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CoarseSampleOrderCustomNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ColorBlendAdvancedEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ColorBlendAdvancedEXT.gen.cs index cbac9429d1..20c39a4770 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ColorBlendAdvancedEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ColorBlendAdvancedEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ColorBlendEquationEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ColorBlendEquationEXT.gen.cs index 2d7ffa5481..e41cc46a8c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ColorBlendEquationEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ColorBlendEquationEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ColorComponentFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ColorComponentFlags.gen.cs index ef206eecb6..3c3af9fdff 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ColorComponentFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ColorComponentFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CommandBufferAllocateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CommandBufferAllocateInfo.gen.cs index 77892616b2..7c233f0072 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CommandBufferAllocateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CommandBufferAllocateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CommandBufferInheritanceViewportScissorInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CommandBufferInheritanceViewportScissorInfoNV.gen.cs index efa40c1d60..51c34d77e2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CommandBufferInheritanceViewportScissorInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CommandBufferInheritanceViewportScissorInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CommandBufferLevel.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CommandBufferLevel.gen.cs index c326b58283..993a9a8dc8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CommandBufferLevel.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CommandBufferLevel.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CommandBufferResetFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CommandBufferResetFlags.gen.cs index fb7e35ec05..8006c9359a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CommandBufferResetFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CommandBufferResetFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CommandBufferSubmitInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CommandBufferSubmitInfo.gen.cs index 5ad12815e1..ddfe309532 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CommandBufferSubmitInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CommandBufferSubmitInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CommandBufferUsageFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CommandBufferUsageFlags.gen.cs index 47528ed532..c24b8784b9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CommandBufferUsageFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CommandBufferUsageFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CommandPoolCreateFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CommandPoolCreateFlags.gen.cs index 53c3f40692..1f84709f98 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CommandPoolCreateFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CommandPoolCreateFlags.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/CommandPoolResetFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CommandPoolResetFlags.gen.cs index 6a4bb55f79..eecfaa7f1a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CommandPoolResetFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CommandPoolResetFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CompareOp.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CompareOp.gen.cs index acb7a28d92..947441b7f4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CompareOp.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CompareOp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ComponentTypeKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ComponentTypeKHR.gen.cs index afc1cdfc40..2c2f29db2f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ComponentTypeKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ComponentTypeKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CompositeAlphaFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CompositeAlphaFlagsKHR.gen.cs index 25aeb5e775..d3788001e9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CompositeAlphaFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CompositeAlphaFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ComputeOccupancyPriorityParametersNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ComputeOccupancyPriorityParametersNV.gen.cs index 692b2177ed..2b00c09ad5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ComputeOccupancyPriorityParametersNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ComputeOccupancyPriorityParametersNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ComputePipelineIndirectBufferInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ComputePipelineIndirectBufferInfoNV.gen.cs index 2b0e0b2734..6c9e3cde88 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ComputePipelineIndirectBufferInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ComputePipelineIndirectBufferInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ConditionalRenderingFlagsEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ConditionalRenderingFlagsEXT.gen.cs index 2879d3e6ae..c69a15d2f7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ConditionalRenderingFlagsEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ConditionalRenderingFlagsEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ConformanceVersion.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ConformanceVersion.gen.cs index f210f83e53..43b2f06c5f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ConformanceVersion.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ConformanceVersion.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CopyBufferInfo2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CopyBufferInfo2.gen.cs index 5c243bd197..2a0b8f1aa9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CopyBufferInfo2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CopyBufferInfo2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CopyDeviceMemoryImageInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CopyDeviceMemoryImageInfoKHR.gen.cs index 7f60813d6f..511075c260 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CopyDeviceMemoryImageInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CopyDeviceMemoryImageInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CopyDeviceMemoryInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CopyDeviceMemoryInfoKHR.gen.cs index 09f4ca4e1f..efbdae1c12 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CopyDeviceMemoryInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CopyDeviceMemoryInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CopyImageInfo2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CopyImageInfo2.gen.cs index dc2f4b751c..c9f7534414 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CopyImageInfo2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CopyImageInfo2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CopyImageToImageInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CopyImageToImageInfo.gen.cs index 5e6619d7b8..3b69e02e15 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CopyImageToImageInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CopyImageToImageInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CopyMemoryIndirectInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CopyMemoryIndirectInfoKHR.gen.cs index f2244a77c7..899488c7ce 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CopyMemoryIndirectInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CopyMemoryIndirectInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CopyMemoryToAccelerationStructureInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CopyMemoryToAccelerationStructureInfoKHR.gen.cs index e1828e74f4..b7a413ea64 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CopyMemoryToAccelerationStructureInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CopyMemoryToAccelerationStructureInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CopyMemoryToMicromapInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CopyMemoryToMicromapInfoEXT.gen.cs index 2abda00200..c539dcd88b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CopyMemoryToMicromapInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CopyMemoryToMicromapInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CopyMicromapInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CopyMicromapInfoEXT.gen.cs index f0d7075c13..8308e640b4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CopyMicromapInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CopyMicromapInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CopyMicromapModeEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CopyMicromapModeEXT.gen.cs index 137df58d22..b52c995115 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CopyMicromapModeEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CopyMicromapModeEXT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/CuFunctionCreateInfoNVX.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CuFunctionCreateInfoNVX.gen.cs index 89cab42cb7..16d3da2c73 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CuFunctionCreateInfoNVX.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CuFunctionCreateInfoNVX.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CuModuleCreateInfoNVX.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CuModuleCreateInfoNVX.gen.cs index 6bb3900a42..9357124f2b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CuModuleCreateInfoNVX.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CuModuleCreateInfoNVX.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/CubicFilterWeightsQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/CubicFilterWeightsQCOM.gen.cs index 5dcb57f13e..99cda73705 100644 --- a/sources/Vulkan/Vulkan/Vulkan/CubicFilterWeightsQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/CubicFilterWeightsQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineBuiltinModelCreateInfoQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineBuiltinModelCreateInfoQCOM.gen.cs index 71c9ca7db4..27cae959ef 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineBuiltinModelCreateInfoQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineBuiltinModelCreateInfoQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineCompilerControlCreateInfoARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineCompilerControlCreateInfoARM.gen.cs index 5712bc28a1..24724ee2de 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineCompilerControlCreateInfoARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineCompilerControlCreateInfoARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.gen.cs index 382902ccdf..2122e0fd77 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineDispatchInfoARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineDispatchInfoARM.gen.cs index c8b7a3f3a3..ec5695126c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineDispatchInfoARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineDispatchInfoARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineIdentifierCreateInfoARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineIdentifierCreateInfoARM.gen.cs index e31b7b343e..1eb0e20d23 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineIdentifierCreateInfoARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineIdentifierCreateInfoARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineNodeConnectionTypeARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineNodeConnectionTypeARM.gen.cs index b2c3891e9c..d7ca1b6b5e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineNodeConnectionTypeARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineNodeConnectionTypeARM.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineNodeTypeARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineNodeTypeARM.gen.cs index 867b14d981..cd3b4ab666 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineNodeTypeARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineNodeTypeARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineOpticalFlowDispatchInfoARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineOpticalFlowDispatchInfoARM.gen.cs index 4a25fbb8f6..62828b6ab0 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineOpticalFlowDispatchInfoARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineOpticalFlowDispatchInfoARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineSessionBindPointARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineSessionBindPointARM.gen.cs index 2d06751b60..638080d3ae 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineSessionBindPointARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineSessionBindPointARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineSessionBindPointRequirementsInfoARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineSessionBindPointRequirementsInfoARM.gen.cs index de683859df..c98fda2f49 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineSessionBindPointRequirementsInfoARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphPipelineSessionBindPointRequirementsInfoARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphProcessingEngineCreateInfoARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphProcessingEngineCreateInfoARM.gen.cs index 9b4849b075..4a6c340758 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphProcessingEngineCreateInfoARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphProcessingEngineCreateInfoARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DataGraphTosaQualityFlagsARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DataGraphTosaQualityFlagsARM.gen.cs index ff324aa9c1..aede445be3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DataGraphTosaQualityFlagsARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DataGraphTosaQualityFlagsARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DebugUtilsMessageTypeFlagsEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DebugUtilsMessageTypeFlagsEXT.gen.cs index 5cbfc5b1d9..f61e486d8d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DebugUtilsMessageTypeFlagsEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DebugUtilsMessageTypeFlagsEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DebugUtilsObjectNameInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DebugUtilsObjectNameInfoEXT.gen.cs index 10a7ebc112..db36092473 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DebugUtilsObjectNameInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DebugUtilsObjectNameInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DecompressMemoryRegionEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DecompressMemoryRegionEXT.gen.cs index 24ae2e29b4..3166a70c5c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DecompressMemoryRegionEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DecompressMemoryRegionEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DefaultVertexAttributeValueKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DefaultVertexAttributeValueKHR.gen.cs index eebad1f8c1..0c7d055126 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DefaultVertexAttributeValueKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DefaultVertexAttributeValueKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DepthClampRangeEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DepthClampRangeEXT.gen.cs index 756a285306..9734f56317 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DepthClampRangeEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DepthClampRangeEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorGetInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorGetInfoEXT.gen.cs index e0d32debb0..ac58a2dfde 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorGetInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorGetInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorImageInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorImageInfo.gen.cs index 21d2b34aa8..0494df9bee 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorImageInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorImageInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourceEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourceEXT.gen.cs index a987baab1d..feac3d2820 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourceEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourceEXT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourceHeapDataEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourceHeapDataEXT.gen.cs index dc9054eb7e..7e338cbeaf 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourceHeapDataEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourceHeapDataEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourcePushIndexEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourcePushIndexEXT.gen.cs index 9118c15f92..6af061b978 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourcePushIndexEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorMappingSourcePushIndexEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorPoolInlineUniformBlockCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorPoolInlineUniformBlockCreateInfo.gen.cs index a82d86a1fc..902244eca9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorPoolInlineUniformBlockCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorPoolInlineUniformBlockCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorSetAllocateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorSetAllocateInfo.gen.cs index e2ea4b3b50..cbcea41a47 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorSetAllocateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorSetAllocateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorSetBindingReferenceVALVE.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorSetBindingReferenceVALVE.gen.cs index 1f6cfbccc1..3713c861f2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorSetBindingReferenceVALVE.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorSetBindingReferenceVALVE.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorSetLayoutBinding.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorSetLayoutBinding.gen.cs index a0d461d792..a7e9387762 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorSetLayoutBinding.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorSetLayoutBinding.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorSetLayoutHostMappingInfoVALVE.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorSetLayoutHostMappingInfoVALVE.gen.cs index 5ad89bdbf2..40362bc727 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorSetLayoutHostMappingInfoVALVE.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorSetLayoutHostMappingInfoVALVE.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorSetVariableDescriptorCountAllocateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorSetVariableDescriptorCountAllocateInfo.gen.cs index 8bb728dace..df5256daf3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorSetVariableDescriptorCountAllocateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorSetVariableDescriptorCountAllocateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorType.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorType.gen.cs index fa1bd80385..fc3583f92d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorType.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DescriptorUpdateTemplateCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DescriptorUpdateTemplateCreateInfo.gen.cs index ac1d7d8d90..fe88741c03 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DescriptorUpdateTemplateCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DescriptorUpdateTemplateCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceDiagnosticsConfigFlagsNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceDiagnosticsConfigFlagsNV.gen.cs index add7cd2853..6bffa37c03 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceDiagnosticsConfigFlagsNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceDiagnosticsConfigFlagsNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceEventTypeEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceEventTypeEXT.gen.cs index b1a2c6a14b..44f9d7596f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceEventTypeEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceEventTypeEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultAddressInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultAddressInfoKHR.gen.cs index fedf99d06a..ee404d31bb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultAddressInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultAddressInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultAddressTypeKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultAddressTypeKHR.gen.cs index e645e4c583..11c27f76cd 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultAddressTypeKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultAddressTypeKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultCountsEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultCountsEXT.gen.cs index 1e6aeb4a11..72b525a571 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultCountsEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultCountsEXT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultInfoEXT.gen.cs index f8e9a44a8c..30f07fc88e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultShaderAbortMessageInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultShaderAbortMessageInfoKHR.gen.cs index 866e47491b..6fc305e2cb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultShaderAbortMessageInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultShaderAbortMessageInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultVendorBinaryHeaderVersionOneKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultVendorBinaryHeaderVersionOneKHR.gen.cs index da417c27f0..92072fedce 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceFaultVendorBinaryHeaderVersionOneKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceFaultVendorBinaryHeaderVersionOneKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceGroupCommandBufferBeginInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceGroupCommandBufferBeginInfo.gen.cs index 561180688b..85d33efeda 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceGroupCommandBufferBeginInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceGroupCommandBufferBeginInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceGroupRenderPassBeginInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceGroupRenderPassBeginInfo.gen.cs index 1b2e04bd06..ef36891ed5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceGroupRenderPassBeginInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceGroupRenderPassBeginInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceImageMemoryRequirements.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceImageMemoryRequirements.gen.cs index 24a6f5d901..53d2022143 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceImageMemoryRequirements.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceImageMemoryRequirements.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceMemoryImageCopyKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceMemoryImageCopyKHR.gen.cs index f3c2c39ae3..cc06381c73 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceMemoryImageCopyKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceMemoryImageCopyKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceOrHostAddressConstKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceOrHostAddressConstKHR.gen.cs index 7da81eac98..128793fa7c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceOrHostAddressConstKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceOrHostAddressConstKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceOrHostAddressKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceOrHostAddressKHR.gen.cs index 8d3f3e257d..5ed8829080 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceOrHostAddressKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceOrHostAddressKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DevicePrivateDataCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DevicePrivateDataCreateInfo.gen.cs index 5665ce3040..004555a2b9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DevicePrivateDataCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DevicePrivateDataCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DeviceQueueInfo2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DeviceQueueInfo2.gen.cs index d72ffaab38..31bd9393dc 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DeviceQueueInfo2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DeviceQueueInfo2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DispatchIndirectCommand.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DispatchIndirectCommand.gen.cs index 5ed2323535..5d9f34f668 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DispatchIndirectCommand.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DispatchIndirectCommand.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DisplayEventTypeEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DisplayEventTypeEXT.gen.cs index 5193535f7a..e1925cd951 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DisplayEventTypeEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DisplayEventTypeEXT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/DisplayModeCreateInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DisplayModeCreateInfoKHR.gen.cs index 5d6b894bc7..455150203a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DisplayModeCreateInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DisplayModeCreateInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DisplayModeParametersKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DisplayModeParametersKHR.gen.cs index b3029304cc..b906769be2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DisplayModeParametersKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DisplayModeParametersKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DisplayModeProperties2KHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DisplayModeProperties2KHR.gen.cs index 3cf3d65eba..4c053fca73 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DisplayModeProperties2KHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DisplayModeProperties2KHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DisplaySurfaceStereoCreateInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DisplaySurfaceStereoCreateInfoNV.gen.cs index 1ec05707e8..ff32a82610 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DisplaySurfaceStereoCreateInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DisplaySurfaceStereoCreateInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DrawIndirectCommand.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DrawIndirectCommand.gen.cs index 2b955d4320..54fa4777b4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DrawIndirectCommand.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DrawIndirectCommand.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DrmFormatModifierPropertiesList2EXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DrmFormatModifierPropertiesList2EXT.gen.cs index befd6c5b5e..5e82ceef19 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DrmFormatModifierPropertiesList2EXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DrmFormatModifierPropertiesList2EXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/DynamicState.gen.cs b/sources/Vulkan/Vulkan/Vulkan/DynamicState.gen.cs index 4300fef074..7aa1d68fbf 100644 --- a/sources/Vulkan/Vulkan/Vulkan/DynamicState.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/DynamicState.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/EventCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/EventCreateInfo.gen.cs index ee1b1422ec..88ac0c4c4a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/EventCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/EventCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ExportFenceCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ExportFenceCreateInfo.gen.cs index 7605265902..d6e4661cbe 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ExportFenceCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ExportFenceCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ExportMemoryAllocateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ExportMemoryAllocateInfo.gen.cs index 3f0bea4c2a..ad104c5da8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ExportMemoryAllocateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ExportMemoryAllocateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ExtensionProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ExtensionProperties.gen.cs index 53f3abfcd2..e00a0ed450 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ExtensionProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ExtensionProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ExternalComputeQueueCreateInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ExternalComputeQueueCreateInfoNV.gen.cs index aa663663e9..3d2f406adc 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ExternalComputeQueueCreateInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ExternalComputeQueueCreateInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ExternalComputeQueueDataParamsNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ExternalComputeQueueDataParamsNV.gen.cs index 276bcc2592..f8f6c053e4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ExternalComputeQueueDataParamsNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ExternalComputeQueueDataParamsNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ExternalFenceFeatureFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ExternalFenceFeatureFlags.gen.cs index 3b01d555f1..34ad0c0843 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ExternalFenceFeatureFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ExternalFenceFeatureFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ExternalFenceProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ExternalFenceProperties.gen.cs index 062b273efd..e5a88dd5fe 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ExternalFenceProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ExternalFenceProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ExternalImageFormatProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ExternalImageFormatProperties.gen.cs index 08b9bc48b2..bcd08d2f8c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ExternalImageFormatProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ExternalImageFormatProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryAcquireUnmodifiedEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryAcquireUnmodifiedEXT.gen.cs index 72cfcbcbfa..5ef2d20141 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryAcquireUnmodifiedEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryAcquireUnmodifiedEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryImageCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryImageCreateInfo.gen.cs index b807447aa9..8768d4dd7a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryImageCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryImageCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryProperties.gen.cs index 9ee139a03c..3fcaf8b1f4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ExternalMemoryProperties.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/FenceCreateFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/FenceCreateFlags.gen.cs index be0baec574..24cfbf475b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/FenceCreateFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/FenceCreateFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/FenceCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/FenceCreateInfo.gen.cs index 2c38c4ab07..102e2388f3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/FenceCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/FenceCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/FenceGetFdInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/FenceGetFdInfoKHR.gen.cs index c3ea18663f..fc3e0cc754 100644 --- a/sources/Vulkan/Vulkan/Vulkan/FenceGetFdInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/FenceGetFdInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/Filter.gen.cs b/sources/Vulkan/Vulkan/Vulkan/Filter.gen.cs index df813b9291..dcf4662470 100644 --- a/sources/Vulkan/Vulkan/Vulkan/Filter.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/Filter.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/FormatProperties2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/FormatProperties2.gen.cs index 59989ce277..e81efe0264 100644 --- a/sources/Vulkan/Vulkan/Vulkan/FormatProperties2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/FormatProperties2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateAttachmentInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateAttachmentInfoKHR.gen.cs index 0fb355d195..4e2ba046ac 100644 --- a/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateAttachmentInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateAttachmentInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateNV.gen.cs index 097bd50c92..56d78c2e0c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateTypeNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateTypeNV.gen.cs index be0c4adeeb..3f29b34fbf 100644 --- a/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateTypeNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/FragmentShadingRateTypeNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/FrameBoundaryFlagsEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/FrameBoundaryFlagsEXT.gen.cs index d52bf08458..7f9478db00 100644 --- a/sources/Vulkan/Vulkan/Vulkan/FrameBoundaryFlagsEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/FrameBoundaryFlagsEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/FramebufferAttachmentsCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/FramebufferAttachmentsCreateInfo.gen.cs index 2aee506d14..0271d1d648 100644 --- a/sources/Vulkan/Vulkan/Vulkan/FramebufferAttachmentsCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/FramebufferAttachmentsCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/FramebufferMixedSamplesCombinationNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/FramebufferMixedSamplesCombinationNV.gen.cs index 5242bd93dd..d1dfb4724f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/FramebufferMixedSamplesCombinationNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/FramebufferMixedSamplesCombinationNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/GeneratedCommandsInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/GeneratedCommandsInfoEXT.gen.cs index 6edd15608b..a9999121d5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/GeneratedCommandsInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/GeneratedCommandsInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/GeometryDataNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/GeometryDataNV.gen.cs index 1663d99670..6902649050 100644 --- a/sources/Vulkan/Vulkan/Vulkan/GeometryDataNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/GeometryDataNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/GeometryTrianglesNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/GeometryTrianglesNV.gen.cs index 037917264b..90bed8460f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/GeometryTrianglesNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/GeometryTrianglesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/GpaDeviceClockModeInfoAMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/GpaDeviceClockModeInfoAMD.gen.cs index 26d7df2bfa..e94837418d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/GpaDeviceClockModeInfoAMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/GpaDeviceClockModeInfoAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/GpaDeviceGetClockInfoAMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/GpaDeviceGetClockInfoAMD.gen.cs index 704bde7cf3..746ba7d6b9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/GpaDeviceGetClockInfoAMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/GpaDeviceGetClockInfoAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/GpaPerfBlockPropertiesAMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/GpaPerfBlockPropertiesAMD.gen.cs index 36a4b92937..c1f1091aef 100644 --- a/sources/Vulkan/Vulkan/Vulkan/GpaPerfBlockPropertiesAMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/GpaPerfBlockPropertiesAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/GpaPerfCounterAMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/GpaPerfCounterAMD.gen.cs index a6fcbcf4e1..342b6b832c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/GpaPerfCounterAMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/GpaPerfCounterAMD.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/GpaSampleTypeAMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/GpaSampleTypeAMD.gen.cs index 3b7f5660f0..a5a82b1af4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/GpaSampleTypeAMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/GpaSampleTypeAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/HeadlessSurfaceCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/HeadlessSurfaceCreateInfoEXT.gen.cs index 033eea40f5..99154ed7ab 100644 --- a/sources/Vulkan/Vulkan/Vulkan/HeadlessSurfaceCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/HeadlessSurfaceCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/HostAddressRangeConstEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/HostAddressRangeConstEXT.gen.cs index 8b2b239bbc..eb538567e1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/HostAddressRangeConstEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/HostAddressRangeConstEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/HostImageLayoutTransitionInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/HostImageLayoutTransitionInfo.gen.cs index 068e90b3f5..212e593ff8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/HostImageLayoutTransitionInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/HostImageLayoutTransitionInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/IVk.gen.cs b/sources/Vulkan/Vulkan/Vulkan/IVk.gen.cs index 754ba8bc15..52ce6f32aa 100644 --- a/sources/Vulkan/Vulkan/Vulkan/IVk.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/IVk.gen.cs @@ -3,8 +3,10 @@ // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. using System; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageBlit.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageBlit.gen.cs index 560e6f162d..511be02540 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageBlit.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageBlit.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageCaptureDescriptorDataInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageCaptureDescriptorDataInfoEXT.gen.cs index 55f9ad8475..30e3e7f31d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageCaptureDescriptorDataInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageCaptureDescriptorDataInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageCompressionFixedRateFlagsEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageCompressionFixedRateFlagsEXT.gen.cs index 4448390da2..fe9dd2b25a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageCompressionFixedRateFlagsEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageCompressionFixedRateFlagsEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageCompressionPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageCompressionPropertiesEXT.gen.cs index da746c98bf..25efb3cdbe 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageCompressionPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageCompressionPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageCopy.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageCopy.gen.cs index e786543b86..b887dc8525 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageCopy.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageCopy.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageCreateFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageCreateFlags.gen.cs index 8989633180..aa928e73c0 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageCreateFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageCreateFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageCreateFlags2CreateInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageCreateFlags2CreateInfoKHR.gen.cs index 347579d1f8..75f944008b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageCreateFlags2CreateInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageCreateFlags2CreateInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageDrmFormatModifierExplicitCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageDrmFormatModifierExplicitCreateInfoEXT.gen.cs index d213e68f58..32ab57c89d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageDrmFormatModifierExplicitCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageDrmFormatModifierExplicitCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageDrmFormatModifierPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageDrmFormatModifierPropertiesEXT.gen.cs index 733ccda01e..a6ca234e80 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageDrmFormatModifierPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageDrmFormatModifierPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageFormatListCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageFormatListCreateInfo.gen.cs index db4523f735..5b61cb0a55 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageFormatListCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageFormatListCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageLayout.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageLayout.gen.cs index 16cd22de41..bedf56f471 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageLayout.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageLayout.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageResolve.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageResolve.gen.cs index 9e2039c0a0..acd570221f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageResolve.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageResolve.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageStencilUsage2CreateInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageStencilUsage2CreateInfoKHR.gen.cs index 29aa0211c0..02f3d858b1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageStencilUsage2CreateInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageStencilUsage2CreateInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageStencilUsageCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageStencilUsageCreateInfo.gen.cs index 2180542ee9..dfa7e7c3e3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageStencilUsageCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageStencilUsageCreateInfo.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageSubresource.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageSubresource.gen.cs index 7ee1ae62e4..170881269e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageSubresource.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageSubresource.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageSubresource2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageSubresource2.gen.cs index 7beda83c2e..fc924e5b70 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageSubresource2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageSubresource2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageViewAddressPropertiesNVX.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageViewAddressPropertiesNVX.gen.cs index 0436a0a1ae..8050668de0 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageViewAddressPropertiesNVX.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageViewAddressPropertiesNVX.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageViewSampleWeightCreateInfoQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageViewSampleWeightCreateInfoQCOM.gen.cs index 4233393279..53bf111367 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageViewSampleWeightCreateInfoQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageViewSampleWeightCreateInfoQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageViewSlicedCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageViewSlicedCreateInfoEXT.gen.cs index 5e29cf3554..c1541028d8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageViewSlicedCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageViewSlicedCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageViewUsage2CreateInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageViewUsage2CreateInfoKHR.gen.cs index 062d8e5f59..41f34d0719 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageViewUsage2CreateInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageViewUsage2CreateInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImageViewUsageCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImageViewUsageCreateInfo.gen.cs index 3d043bbf5d..303a53a237 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImageViewUsageCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImageViewUsageCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImportFenceFdInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImportFenceFdInfoKHR.gen.cs index f3a5f3c50e..ddf767dd2f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImportFenceFdInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImportFenceFdInfoKHR.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImportMemoryFdInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImportMemoryFdInfoKHR.gen.cs index 141ec76cc8..97ea832de4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImportMemoryFdInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImportMemoryFdInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ImportSemaphoreFdInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ImportSemaphoreFdInfoKHR.gen.cs index f967693079..cff9456c52 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ImportSemaphoreFdInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ImportSemaphoreFdInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutCreateInfoEXT.gen.cs index bd857b7f21..d417a4fe5f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutTokenEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutTokenEXT.gen.cs index 1a19f8c2bf..0c102727f1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutTokenEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutTokenEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutUsageFlagsEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutUsageFlagsEXT.gen.cs index df346cd061..93790c531e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutUsageFlagsEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsLayoutUsageFlagsEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsStreamNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsStreamNV.gen.cs index 5a0da9d5e0..ee4fbb7a99 100644 --- a/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsStreamNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/IndirectCommandsStreamNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetCreateInfoEXT.gen.cs index 6599a03275..5bc32bd4de 100644 --- a/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetInfoEXT.gen.cs index 585d697614..c2b0bdc189 100644 --- a/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetShaderLayoutInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetShaderLayoutInfoEXT.gen.cs index c74e85257d..29f99cdd21 100644 --- a/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetShaderLayoutInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/IndirectExecutionSetShaderLayoutInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/InitializePerformanceApiInfoINTEL.gen.cs b/sources/Vulkan/Vulkan/Vulkan/InitializePerformanceApiInfoINTEL.gen.cs index 06d2f774c3..1d22155622 100644 --- a/sources/Vulkan/Vulkan/Vulkan/InitializePerformanceApiInfoINTEL.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/InitializePerformanceApiInfoINTEL.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/InstanceCreateFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/InstanceCreateFlags.gen.cs index 3b19eb8f82..bb8c2d6ec6 100644 --- a/sources/Vulkan/Vulkan/Vulkan/InstanceCreateFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/InstanceCreateFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/LatencySleepModeInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/LatencySleepModeInfoNV.gen.cs index f843d820ee..470e442292 100644 --- a/sources/Vulkan/Vulkan/Vulkan/LatencySleepModeInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/LatencySleepModeInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/LatencySubmissionPresentIdNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/LatencySubmissionPresentIdNV.gen.cs index 8f8990979c..1c32948ca4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/LatencySubmissionPresentIdNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/LatencySubmissionPresentIdNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/LayerProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/LayerProperties.gen.cs index 29716df5af..85d0d9e3c2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/LayerProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/LayerProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/LayerSettingEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/LayerSettingEXT.gen.cs index 08d638b08b..0d8591461f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/LayerSettingEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/LayerSettingEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/LayerSettingTypeEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/LayerSettingTypeEXT.gen.cs index b6cde873b2..fd3f9bfb6b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/LayerSettingTypeEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/LayerSettingTypeEXT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/LayeredDriverUnderlyingApiMSFT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/LayeredDriverUnderlyingApiMSFT.gen.cs index 6403e2082f..730e6e6f22 100644 --- a/sources/Vulkan/Vulkan/Vulkan/LayeredDriverUnderlyingApiMSFT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/LayeredDriverUnderlyingApiMSFT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/LogicOp.gen.cs b/sources/Vulkan/Vulkan/Vulkan/LogicOp.gen.cs index c299774ace..ae3920920a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/LogicOp.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/LogicOp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MemoryBarrier2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MemoryBarrier2.gen.cs index 67c60800e3..9f4f5eb9be 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MemoryBarrier2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MemoryBarrier2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MemoryBarrierAccessFlags3KHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MemoryBarrierAccessFlags3KHR.gen.cs index 00167c3045..7007964c25 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MemoryBarrierAccessFlags3KHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MemoryBarrierAccessFlags3KHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MemoryDedicatedAllocateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MemoryDedicatedAllocateInfo.gen.cs index 2ead92e5e9..01b521adbe 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MemoryDedicatedAllocateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MemoryDedicatedAllocateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MemoryDedicatedRequirements.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MemoryDedicatedRequirements.gen.cs index b63706b5e9..b8e0bd9afa 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MemoryDedicatedRequirements.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MemoryDedicatedRequirements.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MemoryGetFdInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MemoryGetFdInfoKHR.gen.cs index eed30b9f3e..e8c853e264 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MemoryGetFdInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MemoryGetFdInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MemoryGetRemoteAddressInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MemoryGetRemoteAddressInfoNV.gen.cs index 8925dd54b9..ef71c4f573 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MemoryGetRemoteAddressInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MemoryGetRemoteAddressInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MemoryHeapFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MemoryHeapFlags.gen.cs index 445d8f4075..2b2c5d5974 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MemoryHeapFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MemoryHeapFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MemoryRangeBarrierKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MemoryRangeBarrierKHR.gen.cs index 3c099012db..c9f1572210 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MemoryRangeBarrierKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MemoryRangeBarrierKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MemoryUnmapFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MemoryUnmapFlags.gen.cs index 41ea581867..9367796074 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MemoryUnmapFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MemoryUnmapFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MemoryUnmapInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MemoryUnmapInfo.gen.cs index b6922e8b7b..7232082c20 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MemoryUnmapInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MemoryUnmapInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MicromapBuildInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MicromapBuildInfoEXT.gen.cs index 3f27cf7824..91c6f009d1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MicromapBuildInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MicromapBuildInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MicromapBuildSizesInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MicromapBuildSizesInfoEXT.gen.cs index f1d46ce96e..b1d74b8262 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MicromapBuildSizesInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MicromapBuildSizesInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MicromapCreateFlagsEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MicromapCreateFlagsEXT.gen.cs index 316d39a894..c3b6abaf2e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MicromapCreateFlagsEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MicromapCreateFlagsEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MicromapCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MicromapCreateInfoEXT.gen.cs index c1a532fa00..71320baebb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MicromapCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MicromapCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MicromapUsageEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MicromapUsageEXT.gen.cs index 256e369f8a..47c3ceba77 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MicromapUsageEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MicromapUsageEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MicromapUsageKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MicromapUsageKHR.gen.cs index adc6bb46f3..5e92280bef 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MicromapUsageKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MicromapUsageKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MicromapVersionInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MicromapVersionInfoEXT.gen.cs index ffafb199b4..01f326a349 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MicromapVersionInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MicromapVersionInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MultisamplePropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MultisamplePropertiesEXT.gen.cs index ffd8e6ba9d..4531613f46 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MultisamplePropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MultisamplePropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MultisampledRenderToSingleSampledInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MultisampledRenderToSingleSampledInfoEXT.gen.cs index 67e2e9326a..acf1c35eac 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MultisampledRenderToSingleSampledInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MultisampledRenderToSingleSampledInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/MultiviewPerViewAttributesInfoNVX.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MultiviewPerViewAttributesInfoNVX.gen.cs index 16da2c1ecb..9159d4a47d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MultiviewPerViewAttributesInfoNVX.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MultiviewPerViewAttributesInfoNVX.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.gen.cs index cb1a634793..f8c328b298 100644 --- a/sources/Vulkan/Vulkan/Vulkan/MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/NeuralAcceleratorStatisticsModeARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/NeuralAcceleratorStatisticsModeARM.gen.cs index e1ee6c436a..dbd3604f04 100644 --- a/sources/Vulkan/Vulkan/Vulkan/NeuralAcceleratorStatisticsModeARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/NeuralAcceleratorStatisticsModeARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/OpacityMicromapFormatKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/OpacityMicromapFormatKHR.gen.cs index 26a76dde6c..811a7888cb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/OpacityMicromapFormatKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/OpacityMicromapFormatKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/OpaqueCaptureDescriptorDataCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/OpaqueCaptureDescriptorDataCreateInfoEXT.gen.cs index 638ed62775..cdd9abd3da 100644 --- a/sources/Vulkan/Vulkan/Vulkan/OpaqueCaptureDescriptorDataCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/OpaqueCaptureDescriptorDataCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/OpticalFlowExecuteInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/OpticalFlowExecuteInfoNV.gen.cs index eec496a401..ec05a4e0ed 100644 --- a/sources/Vulkan/Vulkan/Vulkan/OpticalFlowExecuteInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/OpticalFlowExecuteInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/OpticalFlowImageFormatPropertiesNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/OpticalFlowImageFormatPropertiesNV.gen.cs index 60649ddd30..5d7aa8ff9b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/OpticalFlowImageFormatPropertiesNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/OpticalFlowImageFormatPropertiesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/OpticalFlowSessionBindingPointNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/OpticalFlowSessionBindingPointNV.gen.cs index 4ec806df70..c215c9a380 100644 --- a/sources/Vulkan/Vulkan/Vulkan/OpticalFlowSessionBindingPointNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/OpticalFlowSessionBindingPointNV.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/OpticalFlowSessionCreatePrivateDataInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/OpticalFlowSessionCreatePrivateDataInfoNV.gen.cs index a065626284..41c64da865 100644 --- a/sources/Vulkan/Vulkan/Vulkan/OpticalFlowSessionCreatePrivateDataInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/OpticalFlowSessionCreatePrivateDataInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/OpticalFlowUsageFlagsNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/OpticalFlowUsageFlagsNV.gen.cs index 1f1fadb784..c803748826 100644 --- a/sources/Vulkan/Vulkan/Vulkan/OpticalFlowUsageFlagsNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/OpticalFlowUsageFlagsNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PartitionedAccelerationStructureWriteInstanceDataNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PartitionedAccelerationStructureWriteInstanceDataNV.gen.cs index c02d0a8124..b5c56462ef 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PartitionedAccelerationStructureWriteInstanceDataNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PartitionedAccelerationStructureWriteInstanceDataNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PastPresentationTimingFlagsEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PastPresentationTimingFlagsEXT.gen.cs index d1e7d484c3..a5b9c24423 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PastPresentationTimingFlagsEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PastPresentationTimingFlagsEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PastPresentationTimingInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PastPresentationTimingInfoEXT.gen.cs index 5f487530d8..7220519929 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PastPresentationTimingInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PastPresentationTimingInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PeerMemoryFeatureFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PeerMemoryFeatureFlags.gen.cs index 4e2aa94f7a..dc0d5ed892 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PeerMemoryFeatureFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PeerMemoryFeatureFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PerTileBeginInfoQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PerTileBeginInfoQCOM.gen.cs index 24137176c4..c55cb48f19 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PerTileBeginInfoQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PerTileBeginInfoQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PerfHintTypeQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PerfHintTypeQCOM.gen.cs index 4aceed8029..b0a87eb43f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PerfHintTypeQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PerfHintTypeQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterDescriptionKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterDescriptionKHR.gen.cs index 73d706ba72..a64d8be31b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterDescriptionKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterDescriptionKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterKHR.gen.cs index 75e2c4126d..efa9f2e2f6 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterScopeKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterScopeKHR.gen.cs index 1b5982fb02..c0b28a041b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterScopeKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PerformanceCounterScopeKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PerformanceOverrideInfoINTEL.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PerformanceOverrideInfoINTEL.gen.cs index 4848cb587c..73e303012b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PerformanceOverrideInfoINTEL.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PerformanceOverrideInfoINTEL.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PerformanceParameterTypeINTEL.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PerformanceParameterTypeINTEL.gen.cs index 5248016c6a..78e97979b3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PerformanceParameterTypeINTEL.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PerformanceParameterTypeINTEL.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAccelerationStructureFeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAccelerationStructureFeaturesKHR.gen.cs index ac17421e3d..8544f021bb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAccelerationStructureFeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAccelerationStructureFeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAccelerationStructurePropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAccelerationStructurePropertiesKHR.gen.cs index 564f0c6dff..525587012e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAccelerationStructurePropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAccelerationStructurePropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAddressBindingReportFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAddressBindingReportFeaturesEXT.gen.cs index 88184c6ce5..da60b4c405 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAddressBindingReportFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAddressBindingReportFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAntiLagFeaturesAMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAntiLagFeaturesAMD.gen.cs index 6451460cbe..cc1d9eabdc 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAntiLagFeaturesAMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAntiLagFeaturesAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.gen.cs index abab3f3aef..2299f221d9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceBlendOperationAdvancedPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceBlendOperationAdvancedPropertiesEXT.gen.cs index d3bccb9342..49c8113611 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceBlendOperationAdvancedPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceBlendOperationAdvancedPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.gen.cs index 91230742c0..ba18dcdaa6 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceComputeShaderDerivativesPropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceComputeShaderDerivativesPropertiesKHR.gen.cs index 29a75a92a2..e44601a59e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceComputeShaderDerivativesPropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceComputeShaderDerivativesPropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceConservativeRasterizationPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceConservativeRasterizationPropertiesEXT.gen.cs index 94863b788e..5588eeafd2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceConservativeRasterizationPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceConservativeRasterizationPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV.gen.cs index 5fc13b4470..144ed913f3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCooperativeMatrixFeaturesNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCooperativeMatrixFeaturesNV.gen.cs index f3a1296a40..125ad24855 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCooperativeMatrixFeaturesNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCooperativeMatrixFeaturesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCustomBorderColorFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCustomBorderColorFeaturesEXT.gen.cs index 603622e554..dcc8d823cc 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCustomBorderColorFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceCustomBorderColorFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM.gen.cs index d1690f7cf2..603e10dbde 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDataGraphProcessingEngineARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDataGraphProcessingEngineARM.gen.cs index 9e5b98c86b..137eef2de3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDataGraphProcessingEngineARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDataGraphProcessingEngineARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorBufferTensorFeaturesARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorBufferTensorFeaturesARM.gen.cs index 9b49b9fe33..8d4327e9c4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorBufferTensorFeaturesARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorBufferTensorFeaturesARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorBufferTensorPropertiesARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorBufferTensorPropertiesARM.gen.cs index c04f54cccc..cb0cc77090 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorBufferTensorPropertiesARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorBufferTensorPropertiesARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorHeapPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorHeapPropertiesEXT.gen.cs index fe0f189c1e..73e1fb40e5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorHeapPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorHeapPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorIndexingFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorIndexingFeatures.gen.cs index 85d69166ef..8c9207d333 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorIndexingFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDescriptorIndexingFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceGeneratedCommandsFeaturesNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceGeneratedCommandsFeaturesNV.gen.cs index e94d0b9609..9728a03ec4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceGeneratedCommandsFeaturesNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceGeneratedCommandsFeaturesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.gen.cs index 88c8f21462..d9cddce3d3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceMemoryReportFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceMemoryReportFeaturesEXT.gen.cs index 8ec93d06c6..00af51eb72 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceMemoryReportFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDeviceMemoryReportFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDriverProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDriverProperties.gen.cs index f9106d1296..4f78d9b581 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDriverProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDriverProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDynamicRenderingFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDynamicRenderingFeatures.gen.cs index efd413cb55..560b530c2f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDynamicRenderingFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceDynamicRenderingFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceElapsedTimerQueryFeaturesQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceElapsedTimerQueryFeaturesQCOM.gen.cs index faddf95a3f..47bba0590b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceElapsedTimerQueryFeaturesQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceElapsedTimerQueryFeaturesQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExtendedDynamicState3PropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExtendedDynamicState3PropertiesEXT.gen.cs index ca0f287252..e48532dc8b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExtendedDynamicState3PropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExtendedDynamicState3PropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalComputeQueuePropertiesNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalComputeQueuePropertiesNV.gen.cs index ddb9b9047b..b01068ae56 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalComputeQueuePropertiesNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalComputeQueuePropertiesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalFenceInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalFenceInfo.gen.cs index 646acf6bf1..f2c9457915 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalFenceInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalFenceInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalMemoryHostPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalMemoryHostPropertiesEXT.gen.cs index 9b360012d3..0e761589bc 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalMemoryHostPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceExternalMemoryHostPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFaultFeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFaultFeaturesKHR.gen.cs index 36b0c8631e..56cfa4309a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFaultFeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFaultFeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFaultPropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFaultPropertiesKHR.gen.cs index c4fb9b267d..55b7ce6aed 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFaultPropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFaultPropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMap2FeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMap2FeaturesEXT.gen.cs index 689fad33c7..74fba0de75 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMap2FeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMap2FeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE.gen.cs index 2fb8918457..672944423e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.gen.cs index e208656e73..b61516ddec 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapPropertiesEXT.gen.cs index 8e3fad0430..3f5960d4e9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentDensityMapPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentShadingRateEnumsPropertiesNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentShadingRateEnumsPropertiesNV.gen.cs index a739de9f77..ab747fc7e2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentShadingRateEnumsPropertiesNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentShadingRateEnumsPropertiesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentShadingRatePropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentShadingRatePropertiesKHR.gen.cs index bdb1aae09d..8a11255805 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentShadingRatePropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceFragmentShadingRatePropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGlobalPriorityQueryFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGlobalPriorityQueryFeatures.gen.cs index 8a8c11a6f7..d4deffd6ab 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGlobalPriorityQueryFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGlobalPriorityQueryFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGpaProperties2AMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGpaProperties2AMD.gen.cs index f6b144d6b9..2a69712e08 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGpaProperties2AMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGpaProperties2AMD.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.gen.cs index f40d683031..810e76a368 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGroupProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGroupProperties.gen.cs index 1b6dd436a6..d3f435c652 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGroupProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceGroupProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceHostQueryResetFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceHostQueryResetFeatures.gen.cs index 4b7370951b..885319b0de 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceHostQueryResetFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceHostQueryResetFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceIDProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceIDProperties.gen.cs index 4401b0b4e7..4ba18e33b7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceIDProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceIDProperties.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageCompressionControlFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageCompressionControlFeaturesEXT.gen.cs index f2bd0b4262..65b4bd0dbb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageCompressionControlFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageCompressionControlFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageDrmFormatModifierInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageDrmFormatModifierInfoEXT.gen.cs index 64d23f1f5a..b3fbfb5077 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageDrmFormatModifierInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageDrmFormatModifierInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageFormatInfo2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageFormatInfo2.gen.cs index eef23bc718..003d82e59b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageFormatInfo2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageFormatInfo2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageProcessing2PropertiesQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageProcessing2PropertiesQCOM.gen.cs index 0787b2e6f5..16d956e2fa 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageProcessing2PropertiesQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageProcessing2PropertiesQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageProcessingFeaturesQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageProcessingFeaturesQCOM.gen.cs index 31279f2b19..c21d4b21a1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageProcessingFeaturesQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageProcessingFeaturesQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageViewMinLodFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageViewMinLodFeaturesEXT.gen.cs index 3374baffe9..32fca0410e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageViewMinLodFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceImageViewMinLodFeaturesEXT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceInvocationMaskFeaturesHUAWEI.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceInvocationMaskFeaturesHUAWEI.gen.cs index eda9f46fbf..f03e7452f5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceInvocationMaskFeaturesHUAWEI.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceInvocationMaskFeaturesHUAWEI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLayeredApiVulkanPropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLayeredApiVulkanPropertiesKHR.gen.cs index 1a564442d0..46c302901f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLayeredApiVulkanPropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLayeredApiVulkanPropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLayeredDriverPropertiesMSFT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLayeredDriverPropertiesMSFT.gen.cs index 133cd0eb46..b5b678ec54 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLayeredDriverPropertiesMSFT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLayeredDriverPropertiesMSFT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyDitheringFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyDitheringFeaturesEXT.gen.cs index 9e7973a064..297c9fdf50 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyDitheringFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyDitheringFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyVertexAttributesFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyVertexAttributesFeaturesEXT.gen.cs index 4aa2517606..cd4f345707 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyVertexAttributesFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyVertexAttributesFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyVertexAttributesPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyVertexAttributesPropertiesEXT.gen.cs index d024153844..a2716ca654 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyVertexAttributesPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLegacyVertexAttributesPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLineRasterizationProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLineRasterizationProperties.gen.cs index 7f1ceb0594..356f0c9817 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLineRasterizationProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceLineRasterizationProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance10FeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance10FeaturesKHR.gen.cs index 297f8c9014..ee6687cf58 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance10FeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance10FeaturesKHR.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance10PropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance10PropertiesKHR.gen.cs index 65efa4d23f..d6a8e93ab8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance10PropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance10PropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance11FeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance11FeaturesKHR.gen.cs index 76ca99c9e8..9555d9859d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance11FeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance11FeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance4Features.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance4Features.gen.cs index 7bda213ffe..6ea7b1ca18 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance4Features.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance4Features.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance4Properties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance4Properties.gen.cs index 259d6edc3e..ed161af8c2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance4Properties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance4Properties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance7FeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance7FeaturesKHR.gen.cs index 0ecffacbbf..e3eba0caa3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance7FeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance7FeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance8FeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance8FeaturesKHR.gen.cs index 5a53fb8827..43d89783d2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance8FeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance8FeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance9PropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance9PropertiesKHR.gen.cs index 7c0bba4497..3a3ca85222 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance9PropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMaintenance9PropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMapMemoryPlacedFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMapMemoryPlacedFeaturesEXT.gen.cs index 62be2b6eb1..3c0784b47a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMapMemoryPlacedFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMapMemoryPlacedFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryDecompressionFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryDecompressionFeaturesEXT.gen.cs index 0dfa2456ed..3b8af2ad4d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryDecompressionFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryDecompressionFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryPriorityFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryPriorityFeaturesEXT.gen.cs index 4c1ef6a4cc..e02b694612 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryPriorityFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryPriorityFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryProperties.gen.cs index 3c78b58ad3..eb625b05af 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMemoryProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMeshShaderFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMeshShaderFeaturesEXT.gen.cs index 4c7c09dc52..9a133ecb14 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMeshShaderFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMeshShaderFeaturesEXT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMeshShaderFeaturesNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMeshShaderFeaturesNV.gen.cs index a90bd64c69..dc8a413a2b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMeshShaderFeaturesNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMeshShaderFeaturesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.gen.cs index a9118df836..278dc2b26e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceNestedCommandBufferPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceNestedCommandBufferPropertiesEXT.gen.cs index a5f1f711a3..0f47586bce 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceNestedCommandBufferPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceNestedCommandBufferPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePciBusInfoPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePciBusInfoPropertiesEXT.gen.cs index ed5cade462..f332899556 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePciBusInfoPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePciBusInfoPropertiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceCountersByRegionFeaturesARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceCountersByRegionFeaturesARM.gen.cs index f89986b14d..fbf4a709aa 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceCountersByRegionFeaturesARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceCountersByRegionFeaturesARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceCountersByRegionPropertiesARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceCountersByRegionPropertiesARM.gen.cs index 1743576a5a..2d23b2d22e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceCountersByRegionPropertiesARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceCountersByRegionPropertiesARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceQueryPropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceQueryPropertiesKHR.gen.cs index 98ad5c2df4..576312782f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceQueryPropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePerformanceQueryPropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineBinaryPropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineBinaryPropertiesKHR.gen.cs index 971696be8c..dbf68170d1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineBinaryPropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineBinaryPropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineCreationCacheControlFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineCreationCacheControlFeatures.gen.cs index a828e16a39..6dd3831708 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineCreationCacheControlFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineCreationCacheControlFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.gen.cs index 55651c1b97..53f98097a5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineProtectedAccessFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineProtectedAccessFeatures.gen.cs index 3c84c7e45f..2ec49c66df 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineProtectedAccessFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineProtectedAccessFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineRobustnessFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineRobustnessFeatures.gen.cs index eca1c22528..756a3afef4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineRobustnessFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineRobustnessFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineRobustnessProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineRobustnessProperties.gen.cs index 6cdbbc1047..f316d367f0 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineRobustnessProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePipelineRobustnessProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePresentId2FeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePresentId2FeaturesKHR.gen.cs index 0e4b222cb0..a784efe895 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePresentId2FeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePresentId2FeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePresentWait2FeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePresentWait2FeaturesKHR.gen.cs index 1d9d9443e3..2fa8994299 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePresentWait2FeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePresentWait2FeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceProperties.gen.cs index b3ab9cfc4c..b390f6c8f6 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceProperties2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceProperties2.gen.cs index 5ce894ac91..a6c60bb457 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceProperties2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceProperties2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePushDescriptorProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePushDescriptorProperties.gen.cs index b787cd0cd3..7feec243c8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePushDescriptorProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDevicePushDescriptorProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingInvocationReorderFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingInvocationReorderFeaturesEXT.gen.cs index 69b3fb83d0..14103d0f5e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingInvocationReorderFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingInvocationReorderFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingMaintenance1FeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingMaintenance1FeaturesKHR.gen.cs index 0abc437d88..4f521ab687 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingMaintenance1FeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingMaintenance1FeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingPipelinePropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingPipelinePropertiesKHR.gen.cs index bb32ec8c6c..76188b6293 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingPipelinePropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingPipelinePropertiesKHR.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingPositionFetchFeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingPositionFetchFeaturesKHR.gen.cs index 90a0b26478..0cf6e96c5e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingPositionFetchFeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRayTracingPositionFetchFeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRelaxedLineRasterizationFeaturesIMG.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRelaxedLineRasterizationFeaturesIMG.gen.cs index 24d446bd34..5846124e92 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRelaxedLineRasterizationFeaturesIMG.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRelaxedLineRasterizationFeaturesIMG.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRepresentativeFragmentTestFeaturesNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRepresentativeFragmentTestFeaturesNV.gen.cs index a271d8c797..362d6167dc 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRepresentativeFragmentTestFeaturesNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRepresentativeFragmentTestFeaturesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRgba10x6FormatsFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRgba10x6FormatsFeaturesEXT.gen.cs index ea3d36c6be..b08aa9bf30 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRgba10x6FormatsFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceRgba10x6FormatsFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceScalarBlockLayoutFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceScalarBlockLayoutFeatures.gen.cs index 3ca15d9b2c..7c124853b2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceScalarBlockLayoutFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceScalarBlockLayoutFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM.gen.cs index ceff81ae55..93f935112c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSchedulingControlsFeaturesARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSchedulingControlsFeaturesARM.gen.cs index c216c0c993..b9710a9cd6 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSchedulingControlsFeaturesARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSchedulingControlsFeaturesARM.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAbortFeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAbortFeaturesKHR.gen.cs index 5b34fad534..326bdda890 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAbortFeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAbortFeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAtomicFloat2FeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAtomicFloat2FeaturesEXT.gen.cs index 06089862e2..a4f959d8e7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAtomicFloat2FeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAtomicFloat2FeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAtomicInt64Features.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAtomicInt64Features.gen.cs index 2642719c2a..e6111da045 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAtomicInt64Features.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderAtomicInt64Features.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderCoreBuiltinsFeaturesARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderCoreBuiltinsFeaturesARM.gen.cs index 286c1e3e8c..3ac2215441 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderCoreBuiltinsFeaturesARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderCoreBuiltinsFeaturesARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderCorePropertiesARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderCorePropertiesARM.gen.cs index 3cfde5da3d..c276c58a3e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderCorePropertiesARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderCorePropertiesARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderDrawParametersFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderDrawParametersFeatures.gen.cs index b84b6d4e0a..5e662b8213 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderDrawParametersFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderDrawParametersFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFloat16Int8Features.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFloat16Int8Features.gen.cs index 8311b5ffbe..f695299c9d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFloat16Int8Features.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFloat16Int8Features.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFloatControls2Features.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFloatControls2Features.gen.cs index 6bedf52be4..008717bbc6 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFloatControls2Features.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFloatControls2Features.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFmaFeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFmaFeaturesKHR.gen.cs index 604796e13e..edc8ef4c1c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFmaFeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderFmaFeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderImageAtomicInt64FeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderImageAtomicInt64FeaturesEXT.gen.cs index 8f84fd9d7f..e0f482b5a3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderImageAtomicInt64FeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderImageAtomicInt64FeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderIntegerDotProductFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderIntegerDotProductFeatures.gen.cs index 15cd039f8b..2952f2f9a8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderIntegerDotProductFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderIntegerDotProductFeatures.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE.gen.cs index a13036449d..ec135440e2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderObjectFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderObjectFeaturesEXT.gen.cs index fce1991c49..33d5a7c75c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderObjectFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderObjectFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.gen.cs index ac36b3231d..f3f887d565 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderReplicatedCompositesFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderReplicatedCompositesFeaturesEXT.gen.cs index 7a331336a5..86df1e5c07 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderReplicatedCompositesFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderReplicatedCompositesFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSMBuiltinsFeaturesNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSMBuiltinsFeaturesNV.gen.cs index 275597a732..e2d8fc066f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSMBuiltinsFeaturesNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSMBuiltinsFeaturesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSMBuiltinsPropertiesNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSMBuiltinsPropertiesNV.gen.cs index 5c77971b5f..7d4f36290f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSMBuiltinsPropertiesNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSMBuiltinsPropertiesNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSplitBarrierFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSplitBarrierFeaturesEXT.gen.cs index a9121c482c..2c2bf82e4e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSplitBarrierFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSplitBarrierFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSplitBarrierPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSplitBarrierPropertiesEXT.gen.cs index 1ad07e1952..d11e130cdd 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSplitBarrierPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSplitBarrierPropertiesEXT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSubgroupExtendedTypesFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSubgroupExtendedTypesFeatures.gen.cs index b3875c29f1..74275f8095 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSubgroupExtendedTypesFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderSubgroupExtendedTypesFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderTileImageFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderTileImageFeaturesEXT.gen.cs index 9008148f69..c4ec259697 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderTileImageFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderTileImageFeaturesEXT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderUntypedPointersFeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderUntypedPointersFeaturesKHR.gen.cs index 4c957952b9..2bda92c8ea 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderUntypedPointersFeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceShaderUntypedPointersFeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSubgroupProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSubgroupProperties.gen.cs index 89e9b4acec..fecd7030ed 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSubgroupProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSubgroupProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSubpassShadingFeaturesHUAWEI.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSubpassShadingFeaturesHUAWEI.gen.cs index 53edb234bb..0ff401cd7c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSubpassShadingFeaturesHUAWEI.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSubpassShadingFeaturesHUAWEI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSurfaceInfo2KHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSurfaceInfo2KHR.gen.cs index 5bf05df65b..62916d4cb6 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSurfaceInfo2KHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSurfaceInfo2KHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSynchronization2Features.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSynchronization2Features.gen.cs index 47c83696d3..c3c19d248a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSynchronization2Features.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceSynchronization2Features.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTensorFeaturesARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTensorFeaturesARM.gen.cs index 2c158bb7da..0c0c2933af 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTensorFeaturesARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTensorFeaturesARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTexelBufferAlignmentFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTexelBufferAlignmentFeaturesEXT.gen.cs index ee9ef334a8..4d031122e1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTexelBufferAlignmentFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTexelBufferAlignmentFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTileMemoryHeapFeaturesQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTileMemoryHeapFeaturesQCOM.gen.cs index 0fb32f89ab..c798349338 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTileMemoryHeapFeaturesQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTileMemoryHeapFeaturesQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTilePropertiesFeaturesQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTilePropertiesFeaturesQCOM.gen.cs index 5476b41f14..64a3202f7d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTilePropertiesFeaturesQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTilePropertiesFeaturesQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTileShadingFeaturesQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTileShadingFeaturesQCOM.gen.cs index c67a637e5a..16ddbd7557 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTileShadingFeaturesQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceTileShadingFeaturesQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceToolProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceToolProperties.gen.cs index b2688c3386..c7c0f62080 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceToolProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceToolProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceType.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceType.gen.cs index 44d049f433..16afc086ac 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceType.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceUnifiedImageLayoutsFeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceUnifiedImageLayoutsFeaturesKHR.gen.cs index 1a7a3e9a33..41f834dff8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceUnifiedImageLayoutsFeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceUnifiedImageLayoutsFeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceUniformBufferStandardLayoutFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceUniformBufferStandardLayoutFeatures.gen.cs index fd8a1360e6..f6178452a2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceUniformBufferStandardLayoutFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceUniformBufferStandardLayoutFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoEncodeFeedback2FeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoEncodeFeedback2FeaturesKHR.gen.cs index 839038c5d9..e8f38285c7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoEncodeFeedback2FeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoEncodeFeedback2FeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.gen.cs index 8e8cdd2e3f..8fe7a48ae8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoFormatInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoFormatInfoKHR.gen.cs index 7d2ced416b..40e3f06b32 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoFormatInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoFormatInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoMaintenance1FeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoMaintenance1FeaturesKHR.gen.cs index 2d23b133e4..7f4e7f65cb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoMaintenance1FeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoMaintenance1FeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoMaintenance2FeaturesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoMaintenance2FeaturesKHR.gen.cs index f066079b6c..aa982e5605 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoMaintenance2FeaturesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVideoMaintenance2FeaturesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkan12Features.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkan12Features.gen.cs index 52ff72607b..f7ca44a017 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkan12Features.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkan12Features.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkan12Properties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkan12Properties.gen.cs index b4bf9de3d1..197bc3673c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkan12Properties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkan12Properties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkanMemoryModelFeatures.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkanMemoryModelFeatures.gen.cs index c34abd0eb7..15d1cdce96 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkanMemoryModelFeatures.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceVulkanMemoryModelFeatures.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.gen.cs index 4a6456b120..d86efedd92 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineBinaryDataInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineBinaryDataInfoKHR.gen.cs index a5f156b598..ea9a7b32a2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineBinaryDataInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineBinaryDataInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineBinaryKeysAndDataKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineBinaryKeysAndDataKHR.gen.cs index 889ac5279b..8b4d8078d3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineBinaryKeysAndDataKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineBinaryKeysAndDataKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineCacheCreateFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineCacheCreateFlags.gen.cs index 0b6aa53c55..8fc7121cd6 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineCacheCreateFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineCacheCreateFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineCacheHeaderVersionDataGraphQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineCacheHeaderVersionDataGraphQCOM.gen.cs index a11b1850c3..6a5af1609b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineCacheHeaderVersionDataGraphQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineCacheHeaderVersionDataGraphQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineColorBlendAdvancedStateCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineColorBlendAdvancedStateCreateInfoEXT.gen.cs index b98ad4bf3e..b45d0c3c1d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineColorBlendAdvancedStateCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineColorBlendAdvancedStateCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineColorWriteCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineColorWriteCreateInfoEXT.gen.cs index 51e4224bf1..217de1a247 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineColorWriteCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineColorWriteCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineCompilerControlCreateInfoAMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineCompilerControlCreateInfoAMD.gen.cs index d9960d5e91..b13a0a5273 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineCompilerControlCreateInfoAMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineCompilerControlCreateInfoAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineCompilerControlFlagsAMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineCompilerControlFlagsAMD.gen.cs index 8d46ff494d..b51e71ea53 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineCompilerControlFlagsAMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineCompilerControlFlagsAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineCreateInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineCreateInfoKHR.gen.cs index c47622ac90..2bf3acca6e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineCreateInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineCreateInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineCreationFeedbackCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineCreationFeedbackCreateInfo.gen.cs index 6ed4d96643..86e48f3b7e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineCreationFeedbackCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineCreationFeedbackCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineDiscardRectangleStateCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineDiscardRectangleStateCreateInfoEXT.gen.cs index e4a6c9cd0f..41a625f193 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineDiscardRectangleStateCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineDiscardRectangleStateCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableInfoKHR.gen.cs index 165f49b33e..05dc9daa4b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableInternalRepresentationKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableInternalRepresentationKHR.gen.cs index 66e6ce5d12..845f7a732f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableInternalRepresentationKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableInternalRepresentationKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableStatisticFormatKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableStatisticFormatKHR.gen.cs index 98eaf8ee7a..fd6386c239 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableStatisticFormatKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableStatisticFormatKHR.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableStatisticValueKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableStatisticValueKHR.gen.cs index d683dd850b..ef6c53f4da 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableStatisticValueKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineExecutableStatisticValueKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineFragmentShadingRateEnumStateCreateInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineFragmentShadingRateEnumStateCreateInfoNV.gen.cs index 15b9f7be42..a6eda4b850 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineFragmentShadingRateEnumStateCreateInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineFragmentShadingRateEnumStateCreateInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineLayoutCreateFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineLayoutCreateFlags.gen.cs index 18f5b71a2f..5ac5117039 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineLayoutCreateFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineLayoutCreateFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelinePropertiesIdentifierEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelinePropertiesIdentifierEXT.gen.cs index d305743b31..14f07cad3c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelinePropertiesIdentifierEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelinePropertiesIdentifierEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineRasterizationConservativeStateCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineRasterizationConservativeStateCreateInfoEXT.gen.cs index e24fad49a3..dc36862860 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineRasterizationConservativeStateCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineRasterizationConservativeStateCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineRasterizationStateCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineRasterizationStateCreateInfo.gen.cs index 63dacb6159..c6832472bb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineRasterizationStateCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineRasterizationStateCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineRenderingCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineRenderingCreateInfo.gen.cs index 75b7a64913..a13dca57c6 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineRenderingCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineRenderingCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineRobustnessCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineRobustnessCreateInfo.gen.cs index 09a0d7c872..aae72dd04b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineRobustnessCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineRobustnessCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineShaderStageCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineShaderStageCreateInfo.gen.cs index 40c448c2e1..f7b3f2f7a5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineShaderStageCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineShaderStageCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineTessellationStateCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineTessellationStateCreateInfo.gen.cs index 6a0bc59986..33b848941a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineTessellationStateCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineTessellationStateCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineVertexInputDivisorStateCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineVertexInputDivisorStateCreateInfo.gen.cs index 3576ed6fbd..529fa4d145 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineVertexInputDivisorStateCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineVertexInputDivisorStateCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineVertexInputStateCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineVertexInputStateCreateInfo.gen.cs index 7999614ec8..286af7508e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineVertexInputStateCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineVertexInputStateCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineViewportCoarseSampleOrderStateCreateInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineViewportCoarseSampleOrderStateCreateInfoNV.gen.cs index c16582ad33..3161853e51 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineViewportCoarseSampleOrderStateCreateInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineViewportCoarseSampleOrderStateCreateInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PipelineViewportSwizzleStateCreateInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PipelineViewportSwizzleStateCreateInfoNV.gen.cs index 9b58e6e818..5377a9f152 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PipelineViewportSwizzleStateCreateInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PipelineViewportSwizzleStateCreateInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PresentIdKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PresentIdKHR.gen.cs index c23d1afa76..f66d8e47d7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PresentIdKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PresentIdKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PresentInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PresentInfoKHR.gen.cs index 03586085e8..89dc71c0ae 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PresentInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PresentInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PresentModeKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PresentModeKHR.gen.cs index fcca69fffb..892623f47b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PresentModeKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PresentModeKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PresentRegionKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PresentRegionKHR.gen.cs index 3aa5ee1662..56b090ca95 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PresentRegionKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PresentRegionKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PresentRegionsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PresentRegionsKHR.gen.cs index 52ac6f60ea..964dbc41a2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PresentRegionsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PresentRegionsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PresentTimesInfoGOOGLE.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PresentTimesInfoGOOGLE.gen.cs index 9fa98b9a68..d9c7212367 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PresentTimesInfoGOOGLE.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PresentTimesInfoGOOGLE.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PresentTimingInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PresentTimingInfoEXT.gen.cs index e4ad0b3069..6084e7eb8f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PresentTimingInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PresentTimingInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PrimitiveTopology.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PrimitiveTopology.gen.cs index 4e6c315c87..1c670f3ec8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PrimitiveTopology.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PrimitiveTopology.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ProvokingVertexModeEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ProvokingVertexModeEXT.gen.cs index a1dce97b8c..f2d067b896 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ProvokingVertexModeEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ProvokingVertexModeEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PushConstantBankInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PushConstantBankInfoNV.gen.cs index 4a551f7aa4..919b3d77ab 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PushConstantBankInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PushConstantBankInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PushConstantRange.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PushConstantRange.gen.cs index f42e527f88..949905e877 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PushConstantRange.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PushConstantRange.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/PushConstantsInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PushConstantsInfo.gen.cs index 6ece73af60..e7951a1146 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PushConstantsInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PushConstantsInfo.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/PushDescriptorSetInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/PushDescriptorSetInfo.gen.cs index dbc876256f..76c2bc440f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/PushDescriptorSetInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/PushDescriptorSetInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/QueryLowLatencySupportNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/QueryLowLatencySupportNV.gen.cs index 6c9fd15b54..f31af73848 100644 --- a/sources/Vulkan/Vulkan/Vulkan/QueryLowLatencySupportNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/QueryLowLatencySupportNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/QueryResultFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/QueryResultFlags.gen.cs index 4550ebf74b..4eacda696e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/QueryResultFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/QueryResultFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/QueueFamilyGlobalPriorityProperties.gen.cs b/sources/Vulkan/Vulkan/Vulkan/QueueFamilyGlobalPriorityProperties.gen.cs index 05b1e7575a..c15d914bd7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/QueueFamilyGlobalPriorityProperties.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/QueueFamilyGlobalPriorityProperties.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RayTracingShaderGroupCreateInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RayTracingShaderGroupCreateInfoNV.gen.cs index 665a178d5b..5062b426bb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RayTracingShaderGroupCreateInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RayTracingShaderGroupCreateInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RayTracingShaderGroupTypeKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RayTracingShaderGroupTypeKHR.gen.cs index 75b2364951..fec4f71f97 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RayTracingShaderGroupTypeKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RayTracingShaderGroupTypeKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderPassCreateFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderPassCreateFlags.gen.cs index b7e22804d9..fa17ee91fb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderPassCreateFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderPassCreateFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderPassCreationFeedbackCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderPassCreationFeedbackCreateInfoEXT.gen.cs index 69300ba6b9..abb0ef2ae3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderPassCreationFeedbackCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderPassCreationFeedbackCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderPassFragmentDensityMapOffsetEndInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderPassFragmentDensityMapOffsetEndInfoEXT.gen.cs index 3961cb5eb4..5eb54e7a38 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderPassFragmentDensityMapOffsetEndInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderPassFragmentDensityMapOffsetEndInfoEXT.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.Vulkan; [NativeName("VkRenderPassFragmentDensityMapOffsetEndInfoEXT")] diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderPassInputAttachmentAspectCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderPassInputAttachmentAspectCreateInfo.gen.cs index 8d55bf0f02..afb09c8a42 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderPassInputAttachmentAspectCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderPassInputAttachmentAspectCreateInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderPassStripeBeginInfoARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderPassStripeBeginInfoARM.gen.cs index bdf183540f..98c75264e4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderPassStripeBeginInfoARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderPassStripeBeginInfoARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderPassStripeSubmitInfoARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderPassStripeSubmitInfoARM.gen.cs index 2939904708..4959382bbc 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderPassStripeSubmitInfoARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderPassStripeSubmitInfoARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderPassSubpassFeedbackInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderPassSubpassFeedbackInfoEXT.gen.cs index 0b5bac773a..f430f5b350 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderPassSubpassFeedbackInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderPassSubpassFeedbackInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderPassTileShadingCreateInfoQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderPassTileShadingCreateInfoQCOM.gen.cs index 43ba90e768..6551c8957a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderPassTileShadingCreateInfoQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderPassTileShadingCreateInfoQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderingAreaInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderingAreaInfo.gen.cs index a6f355147c..a59640367e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderingAreaInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderingAreaInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentFlagsInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentFlagsInfoKHR.gen.cs index b8190de92d..cfec64fb7b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentFlagsInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentFlagsInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentFlagsKHR.gen.cs index bd36a42c44..cd24d144f2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentInfo.gen.cs index 052b177d44..0145a347fc 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentLocationInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentLocationInfo.gen.cs index 33d7badf49..b01fdf668c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentLocationInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderingAttachmentLocationInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/RenderingFragmentShadingRateAttachmentInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/RenderingFragmentShadingRateAttachmentInfoKHR.gen.cs index 9ee6713a47..5de10d3265 100644 --- a/sources/Vulkan/Vulkan/Vulkan/RenderingFragmentShadingRateAttachmentInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/RenderingFragmentShadingRateAttachmentInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ResolveImageInfo2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ResolveImageInfo2.gen.cs index 8ddf5d6411..96f2dfce4a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ResolveImageInfo2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ResolveImageInfo2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ResolveImageModeInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ResolveImageModeInfoKHR.gen.cs index 6a35d12543..c51b0736b2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ResolveImageModeInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ResolveImageModeInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SampleCountFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SampleCountFlags.gen.cs index 403f67e25b..56c8f0f546 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SampleCountFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SampleCountFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SamplerBorderColorComponentMappingCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SamplerBorderColorComponentMappingCreateInfoEXT.gen.cs index 509b2eaf29..c548ee15c7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SamplerBorderColorComponentMappingCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SamplerBorderColorComponentMappingCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SamplerCustomBorderColorCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SamplerCustomBorderColorCreateInfoEXT.gen.cs index 92c2ee1f9c..24975fdcb5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SamplerCustomBorderColorCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SamplerCustomBorderColorCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SamplerCustomBorderColorIndexCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SamplerCustomBorderColorIndexCreateInfoEXT.gen.cs index 53303575b3..6a4a828af1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SamplerCustomBorderColorIndexCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SamplerCustomBorderColorIndexCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SamplerMipmapMode.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SamplerMipmapMode.gen.cs index 79d3427d46..d2384cd369 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SamplerMipmapMode.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SamplerMipmapMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrConversionCreateInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrConversionCreateInfo.gen.cs index a0fee9849c..16ab0ac9ae 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrConversionCreateInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrConversionCreateInfo.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrConversionInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrConversionInfo.gen.cs index 859d92d266..9f5f783e14 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrConversionInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrConversionInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrRange.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrRange.gen.cs index 376cf09ea7..195f60ae2d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrRange.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SamplerYcbcrRange.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SemaphoreSubmitInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SemaphoreSubmitInfo.gen.cs index aecc543d91..7e379678f1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SemaphoreSubmitInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SemaphoreSubmitInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SemaphoreType.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SemaphoreType.gen.cs index bf80526c13..435cff8fc8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SemaphoreType.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SemaphoreType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ShaderCodeTypeEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ShaderCodeTypeEXT.gen.cs index b1a6824cfe..fa53492393 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ShaderCodeTypeEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ShaderCodeTypeEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ShaderCorePropertiesFlagsAMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ShaderCorePropertiesFlagsAMD.gen.cs index b9d93a60c8..5e578077b5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ShaderCorePropertiesFlagsAMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ShaderCorePropertiesFlagsAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ShaderResourceUsageAMD.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ShaderResourceUsageAMD.gen.cs index e6b7235674..f6d7284391 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ShaderResourceUsageAMD.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ShaderResourceUsageAMD.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ShaderStageFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ShaderStageFlags.gen.cs index 57cfec261c..68788ce05e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ShaderStageFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ShaderStageFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ShadingRatePaletteNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ShadingRatePaletteNV.gen.cs index 56ba18627b..60621ee302 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ShadingRatePaletteNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ShadingRatePaletteNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SharedPresentSurfaceCapabilities2KHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SharedPresentSurfaceCapabilities2KHR.gen.cs index 667a284c7c..23165c7676 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SharedPresentSurfaceCapabilities2KHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SharedPresentSurfaceCapabilities2KHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SparseBufferMemoryBindInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SparseBufferMemoryBindInfo.gen.cs index 17ff9637c2..867c01b44d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SparseBufferMemoryBindInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SparseBufferMemoryBindInfo.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/SparseImageFormatFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SparseImageFormatFlags.gen.cs index 5b89b7b2b9..1cca723c63 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SparseImageFormatFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SparseImageFormatFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryBind.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryBind.gen.cs index 73b40cca2c..5e78265529 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryBind.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryBind.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryBindInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryBindInfo.gen.cs index 857dda7f53..7f1c01555b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryBindInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryBindInfo.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryRequirements2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryRequirements2.gen.cs index e2021421f8..14ddc1f1ec 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryRequirements2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SparseImageMemoryRequirements2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Cdef.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Cdef.gen.cs index 8ab41475af..1ac7c08166 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Cdef.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Cdef.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1ColorPrimaries.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1ColorPrimaries.gen.cs index 27eb98d12d..307b24619f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1ColorPrimaries.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1ColorPrimaries.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1FilmGrain.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1FilmGrain.gen.cs index 95e736a76a..144b9f2266 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1FilmGrain.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1FilmGrain.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1FrameRestorationType.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1FrameRestorationType.gen.cs index 69a5e9584d..5a761f4709 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1FrameRestorationType.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1FrameRestorationType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Level.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Level.gen.cs index 68cf37314c..2ff5e7ddbf 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Level.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Level.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1LoopRestoration.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1LoopRestoration.gen.cs index 226d677c49..38e3692605 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1LoopRestoration.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1LoopRestoration.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1MatrixCoefficients.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1MatrixCoefficients.gen.cs index 9e6a05f604..ed65d4a1ff 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1MatrixCoefficients.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1MatrixCoefficients.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Profile.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Profile.gen.cs index 339c67830e..351244cc2e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Profile.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Profile.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Quantization.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Quantization.gen.cs index 9c6cf9d62a..298c8de0f4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Quantization.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1Quantization.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1ReferenceName.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1ReferenceName.gen.cs index a8c7e17410..4f12989254 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1ReferenceName.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1ReferenceName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TileInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TileInfo.gen.cs index 3a93ff44c2..ff854e1bb9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TileInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TileInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TransferCharacteristics.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TransferCharacteristics.gen.cs index 1fd9951b0b..27c87cc3be 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TransferCharacteristics.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TransferCharacteristics.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TxMode.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TxMode.gen.cs index 39d82aae15..c7a0bb40fc 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TxMode.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoAv1TxMode.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeAv1PictureInfoFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeAv1PictureInfoFlags.gen.cs index 18c0866a38..28522f7a42 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeAv1PictureInfoFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeAv1PictureInfoFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeAv1ReferenceInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeAv1ReferenceInfo.gen.cs index 7f07eccbba..677b7684e5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeAv1ReferenceInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeAv1ReferenceInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeH265PictureInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeH265PictureInfo.gen.cs index 5b3221f17c..3a09fa1634 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeH265PictureInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoDecodeH265PictureInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeAv1DecoderModelInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeAv1DecoderModelInfo.gen.cs index f96bbcedb5..6320126e9c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeAv1DecoderModelInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeAv1DecoderModelInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH264PictureInfoFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH264PictureInfoFlags.gen.cs index 62724b7ce3..4b148a6d02 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH264PictureInfoFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH264PictureInfoFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH264SliceHeaderFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH264SliceHeaderFlags.gen.cs index 22a354c1dc..247b24f343 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH264SliceHeaderFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH264SliceHeaderFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265LongTermRefPics.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265LongTermRefPics.gen.cs index 53e30befaf..d0472e287d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265LongTermRefPics.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265LongTermRefPics.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265PictureInfoFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265PictureInfoFlags.gen.cs index 08084bd400..51f6155efb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265PictureInfoFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265PictureInfoFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265ReferenceInfoFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265ReferenceInfoFlags.gen.cs index a95bd605d1..6773e108be 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265ReferenceInfoFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265ReferenceInfoFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265ReferenceListsInfo.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265ReferenceListsInfo.gen.cs index e6d3bb5183..aa53b65e26 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265ReferenceListsInfo.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265ReferenceListsInfo.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265SliceSegmentHeaderFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265SliceSegmentHeaderFlags.gen.cs index 4dc997622e..cbeda8368a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265SliceSegmentHeaderFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265SliceSegmentHeaderFlags.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265WeightTableFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265WeightTableFlags.gen.cs index 044dba72f0..3a24093dff 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265WeightTableFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoEncodeH265WeightTableFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH264DisableDeblockingFilterIdc.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH264DisableDeblockingFilterIdc.gen.cs index ab1c5c64f0..062efbe81f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH264DisableDeblockingFilterIdc.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH264DisableDeblockingFilterIdc.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH264HrdParameters.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH264HrdParameters.gen.cs index 726fc83ecb..4c0d854f27 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH264HrdParameters.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH264HrdParameters.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH264ScalingLists.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH264ScalingLists.gen.cs index 5a9ebf79b1..00b730669d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH264ScalingLists.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH264ScalingLists.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265AspectRatioIdc.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265AspectRatioIdc.gen.cs index 2ca2689d5d..778f4843ad 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265AspectRatioIdc.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265AspectRatioIdc.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ChromaFormatIdc.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ChromaFormatIdc.gen.cs index 21c3f1d71f..59d00bd781 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ChromaFormatIdc.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ChromaFormatIdc.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265DecPicBufMgr.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265DecPicBufMgr.gen.cs index 79b19de077..5c49876338 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265DecPicBufMgr.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265DecPicBufMgr.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265HrdFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265HrdFlags.gen.cs index 3345831a46..35ac507f49 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265HrdFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265HrdFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265LevelIdc.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265LevelIdc.gen.cs index 28d8e4880f..cc590023b3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265LevelIdc.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265LevelIdc.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265PictureParameterSet.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265PictureParameterSet.gen.cs index 496abf78ef..52edf08803 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265PictureParameterSet.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265PictureParameterSet.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265PictureType.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265PictureType.gen.cs index c0391d2c42..2e22965f8d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265PictureType.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265PictureType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ProfileIdc.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ProfileIdc.gen.cs index 134f20efcb..a1ae6ec96a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ProfileIdc.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ProfileIdc.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SequenceParameterSet.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SequenceParameterSet.gen.cs index 9908c516f7..d4a6d926e5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SequenceParameterSet.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SequenceParameterSet.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ShortTermRefPicSetFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ShortTermRefPicSetFlags.gen.cs index 83385ccdd6..55008c1358 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ShortTermRefPicSetFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265ShortTermRefPicSetFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SliceType.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SliceType.gen.cs index a9b2911176..1b7a282bc8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SliceType.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SliceType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SpsVuiFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SpsVuiFlags.gen.cs index c528c97b4a..3179d2f87c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SpsVuiFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265SpsVuiFlags.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265VideoParameterSet.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265VideoParameterSet.gen.cs index f29a60e741..9614aa5900 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoH265VideoParameterSet.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoH265VideoParameterSet.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ColorConfigFlags.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ColorConfigFlags.gen.cs index 84b9ab8b17..24ae10c6e3 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ColorConfigFlags.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ColorConfigFlags.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ColorSpace.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ColorSpace.gen.cs index f54427f82d..7d3994fe8d 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ColorSpace.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ColorSpace.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9InterpolationFilter.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9InterpolationFilter.gen.cs index 27012bd4fa..290b60858a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9InterpolationFilter.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9InterpolationFilter.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9Profile.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9Profile.gen.cs index 5338801142..83d8b2cb06 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9Profile.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9Profile.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ReferenceName.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ReferenceName.gen.cs index 00bfe039c1..55595ac4f7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ReferenceName.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9ReferenceName.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9Segmentation.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9Segmentation.gen.cs index 66c8ddf2e4..e6edb6f454 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9Segmentation.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StdVideoVp9Segmentation.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StencilOp.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StencilOp.gen.cs index a2251f4153..b26a2ffeb1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StencilOp.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StencilOp.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StencilOpState.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StencilOpState.gen.cs index 499b4e7a04..426fba7780 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StencilOpState.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StencilOpState.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/StructureType.gen.cs b/sources/Vulkan/Vulkan/Vulkan/StructureType.gen.cs index 039488ee32..d7754ba848 100644 --- a/sources/Vulkan/Vulkan/Vulkan/StructureType.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/StructureType.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SubpassDescription2.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SubpassDescription2.gen.cs index a8e59edce2..b4ad728ff7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SubpassDescription2.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SubpassDescription2.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SubpassResolvePerformanceQueryEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SubpassResolvePerformanceQueryEXT.gen.cs index 4c84685711..e957cf8f24 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SubpassResolvePerformanceQueryEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SubpassResolvePerformanceQueryEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SubpassSampleLocationsEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SubpassSampleLocationsEXT.gen.cs index 8c8632b221..550e4f9b29 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SubpassSampleLocationsEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SubpassSampleLocationsEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SubpassShadingPipelineCreateInfoHUAWEI.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SubpassShadingPipelineCreateInfoHUAWEI.gen.cs index ecf73f2646..ee875c00fa 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SubpassShadingPipelineCreateInfoHUAWEI.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SubpassShadingPipelineCreateInfoHUAWEI.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SurfaceCapabilities2KHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SurfaceCapabilities2KHR.gen.cs index 6651228b7b..712cd6a6b9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SurfaceCapabilities2KHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SurfaceCapabilities2KHR.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/SurfaceCapabilitiesPresentWait2KHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SurfaceCapabilitiesPresentWait2KHR.gen.cs index 5fd71c2ea8..59a6458686 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SurfaceCapabilitiesPresentWait2KHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SurfaceCapabilitiesPresentWait2KHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SurfaceFormat2KHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SurfaceFormat2KHR.gen.cs index e7b42af08d..d9dc3cb850 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SurfaceFormat2KHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SurfaceFormat2KHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SurfaceFormatKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SurfaceFormatKHR.gen.cs index f780207f92..c60695aa3e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SurfaceFormatKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SurfaceFormatKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SurfacePresentModeCompatibilityKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SurfacePresentModeCompatibilityKHR.gen.cs index 38f7313a4b..e48df90f00 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SurfacePresentModeCompatibilityKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SurfacePresentModeCompatibilityKHR.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/SurfacePresentModeKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SurfacePresentModeKHR.gen.cs index c2006b9984..ee1cfd34b8 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SurfacePresentModeKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SurfacePresentModeKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SwapchainCounterCreateInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SwapchainCounterCreateInfoEXT.gen.cs index 05989139f5..2fca68130b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SwapchainCounterCreateInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SwapchainCounterCreateInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SwapchainCreateFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SwapchainCreateFlagsKHR.gen.cs index d9383ef26a..f59e8a0edd 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SwapchainCreateFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SwapchainCreateFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SwapchainFlagsSurfaceCapabilitiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SwapchainFlagsSurfaceCapabilitiesEXT.gen.cs index f7a1da6c65..7b7525ed7c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SwapchainFlagsSurfaceCapabilitiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SwapchainFlagsSurfaceCapabilitiesEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SwapchainLatencyCreateInfoNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SwapchainLatencyCreateInfoNV.gen.cs index 2a300d7a3e..4c9428a794 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SwapchainLatencyCreateInfoNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SwapchainLatencyCreateInfoNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SwapchainPresentFenceInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SwapchainPresentFenceInfoKHR.gen.cs index ace260b546..894c36feec 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SwapchainPresentFenceInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SwapchainPresentFenceInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/SwapchainTimeDomainPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SwapchainTimeDomainPropertiesEXT.gen.cs index ba706728f5..d19d10c284 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SwapchainTimeDomainPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SwapchainTimeDomainPropertiesEXT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/SwapchainTimingPropertiesEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/SwapchainTimingPropertiesEXT.gen.cs index 30087d3a29..fa72704736 100644 --- a/sources/Vulkan/Vulkan/Vulkan/SwapchainTimingPropertiesEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/SwapchainTimingPropertiesEXT.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/TensorFormatPropertiesARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/TensorFormatPropertiesARM.gen.cs index be1e1db1e8..45f470066e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/TensorFormatPropertiesARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/TensorFormatPropertiesARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/TensorMemoryRequirementsInfoARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/TensorMemoryRequirementsInfoARM.gen.cs index 8699f4da37..d5cff233e4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/TensorMemoryRequirementsInfoARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/TensorMemoryRequirementsInfoARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/TensorViewCaptureDescriptorDataInfoARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/TensorViewCaptureDescriptorDataInfoARM.gen.cs index 3afaac8408..85acdc2e32 100644 --- a/sources/Vulkan/Vulkan/Vulkan/TensorViewCaptureDescriptorDataInfoARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/TensorViewCaptureDescriptorDataInfoARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/TexelBufferDescriptorInfoEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/TexelBufferDescriptorInfoEXT.gen.cs index 7316a1b587..aaa5f1c755 100644 --- a/sources/Vulkan/Vulkan/Vulkan/TexelBufferDescriptorInfoEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/TexelBufferDescriptorInfoEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/TileMemoryBindInfoQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/TileMemoryBindInfoQCOM.gen.cs index 80f1455d4f..da4db787fb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/TileMemoryBindInfoQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/TileMemoryBindInfoQCOM.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/TileMemoryRequirementsQCOM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/TileMemoryRequirementsQCOM.gen.cs index e7823c576b..0900db7faa 100644 --- a/sources/Vulkan/Vulkan/Vulkan/TileMemoryRequirementsQCOM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/TileMemoryRequirementsQCOM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ValidationCheckEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ValidationCheckEXT.gen.cs index 21cb3a69e2..9573ed43a7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ValidationCheckEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ValidationCheckEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/ValidationFlagsEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/ValidationFlagsEXT.gen.cs index fd25054307..630999f8ee 100644 --- a/sources/Vulkan/Vulkan/Vulkan/ValidationFlagsEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/ValidationFlagsEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VertexInputBindingDescription.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VertexInputBindingDescription.gen.cs index ad1606fcb1..cf8158cefd 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VertexInputBindingDescription.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VertexInputBindingDescription.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VertexInputBindingDescription2EXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VertexInputBindingDescription2EXT.gen.cs index f18285e614..50f819b983 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VertexInputBindingDescription2EXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VertexInputBindingDescription2EXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoCapabilitiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoCapabilitiesKHR.gen.cs index 9aacdf4128..3cca3b81f1 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoCapabilitiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoCapabilitiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoCodingControlFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoCodingControlFlagsKHR.gen.cs index 75bb82ed7b..cf541f218a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoCodingControlFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoCodingControlFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeAv1CapabilitiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeAv1CapabilitiesKHR.gen.cs index 745c30564b..43db3543ad 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeAv1CapabilitiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeAv1CapabilitiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeAv1DpbSlotInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeAv1DpbSlotInfoKHR.gen.cs index f18cd38927..0483c7a721 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeAv1DpbSlotInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeAv1DpbSlotInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeCapabilityFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeCapabilityFlagsKHR.gen.cs index 36dcdaabad..f5d11ab773 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeCapabilityFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeCapabilityFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH264CapabilitiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH264CapabilitiesKHR.gen.cs index 40392ec9ad..6faec71956 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH264CapabilitiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH264CapabilitiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH264PictureInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH264PictureInfoKHR.gen.cs index a742cbad92..30216ce172 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH264PictureInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH264PictureInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH265CapabilitiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH265CapabilitiesKHR.gen.cs index 837e7e741f..d427583a92 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH265CapabilitiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeH265CapabilitiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeVp9PictureInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeVp9PictureInfoKHR.gen.cs index 65da048609..a72dc73b7e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeVp9PictureInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeVp9PictureInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeVp9ProfileInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeVp9ProfileInfoKHR.gen.cs index 1ac44160b7..df404baa58 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoDecodeVp9ProfileInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoDecodeVp9ProfileInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1CapabilitiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1CapabilitiesKHR.gen.cs index 22b7ee1719..f36f7c8a2a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1CapabilitiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1CapabilitiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1GopRemainingFrameInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1GopRemainingFrameInfoKHR.gen.cs index 4a6646c8bb..5efaff25eb 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1GopRemainingFrameInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1GopRemainingFrameInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1PictureInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1PictureInfoKHR.gen.cs index 5b4ce6bce2..072ba67b8e 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1PictureInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1PictureInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1ProfileInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1ProfileInfoKHR.gen.cs index c29e34b3d5..753dec9e9c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1ProfileInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1ProfileInfoKHR.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1QuantizationMapCapabilitiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1QuantizationMapCapabilitiesKHR.gen.cs index b370ab7f5f..9e9e52095b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1QuantizationMapCapabilitiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1QuantizationMapCapabilitiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1RateControlFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1RateControlFlagsKHR.gen.cs index 85c0011a42..35e0cd18d4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1RateControlFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1RateControlFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1RateControlGroupKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1RateControlGroupKHR.gen.cs index c1a59a8610..31001cdaaa 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1RateControlGroupKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1RateControlGroupKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1StdFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1StdFlagsKHR.gen.cs index e1eadd2eca..77b7630b3a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1StdFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeAv1StdFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeCapabilitiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeCapabilitiesKHR.gen.cs index 4ff7c2774a..12eb0ade5f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeCapabilitiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeCapabilitiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeCapabilityFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeCapabilityFlagsKHR.gen.cs index beed961b10..a6a050a780 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeCapabilityFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeCapabilityFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeFlagsKHR.gen.cs index a0df33e4e6..a98cfb51b4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264DpbSlotInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264DpbSlotInfoKHR.gen.cs index 4cfe61914c..c1915f59a7 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264DpbSlotInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264DpbSlotInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264GopRemainingFrameInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264GopRemainingFrameInfoKHR.gen.cs index 751a56ff58..bf3929e475 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264GopRemainingFrameInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264GopRemainingFrameInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264ProfileInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264ProfileInfoKHR.gen.cs index 161efb7094..fa9b5aefea 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264ProfileInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264ProfileInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264QuantizationMapCapabilitiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264QuantizationMapCapabilitiesKHR.gen.cs index 6def6a64b4..fc012dddb6 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264QuantizationMapCapabilitiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264QuantizationMapCapabilitiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264SessionParametersAddInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264SessionParametersAddInfoKHR.gen.cs index 2a5fdefbc4..fcab5775d9 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264SessionParametersAddInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264SessionParametersAddInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264SessionParametersFeedbackInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264SessionParametersFeedbackInfoKHR.gen.cs index 479350d31f..b936c6998f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264SessionParametersFeedbackInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH264SessionParametersFeedbackInfoKHR.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265GopRemainingFrameInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265GopRemainingFrameInfoKHR.gen.cs index 2a4dfbc66a..0cad861ffa 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265GopRemainingFrameInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265GopRemainingFrameInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265ProfileInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265ProfileInfoKHR.gen.cs index 800b927447..4a7e9c55ee 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265ProfileInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265ProfileInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265QpKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265QpKHR.gen.cs index 907adbbbd5..73c50d9508 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265QpKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265QpKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265QualityLevelPropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265QualityLevelPropertiesKHR.gen.cs index a8d8c7fb7d..9cd9cc77fc 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265QualityLevelPropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265QualityLevelPropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265SessionParametersAddInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265SessionParametersAddInfoKHR.gen.cs index 9a16db49d4..e6b8ad2ed5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265SessionParametersAddInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265SessionParametersAddInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265SessionParametersFeedbackInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265SessionParametersFeedbackInfoKHR.gen.cs index bc45b7c8d9..d2cef4eb73 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265SessionParametersFeedbackInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265SessionParametersFeedbackInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265TransformBlockSizeFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265TransformBlockSizeFlagsKHR.gen.cs index d5bbbfdf0e..e7a6ffaf37 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265TransformBlockSizeFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeH265TransformBlockSizeFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeIntraRefreshCapabilitiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeIntraRefreshCapabilitiesKHR.gen.cs index a0f00e7732..62d3e1890a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeIntraRefreshCapabilitiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeIntraRefreshCapabilitiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeQuantizationMapCapabilitiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeQuantizationMapCapabilitiesKHR.gen.cs index 998b5014b2..dfc3031b0a 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeQuantizationMapCapabilitiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeQuantizationMapCapabilitiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRateControlModeFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRateControlModeFlagsKHR.gen.cs index 8af287d4e2..60001d6e22 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRateControlModeFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRateControlModeFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRgbConversionCapabilitiesVALVE.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRgbConversionCapabilitiesVALVE.gen.cs index 528df48f04..d6698f0457 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRgbConversionCapabilitiesVALVE.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRgbConversionCapabilitiesVALVE.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRgbRangeCompressionFlagsVALVE.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRgbRangeCompressionFlagsVALVE.gen.cs index eee7d0bfff..2d8b7f9632 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRgbRangeCompressionFlagsVALVE.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeRgbRangeCompressionFlagsVALVE.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeSessionIntraRefreshCreateInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeSessionIntraRefreshCreateInfoKHR.gen.cs index 18b863d3e1..300023ec75 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeSessionIntraRefreshCreateInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeSessionIntraRefreshCreateInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeSessionParametersFeedbackInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeSessionParametersFeedbackInfoKHR.gen.cs index 71485e7605..240b205e8c 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeSessionParametersFeedbackInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeSessionParametersFeedbackInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeUsageFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeUsageFlagsKHR.gen.cs index e86fcb4568..f786980900 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeUsageFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeUsageFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeUsageInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeUsageInfoKHR.gen.cs index 869923901e..066b1ab3e4 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoEncodeUsageInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoEncodeUsageInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoFormatAv1QuantizationMapPropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoFormatAv1QuantizationMapPropertiesKHR.gen.cs index fd7db6f3ea..04be355ae2 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoFormatAv1QuantizationMapPropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoFormatAv1QuantizationMapPropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoFormatH265QuantizationMapPropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoFormatH265QuantizationMapPropertiesKHR.gen.cs index 3e662407ca..c56a3cacbd 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoFormatH265QuantizationMapPropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoFormatH265QuantizationMapPropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoFormatPropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoFormatPropertiesKHR.gen.cs index 95e4da6e16..9dde6bfad5 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoFormatPropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoFormatPropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoFormatQuantizationMapPropertiesKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoFormatQuantizationMapPropertiesKHR.gen.cs index 6312a3baa8..fdda93d334 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoFormatQuantizationMapPropertiesKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoFormatQuantizationMapPropertiesKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoReferenceSlotInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoReferenceSlotInfoKHR.gen.cs index f9e3eb3aa9..8c677c6a26 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoReferenceSlotInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoReferenceSlotInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoSessionCreateFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoSessionCreateFlagsKHR.gen.cs index 2ca356b22d..1d71ee668b 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoSessionCreateFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoSessionCreateFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersCreateFlagsKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersCreateFlagsKHR.gen.cs index 9e3d760210..e53d0e4401 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersCreateFlagsKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersCreateFlagsKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersCreateInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersCreateInfoKHR.gen.cs index 1dfc199d3a..02c80c6f90 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersCreateInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersCreateInfoKHR.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersUpdateInfoKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersUpdateInfoKHR.gen.cs index 1a98b023a3..e4c4e5edbf 100644 --- a/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersUpdateInfoKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/VideoSessionParametersUpdateInfoKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/Viewport.gen.cs b/sources/Vulkan/Vulkan/Vulkan/Viewport.gen.cs index 88df9e8cde..f742f5ff81 100644 --- a/sources/Vulkan/Vulkan/Vulkan/Viewport.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/Viewport.gen.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/Vk.gen.cs b/sources/Vulkan/Vulkan/Vulkan/Vk.gen.cs index d5fdbb7b9e..01a153d1dc 100644 --- a/sources/Vulkan/Vulkan/Vulkan/Vk.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/Vk.gen.cs @@ -3,8 +3,10 @@ // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. using System; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Silk.NET.Core.Loader; namespace Silk.NET.Vulkan; diff --git a/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetAccelerationStructureKHR.gen.cs b/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetAccelerationStructureKHR.gen.cs index 5a3ac9a9a9..de90da252f 100644 --- a/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetAccelerationStructureKHR.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetAccelerationStructureKHR.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetAccelerationStructureNV.gen.cs b/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetAccelerationStructureNV.gen.cs index 828da3ca7f..3506643c55 100644 --- a/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetAccelerationStructureNV.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetAccelerationStructureNV.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetInlineUniformBlock.gen.cs b/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetInlineUniformBlock.gen.cs index 824c3abfaa..0670640535 100644 --- a/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetInlineUniformBlock.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetInlineUniformBlock.gen.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace Silk.NET.Vulkan; [NativeName("VkWriteDescriptorSetInlineUniformBlock")] diff --git a/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetTensorARM.gen.cs b/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetTensorARM.gen.cs index 304e84aea6..e31b1b7162 100644 --- a/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetTensorARM.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/WriteDescriptorSetTensorARM.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/sources/Vulkan/Vulkan/Vulkan/WriteIndirectExecutionSetShaderEXT.gen.cs b/sources/Vulkan/Vulkan/Vulkan/WriteIndirectExecutionSetShaderEXT.gen.cs index 6a86d883e7..71fda93afe 100644 --- a/sources/Vulkan/Vulkan/Vulkan/WriteIndirectExecutionSetShaderEXT.gen.cs +++ b/sources/Vulkan/Vulkan/Vulkan/WriteIndirectExecutionSetShaderEXT.gen.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // Ported from the Vulkan headers and corresponding dependencies. // Original source is Copyright 2015-2025 The Khronos Group Inc. Licensed under the MIT license. +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; From 79a8be4ff574108bd1f59fce591fe067c840505a Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 23:08:10 -0400 Subject: [PATCH 86/93] Move solution loading back to MSBuildModContextFactory --- .../Mods/Common/MSBuildModContext.cs | 202 +---------------- .../Mods/Common/MSBuildModContextFactory.cs | 211 +++++++++++++++++- 2 files changed, 216 insertions(+), 197 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs index 7077b65d48..399e457da7 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs @@ -8,19 +8,19 @@ using System.Text; using CSharpier.Core; using CSharpier.Core.CSharp; -using Microsoft.Build.Framework; using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.MSBuild; using Microsoft.Extensions.Logging; using EndOfLine = CSharpier.Core.EndOfLine; using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Silk.NET.SilkTouch.Mods; -internal class MSBuildModContext(string jobKey, SilkTouchConfiguration jobConfig, ILogger logger) - : IModContext, - IProgress, - Microsoft.Build.Framework.ILogger +internal class MSBuildModContext( + MSBuildModContextFactory parent, + string jobKey, + SilkTouchConfiguration jobConfig, + ILogger logger +) : IModContext { private Project? _srcProject, _testProject; @@ -29,12 +29,6 @@ internal class MSBuildModContext(string jobKey, SilkTouchConfiguration jobConfig public string WorkingDirectory { get; init; } = Environment.CurrentDirectory; - /// - public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Detailed; - - /// - public string? Parameters { get; set; } = string.Empty; - public Project? SourceProject { get => _srcProject; @@ -83,7 +77,7 @@ public async Task InitializeAsync() { var solutionPath = Path.GetFullPath(jobConfig.Solution, WorkingDirectory); logger.LogInformation("Opening solution at {}...", solutionPath); - var solution = await MSBuildWorkspace.Create().OpenSolutionAsync(solutionPath, this, this); + var solution = await parent.OpenSolutionAsync(solutionPath); if (jobConfig.SourceProject is null) { @@ -273,186 +267,4 @@ private static async Task ToNormalisedStringAsync( var result = await CSharpFormatter.FormatAsync(normalizedRoot.SyntaxTree, _opts, ct); return !result.ErrorDiagnostics.Any() ? result.Code : normalizedRoot.ToFullString(); } - - /// - public void Report(ProjectLoadProgress value) => - logger.LogDebug( - "{0}: {1}({2}) - elapsed {3}", - value.Operation, - value.FilePath, - value.TargetFramework, - value.ElapsedTime - ); - - private IEventSource? _eventSource; - - /// - public void Initialize(IEventSource eventSource) - { - if (_eventSource is not null) - { - throw new InvalidOperationException("Already initialised."); - } - - _eventSource = eventSource; - _eventSource.BuildStarted += EventSourceOnBuildStarted; - _eventSource.AnyEventRaised += EventSourceOnAnyEventRaised; - _eventSource.BuildFinished += EventSourceOnBuildFinished; - _eventSource.ErrorRaised += EventSourceOnErrorRaised; - _eventSource.MessageRaised += EventSourceOnMessageRaised; - _eventSource.ProjectFinished += EventSourceOnProjectFinished; - _eventSource.ProjectStarted += EventSourceOnProjectStarted; - _eventSource.TargetFinished += EventSourceOnTargetFinished; - _eventSource.TargetStarted += EventSourceOnTargetStarted; - _eventSource.TaskFinished += EventSourceOnTaskFinished; - _eventSource.TaskStarted += EventSourceOnTaskStarted; - _eventSource.WarningRaised += EventSourceOnWarningRaised; - _eventSource.CustomEventRaised += EventSourceOnCustomEventRaised; - _eventSource.StatusEventRaised += EventSourceOnStatusEventRaised; - } - - private void EventSourceOnStatusEventRaised(object sender, BuildStatusEventArgs e) => - logger.LogTrace( - "At {0} {1} raised status event: {2} ({3})", - e.Timestamp, - e.SenderName, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnCustomEventRaised(object sender, CustomBuildEventArgs e) => - logger.LogTrace( - "At {0} {1} raised custom event: {2} ({3})", - e.Timestamp, - e.SenderName, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnWarningRaised(object sender, BuildWarningEventArgs e) => - logger.LogWarning( - "{0}:{1}:{2} : warning {3}: {4} ({5})", - e.File, - e.LineNumber, - e.ColumnNumber, - e.Code, - e.Message, - e.ProjectFile - ); - - private void EventSourceOnTaskStarted(object sender, TaskStartedEventArgs e) => - logger.LogTrace( - "At {0} {1} started task {2} from {3}, message: {4} ({5})", - e.Timestamp, - e.SenderName, - e.TaskName, - e.TaskFile, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnTaskFinished(object sender, TaskFinishedEventArgs e) => - logger.LogTrace( - "At {0} {1} finished task {2} from {3}, message: {4} ({5})", - e.Timestamp, - e.SenderName, - e.TaskName, - e.TaskFile, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnTargetStarted(object sender, TargetStartedEventArgs e) => - logger.LogTrace( - "At {0} {1} started target {2} from {3}, message: {4} ({5})", - e.Timestamp, - e.SenderName, - e.TargetName, - e.TargetFile, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnTargetFinished(object sender, TargetFinishedEventArgs e) => - logger.LogTrace( - "At {0} {1} finished target {2} from {3}, message: {4} ({5})", - e.Timestamp, - e.SenderName, - e.TargetName, - e.TargetFile, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnProjectStarted(object sender, ProjectStartedEventArgs e) => - logger.LogTrace("MSBuild started processing project {0}: {1}", e.ProjectFile, e.Message); - - private void EventSourceOnProjectFinished(object sender, ProjectFinishedEventArgs e) => - logger.LogTrace("MSBuild finished processing project {0}: {1}", e.ProjectFile, e.Message); - - private void EventSourceOnMessageRaised(object sender, BuildMessageEventArgs e) => - logger.LogTrace( - "{0}:{1}:{2} : message {3}: {4} ({5})", - e.File, - e.LineNumber, - e.ColumnNumber, - e.Code, - e.Message, - e.ProjectFile - ); - - private void EventSourceOnErrorRaised(object sender, BuildErrorEventArgs e) => - logger.LogError( - "{0}:{1}:{2} : error {3}: {4} ({5})", - e.File, - e.LineNumber, - e.ColumnNumber, - e.Code, - e.Message, - e.ProjectFile - ); - - private void EventSourceOnBuildFinished(object sender, BuildFinishedEventArgs e) - // was going to be a LogDebug/LogError but it seems this happens in some cases anyway? - => - logger.LogDebug( - e.Succeeded ? "MSBuild completed successfully" : "MSBuild failed (might be okay?)" - ); - - private void EventSourceOnAnyEventRaised(object sender, BuildEventArgs e) => - logger.LogTrace( - "At {0} {1} raised event: {2} ({3})", - e.Timestamp, - e.SenderName, - e.Message, - e.HelpKeyword - ); - - private void EventSourceOnBuildStarted(object sender, BuildStartedEventArgs e) => - logger.LogDebug("MSBuild started."); - - /// - public void Shutdown() - { - if (_eventSource is null) - { - return; - } - - _eventSource.BuildStarted -= EventSourceOnBuildStarted; - _eventSource.AnyEventRaised -= EventSourceOnAnyEventRaised; - _eventSource.BuildFinished -= EventSourceOnBuildFinished; - _eventSource.ErrorRaised -= EventSourceOnErrorRaised; - _eventSource.MessageRaised -= EventSourceOnMessageRaised; - _eventSource.ProjectFinished -= EventSourceOnProjectFinished; - _eventSource.ProjectStarted -= EventSourceOnProjectStarted; - _eventSource.TargetFinished -= EventSourceOnTargetFinished; - _eventSource.TargetStarted -= EventSourceOnTargetStarted; - _eventSource.TaskFinished -= EventSourceOnTaskFinished; - _eventSource.TaskStarted -= EventSourceOnTaskStarted; - _eventSource.WarningRaised -= EventSourceOnWarningRaised; - _eventSource.CustomEventRaised -= EventSourceOnCustomEventRaised; - _eventSource.StatusEventRaised -= EventSourceOnStatusEventRaised; - _eventSource = null; - } } diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs index 8e86f01bcc..724175fb53 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs @@ -1,6 +1,10 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Collections.Concurrent; +using Microsoft.Build.Framework; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.MSBuild; using Microsoft.Extensions.Logging; namespace Silk.NET.SilkTouch.Mods; @@ -8,8 +12,19 @@ namespace Silk.NET.SilkTouch.Mods; ///

/// A that creates mod contexts that use an MSBuild workspace. /// -public class MSBuildModContextFactory(ILogger logger) : IModContextFactory +internal class MSBuildModContextFactory(ILogger logger) + : IModContextFactory, + IProgress, + Microsoft.Build.Framework.ILogger { + private readonly ConcurrentDictionary> _solutions = []; + + /// + public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Detailed; + + /// + public string? Parameters { get; set; } = string.Empty; + /// public async Task CreateContextAsync( string key, @@ -17,8 +32,200 @@ public async Task CreateContextAsync( CancellationToken ct = default ) { - var ret = new MSBuildModContext(key, config, logger); + var ret = new MSBuildModContext(this, key, config, logger); await ret.InitializeAsync(); return ret; } + + internal Task OpenSolutionAsync(string file) => + _solutions.GetOrAdd( + file, + async x => + { + logger.LogInformation("Opening solution at {}...", x); + return await MSBuildWorkspace.Create().OpenSolutionAsync(x, this, this); + } + ); + + /// + public void Report(ProjectLoadProgress value) => + logger.LogDebug( + "{0}: {1}({2}) - elapsed {3}", + value.Operation, + value.FilePath, + value.TargetFramework, + value.ElapsedTime + ); + + private IEventSource? _eventSource; + + /// + public void Initialize(IEventSource eventSource) + { + if (_eventSource is not null) + { + throw new InvalidOperationException("Already initialised."); + } + + _eventSource = eventSource; + _eventSource.BuildStarted += EventSourceOnBuildStarted; + _eventSource.AnyEventRaised += EventSourceOnAnyEventRaised; + _eventSource.BuildFinished += EventSourceOnBuildFinished; + _eventSource.ErrorRaised += EventSourceOnErrorRaised; + _eventSource.MessageRaised += EventSourceOnMessageRaised; + _eventSource.ProjectFinished += EventSourceOnProjectFinished; + _eventSource.ProjectStarted += EventSourceOnProjectStarted; + _eventSource.TargetFinished += EventSourceOnTargetFinished; + _eventSource.TargetStarted += EventSourceOnTargetStarted; + _eventSource.TaskFinished += EventSourceOnTaskFinished; + _eventSource.TaskStarted += EventSourceOnTaskStarted; + _eventSource.WarningRaised += EventSourceOnWarningRaised; + _eventSource.CustomEventRaised += EventSourceOnCustomEventRaised; + _eventSource.StatusEventRaised += EventSourceOnStatusEventRaised; + } + + private void EventSourceOnStatusEventRaised(object sender, BuildStatusEventArgs e) => + logger.LogTrace( + "At {0} {1} raised status event: {2} ({3})", + e.Timestamp, + e.SenderName, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnCustomEventRaised(object sender, CustomBuildEventArgs e) => + logger.LogTrace( + "At {0} {1} raised custom event: {2} ({3})", + e.Timestamp, + e.SenderName, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnWarningRaised(object sender, BuildWarningEventArgs e) => + logger.LogWarning( + "{0}:{1}:{2} : warning {3}: {4} ({5})", + e.File, + e.LineNumber, + e.ColumnNumber, + e.Code, + e.Message, + e.ProjectFile + ); + + private void EventSourceOnTaskStarted(object sender, TaskStartedEventArgs e) => + logger.LogTrace( + "At {0} {1} started task {2} from {3}, message: {4} ({5})", + e.Timestamp, + e.SenderName, + e.TaskName, + e.TaskFile, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnTaskFinished(object sender, TaskFinishedEventArgs e) => + logger.LogTrace( + "At {0} {1} finished task {2} from {3}, message: {4} ({5})", + e.Timestamp, + e.SenderName, + e.TaskName, + e.TaskFile, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnTargetStarted(object sender, TargetStartedEventArgs e) => + logger.LogTrace( + "At {0} {1} started target {2} from {3}, message: {4} ({5})", + e.Timestamp, + e.SenderName, + e.TargetName, + e.TargetFile, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnTargetFinished(object sender, TargetFinishedEventArgs e) => + logger.LogTrace( + "At {0} {1} finished target {2} from {3}, message: {4} ({5})", + e.Timestamp, + e.SenderName, + e.TargetName, + e.TargetFile, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnProjectStarted(object sender, ProjectStartedEventArgs e) => + logger.LogTrace("MSBuild started processing project {0}: {1}", e.ProjectFile, e.Message); + + private void EventSourceOnProjectFinished(object sender, ProjectFinishedEventArgs e) => + logger.LogTrace("MSBuild finished processing project {0}: {1}", e.ProjectFile, e.Message); + + private void EventSourceOnMessageRaised(object sender, BuildMessageEventArgs e) => + logger.LogTrace( + "{0}:{1}:{2} : message {3}: {4} ({5})", + e.File, + e.LineNumber, + e.ColumnNumber, + e.Code, + e.Message, + e.ProjectFile + ); + + private void EventSourceOnErrorRaised(object sender, BuildErrorEventArgs e) => + logger.LogError( + "{0}:{1}:{2} : error {3}: {4} ({5})", + e.File, + e.LineNumber, + e.ColumnNumber, + e.Code, + e.Message, + e.ProjectFile + ); + + private void EventSourceOnBuildFinished(object sender, BuildFinishedEventArgs e) + // was going to be a LogDebug/LogError but it seems this happens in some cases anyway? + => + logger.LogDebug( + e.Succeeded ? "MSBuild completed successfully" : "MSBuild failed (might be okay?)" + ); + + private void EventSourceOnAnyEventRaised(object sender, BuildEventArgs e) => + logger.LogTrace( + "At {0} {1} raised event: {2} ({3})", + e.Timestamp, + e.SenderName, + e.Message, + e.HelpKeyword + ); + + private void EventSourceOnBuildStarted(object sender, BuildStartedEventArgs e) => + logger.LogDebug("MSBuild started."); + + /// + public void Shutdown() + { + if (_eventSource is null) + { + return; + } + + _eventSource.BuildStarted -= EventSourceOnBuildStarted; + _eventSource.AnyEventRaised -= EventSourceOnAnyEventRaised; + _eventSource.BuildFinished -= EventSourceOnBuildFinished; + _eventSource.ErrorRaised -= EventSourceOnErrorRaised; + _eventSource.MessageRaised -= EventSourceOnMessageRaised; + _eventSource.ProjectFinished -= EventSourceOnProjectFinished; + _eventSource.ProjectStarted -= EventSourceOnProjectStarted; + _eventSource.TargetFinished -= EventSourceOnTargetFinished; + _eventSource.TargetStarted -= EventSourceOnTargetStarted; + _eventSource.TaskFinished -= EventSourceOnTaskFinished; + _eventSource.TaskStarted -= EventSourceOnTaskStarted; + _eventSource.WarningRaised -= EventSourceOnWarningRaised; + _eventSource.CustomEventRaised -= EventSourceOnCustomEventRaised; + _eventSource.StatusEventRaised -= EventSourceOnStatusEventRaised; + _eventSource = null; + } } From 03427eca9d6625d598113442a8dfd613191d606c Mon Sep 17 00:00:00 2001 From: William Chen Date: Tue, 13 Oct 2026 23:14:55 -0400 Subject: [PATCH 87/93] Fix solution cache race condition causing the solution to be loaded multiple times --- .../Mods/Common/MSBuildModContext.cs | 1 - .../Mods/Common/MSBuildModContextFactory.cs | 27 +++++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs index 399e457da7..3e5bc3bb34 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContext.cs @@ -76,7 +76,6 @@ private static void Assign( public async Task InitializeAsync() { var solutionPath = Path.GetFullPath(jobConfig.Solution, WorkingDirectory); - logger.LogInformation("Opening solution at {}...", solutionPath); var solution = await parent.OpenSolutionAsync(solutionPath); if (jobConfig.SourceProject is null) diff --git a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs index 724175fb53..9567a3573a 100644 --- a/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs +++ b/sources/SilkTouch/SilkTouch/Mods/Common/MSBuildModContextFactory.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Concurrent; using Microsoft.Build.Framework; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.MSBuild; @@ -17,7 +16,8 @@ internal class MSBuildModContextFactory(ILogger logger IProgress, Microsoft.Build.Framework.ILogger { - private readonly ConcurrentDictionary> _solutions = []; + private readonly Dictionary> _solutions = []; + private readonly Lock _solutionsLock = new(); /// public LoggerVerbosity Verbosity { get; set; } = LoggerVerbosity.Detailed; @@ -37,15 +37,20 @@ public async Task CreateContextAsync( return ret; } - internal Task OpenSolutionAsync(string file) => - _solutions.GetOrAdd( - file, - async x => - { - logger.LogInformation("Opening solution at {}...", x); - return await MSBuildWorkspace.Create().OpenSolutionAsync(x, this, this); - } - ); + internal Task OpenSolutionAsync(string filePath) + { + using var _ = _solutionsLock.EnterScope(); + + if (!_solutions.TryGetValue(filePath, out var task)) + { + logger.LogInformation("Opening solution at {}...", filePath); + _solutions[filePath] = task = MSBuildWorkspace + .Create() + .OpenSolutionAsync(filePath, this, this); + } + + return task; + } /// public void Report(ProjectLoadProgress value) => From 643a99273e15b10a98e270b74c1e417b1dfc5d3d Mon Sep 17 00:00:00 2001 From: William Chen Date: Wed, 14 Oct 2026 00:14:43 -0400 Subject: [PATCH 88/93] Edit docs for SilkTouchHost --- sources/SilkTouch/SilkTouch/SilkTouchHost.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/SilkTouch/SilkTouch/SilkTouchHost.cs b/sources/SilkTouch/SilkTouch/SilkTouchHost.cs index 31ce0761be..0e861d20bf 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchHost.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchHost.cs @@ -18,7 +18,7 @@ namespace Silk.NET.SilkTouch; /// -/// Represents a set of configured SilkTouch jobs and the ability to run them. +/// The main entrypoint for the SilkTouch bindings generator. /// public class SilkTouchHost { From d087d6e75d261a31b2b601e7aeafed5521292743 Mon Sep 17 00:00:00 2001 From: William Chen Date: Wed, 14 Oct 2026 09:06:39 -0400 Subject: [PATCH 89/93] Update the using-the-generator docs --- .../Generator/using-the-generator.md | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/docs/for-contributors/Generator/using-the-generator.md b/docs/for-contributors/Generator/using-the-generator.md index 68aebfd43c..855c8568e9 100644 --- a/docs/for-contributors/Generator/using-the-generator.md +++ b/docs/for-contributors/Generator/using-the-generator.md @@ -17,7 +17,8 @@ Metal. There are three main things to configure: -1. Silk 3 - This is the [`generator.json`](https://github.com/dotnet/Silk.NET/blob/develop/3.0/generator.json) file. +1. Silk 3 - This is the [`Silk.NET.SilkTouch.Jobs`](https://github.com/dotnet/Silk.NET/blob/feature/silktouch-config-overhaul/sources/SilkTouch/Jobs/Program.cs) + project. You may also use a single file app instead of a full C# project. 2. ClangSharpPInvokeGenerator - This is the [`eng/silktouch`](https://github.com/dotnet/Silk.NET/tree/develop/3.0/eng/silktouch) folder. @@ -32,9 +33,13 @@ you are binding. ## SilkTouch Configuration -Silk defines the configuration for SilkTouch in the -[`generator.json`](https://github.com/dotnet/Silk.NET/blob/develop/3.0/generator.json) file. This file defines the -different bindings jobs and the list of mods to run for each job. +Silk defines the configuration for SilkTouch as regular C# in the +[`Silk.NET.SilkTouch.Jobs`](https://github.com/dotnet/Silk.NET/blob/feature/silktouch-config-overhaul/sources/SilkTouch/Jobs/Program.cs) +project. + +This project defines the different bindings jobs and the list of mods to run for each job. Silk's own bindings jobs are +split into multiple files for maintainability, but since this is regular C# code, you may organize your own job +definitions however you wish. For example, when binding to a C API: @@ -48,8 +53,8 @@ For example, when binding to a C API: Aside from reading documentation, some other ways to learn about the mods are to: -- Read through the tests. The tests act as examples for specific behaviors expected by each mod, with configurations, - inputs, and expected outputs provided for each case. +- Read through the SilkTouch tests. The tests act as examples for specific behaviors expected by each mod, with + configurations, inputs, and expected outputs provided for each case. - Add them one by one. Mods run in the order you define them and work off the output of the previous mod. @@ -105,7 +110,9 @@ eng - SDL3 ``` -Profiles likely will not be relevent for most C APIs, so the examples here will keep focusing on the SDL case. +Profiles are not likely to be required for your average C API required, so the examples here will keep focusing on the +SDL case. Profiles are needed when your API has multiple variants or needs to be generated on multiple platforms. For +additional reference, please use the OpenGL (TODO: or OpenXR bindings) bindings jobs as examples. The following is the folder structure used for Silk's SDL bindings. You do not have to structure it the way Silk does. Silk's structure focuses on keeping consistency in its response file organization, regardless of whether the API makes @@ -117,8 +124,8 @@ eng - sdl - SDL3 - generate.rsp <-- The main settings file. Used as the entrypoint. All import paths must be relative to this file. - - header.txt - sdl-SDL.h <-- Handwritten header file that #includes the relevant headers of the library you want to bind. + - header.txt - remap.rsp - settings.rsp <-- Shared settings for all profiles. ``` @@ -164,7 +171,7 @@ Silk.NET.SDL --define-macro TODO_DEFINE_MACROS=HERE --headerFile -header.txt +../header.txt --include-directory ../../../submodules/sdl/include --with-callconv @@ -238,23 +245,19 @@ MSBuild under the hood. The generator can be run directly from source using the following command: ```sh -dotnet run --project sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.csproj -c Release -- generator.json --only SDL +dotnet run --project sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.Jobs.csproj -c Release -- --only SDL ``` You may use the `--help` option to display additional information about available options. ``` -dotnet run --project sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.csproj -c Release -- --help +dotnet run --project sources/SilkTouch/SilkTouch/Silk.NET.SilkTouch.Jobs.csproj -c Release -- --help ``` Some notable options include the `--only` and `--skip` options. `--only` lets you specify the exact jobs to run. `--skip` is the opposite and lets you specify the jobs to skip. If `--only` and `--skip` is specified for the same job, `--skip` takes precedence. -Warning: There are currently some generator bugs associated with running multiple jobs in the same process. We recommend -that you use `--only` to ensure that only one job is executed per process. Running multiple processes in parallel is -fine. - ### Generated Bindings Output All generated binding will be output to the `Jobs.JOB_NAME.SourceProject` path defined in `generator.json`. From ef1fb4396d5160fb6b09c8baeb3679e1f3585707 Mon Sep 17 00:00:00 2001 From: William Chen Date: Wed, 14 Oct 2026 09:14:50 -0400 Subject: [PATCH 90/93] Update generator-mods docs --- .../Generator/generator-mods.md | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/docs/for-contributors/Generator/generator-mods.md b/docs/for-contributors/Generator/generator-mods.md index 3cf4fadffe..be37f34875 100644 --- a/docs/for-contributors/Generator/generator-mods.md +++ b/docs/for-contributors/Generator/generator-mods.md @@ -27,9 +27,11 @@ ideally, no communication is done at all so that mods are kept completely standa ### Mod Configuration -Mods are configured through the generator config JSON file. Silk's config file is named `generator.json` and is located -at the root of the Silk.NET repository. This config file can be used as reference for your own config files. In -addition, most mods have a configuration class located in their source code with additional documentation. +Mods are configured as part of bindings generation jobs in a separate C# project. Silk's own configuration project is +the +[`Silk.NET.SilkTouch.Jobs`](https://github.com/dotnet/Silk.NET/blob/feature/silktouch-config-overhaul/sources/SilkTouch/Jobs/Program.cs) +project. This project can be used as reference for your own SilkTouch configuration projects. More information about +using the SilkTouch generator can be found in the [Using the Generator](using-the-generator.md) documentation. ## Available Mods @@ -186,7 +188,7 @@ development and iteration, the generator is typically set up so that platform-sp Usage recommendations: -This mod is configured differently from the rest of the mods. The JSON mod configuration follows the same pattern as the +This mod is configured differently from the rest of the mods. The C# mod configuration follows the same pattern as the rest of the mods, but the bulk of the configuration comes in the form of `.rsp` files. These `.rsp` files represent the command line arguments passed to ClangSharpPInvokeGenerator. More information about how to use this mod and how to configure the generator as a whole is found in the [Using the Generator](using-the-generator.md) documentation. @@ -373,16 +375,12 @@ Name affix categories: Example name affix configurations for `PrettifyNames`: -``` -"SharedPrefix": { - "Remove": true -} +```cs +["SharedPrefix"] = new() { Remove = true }, ``` -``` -"SharedPrefix": { - "IsDiscriminator": true -} +```cs +["SharedPrefix"] = new() { IsDiscriminator = true }, ``` Usage recommendations: @@ -465,8 +463,8 @@ This is a monolithic mod that handles behavior specific to Khronos-style APIs su Because this mod is intended more for internal use rather than public use, the documentation here will focus on decisions made during the development of the mod and other internal details rather than the exact usage of the mod. -For information relating to how the mod should be used, please use Silk's `generator.json` configuration, source code, -and `MixKhronosDataTests` as a reference. +For information relating to how the mod should be used, please use Silk's own configuration, source code, and +`MixKhronosDataTests` as a reference. (TODO: Document major decisions relating to `MixKhronosData`. This is difficult because of the mod's long development history, and while this section is already massive, it still does not cover everything the mod does. This should be done From a8c5b555d43a409341b0d422698032f61ff1d475 Mon Sep 17 00:00:00 2001 From: William Chen Date: Wed, 14 Oct 2026 09:16:08 -0400 Subject: [PATCH 91/93] Fix incorrect branch used for docs links --- docs/for-contributors/Generator/generator-mods.md | 2 +- docs/for-contributors/Generator/using-the-generator.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/for-contributors/Generator/generator-mods.md b/docs/for-contributors/Generator/generator-mods.md index be37f34875..d0c12ea055 100644 --- a/docs/for-contributors/Generator/generator-mods.md +++ b/docs/for-contributors/Generator/generator-mods.md @@ -29,7 +29,7 @@ ideally, no communication is done at all so that mods are kept completely standa Mods are configured as part of bindings generation jobs in a separate C# project. Silk's own configuration project is the -[`Silk.NET.SilkTouch.Jobs`](https://github.com/dotnet/Silk.NET/blob/feature/silktouch-config-overhaul/sources/SilkTouch/Jobs/Program.cs) +[`Silk.NET.SilkTouch.Jobs`](https://github.com/dotnet/Silk.NET/blob/develop/3.0/sources/SilkTouch/Jobs/Program.cs) project. This project can be used as reference for your own SilkTouch configuration projects. More information about using the SilkTouch generator can be found in the [Using the Generator](using-the-generator.md) documentation. diff --git a/docs/for-contributors/Generator/using-the-generator.md b/docs/for-contributors/Generator/using-the-generator.md index 855c8568e9..6aac8b34e6 100644 --- a/docs/for-contributors/Generator/using-the-generator.md +++ b/docs/for-contributors/Generator/using-the-generator.md @@ -17,7 +17,7 @@ Metal. There are three main things to configure: -1. Silk 3 - This is the [`Silk.NET.SilkTouch.Jobs`](https://github.com/dotnet/Silk.NET/blob/feature/silktouch-config-overhaul/sources/SilkTouch/Jobs/Program.cs) +1. Silk 3 - This is the [`Silk.NET.SilkTouch.Jobs`](https://github.com/dotnet/Silk.NET/blob/develop/3.0/sources/SilkTouch/Jobs/Program.cs) project. You may also use a single file app instead of a full C# project. 2. ClangSharpPInvokeGenerator - This is the [`eng/silktouch`](https://github.com/dotnet/Silk.NET/tree/develop/3.0/eng/silktouch) folder. @@ -34,7 +34,7 @@ you are binding. ## SilkTouch Configuration Silk defines the configuration for SilkTouch as regular C# in the -[`Silk.NET.SilkTouch.Jobs`](https://github.com/dotnet/Silk.NET/blob/feature/silktouch-config-overhaul/sources/SilkTouch/Jobs/Program.cs) +[`Silk.NET.SilkTouch.Jobs`](https://github.com/dotnet/Silk.NET/blob/develop/3.0/sources/SilkTouch/Jobs/Program.cs) project. This project defines the different bindings jobs and the list of mods to run for each job. Silk's own bindings jobs are From dbda59978db5fb4bed526d1de8bc593a706e9753 Mon Sep 17 00:00:00 2001 From: William Chen Date: Wed, 14 Oct 2026 11:12:20 -0400 Subject: [PATCH 92/93] Move GetLongestCommonPrefix and GetLongestCommonPath to ClangScraper --- .../SilkTouch/SilkTouch/Clang/ClangScraper.cs | 38 ++++++++++++++++--- sources/SilkTouch/SilkTouch/SilkTouchJob.cs | 31 --------------- 2 files changed, 32 insertions(+), 37 deletions(-) diff --git a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs index 8f4807076f..6f21d47485 100644 --- a/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs +++ b/sources/SilkTouch/SilkTouch/Clang/ClangScraper.cs @@ -234,14 +234,10 @@ private async Task ScrapeBindingsAsync( // Figure out what the common root is so we can aggregate the file paths without collisions var srcRoot = cfg.InputSourceRoot - ?? SilkTouchJob.GetLongestCommonPath( - rsps.Select(x => x.GeneratorConfiguration.OutputLocation) - ); + ?? GetLongestCommonPath(rsps.Select(x => x.GeneratorConfiguration.OutputLocation)); var testRoot = cfg.InputTestRoot - ?? SilkTouchJob.GetLongestCommonPath( - rsps.Select(x => x.GeneratorConfiguration.TestOutputLocation) - ); + ?? GetLongestCommonPath(rsps.Select(x => x.GeneratorConfiguration.TestOutputLocation)); srcRoot = Path.GetFullPath(srcRoot); testRoot = Path.GetFullPath(testRoot); @@ -532,6 +528,36 @@ private static bool IsSubPathOf(string path, string baseDirPath) return normalizedPath.StartsWith(normalizedBaseDirPath, StringComparison.OrdinalIgnoreCase); } + private static string GetLongestCommonPath(IEnumerable s) + { + var ret = GetLongestCommonPrefix( + s.Select(x => Path.GetFullPath(x.Replace('\\', '/').TrimEnd('/'))).ToArray() + ); + Debug.Assert(Directory.Exists(ret)); + return ret; + } + + private static string GetLongestCommonPrefix(string[] s) + { + var k = s[0].Length; + for (var i = 1; i < s.Length; i++) + { + k = Math.Min(k, s[i].Length); + for (var j = 0; j < k; j++) + { + if (s[i][j] == s[0][j]) + { + continue; + } + + k = j; + break; + } + } + + return s[0][..k]; + } + private void LogConfiguration(ResponseFile cfg) { if (!logger.IsEnabled(LogLevel.Trace)) diff --git a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs index 9158d374fe..836885a587 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchJob.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchJob.cs @@ -135,37 +135,6 @@ await File.ReadAllTextAsync(Config.DefaultLicenseHeader, ct) ); } - // TODO: Why is this here? - internal static string GetLongestCommonPrefix(string[] s) - { - var k = s[0].Length; - for (var i = 1; i < s.Length; i++) - { - k = Math.Min(k, s[i].Length); - for (var j = 0; j < k; j++) - { - if (s[i][j] == s[0][j]) - { - continue; - } - - k = j; - break; - } - } - - return s[0][..k]; - } - - internal static string GetLongestCommonPath(IEnumerable s) - { - var ret = GetLongestCommonPrefix( - s.Select(x => Path.GetFullPath(x.Replace('\\', '/').TrimEnd('/'))).ToArray() - ); - Debug.Assert(Directory.Exists(ret)); - return ret; - } - /// public void Dispose() => _container.Dispose(); } From d8bef8e8e22b3b52cc4590a13f021fbbd0428ae1 Mon Sep 17 00:00:00 2001 From: William Chen Date: Wed, 14 Oct 2026 15:12:55 -0400 Subject: [PATCH 93/93] Remove WithMods --- sources/SilkTouch/Jobs/Jobs.Microsoft.cs | 65 ++-- sources/SilkTouch/Jobs/Jobs.OpenAL.cs | 213 +++++------ sources/SilkTouch/Jobs/Jobs.OpenCL.cs | 339 ++++++++---------- sources/SilkTouch/Jobs/Jobs.OpenGL.cs | 234 ++++++------ sources/SilkTouch/Jobs/Jobs.OpenXR.cs | 202 +++++------ sources/SilkTouch/Jobs/Jobs.SDL.cs | 61 ++-- sources/SilkTouch/Jobs/Jobs.Vulkan.cs | 224 ++++++------ .../SilkTouchRegistrationExtensions.cs | 71 ++-- 8 files changed, 640 insertions(+), 769 deletions(-) diff --git a/sources/SilkTouch/Jobs/Jobs.Microsoft.cs b/sources/SilkTouch/Jobs/Jobs.Microsoft.cs index 1f37b30ae3..d1aeab800f 100644 --- a/sources/SilkTouch/Jobs/Jobs.Microsoft.cs +++ b/sources/SilkTouch/Jobs/Jobs.Microsoft.cs @@ -19,41 +19,36 @@ public static SilkTouchHost DefineMicrosoftJob(this SilkTouchHost host) => context => context .WithDefaultFunctionTransformers(new()) - .WithMods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/submodules/terrafx.interop.windows/generation/**/generate.rsp", - ], - ManualOverrides = new() - { - ["sources/Windows/um/icm/Windows.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/um/icm/Windows.cs", - ["sources/Gdiplus/um/gdiplustypes/GpRect.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRect.cs", - ["sources/Gdiplus/um/gdiplustypes/GpRectF.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRectF.cs", - ["sources/Gdiplus/um/gdiplustypes/GpPathData.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpPathData.cs", - ["sources/Windows/shared/strsafe/Windows.gen.cs"] = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/shared/strsafe/Windows.gen.cs", - }, - InputSourceRoot = - "eng/submodules/terrafx.interop.windows/sources/Interop/Windows", - InputTestRoot = - "eng/submodules/terrafx.interop.windows/tests/Interop/Windows", - SkipScrapeIf = static () => !OperatingSystem.IsWindows(), - } - ) - .ChangeNamespace( - new() - { - Mappings = new() { ["TerraFX.Interop.(.*)"] = "Silk.NET.$1" }, - } - ) + .AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = + [ + "eng/submodules/terrafx.interop.windows/generation/**/generate.rsp", + ], + ManualOverrides = new() + { + ["sources/Windows/um/icm/Windows.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/um/icm/Windows.cs", + ["sources/Gdiplus/um/gdiplustypes/GpRect.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRect.cs", + ["sources/Gdiplus/um/gdiplustypes/GpRectF.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpRectF.cs", + ["sources/Gdiplus/um/gdiplustypes/GpPathData.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Gdiplus/um/gdiplustypes/GpPathData.cs", + ["sources/Windows/shared/strsafe/Windows.gen.cs"] = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows/Windows/shared/strsafe/Windows.gen.cs", + }, + InputSourceRoot = + "eng/submodules/terrafx.interop.windows/sources/Interop/Windows", + InputTestRoot = + "eng/submodules/terrafx.interop.windows/tests/Interop/Windows", + SkipScrapeIf = static () => !OperatingSystem.IsWindows(), + } + ) + .ChangeNamespace( + new() { Mappings = new() { ["TerraFX.Interop.(.*)"] = "Silk.NET.$1" } } ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.OpenAL.cs b/sources/SilkTouch/Jobs/Jobs.OpenAL.cs index f0b9de51e0..9aff55b764 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenAL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenAL.cs @@ -25,123 +25,104 @@ public static SilkTouchHost DefineOpenALJob(this SilkTouchHost host) => BoolTypes = new() { ["ALboolean"] = null, ["ALCboolean"] = null }, } ) - .WithMods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/openal/**/generate.rsp", - ], - InputSourceRoot = "sources/OpenAL", - InputTestRoot = "tests/OpenAL", - } - ) - .MarkNativeNames() - .ChangeNativeClass( - new() - { - NewClasses = new() - { - ["(alc|ALC_).*"] = "ALContext", - ["EFX_REVERB_PRESET_.*"] = "EfxReverbPreset", - }, - } - ) - .AddApiProfiles(new()) - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/openal-soft/registry/xml/al.xml", - Namespace = "Silk.NET.OpenAL", - TypeMap = new() { ["ALenum"] = "uint", ["ALCenum"] = "uint" }, - NonStandardExtensionNomenclature = true, - Vendors = ["SOFT", "LOKI", "EXT"], - NonVendorSuffixes = ["Direct"], - IdentifyFunctionDataTypes = true, - IdentifyEnumTypeNonExclusiveVendors = true, - IdentifyEnumMemberImpliedVendors = true, - } - ) - .ExtractHandles() - .ExtractNestedTypes() - .ExtractEnumConstants() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .InterceptNativeFunctions( - new() - { - NativeFunctionNames = - [ - "alcOpenDevice", - "alcMakeContextCurrent", - ], - } - ) - .TransformFunctions() - .TransformProperties( - new() - { - BoolTypes = new() - { - ["ALboolean"] = null, - ["ALCboolean"] = null, - }, - } - ) - .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["alc", "al"] }) - .PrettifyNames( - new() - { - NameOverrides = new() - { - ["ALContext"] = "ALContext", - ["EFXEAXREVERBPROPERTIES"] = "EfxEaxReverbProperties", - ["ALCcontextHandle"] = "ContextHandle", - ["ALCdeviceHandle"] = "DeviceHandle", - ["ALBUFFERCALLBACKTYPESOFT"] = "BufferCallbackSOFT", - ["ALCEVENTPROCTYPESOFT"] = "ContextEventProcSOFT", - ["ALEVENTPROCSOFT"] = "EventProcSOFT", - ["ALDEBUGPROCEXT"] = "DebugProcEXT", - ["LPALFOLDBACKCALLBACK"] = "FoldbackCallback", - }, - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosFunctionDataType"] = new() - { - IsDiscriminator = true, - }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosNonExclusiveVendor"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables( - new() + .AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/openal/**/generate.rsp"], + InputSourceRoot = "sources/OpenAL", + InputTestRoot = "tests/OpenAL", + } + ) + .MarkNativeNames() + .ChangeNativeClass( + new() + { + NewClasses = new() + { + ["(alc|ALC_).*"] = "ALContext", + ["EFX_REVERB_PRESET_.*"] = "EfxReverbPreset", + }, + } + ) + .AddApiProfiles(new()) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/openal-soft/registry/xml/al.xml", + Namespace = "Silk.NET.OpenAL", + TypeMap = new() { ["ALenum"] = "uint", ["ALCenum"] = "uint" }, + NonStandardExtensionNomenclature = true, + Vendors = ["SOFT", "LOKI", "EXT"], + NonVendorSuffixes = ["Direct"], + IdentifyFunctionDataTypes = true, + IdentifyEnumTypeNonExclusiveVendors = true, + IdentifyEnumMemberImpliedVendors = true, + } + ) + .ExtractHandles() + .ExtractNestedTypes() + .ExtractEnumConstants() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .InterceptNativeFunctions( + new() { NativeFunctionNames = ["alcOpenDevice", "alcMakeContextCurrent"] } + ) + .TransformFunctions() + .TransformProperties( + new() + { + BoolTypes = new() { ["ALboolean"] = null, ["ALCboolean"] = null }, + } + ) + .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["alc", "al"] }) + .PrettifyNames( + new() + { + NameOverrides = new() + { + ["ALContext"] = "ALContext", + ["EFXEAXREVERBPROPERTIES"] = "EfxEaxReverbProperties", + ["ALCcontextHandle"] = "ContextHandle", + ["ALCdeviceHandle"] = "DeviceHandle", + ["ALBUFFERCALLBACKTYPESOFT"] = "BufferCallbackSOFT", + ["ALCEVENTPROCTYPESOFT"] = "ContextEventProcSOFT", + ["ALEVENTPROCSOFT"] = "EventProcSOFT", + ["ALDEBUGPROCEXT"] = "DebugProcEXT", + ["LPALFOLDBACKCALLBACK"] = "FoldbackCallback", + }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosFunctionDataType"] = new() { IsDiscriminator = true }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateFactoryPartial = true, - }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.OpenCL.cs b/sources/SilkTouch/Jobs/Jobs.OpenCL.cs index 33eae14e36..944c3c32fe 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenCL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenCL.cs @@ -22,194 +22,159 @@ public static SilkTouchHost DefineOpenCLJob(this SilkTouchHost host) => .WithDefaultFunctionTransformers( new() { BoolTypes = new() { ["cl_bool"] = null } } ) - .WithMods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/opencl/**/generate.rsp", - ], - InputSourceRoot = "sources/OpenCL", - InputTestRoot = "tests/OpenCL", - } - ) - .MarkNativeNames() - .AddApiProfiles(new()) - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/opencl-docs/xml/cl.xml", - Namespace = "Silk.NET.OpenCL", - TypeMap = new() - { - ["cl_bitfield"] = "ulong", - ["cl_properties"] = "ulong", - ["intptr_t"] = "long", - ["ErrorCodes"] = "int", - ["cl_affinity_domain_ext"] = "uint", - ["clCommandExecutionStatus"] = "uint", - ["cl_compiler_mode_altera"] = "uint", - ["cl_motion_estimation_desc_intel.mb_block_type"] = "uint", - ["cl_motion_estimation_desc_intel.subpixel_mode"] = "uint", - ["cl_motion_estimation_desc_intel.sad_adjust_mode"] = - "uint", - ["cl_motion_estimation_desc_intel.search_path_type"] = - "uint", - ["cl_arm_device_svm_capabilities.flags"] = "uint", - ["cl_arm_svm_alloc.flags"] = "uint", - ["cl_intel_advanced_motion_estimation.flags"] = "uint", - [ - "cl_intel_advanced_motion_estimation.search_cost_penalty" - ] = "uint", - [ - "cl_intel_advanced_motion_estimation.search_cost_precision" - ] = "uint", - [ - "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.luma_block" - ] = "uint", - [ - "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.chroma_block" - ] = "uint", - ["cl_intel_advanced_motion_estimation.skip_block_type"] = - "uint", - ["cl_intel_advanced_motion_estimation.device_me_version"] = - "uint", - [ - "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel" - ] = "uint", - [ - "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel.2" - ] = "uint", - ["cl_intel_device_side_avc_motion_estimation.version"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.major"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.minor"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.major.dir"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.partition"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.window"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.adjust"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.subpixel"] = - "uint", - [ - "cl_intel_device_side_avc_motion_estimation.cost.precision" - ] = "uint", - ["cl_intel_device_side_avc_motion_estimation.weight"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.border"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.skip"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.skip.dir"] = - "uint", - [ - "cl_intel_device_side_avc_motion_estimation.skip.block.based" - ] = "uint", - ["cl_intel_device_side_avc_motion_estimation.intra"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.intra.luma"] = - "uint", - [ - "cl_intel_device_side_avc_motion_estimation.intra.neighbor" - ] = "uint", - [ - "cl_intel_device_side_avc_motion_estimation.luma.predictor" - ] = "uint", - ["cl_intel_device_side_avc_motion_estimation.frame.dir"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.slice"] = - "uint", - ["cl_intel_device_side_avc_motion_estimation.scan.dir"] = - "uint", - ["cl_command_termination_reason_arm"] = "uint", - ["cl_platform_command_buffer_capabilities_khr"] = "uint", - ["cl_device_command_buffer_capabilities_khr"] = "uint", - ["cl_media_adapter_type_khr"] = "uint", - ["cl_media_adapter_set_khr"] = "uint", - ["host_cache_policy"] = "uint", - ["allocation_type"] = "uint", - ["cl_unified_shared_memory_capabilities_intel"] = "uint", - ["cl_mem_alloc_info_intel"] = "uint", - ["cl_semaphore_type"] = "uint", - ["cl_kernel_workgroup_info"] = "uint", - }, - Vendors = ["ALTERA"], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .TransformHandles(new() { UseDsl = true }) - .TransformFunctions() - .TransformProperties(new() { BoolTypes = new() { ["cl_bool"] = null } }) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["cl", "_cl"], - PrefixOverrides = new() - { - ["cl_device_info"] = "CL_DEVICE", - ["cl_context_properties"] = "CL_CONTEXT", - ["cl_device_integer_dot_product_capabilities"] = - "CL_DEVICE_INTEGER_DOT_PRODUCT", - ["cl_device_integer_dot_product_capabilities_khr"] = - "CL_DEVICE_INTEGER_DOT_PRODUCT", - }, - } - ) - .PrettifyNames( - new() - { - NameOverrides = new() - { - ["CL_DRIVER_VERSION"] = "DriverVersion", - ["CL_DRIVER_UUID"] = "DriverUuid", - ["CL_DRIVER_UUID_KHR"] = "DriverUuidKHR", - }, - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1, Capitalize = true }, - ["KhronosFunctionDataType"] = new() - { - IsDiscriminator = true, - }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosNonExclusiveVendor"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables( - new() + .AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/opencl/**/generate.rsp"], + InputSourceRoot = "sources/OpenCL", + InputTestRoot = "tests/OpenCL", + } + ) + .MarkNativeNames() + .AddApiProfiles(new()) + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/opencl-docs/xml/cl.xml", + Namespace = "Silk.NET.OpenCL", + TypeMap = new() + { + ["cl_bitfield"] = "ulong", + ["cl_properties"] = "ulong", + ["intptr_t"] = "long", + ["ErrorCodes"] = "int", + ["cl_affinity_domain_ext"] = "uint", + ["clCommandExecutionStatus"] = "uint", + ["cl_compiler_mode_altera"] = "uint", + ["cl_motion_estimation_desc_intel.mb_block_type"] = "uint", + ["cl_motion_estimation_desc_intel.subpixel_mode"] = "uint", + ["cl_motion_estimation_desc_intel.sad_adjust_mode"] = "uint", + ["cl_motion_estimation_desc_intel.search_path_type"] = "uint", + ["cl_arm_device_svm_capabilities.flags"] = "uint", + ["cl_arm_svm_alloc.flags"] = "uint", + ["cl_intel_advanced_motion_estimation.flags"] = "uint", + ["cl_intel_advanced_motion_estimation.search_cost_penalty"] = + "uint", + ["cl_intel_advanced_motion_estimation.search_cost_precision"] = + "uint", + [ + "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.luma_block" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.intra_search_prediction_modes_buffer.chroma_block" + ] = "uint", + ["cl_intel_advanced_motion_estimation.skip_block_type"] = "uint", + ["cl_intel_advanced_motion_estimation.device_me_version"] = "uint", + [ + "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel" + ] = "uint", + [ + "cl_intel_advanced_motion_estimation.cl_motion_detect_desc_intel.2" + ] = "uint", + ["cl_intel_device_side_avc_motion_estimation.version"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.major"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.minor"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.major.dir"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.partition"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.window"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.adjust"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.subpixel"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.cost.precision"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.weight"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.border"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.skip"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.skip.dir"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.skip.block.based"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.intra"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.intra.luma"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.intra.neighbor"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.luma.predictor"] = + "uint", + ["cl_intel_device_side_avc_motion_estimation.frame.dir"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.slice"] = "uint", + ["cl_intel_device_side_avc_motion_estimation.scan.dir"] = "uint", + ["cl_command_termination_reason_arm"] = "uint", + ["cl_platform_command_buffer_capabilities_khr"] = "uint", + ["cl_device_command_buffer_capabilities_khr"] = "uint", + ["cl_media_adapter_type_khr"] = "uint", + ["cl_media_adapter_set_khr"] = "uint", + ["host_cache_policy"] = "uint", + ["allocation_type"] = "uint", + ["cl_unified_shared_memory_capabilities_intel"] = "uint", + ["cl_mem_alloc_info_intel"] = "uint", + ["cl_semaphore_type"] = "uint", + ["cl_kernel_workgroup_info"] = "uint", + }, + Vendors = ["ALTERA"], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions() + .TransformProperties(new() { BoolTypes = new() { ["cl_bool"] = null } }) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["cl", "_cl"], + PrefixOverrides = new() + { + ["cl_device_info"] = "CL_DEVICE", + ["cl_context_properties"] = "CL_CONTEXT", + ["cl_device_integer_dot_product_capabilities"] = + "CL_DEVICE_INTEGER_DOT_PRODUCT", + ["cl_device_integer_dot_product_capabilities_khr"] = + "CL_DEVICE_INTEGER_DOT_PRODUCT", + }, + } + ) + .PrettifyNames( + new() + { + NameOverrides = new() + { + ["CL_DRIVER_VERSION"] = "DriverVersion", + ["CL_DRIVER_UUID"] = "DriverUuid", + ["CL_DRIVER_UUID_KHR"] = "DriverUuidKHR", + }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1, Capitalize = true }, + ["KhronosFunctionDataType"] = new() { IsDiscriminator = true }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateFactoryPartial = true, - }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.OpenGL.cs b/sources/SilkTouch/Jobs/Jobs.OpenGL.cs index 1602c7813f..fdc35f187e 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenGL.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenGL.cs @@ -22,135 +22,125 @@ public static SilkTouchHost DefineOpenGLJob(this SilkTouchHost host) => .WithDefaultFunctionTransformers( new() { BoolTypes = new() { ["GLboolean"] = null } } ) - .WithMods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/opengl/**/generate.rsp", - ], - InputSourceRoot = "sources/OpenGL", - InputTestRoot = "tests/OpenGL", - } - ) - .MarkNativeNames() - .AddApiProfiles( - new() - { - Profiles = - [ - new() { Profile = "gl", SourceSubdirectory = "glcompat" }, - new() - { - Profile = "glcore", - SourceSubdirectory = "glcore", - MinVersion = "3.2", - }, - new() - { - Profile = "gles1", - SourceSubdirectory = "gles1", - MaxVersion = "2.0", - }, - new() - { - Profile = "gles2", - SourceSubdirectory = "gles2", - MinVersion = "2.0", - }, - ], - } - ) - .BakeSourceSets( - new() - { - SourceSets = new() - { - ["glcompat"] = "gl", - ["glcore"] = "gl", - ["gles1"] = "gl", - ["gles2"] = "gl", - }, - } - ) - .AddOpaqueStructs(new() { Names = ["GLsync"] }) - .MixKhronosData( + .AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/opengl/**/generate.rsp"], + InputSourceRoot = "sources/OpenGL", + InputTestRoot = "tests/OpenGL", + } + ) + .MarkNativeNames() + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "gl", SourceSubdirectory = "glcompat" }, new() { - SpecPath = "eng/submodules/opengl-registry/xml/gl.xml", - Namespace = "Silk.NET.OpenGL", - TypeMap = new() - { - ["GLenum"] = "uint", - ["TraceMaskMESA"] = "uint", - ["PathRenderingTokenNV"] = "byte", - ["PathCoordType"] = "byte", - }, - IdentifyFunctionDataTypes = true, - IdentifyEnumTypeNonExclusiveVendors = true, - IdentifyEnumMemberImpliedVendors = true, - } - ) - .TransformHandles(new() { UseDsl = true }) - .TransformFunctions() - .TransformProperties( - new() { BoolTypes = new() { ["GLboolean"] = null } } - ) - .IdentifySharedPrefixes( + Profile = "glcore", + SourceSubdirectory = "glcore", + MinVersion = "3.2", + }, new() { - GlobalPrefixHints = ["gl"], - PrefixOverrides = new() - { - ["SyncObjectMask"] = "GL_SYNC", - ["OcclusionQueryParameterNameNV"] = "GL", - ["TexStorageAttribs"] = "GL", - ["ContainerType"] = "GL", - ["SeparableTargetEXT"] = "GL", - }, - } - ) - .PrettifyNames( + Profile = "gles1", + SourceSubdirectory = "gles1", + MaxVersion = "2.0", + }, new() { - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosFunctionDataType"] = new() - { - IsDiscriminator = true, - }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosNonExclusiveVendor"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables( - new() + Profile = "gles2", + SourceSubdirectory = "gles2", + MinVersion = "2.0", + }, + ], + } + ) + .BakeSourceSets( + new() + { + SourceSets = new() + { + ["glcompat"] = "gl", + ["glcore"] = "gl", + ["gles1"] = "gl", + ["gles2"] = "gl", + }, + } + ) + .AddOpaqueStructs(new() { Names = ["GLsync"] }) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/opengl-registry/xml/gl.xml", + Namespace = "Silk.NET.OpenGL", + TypeMap = new() + { + ["GLenum"] = "uint", + ["TraceMaskMESA"] = "uint", + ["PathRenderingTokenNV"] = "byte", + ["PathCoordType"] = "byte", + }, + IdentifyFunctionDataTypes = true, + IdentifyEnumTypeNonExclusiveVendors = true, + IdentifyEnumMemberImpliedVendors = true, + } + ) + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions() + .TransformProperties(new() { BoolTypes = new() { ["GLboolean"] = null } }) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["gl"], + PrefixOverrides = new() + { + ["SyncObjectMask"] = "GL_SYNC", + ["OcclusionQueryParameterNameNV"] = "GL", + ["TexStorageAttribs"] = "GL", + ["ContainerType"] = "GL", + ["SeparableTargetEXT"] = "GL", + }, + } + ) + .PrettifyNames( + new() + { + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosFunctionDataType"] = new() { IsDiscriminator = true }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosNonExclusiveVendor"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateMakeCurrentPartial = true, - }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) + IsDefault = true, + GenerateMakeCurrentPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.OpenXR.cs b/sources/SilkTouch/Jobs/Jobs.OpenXR.cs index 581d942c57..98970d7334 100644 --- a/sources/SilkTouch/Jobs/Jobs.OpenXR.cs +++ b/sources/SilkTouch/Jobs/Jobs.OpenXR.cs @@ -22,115 +22,101 @@ public static SilkTouchHost DefineOpenXRJob(this SilkTouchHost host) => .WithDefaultFunctionTransformers( new() { BoolTypes = new() { ["XrBool32"] = null } } ) - .WithMods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/openxr/**/generate.rsp", - ], - InputSourceRoot = "sources/OpenXR", - InputTestRoot = "tests/OpenXR", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .MixKhronosData( - new() - { - SpecPath = - "eng/submodules/openxr-sdk/specification/registry/xr.xml", - Namespace = "Silk.NET.OpenXR", - StructureTypes = ["XrStructureType"], - FlagsTypes = ["XrFlags64"], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .AddApiProfiles( - new() - { - Profiles = - [ - new() { Profile = "openxr", SourceSubdirectory = "openxr" }, - ], - } - ) - .InterceptNativeFunctions( - new() { NativeFunctionNames = ["xrCreateInstance"] } - ) - .TransformFunctions() - .TransformProperties( - new() { BoolTypes = new() { ["XrBool32"] = null } } - ) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["PFN_xr", "xr"], - PrefixOverrides = new() - { - ["XrPerfSettingsNotificationLevelEXT"] = - "XR_PERF_SETTINGS_NOTIF_LEVEL", - ["XrSceneMarkerQRCodeSymbolTypeMSFT"] = - "XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE", - ["XrStructureType"] = "XR_TYPE", - }, - } - ) - .PrettifyNames( - new() - { - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosHandleType"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() - { - AddNoneMemberToFlags = true, - RemoveMembers = - [ - new() - { - MemberName = "MaxEnum", - MemberValue = "0x7FFFFFFF", - }, - ], - CoerceBackingTypes = TransformEnums - .EnumBackingTypePreference - .PreferUnsigned, - RewriteMemberValues = true, - } - ) - .AddVTables( - new() + .AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/openxr/**/generate.rsp"], + InputSourceRoot = "sources/OpenXR", + InputTestRoot = "tests/OpenXR", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/openxr-sdk/specification/registry/xr.xml", + Namespace = "Silk.NET.OpenXR", + StructureTypes = ["XrStructureType"], + FlagsTypes = ["XrFlags64"], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "openxr", SourceSubdirectory = "openxr" }, + ], + } + ) + .InterceptNativeFunctions(new() { NativeFunctionNames = ["xrCreateInstance"] }) + .TransformFunctions() + .TransformProperties(new() { BoolTypes = new() { ["XrBool32"] = null } }) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["PFN_xr", "xr"], + PrefixOverrides = new() + { + ["XrPerfSettingsNotificationLevelEXT"] = + "XR_PERF_SETTINGS_NOTIF_LEVEL", + ["XrSceneMarkerQRCodeSymbolTypeMSFT"] = + "XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE", + ["XrStructureType"] = "XR_TYPE", + }, + } + ) + .PrettifyNames( + new() + { + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosHandleType"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() + { + AddNoneMemberToFlags = true, + RemoveMembers = + [ + new() { MemberName = "MaxEnum", MemberValue = "0x7FFFFFFF" }, + ], + CoerceBackingTypes = TransformEnums + .EnumBackingTypePreference + .PreferUnsigned, + RewriteMemberValues = true, + } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateFactoryPartial = true, - }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.SDL.cs b/sources/SilkTouch/Jobs/Jobs.SDL.cs index a2d29885e2..241b76e1fb 100644 --- a/sources/SilkTouch/Jobs/Jobs.SDL.cs +++ b/sources/SilkTouch/Jobs/Jobs.SDL.cs @@ -21,40 +21,33 @@ public static SilkTouchHost DefineSDLJob(this SilkTouchHost host) => .WithDefaultFunctionTransformers( new() { BoolTypes = new() { ["SDL_bool"] = null } } ) - .WithMods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = ["eng/silktouch/sdl/**/generate.rsp"], - InputSourceRoot = "sources/SDL", - InputTestRoot = "tests/SDL", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractEnumConstants() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .TransformFunctions() - .TransformProperties( - new() { BoolTypes = new() { ["SDL_bool"] = null } } - ) - .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["SDL"] }) - .PrettifyNames( - new() - { - Affixes = new() { ["SharedPrefix"] = new() { Remove = true } }, - } - ) - .TransformEnums( - new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } - ) - .AddVTables(new()) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) + .AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/sdl/**/generate.rsp"], + InputSourceRoot = "sources/SDL", + InputTestRoot = "tests/SDL", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractEnumConstants() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .TransformFunctions() + .TransformProperties(new() { BoolTypes = new() { ["SDL_bool"] = null } }) + .IdentifySharedPrefixes(new() { GlobalPrefixHints = ["SDL"] }) + .PrettifyNames( + new() { Affixes = new() { ["SharedPrefix"] = new() { Remove = true } } } + ) + .TransformEnums( + new() { AddNoneMemberToFlags = true, RewriteMemberValues = true } + ) + .AddVTables(new()) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } ) ); } diff --git a/sources/SilkTouch/Jobs/Jobs.Vulkan.cs b/sources/SilkTouch/Jobs/Jobs.Vulkan.cs index 78baec5e97..b88fb319b4 100644 --- a/sources/SilkTouch/Jobs/Jobs.Vulkan.cs +++ b/sources/SilkTouch/Jobs/Jobs.Vulkan.cs @@ -22,128 +22,110 @@ public static SilkTouchHost DefineVulkanJob(this SilkTouchHost host) => .WithDefaultFunctionTransformers( new() { BoolTypes = new() { ["VkBool32"] = null } } ) - .WithMods(mods => - mods.AddIncludes(new()) - .ClangScraper( - new() - { - ClangSharpResponseFiles = - [ - "eng/silktouch/vulkan/**/generate.rsp", - ], - InputSourceRoot = "sources/Vulkan", - InputTestRoot = "tests/Vulkan", - } - ) - .MarkNativeNames() - .ExtractHandles() - .ExtractNestedTypes() - .ExtractFunctionPointers() - .TransformHandles(new() { UseDsl = true }) - .MixKhronosData( - new() - { - SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", - Namespace = "Silk.NET.Vulkan", - StructureTypes = ["VkStructureType"], - FlagsTypes = ["VkFlags", "VkFlags64"], - ExcludeVendorSuffixIdentification = - [ - "VK_VENDOR_ID_VIV", - "VK_VENDOR_ID_VSI", - "VK_VENDOR_ID_MESA", - ], - IdentifyEnumMemberImpliedVendors = true, - } - ) - .AddApiProfiles( - new() - { - Profiles = - [ - new() { Profile = "vulkan", SourceSubdirectory = "vulkan" }, - ], - } - ) - .InterceptNativeFunctions( - new() - { - NativeFunctionNames = ["vkCreateInstance", "vkCreateDevice"], - } - ) - .TransformFunctions() - .TransformProperties( - new() { BoolTypes = new() { ["VkBool32"] = null } } - ) - .IdentifySharedPrefixes( - new() - { - GlobalPrefixHints = ["PFN_vk", "vk"], - PrefixOverrides = new() - { - ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", - ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", - ["VkMemoryDecompressionMethodFlagsEXT"] = - "VK_MEMORY_DECOMPRESSION_METHOD", - }, - } - ) - .PrettifyNames( - new() - { - NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, - Affixes = new() - { - ["HandleType"] = new() { Order = 1 }, - ["FunctionPointerDelegateType"] = new() { Order = 1 }, - ["KhronosVendor"] = new() { Order = -1 }, - ["KhronosImpliedVendor"] = new() { Remove = true }, - ["KhronosHandleType"] = new() { Remove = true }, - ["SharedPrefix"] = new() { Remove = true }, - }, - } - ) - .TransformEnums( - new() - { - AddNoneMemberToFlags = true, - RemoveMembers = - [ - new() - { - MemberName = "MaxEnum", - MemberValue = "0x7FFFFFFF", - }, - new() - { - MemberName = "Invalid", - MemberValue = "0x7FFFFFFF", - }, - ], - CoerceBackingTypes = TransformEnums - .EnumBackingTypePreference - .PreferUnsigned, - RewriteMemberValues = true, - } - ) - .AddVTables( - new() + .AddIncludes(new()) + .ClangScraper( + new() + { + ClangSharpResponseFiles = ["eng/silktouch/vulkan/**/generate.rsp"], + InputSourceRoot = "sources/Vulkan", + InputTestRoot = "tests/Vulkan", + } + ) + .MarkNativeNames() + .ExtractHandles() + .ExtractNestedTypes() + .ExtractFunctionPointers() + .TransformHandles(new() { UseDsl = true }) + .MixKhronosData( + new() + { + SpecPath = "eng/submodules/vulkan-docs/xml/vk.xml", + Namespace = "Silk.NET.Vulkan", + StructureTypes = ["VkStructureType"], + FlagsTypes = ["VkFlags", "VkFlags64"], + ExcludeVendorSuffixIdentification = + [ + "VK_VENDOR_ID_VIV", + "VK_VENDOR_ID_VSI", + "VK_VENDOR_ID_MESA", + ], + IdentifyEnumMemberImpliedVendors = true, + } + ) + .AddApiProfiles( + new() + { + Profiles = + [ + new() { Profile = "vulkan", SourceSubdirectory = "vulkan" }, + ], + } + ) + .InterceptNativeFunctions( + new() { NativeFunctionNames = ["vkCreateInstance", "vkCreateDevice"] } + ) + .TransformFunctions() + .TransformProperties(new() { BoolTypes = new() { ["VkBool32"] = null } }) + .IdentifySharedPrefixes( + new() + { + GlobalPrefixHints = ["PFN_vk", "vk"], + PrefixOverrides = new() + { + ["VkImageCreateFlags2KHR"] = "VK_IMAGE_CREATE_2", + ["VkPipelineCreateFlags2"] = "VK_PIPELINE_CREATE_2", + ["VkMemoryDecompressionMethodFlagsEXT"] = + "VK_MEMORY_DECOMPRESSION_METHOD", + }, + } + ) + .PrettifyNames( + new() + { + NameOverrides = new() { ["numAABBs"] = "NumAabbs" }, + Affixes = new() + { + ["HandleType"] = new() { Order = 1 }, + ["FunctionPointerDelegateType"] = new() { Order = 1 }, + ["KhronosVendor"] = new() { Order = -1 }, + ["KhronosImpliedVendor"] = new() { Remove = true }, + ["KhronosHandleType"] = new() { Remove = true }, + ["SharedPrefix"] = new() { Remove = true }, + }, + } + ) + .TransformEnums( + new() + { + AddNoneMemberToFlags = true, + RemoveMembers = + [ + new() { MemberName = "MaxEnum", MemberValue = "0x7FFFFFFF" }, + new() { MemberName = "Invalid", MemberValue = "0x7FFFFFFF" }, + ], + CoerceBackingTypes = TransformEnums + .EnumBackingTypePreference + .PreferUnsigned, + RewriteMemberValues = true, + } + ) + .AddVTables( + new() + { + VTables = + [ + new AddVTables.DllImport(), + new AddVTables.StaticWrapper(), + new AddVTables.ThisThread() { - VTables = - [ - new AddVTables.DllImport(), - new AddVTables.StaticWrapper(), - new AddVTables.ThisThread() - { - IsDefault = true, - GenerateFactoryPartial = true, - }, - ], - } - ) - .StripAttributes( - new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } - ) + IsDefault = true, + GenerateFactoryPartial = true, + }, + ], + } + ) + .StripAttributes( + new() { Remove = ["NativeTypeName", "NameAffix", "Transformed"] } ) ); } diff --git a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs index 5d09698f4e..3058716f72 100644 --- a/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs +++ b/sources/SilkTouch/SilkTouch/SilkTouchRegistrationExtensions.cs @@ -21,22 +21,9 @@ public static class SilkTouchRegistrationExtensions public static SilkTouchRegistrationContext SilkTouch(this ContainerBuilder builder) => new(builder); + // Non-mods extension(SilkTouchRegistrationContext context) { - /// - /// Begins a . - /// - public SilkTouchModRegistrationContext WithMods() => new(context.Builder); - - /// - /// Begins a . - /// - public SilkTouchRegistrationContext WithMods(Action build) - { - build.Invoke(new SilkTouchModRegistrationContext(context.Builder)); - return context; - } - /// /// Registers the default function transformers. /// @@ -97,12 +84,13 @@ public SilkTouchRegistrationContext WithArrayParameterTransformer() } } - extension(SilkTouchModRegistrationContext context) + // Mods + extension(SilkTouchRegistrationContext context) { /// /// Registers the mod. /// - public SilkTouchModRegistrationContext AddApiProfiles(AddApiProfiles.Configuration config) + public SilkTouchRegistrationContext AddApiProfiles(AddApiProfiles.Configuration config) { context .Builder.RegisterType() @@ -116,7 +104,7 @@ public SilkTouchModRegistrationContext AddApiProfiles(AddApiProfiles.Configurati /// /// Registers the mod. /// - public SilkTouchModRegistrationContext ClangScraper(ClangScraper.Configuration config) + public SilkTouchRegistrationContext ClangScraper(ClangScraper.Configuration config) { context .Builder.RegisterType() @@ -130,7 +118,7 @@ public SilkTouchModRegistrationContext ClangScraper(ClangScraper.Configuration c /// /// Registers the mod. /// - public SilkTouchModRegistrationContext AddIncludes(AddIncludes.Configuration config) + public SilkTouchRegistrationContext AddIncludes(AddIncludes.Configuration config) { context .Builder.RegisterType() @@ -144,9 +132,7 @@ public SilkTouchModRegistrationContext AddIncludes(AddIncludes.Configuration con /// /// Registers the mod. /// - public SilkTouchModRegistrationContext AddOpaqueStructs( - AddOpaqueStructs.Configuration config - ) + public SilkTouchRegistrationContext AddOpaqueStructs(AddOpaqueStructs.Configuration config) { context .Builder.RegisterType() @@ -160,7 +146,7 @@ AddOpaqueStructs.Configuration config /// /// Registers the mod. /// - public SilkTouchModRegistrationContext AddVTables(AddVTables.Configuration config) + public SilkTouchRegistrationContext AddVTables(AddVTables.Configuration config) { context .Builder.RegisterType() @@ -174,7 +160,7 @@ public SilkTouchModRegistrationContext AddVTables(AddVTables.Configuration confi /// /// Registers the mod. /// - public SilkTouchModRegistrationContext BakeSourceSets(BakeSourceSets.Configuration config) + public SilkTouchRegistrationContext BakeSourceSets(BakeSourceSets.Configuration config) { context .Builder.RegisterType() @@ -188,7 +174,7 @@ public SilkTouchModRegistrationContext BakeSourceSets(BakeSourceSets.Configurati /// /// Registers the mod. /// - public SilkTouchModRegistrationContext ChangeNamespace(ChangeNamespace.Configuration config) + public SilkTouchRegistrationContext ChangeNamespace(ChangeNamespace.Configuration config) { context .Builder.RegisterType() @@ -202,7 +188,7 @@ public SilkTouchModRegistrationContext ChangeNamespace(ChangeNamespace.Configura /// /// Registers the mod. /// - public SilkTouchModRegistrationContext ChangeNativeClass( + public SilkTouchRegistrationContext ChangeNativeClass( ChangeNativeClass.Configuration config ) { @@ -218,7 +204,7 @@ ChangeNativeClass.Configuration config /// /// Registers the mod. /// - public SilkTouchModRegistrationContext ExtractEnumConstants() + public SilkTouchRegistrationContext ExtractEnumConstants() { context .Builder.RegisterType() @@ -231,7 +217,7 @@ public SilkTouchModRegistrationContext ExtractEnumConstants() /// /// Registers the mod. /// - public SilkTouchModRegistrationContext ExtractFunctionPointers() + public SilkTouchRegistrationContext ExtractFunctionPointers() { context .Builder.RegisterType() @@ -244,7 +230,7 @@ public SilkTouchModRegistrationContext ExtractFunctionPointers() /// /// Registers the mod. /// - public SilkTouchModRegistrationContext ExtractHandles() + public SilkTouchRegistrationContext ExtractHandles() { context .Builder.RegisterType() @@ -257,7 +243,7 @@ public SilkTouchModRegistrationContext ExtractHandles() /// /// Registers the mod. /// - public SilkTouchModRegistrationContext ExtractNestedTypes() + public SilkTouchRegistrationContext ExtractNestedTypes() { context .Builder.RegisterType() @@ -270,7 +256,7 @@ public SilkTouchModRegistrationContext ExtractNestedTypes() /// /// Registers the mod. /// - public SilkTouchModRegistrationContext IdentifySharedPrefixes( + public SilkTouchRegistrationContext IdentifySharedPrefixes( IdentifySharedPrefixes.Configuration config ) { @@ -288,7 +274,7 @@ IdentifySharedPrefixes.Configuration config /// /// Registers the mod. /// - public SilkTouchModRegistrationContext InterceptNativeFunctions( + public SilkTouchRegistrationContext InterceptNativeFunctions( InterceptNativeFunctions.Configuration config ) { @@ -306,7 +292,7 @@ InterceptNativeFunctions.Configuration config /// /// Registers the mod. /// - public SilkTouchModRegistrationContext MarkNativeNames() + public SilkTouchRegistrationContext MarkNativeNames() { context .Builder.RegisterType() @@ -319,7 +305,7 @@ public SilkTouchModRegistrationContext MarkNativeNames() /// /// Registers the mod. /// - public SilkTouchModRegistrationContext MixKhronosData(MixKhronosData.Configuration config) + public SilkTouchRegistrationContext MixKhronosData(MixKhronosData.Configuration config) { context .Builder.RegisterType() @@ -333,7 +319,7 @@ public SilkTouchModRegistrationContext MixKhronosData(MixKhronosData.Configurati /// /// Registers the mod. /// - public SilkTouchModRegistrationContext PrettifyNames(PrettifyNames.Configuration config) + public SilkTouchRegistrationContext PrettifyNames(PrettifyNames.Configuration config) { context .Builder.RegisterType() @@ -347,7 +333,7 @@ public SilkTouchModRegistrationContext PrettifyNames(PrettifyNames.Configuration /// /// Registers the mod. /// - public SilkTouchModRegistrationContext StripAttributes(StripAttributes.Configuration config) + public SilkTouchRegistrationContext StripAttributes(StripAttributes.Configuration config) { context .Builder.RegisterType() @@ -361,7 +347,7 @@ public SilkTouchModRegistrationContext StripAttributes(StripAttributes.Configura /// /// Registers the mod. /// - public SilkTouchModRegistrationContext TransformEnums(TransformEnums.Configuration config) + public SilkTouchRegistrationContext TransformEnums(TransformEnums.Configuration config) { context .Builder.RegisterType() @@ -375,7 +361,7 @@ public SilkTouchModRegistrationContext TransformEnums(TransformEnums.Configurati /// /// Registers the mod. /// - public SilkTouchModRegistrationContext TransformFunctions() + public SilkTouchRegistrationContext TransformFunctions() { context .Builder.RegisterType() @@ -388,9 +374,7 @@ public SilkTouchModRegistrationContext TransformFunctions() /// /// Registers the mod. /// - public SilkTouchModRegistrationContext TransformHandles( - TransformHandles.Configuration config - ) + public SilkTouchRegistrationContext TransformHandles(TransformHandles.Configuration config) { context .Builder.RegisterType() @@ -404,7 +388,7 @@ TransformHandles.Configuration config /// /// Registers the mod. /// - public SilkTouchModRegistrationContext TransformProperties( + public SilkTouchRegistrationContext TransformProperties( TransformProperties.Configuration config ) { @@ -450,9 +434,4 @@ private IRegistrationBuilder< /// Helper for registering SilkTouch to a ///

public record struct SilkTouchRegistrationContext(ContainerBuilder Builder); - - /// - /// Helper for registering SilkTouch mods to a - /// - public record struct SilkTouchModRegistrationContext(ContainerBuilder Builder); }

_Z6mRHX=bG&mLPu*>> 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ť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