Parse Khronos metadata (primarily for SupportedApiProfileAttributes and GL/CL groups) (#2008)
* Initial work on Khronos metadata parsing * Record group usages too, and maybe fix CI? * Apply suggestions from code review * Don't conflate 'either one is implied' with 'both are implied'
This commit is contained in:
Родитель
fa01df21e5
Коммит
46117387b9
|
@ -22,6 +22,7 @@ insert_final_newline = true
|
|||
indent_style = space
|
||||
indent_size = 4
|
||||
trim_trailing_whitespace = true
|
||||
file_header_template = Licensed to the .NET Foundation under one or more agreements.\nThe .NET Foundation licenses this file to you under the MIT license.
|
||||
|
||||
###############################################################################
|
||||
# Set file behavior to:
|
||||
|
@ -68,17 +69,14 @@ dotnet_naming_rule.parameters_should_be_camel_case.severity = suggestion
|
|||
dotnet_naming_rule.parameters_should_be_camel_case.style = camel_case
|
||||
dotnet_naming_rule.parameters_should_be_camel_case.symbols = parameters
|
||||
|
||||
dotnet_naming_rule.private_and_internal_static_fields_should_be_camel_case_prefixed_with_s_and_underscore.severity = suggestion
|
||||
dotnet_naming_rule.private_and_internal_static_fields_should_be_camel_case_prefixed_with_s_and_underscore.style = camel_case_prefixed_with_s_and_underscore
|
||||
dotnet_naming_rule.private_and_internal_static_fields_should_be_camel_case_prefixed_with_s_and_underscore.symbols = private_and_internal_static_fields
|
||||
|
||||
dotnet_naming_rule.private_and_internal_fields_should_be_camel_case_prefixed_with_underscore.severity = suggestion
|
||||
dotnet_naming_rule.private_and_internal_fields_should_be_camel_case_prefixed_with_underscore.style = camel_case_prefixed_with_underscore
|
||||
dotnet_naming_rule.private_and_internal_fields_should_be_camel_case_prefixed_with_underscore.symbols = private_and_internal_fields
|
||||
dotnet_naming_rule.private_and_internal_fields_should_be_camel_case_prefixed_with_underscore.symbols = private_fields
|
||||
|
||||
dotnet_naming_rule.public_and_protected_declarations_should_be_pascal_case.severity = suggestion
|
||||
dotnet_naming_rule.public_and_protected_declarations_should_be_pascal_case.style = pascal_case
|
||||
dotnet_naming_rule.public_and_protected_declarations_should_be_pascal_case.symbols = public_and_protected_declarations
|
||||
dotnet_naming_symbols.public_and_protected_declarations.applicable_kinds = method, field, event, property
|
||||
|
||||
dotnet_naming_rule.static_readonly_declarations_should_be_pascal_case.severity = suggestion
|
||||
dotnet_naming_rule.static_readonly_declarations_should_be_pascal_case.style = pascal_case
|
||||
|
@ -98,7 +96,6 @@ dotnet_naming_rule.type_parameters_should_be_pascal_case_prefixed_with_t.symbols
|
|||
# pascal case prefixed with I
|
||||
# pascal case prefixed with T
|
||||
###############################################################################
|
||||
[*.cs]
|
||||
dotnet_naming_style.camel_case.capitalization = camel_case
|
||||
|
||||
dotnet_naming_style.camel_case_prefixed_with_s_and_underscore.capitalization = camel_case
|
||||
|
@ -129,10 +126,11 @@ dotnet_naming_style.pascal_case_prefixed_with_t.required_prefix = T
|
|||
# static readonly declarations
|
||||
# type parameters
|
||||
###############################################################################
|
||||
[*.cs]
|
||||
dotnet_naming_symbols.async_members.required_modifiers = async
|
||||
dotnet_naming_symbols.async_members.applicable_kinds = method
|
||||
|
||||
dotnet_naming_symbols.const_declarations.required_modifiers = const
|
||||
dotnet_naming_symbols.const_declarations.applicable_kinds = method
|
||||
|
||||
dotnet_naming_symbols.interfaces.applicable_kinds = interface
|
||||
|
||||
|
@ -145,9 +143,14 @@ dotnet_naming_symbols.private_and_internal_static_fields.applicable_accessibilit
|
|||
dotnet_naming_symbols.private_and_internal_static_fields.applicable_kinds = field
|
||||
dotnet_naming_symbols.private_and_internal_static_fields.required_modifiers = static
|
||||
|
||||
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
|
||||
dotnet_naming_symbols.private_fields.applicable_kinds = field
|
||||
|
||||
dotnet_naming_symbols.public_and_protected_declarations.applicable_accessibilities = public, protected
|
||||
|
||||
dotnet_naming_symbols.static_readonly_declarations.required_modifiers = static, readonly
|
||||
dotnet_naming_symbols.static_readonly_declarations.applicable_kinds = field
|
||||
dotnet_naming_symbols.static_readonly_declarations.applicable_accessibilities = public, protected
|
||||
|
||||
dotnet_naming_symbols.type_parameters.applicable_kinds = type_parameter
|
||||
|
||||
|
@ -156,7 +159,6 @@ dotnet_naming_symbols.type_parameters.applicable_kinds = type_parameter
|
|||
# do not separate import directives into groups, and
|
||||
# sort system directives first
|
||||
###############################################################################
|
||||
[*.cs]
|
||||
dotnet_separate_import_directive_groups = false
|
||||
dotnet_sort_system_directives_first = true
|
||||
|
||||
|
@ -187,7 +189,6 @@ dotnet_sort_system_directives_first = true
|
|||
# suggest readonly fields, and
|
||||
# suggest specifying accessibility modifiers
|
||||
###############################################################################
|
||||
[*.cs]
|
||||
dotnet_style_coalesce_expression = true:suggestion
|
||||
dotnet_style_collection_initializer = true:suggestion
|
||||
dotnet_style_explicit_tuple_names = true:suggestion
|
||||
|
@ -222,7 +223,6 @@ dotnet_style_require_accessibility_modifiers = always:suggestion
|
|||
# Set dotnet style options to:
|
||||
# suggest removing all unused parameters
|
||||
###############################################################################
|
||||
[*.cs]
|
||||
dotnet_code_quality_unused_parameters = all:suggestion
|
||||
|
||||
###############################################################################
|
||||
|
@ -234,7 +234,6 @@ dotnet_code_quality_unused_parameters = all:suggestion
|
|||
# indent labels one less than the current, and
|
||||
# indent switch labels
|
||||
###############################################################################
|
||||
[*.cs]
|
||||
csharp_indent_block_contents = true
|
||||
csharp_indent_braces = false
|
||||
csharp_indent_case_contents = true
|
||||
|
@ -252,7 +251,6 @@ csharp_indent_switch_labels = true
|
|||
# insert a new-line before all open braces except anonymous methods, anonymous types, lambdas, and object collections and
|
||||
# insert a new-line within query expression clauses
|
||||
###############################################################################
|
||||
[*.cs]
|
||||
csharp_new_line_before_catch = true
|
||||
csharp_new_line_before_else = true
|
||||
csharp_new_line_before_finally = true
|
||||
|
@ -269,7 +267,6 @@ csharp_new_line_within_query_expression_clauses = true
|
|||
# preserve single-line blocks, and
|
||||
# not preserve single-line statements
|
||||
###############################################################################
|
||||
[*.cs]
|
||||
csharp_preserve_single_line_blocks = true
|
||||
csharp_preserve_single_line_statements = false
|
||||
|
||||
|
@ -298,7 +295,6 @@ csharp_preserve_single_line_statements = false
|
|||
# remove any space between parentheses, and
|
||||
# remove any space between square brackets
|
||||
###############################################################################
|
||||
[*.cs]
|
||||
csharp_space_after_cast = false
|
||||
csharp_space_after_colon_in_inheritance_clause = true
|
||||
csharp_space_after_comma = true
|
||||
|
@ -307,7 +303,7 @@ csharp_space_after_keywords_in_control_flow_statements = true
|
|||
csharp_space_after_semicolon_in_for_statement = true
|
||||
|
||||
csharp_space_around_binary_operators = before_and_after
|
||||
csharp_space_around_declaration_statements = do_not_ignore
|
||||
csharp_space_around_declaration_statements = false
|
||||
|
||||
csharp_space_before_colon_in_inheritance_clause = true
|
||||
csharp_space_before_comma = false
|
||||
|
@ -350,7 +346,6 @@ csharp_space_between_square_brackets = false
|
|||
# suggest var when the type is not apparent, and
|
||||
# suggest var when the type is apparent
|
||||
###############################################################################
|
||||
[*.cs]
|
||||
csharp_prefer_braces = true:suggestion
|
||||
csharp_prefer_simple_default_expression = true:suggestion
|
||||
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
|
||||
|
@ -381,7 +376,18 @@ csharp_style_var_for_built_in_types = true:suggestion
|
|||
csharp_style_var_elsewhere = true:suggestion
|
||||
csharp_style_var_when_type_is_apparent = true:suggestion
|
||||
|
||||
resharper_foreach_can_be_converted_to_query_using_another_get_enumerator_highlighting = false
|
||||
resharper_foreach_can_be_partly_converted_to_query_using_another_get_enumerator_highlighting = false
|
||||
resharper_loop_can_be_converted_to_query_highlighting = false
|
||||
resharper_loop_can_be_partly_converted_to_query_highlighting = false
|
||||
resharper_foreach_can_be_converted_to_query_using_another_get_enumerator_highlighting = none
|
||||
resharper_foreach_can_be_partly_converted_to_query_using_another_get_enumerator_highlighting = none
|
||||
resharper_loop_can_be_converted_to_query_highlighting = none
|
||||
resharper_loop_can_be_partly_converted_to_query_highlighting = none
|
||||
resharper_identifier_typo_highlighting = none
|
||||
resharper_string_literal_typo_highlighting = none
|
||||
resharper_comment_typo_highlighting = true
|
||||
|
||||
# Verify settings
|
||||
[*.{received,verified}.{txt,xml,json}]
|
||||
indent_size = unset
|
||||
indent_style = unset
|
||||
insert_final_newline = false
|
||||
tab_width = unset
|
||||
trim_trailing_whitespace = false
|
||||
|
|
|
@ -52,4 +52,9 @@
|
|||
*.zip binary
|
||||
*.7z binary
|
||||
*.ttf binary
|
||||
*.stout binary
|
||||
*.stout binary
|
||||
|
||||
# Verify
|
||||
*.verified.txt text eol=lf working-tree-encoding=UTF-8
|
||||
*.verified.xml text eol=lf working-tree-encoding=UTF-8
|
||||
*.verified.json text eol=lf working-tree-encoding=UTF-8
|
||||
|
|
|
@ -222,7 +222,7 @@ ClientBin/
|
|||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
|
@ -318,7 +318,7 @@ __pycache__/
|
|||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
|
@ -327,7 +327,7 @@ ASALocalRun/
|
|||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
|
||||
|
@ -486,3 +486,6 @@ src/Website/Silk.NET.Statiq/cache
|
|||
**/*.stdownload
|
||||
|
||||
**/.DS_Store
|
||||
|
||||
# Verify
|
||||
*.received.*
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<!-- Package versions for package references across all projects -->
|
||||
<ItemGroup>
|
||||
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="17.9.0" />
|
||||
<PackageReference Update="NUnit" Version="3.14.0" />
|
||||
<PackageReference Update="NUnit" Version="4.1.0" />
|
||||
<PackageReference Update="NUnit3TestAdapter" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
|||
Directory.Build.targets = Directory.Build.targets
|
||||
LICENSE.md = LICENSE.md
|
||||
generator.json = generator.json
|
||||
Silk.NET.sln.DotSettings = Silk.NET.sln.DotSettings
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{9DB0EA3E-7216-4F9C-98F5-8A7483E9F083}"
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CL/@EntryIndexedValue">CL</s:String>
|
||||
<s:Boolean x:Key="/Default/CodeStyle/EditorConfig/EnableClangFormatSupport/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeStyle/EditorConfig/EnableEditorConfigSupport/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeStyle/EditorConfig/EnableStyleCopSupport/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeStyle/EditorConfig/ShowEditorConfigStatusBarIndicator/@EntryValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/Housekeeping/FeatureSuggestion/FeatureSuggestionManager/DisabledSuggesters/=EditorConfigFeatureSuggester/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=glcompatibility/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=glcore/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Khronos/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=MSFT/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=vulkansc/@EntryIndexedValue">True</s:Boolean>
|
||||
</wpf:ResourceDictionary>
|
|
@ -77,8 +77,7 @@
|
|||
{
|
||||
"Name": "gl",
|
||||
"SourceSubdirectory": "glcompat",
|
||||
"BakedOutputSubdirectory": "gl",
|
||||
"MaxVersion": "3.2"
|
||||
"BakedOutputSubdirectory": "gl"
|
||||
},
|
||||
{
|
||||
"Name": "glcore",
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
namespace Silk.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// The process must be 64-bit for this symbol to be used.
|
||||
/// </summary>
|
||||
[AttributeUsage(
|
||||
AttributeTargets.Assembly
|
||||
| AttributeTargets.Class
|
||||
| AttributeTargets.Constructor
|
||||
| AttributeTargets.Enum
|
||||
| AttributeTargets.Event
|
||||
| AttributeTargets.Field
|
||||
| AttributeTargets.Interface
|
||||
| AttributeTargets.Method
|
||||
| AttributeTargets.Module
|
||||
| AttributeTargets.Property
|
||||
| AttributeTargets.Struct,
|
||||
AllowMultiple = true,
|
||||
Inherited = false
|
||||
)]
|
||||
public class Requires64BitAttribute : Attribute;
|
|
@ -4,6 +4,7 @@
|
|||
/// Indicates that the annotated API is supported using a specific API profile.
|
||||
/// </summary>
|
||||
/// <param name="profile">The API profile supported.</param>
|
||||
/// <param name="apiSets">The API sets in which the API is supported in this profile.</param>
|
||||
[AttributeUsage(
|
||||
AttributeTargets.Assembly
|
||||
| AttributeTargets.Class
|
||||
|
@ -19,7 +20,7 @@
|
|||
AllowMultiple = true,
|
||||
Inherited = false
|
||||
)]
|
||||
public class SupportedApiProfileAttribute(string profile) : Attribute
|
||||
public class SupportedApiProfileAttribute(string profile, string[] apiSets) : Attribute
|
||||
{
|
||||
/// <summary>
|
||||
/// The API profile supported e.g. gl, glcore, gles2, vulkan, vulkansc, etc.
|
||||
|
@ -27,17 +28,53 @@ public class SupportedApiProfileAttribute(string profile) : Attribute
|
|||
public string Profile { get; } = profile;
|
||||
|
||||
/// <summary>
|
||||
/// The API extension required (in its native form).
|
||||
/// A list of API sets (i.e. feature or extension names) in which the API is supported. If any of the elements
|
||||
/// contains a <c>+</c>, then this attribute value is interpreted to mean "this API requires <b>any</b> of the
|
||||
/// <b>combinations</b> of API sets". If not, this attribute value is interpreted to mean "this API
|
||||
/// requires <b>any</b> of the API sets to be supported".
|
||||
/// </summary>
|
||||
public string? Extension { get; init; }
|
||||
/// <remarks>
|
||||
/// By default, the API is deemed supported if any of the sets in this array are supported. However, this can be
|
||||
/// changed using <see cref="RequireAll"/>.
|
||||
/// </remarks>
|
||||
public string[]? ApiSets { get; } = apiSets;
|
||||
|
||||
/// <summary>
|
||||
/// The minimum version of this API profile required in order to be supported.
|
||||
/// The minimum (inclusive) version number (for illustration purposes only) wherein the API is supported by default.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This is non-normative, please rely only on <see cref="ApiSets"/> to determine whether an API is supported for a
|
||||
/// given configuration. For instance, this does not preclude extensions being in <see cref="ApiSets"/>, which may
|
||||
/// support this API earlier or regardless of the version listed in this property.
|
||||
/// </remarks>
|
||||
public string? MinVersion { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// The maximum version of this API profile required in order to be supported.
|
||||
/// The maximum (exclusive) version number (for illustration purposes only) wherein the API is no longer supported
|
||||
/// by default.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This is non-normative, please rely only on <see cref="ApiSets"/> to determine whether an API is supported for a
|
||||
/// given configuration. For instance, this does not preclude extensions being in <see cref="ApiSets"/>, which may
|
||||
/// support this API later or regardless of the version listed in this property.
|
||||
/// </remarks>
|
||||
public string? MaxVersion { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// If this <see cref="SupportedApiProfileAttribute"/> evaluates to indicate that the annotated API is supported,
|
||||
/// the support for the given API sets are also implied. If any of the implications contains a <c>+</c>, then this
|
||||
/// attribute value is interpreted to mean "this API being supported may imply <b>one or more</b> of the
|
||||
/// following API set <b>combinations</b>". If not, this attribute value is interpreted to mean "this API
|
||||
/// being supported implies <b>all</b> of the following API sets are also supported"
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This is primarily used to declare dependencies between API sets. It is not expected for this property to vary at
|
||||
/// an API-by-API level.
|
||||
/// </remarks>
|
||||
public string[]? ImpliesSets { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Requires all of the sets in <see cref="ApiSets"/> to be supported to support using the annotated API.
|
||||
/// </summary>
|
||||
public bool RequireAll { get; init; }
|
||||
}
|
||||
|
|
|
@ -1,6 +1,56 @@
|
|||
namespace Silk.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// An attribute used to indicate that a method is a transformed variant of another method.
|
||||
/// An attribute used to indicate that a symbol is a transformed variant of another symbol.
|
||||
/// </summary>
|
||||
public class TransformedAttribute : Attribute;
|
||||
/// <remarks>
|
||||
/// This attribute is primarily used as an intrinsic in the Silk.NET SilkTouch generator pipeline. This includes:
|
||||
/// <list type="bullet">
|
||||
/// <item>
|
||||
/// <term>Indicating mods should ignore an annotated type.</term>
|
||||
/// <description>
|
||||
/// An example of this is when a type is generated using the typical PascalCase nomenclature and should not flow through
|
||||
/// the <c>PrettifyNames</c> automated prefix detection pipeline. Note that the typical behaviour of the mod, namely
|
||||
/// trimming an identified prefix and converting to PascalCose if not already, will still occur. Mods should ignore or
|
||||
/// otherwise specially treat types that are annotated with this attribute except in extreme circumstances.
|
||||
/// </description>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>Indicating mods should not ignore an annotated method.</term>
|
||||
/// <description>
|
||||
/// Generally mods are optimistic about whether their modifications can be applied to types, whereas this can't be said
|
||||
/// for methods and other members of types, especially when they have bodies. If a method has a body and a mod is unable
|
||||
/// to recognise the origin of said body, then the mod quite often ignores it. This attribute prevents that, for example
|
||||
/// in this leads the <c>AddVTables</c> mod to recognise a method with a body as a V-Table candidate whereas usually
|
||||
/// these are pessimised. Mods should avoid pessimising methods or other members that are annotated with this attribute.
|
||||
/// </description>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// Generally, this attribute indicates special recognition is required and that normal behaviour should not occur for
|
||||
/// the annotated symbol in the generator pipeline except in special circumstances i.e. the annotated symbol "goes
|
||||
/// against the norm".
|
||||
/// </remarks>
|
||||
/// <param name="isTransformed">
|
||||
/// Whether the attribute applies. By default, a transformation attribute on a parent automatically cascades to its
|
||||
/// members, but this parameter being set to false can be used to prevent that.
|
||||
/// </param>
|
||||
[AttributeUsage(
|
||||
AttributeTargets.Class
|
||||
| AttributeTargets.Constructor
|
||||
| AttributeTargets.Enum
|
||||
| AttributeTargets.Event
|
||||
| AttributeTargets.Field
|
||||
| AttributeTargets.Interface
|
||||
| AttributeTargets.Method
|
||||
| AttributeTargets.Property
|
||||
| AttributeTargets.Struct,
|
||||
AllowMultiple = true,
|
||||
Inherited = false
|
||||
)]
|
||||
public class TransformedAttribute(bool isTransformed = true) : Attribute
|
||||
{
|
||||
/// <summary>
|
||||
/// Whether the attribute applies.
|
||||
/// </summary>
|
||||
public bool IsTransformed { get; } = isTransformed;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace Silk.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// Represents a constant that optionally can be represented as an enum. This allows both constant integers and
|
||||
/// enumerated members to be used by the same parameter without a cast.
|
||||
/// </summary>
|
||||
/// <param name="Value">The underlying value.</param>
|
||||
/// <typeparam name="TUnderlying">The underlying value type.</typeparam>
|
||||
/// <typeparam name="TEnum1">
|
||||
/// The enum that can be used in place of a <typeparamref name="TUnderlying"/> constant.
|
||||
/// </typeparam>
|
||||
public readonly record struct Constant<TUnderlying, TEnum1>(TUnderlying Value)
|
||||
where TUnderlying : unmanaged
|
||||
where TEnum1 : unmanaged
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a <see cref="Constant{TUnderlying,TEnum1}"/> from its underlying value.
|
||||
/// </summary>
|
||||
/// <param name="value">The underlying value.</param>
|
||||
/// <returns>The constant.</returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
public static implicit operator Constant<TUnderlying, TEnum1>(TUnderlying value) => new(value);
|
||||
|
||||
/// <summary>
|
||||
/// Creates a <see cref="Constant{TUnderlying,TEnum1}"/> from the given <typeparamref name="TEnum1"/>.
|
||||
/// </summary>
|
||||
/// <param name="value">The enum.</param>
|
||||
/// <returns>The value.</returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
public static implicit operator Constant<TUnderlying, TEnum1>(TEnum1 value) =>
|
||||
SilkMarshal.ConstCast<TEnum1, TUnderlying>(value);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the underlying value.
|
||||
/// </summary>
|
||||
/// <param name="value">The constant.</param>
|
||||
/// <returns>The underlying value.</returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
public static implicit operator TUnderlying(Constant<TUnderlying, TEnum1> value) => value.Value;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the underlying value as a <typeparamref name="TEnum1"/>.
|
||||
/// </summary>
|
||||
/// <param name="value">The constant.</param>
|
||||
/// <returns>The value.</returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
public static implicit operator TEnum1(Constant<TUnderlying, TEnum1> value) =>
|
||||
SilkMarshal.ConstCast<TUnderlying, TEnum1>(value);
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace Silk.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// Represents a constant that optionally can be represented as an enum. This allows both constant integers and
|
||||
/// enumerated members to be used by the same parameter without a cast.
|
||||
/// </summary>
|
||||
/// <param name="Value">The underlying value.</param>
|
||||
/// <typeparam name="TUnderlying">The underlying value type.</typeparam>
|
||||
/// <typeparam name="TEnum1">
|
||||
/// An enum that can be used in place of a <typeparamref name="TUnderlying"/> constant.
|
||||
/// </typeparam>
|
||||
/// <typeparam name="TEnum2">
|
||||
/// Another enum that can be used in place of a <typeparamref name="TUnderlying"/> constant.
|
||||
/// </typeparam>
|
||||
public readonly record struct Constant<TUnderlying, TEnum1, TEnum2>(TUnderlying Value)
|
||||
where TUnderlying : unmanaged
|
||||
where TEnum1 : unmanaged
|
||||
where TEnum2 : unmanaged
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a <see cref="Constant{TUnderlying,TEnum1,TEnum2}"/> from its underlying value.
|
||||
/// </summary>
|
||||
/// <param name="value">The underlying value.</param>
|
||||
/// <returns>The constant.</returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
public static implicit operator Constant<TUnderlying, TEnum1, TEnum2>(TUnderlying value) =>
|
||||
new(value);
|
||||
|
||||
/// <summary>
|
||||
/// Creates a <see cref="Constant{TUnderlying,TEnum1,TEnum2}"/> from the given <typeparamref name="TEnum1"/>.
|
||||
/// </summary>
|
||||
/// <param name="value">The enum.</param>
|
||||
/// <returns>The value.</returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
public static implicit operator Constant<TUnderlying, TEnum1, TEnum2>(TEnum1 value) =>
|
||||
SilkMarshal.ConstCast<TEnum1, TUnderlying>(value);
|
||||
|
||||
/// <summary>
|
||||
/// Creates a <see cref="Constant{TUnderlying,TEnum1,TEnum2}"/> from the given <typeparamref name="TEnum2"/>.
|
||||
/// </summary>
|
||||
/// <param name="value">The enum.</param>
|
||||
/// <returns>The value.</returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
public static implicit operator Constant<TUnderlying, TEnum1, TEnum2>(TEnum2 value) =>
|
||||
SilkMarshal.ConstCast<TEnum2, TUnderlying>(value);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the underlying value.
|
||||
/// </summary>
|
||||
/// <param name="value">The constant.</param>
|
||||
/// <returns>The underlying value.</returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
public static implicit operator TUnderlying(Constant<TUnderlying, TEnum1, TEnum2> value) =>
|
||||
value.Value;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the underlying value as a <typeparamref name="TEnum1"/>.
|
||||
/// </summary>
|
||||
/// <param name="value">The constant.</param>
|
||||
/// <returns>The value.</returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
public static implicit operator TEnum1(Constant<TUnderlying, TEnum1, TEnum2> value) =>
|
||||
SilkMarshal.ConstCast<TUnderlying, TEnum1>(value);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the underlying value as a <typeparamref name="TEnum2"/>.
|
||||
/// </summary>
|
||||
/// <param name="value">The constant.</param>
|
||||
/// <returns>The value.</returns>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
public static implicit operator TEnum2(Constant<TUnderlying, TEnum1, TEnum2> value) =>
|
||||
SilkMarshal.ConstCast<TUnderlying, TEnum2>(value);
|
||||
}
|
|
@ -3,4 +3,5 @@
|
|||
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=annotations/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=com/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=dsl/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=ducktyping/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=pointers/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
|
|
@ -1,5 +1,5 @@
|
|||
using System.Buffers;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Numerics;
|
||||
using System.Runtime;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
@ -583,4 +583,214 @@ public static unsafe class SilkMarshal
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Represents an unsafe constant cast wherein:
|
||||
/// <list type="bullet">
|
||||
/// <item>
|
||||
/// <term>Casts to smaller types truncate the most significant bits.</term>
|
||||
/// <description>
|
||||
/// The return value is obtained by reinterpreting and dereferencing a pointer to <typeparamref name="TFrom"/> as a
|
||||
/// <typeparamref name="TTo"/>, which on a little-endian machine is offset by the absolute byte difference between
|
||||
/// the size of <typeparamref name="TFrom"/> and <typeparamref name="TTo"/> to ensure that only the least
|
||||
/// significant bits are taken; or an equivalent, more optimised methodology for smaller types.
|
||||
/// </description>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>Casts to larger types fill the most significant bits with zeroes.</term>
|
||||
/// <description>
|
||||
/// Assignment occurs through reinterpretation of a pointer to a zeroed-out <typeparamref name="TTo"/> to a
|
||||
/// <typeparamref name="TFrom"/>, which on a little-endian machine is offset by the absolute byte difference
|
||||
/// between the size of <typeparamref name="TFrom"/> and <typeparamref name="TTo"/>, to obtain the return value;
|
||||
/// or an equivalent, more optimised methodology for smaller types.
|
||||
/// </description>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This is optimised to a <see cref="Unsafe.BitCast{TFrom, TTo}"/> where possible. Namely, where the size of types
|
||||
/// are the same or where <typeparamref name="TFrom"/> and <typeparamref name="TTo"/> both have the same size as a
|
||||
/// primitive type. This often results in a single CPU instruction (on x64) being emitted when inlined.
|
||||
/// </remarks>
|
||||
/// <param name="value">The value to cast.</param>
|
||||
/// <typeparam name="TFrom">The type to cast from.</typeparam>
|
||||
/// <typeparam name="TTo">The type to cast to.</typeparam>
|
||||
/// <returns>The casted constant.</returns>
|
||||
/// <exception cref="NotImplementedException">
|
||||
/// Currently, neither signed numbers that are not primitive-sized nor floating point numbers are supported
|
||||
/// <typeparamref name="TTo"/> types.
|
||||
/// </exception>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
public static TTo ConstCast<TFrom, TTo>(TFrom value)
|
||||
where TFrom : unmanaged
|
||||
where TTo : unmanaged
|
||||
{
|
||||
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
static TTo UnsignedFallback(TFrom value)
|
||||
{
|
||||
if (sizeof(TFrom) > sizeof(TTo))
|
||||
{
|
||||
var valcop = value; // <-- codegen dies otherwise, presumably some pessimism?
|
||||
return *(
|
||||
(TTo*)&valcop + (BitConverter.IsLittleEndian ? sizeof(TFrom) - sizeof(TTo) : 0)
|
||||
);
|
||||
}
|
||||
|
||||
TTo val = default;
|
||||
*(TFrom*)(&val + (BitConverter.IsLittleEndian ? sizeof(TTo) - sizeof(TFrom) : 0)) =
|
||||
value;
|
||||
return val;
|
||||
}
|
||||
|
||||
// Sadly switch expression codegen is not optimal so we have the below abominations.
|
||||
// I can't wait for the alternatives to Silk.NET to point this out to prospective users and say that this code
|
||||
// is disgusting therefore the entire library is disgusting. Yes, I know it's disgusting. The point is we do
|
||||
// this for perf so you don't have to!
|
||||
//
|
||||
// Oh here's the codegen on x64:
|
||||
// IntEnum -> int: mov eax, ecx; ret ShortEnum -> int: movzx eax, cx; ret
|
||||
// IntEnum -> uint: mov eax, ecx; ret ShortEnum -> uint: movzx eax, cx; ret
|
||||
// IntEnum -> long: mov eax, ecx; ret ShortEnum -> long: movzx eax, cx; ret
|
||||
// IntEnum -> ulong: mov eax, ecx; ret ShortEnum -> ulong: movzx eax, cx; ret
|
||||
// IntEnum -> short: movsx rax, cx; ret ShortEnum -> short: movsx rax, cx; ret
|
||||
// IntEnum -> ushort: movzx eax, cx; ret ShortEnum -> ushort: movzx eax, cx; ret
|
||||
// IntEnum -> byte: movzx eax, cl; ret ShortEnum -> byte: movzx eax, cl; ret
|
||||
// IntEnum -> sbyte: movsx rax, cl; ret ShortEnum -> sbyte: movsx rax, cl; ret
|
||||
// UIntEnum -> int: mov eax, ecx; ret UShortEnum -> int: movzx eax, cx; ret
|
||||
// UIntEnum -> uint: mov eax, ecx; ret UShortEnum -> uint: movzx eax, cx; ret
|
||||
// UIntEnum -> long: mov eax, ecx; ret UShortEnum -> long: movzx eax, cx; ret
|
||||
// UIntEnum -> ulong: mov eax, ecx; ret UShortEnum -> ulong: movzx eax, cx; ret
|
||||
// UIntEnum -> short: movsx rax, cx; ret UShortEnum -> short: movsx rax, cx; ret
|
||||
// UIntEnum -> ushort: movzx eax, cx; ret UShortEnum -> ushort: movzx eax, cx; ret
|
||||
// UIntEnum -> byte: movzx eax, cl; ret UShortEnum -> byte: movzx eax, cl; ret
|
||||
// UIntEnum -> sbyte: movsx rax, cl; ret UShortEnum -> sbyte: movsx rax, cl; ret
|
||||
// LongEnum -> int: mov eax, ecx; ret ByteEnum -> int: movzx eax, cl; ret
|
||||
// LongEnum -> uint: mov eax, ecx; ret ByteEnum -> uint: movzx eax, cl; ret
|
||||
// LongEnum -> long: mov rax, rcx; ret ByteEnum -> long: movzx eax, cl; ret
|
||||
// LongEnum -> ulong: mov rax, rcx; ret ByteEnum -> ulong: movzx eax, cl; ret
|
||||
// LongEnum -> short: movsx rax, cx; ret ByteEnum -> short: movzx eax, cl; ret
|
||||
// LongEnum -> ushort: movzx eax, cx; ret ByteEnum -> ushort: movzx eax, cl; ret
|
||||
// LongEnum -> byte: movzx eax, cl; ret ByteEnum -> byte: movzx eax, cl; ret
|
||||
// LongEnum -> sbyte: movsx rax, cl; ret ByteEnum -> sbyte: movsx rax, cl; ret
|
||||
// ULongEnum -> int: mov eax, ecx; ret SByteEnum -> int: movzx eax, cl; ret
|
||||
// ULongEnum -> uint: mov eax, ecx; ret SByteEnum -> uint: movzx eax, cl; ret
|
||||
// ULongEnum -> long: mov rax, rcx; ret SByteEnum -> long: movzx eax, cl; ret
|
||||
// ULongEnum -> ulong: mov rax, rcx; ret SByteEnum -> ulong: movzx eax, cl; ret
|
||||
// ULongEnum -> short: movsx rax, cx; ret SByteEnum -> short: movzx eax, cl; ret
|
||||
// ULongEnum -> ushort: movzx eax, cx; ret SByteEnum -> ushort: movzx eax, cl; ret
|
||||
// ULongEnum -> byte: movzx eax, cl; ret SByteEnum -> byte: movzx eax, cl; ret
|
||||
// ULongEnum -> sbyte: movsx rax, cl; ret SByteEnum -> sbyte: movsx rax, cl; ret
|
||||
|
||||
[MethodImpl(
|
||||
MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization
|
||||
)]
|
||||
static TTo UnsignedCast(TFrom value) =>
|
||||
sizeof(TTo) == sizeof(TFrom)
|
||||
? Unsafe.BitCast<TFrom, TTo>(value)
|
||||
: sizeof(TTo) == 1 && sizeof(TFrom) == 2
|
||||
? Unsafe.BitCast<byte, TTo>((byte)Unsafe.BitCast<TFrom, ushort>(value))
|
||||
: sizeof(TTo) == 1 && sizeof(TFrom) == 4
|
||||
? Unsafe.BitCast<byte, TTo>((byte)Unsafe.BitCast<TFrom, uint>(value))
|
||||
: sizeof(TTo) == 1 && sizeof(TFrom) == 8
|
||||
? Unsafe.BitCast<byte, TTo>((byte)Unsafe.BitCast<TFrom, ulong>(value))
|
||||
: sizeof(TTo) == 2 && sizeof(TFrom) == 1
|
||||
? Unsafe.BitCast<ushort, TTo>(Unsafe.BitCast<TFrom, byte>(value))
|
||||
: sizeof(TTo) == 2 && sizeof(TFrom) == 4
|
||||
? Unsafe.BitCast<ushort, TTo>(
|
||||
(ushort)Unsafe.BitCast<TFrom, uint>(value)
|
||||
)
|
||||
: sizeof(TTo) == 2 && sizeof(TFrom) == 8
|
||||
? Unsafe.BitCast<ushort, TTo>(
|
||||
(ushort)Unsafe.BitCast<TFrom, ulong>(value)
|
||||
)
|
||||
: sizeof(TTo) == 4 && sizeof(TFrom) == 1
|
||||
? Unsafe.BitCast<uint, TTo>(
|
||||
Unsafe.BitCast<TFrom, byte>(value)
|
||||
)
|
||||
: sizeof(TTo) == 4 && sizeof(TFrom) == 2
|
||||
? Unsafe.BitCast<uint, TTo>(
|
||||
Unsafe.BitCast<TFrom, ushort>(value)
|
||||
)
|
||||
: sizeof(TTo) == 4 && sizeof(TFrom) == 8
|
||||
? Unsafe.BitCast<uint, TTo>(
|
||||
(uint)Unsafe.BitCast<TFrom, ulong>(value)
|
||||
)
|
||||
: sizeof(TTo) == 8 && sizeof(TFrom) == 1
|
||||
? Unsafe.BitCast<ulong, TTo>(
|
||||
Unsafe.BitCast<TFrom, byte>(value)
|
||||
)
|
||||
: sizeof(TTo) == 8 && sizeof(TFrom) == 2
|
||||
? Unsafe.BitCast<ulong, TTo>(
|
||||
Unsafe.BitCast<TFrom, ushort>(value)
|
||||
)
|
||||
: sizeof(TTo) == 8 && sizeof(TFrom) == 4
|
||||
? Unsafe.BitCast<ulong, TTo>(
|
||||
Unsafe.BitCast<TFrom, uint>(
|
||||
value
|
||||
)
|
||||
)
|
||||
: UnsignedFallback(value);
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.AggressiveOptimization)]
|
||||
static TTo SignedFallback(TFrom _) =>
|
||||
throw new NotImplementedException(
|
||||
"Non-primitive signed numbers are not supported at this time."
|
||||
);
|
||||
|
||||
[MethodImpl(
|
||||
MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization
|
||||
)]
|
||||
static TTo SignedCast(TFrom value) =>
|
||||
sizeof(TTo) == sizeof(TFrom)
|
||||
? Unsafe.BitCast<TFrom, TTo>(value)
|
||||
: sizeof(TTo) == 1 && sizeof(TFrom) == 2
|
||||
? Unsafe.BitCast<sbyte, TTo>((sbyte)Unsafe.BitCast<TFrom, short>(value))
|
||||
: sizeof(TTo) == 1 && sizeof(TFrom) == 4
|
||||
? Unsafe.BitCast<sbyte, TTo>((sbyte)Unsafe.BitCast<TFrom, int>(value))
|
||||
: sizeof(TTo) == 1 && sizeof(TFrom) == 8
|
||||
? Unsafe.BitCast<sbyte, TTo>((sbyte)Unsafe.BitCast<TFrom, long>(value))
|
||||
: sizeof(TTo) == 2 && sizeof(TFrom) == 1
|
||||
? Unsafe.BitCast<short, TTo>(Unsafe.BitCast<TFrom, sbyte>(value))
|
||||
: sizeof(TTo) == 2 && sizeof(TFrom) == 4
|
||||
? Unsafe.BitCast<short, TTo>(
|
||||
(short)Unsafe.BitCast<TFrom, int>(value)
|
||||
)
|
||||
: sizeof(TTo) == 2 && sizeof(TFrom) == 8
|
||||
? Unsafe.BitCast<short, TTo>(
|
||||
(short)Unsafe.BitCast<TFrom, long>(value)
|
||||
)
|
||||
: sizeof(TTo) == 4 && sizeof(TFrom) == 1
|
||||
? Unsafe.BitCast<int, TTo>(
|
||||
Unsafe.BitCast<TFrom, sbyte>(value)
|
||||
)
|
||||
: sizeof(TTo) == 4 && sizeof(TFrom) == 2
|
||||
? Unsafe.BitCast<int, TTo>(
|
||||
Unsafe.BitCast<TFrom, short>(value)
|
||||
)
|
||||
: sizeof(TTo) == 4 && sizeof(TFrom) == 8
|
||||
? Unsafe.BitCast<int, TTo>(
|
||||
(int)Unsafe.BitCast<TFrom, long>(value)
|
||||
)
|
||||
: sizeof(TTo) == 8 && sizeof(TFrom) == 1
|
||||
? Unsafe.BitCast<long, TTo>(
|
||||
Unsafe.BitCast<TFrom, sbyte>(value)
|
||||
)
|
||||
: sizeof(TTo) == 8 && sizeof(TFrom) == 2
|
||||
? Unsafe.BitCast<long, TTo>(
|
||||
Unsafe.BitCast<TFrom, short>(value)
|
||||
)
|
||||
: sizeof(TTo) == 8 && sizeof(TFrom) == 4
|
||||
? Unsafe.BitCast<long, TTo>(
|
||||
Unsafe.BitCast<TFrom, int>(
|
||||
value
|
||||
)
|
||||
)
|
||||
: SignedFallback(value);
|
||||
|
||||
return typeof(TTo).IsAssignableTo(typeof(IFloatingPoint<>))
|
||||
? throw new NotImplementedException("Floating points are not supported at this time.")
|
||||
: typeof(TTo).IsAssignableTo(typeof(ISignedNumber<>))
|
||||
? SignedCast(value)
|
||||
: UnsignedCast(value);
|
||||
}
|
||||
}
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -36,6 +36,11 @@ public class PrettifyNames(
|
|||
/// </summary>
|
||||
public Dictionary<string, string>? PrefixOverrides { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Manually renamed native names.
|
||||
/// </summary>
|
||||
public Dictionary<string, string>? NameOverrides { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// The base trimmer version. If null, trimming is disabled.
|
||||
/// </summary>
|
||||
|
@ -56,37 +61,64 @@ public class PrettifyNames(
|
|||
/// <inheritdoc />
|
||||
public Task<GeneratedSyntax> AfterScrapeAsync(string key, GeneratedSyntax syntax)
|
||||
{
|
||||
var visitor = new Visitor();
|
||||
// First pass to scan the sources and create a dictionary of type/member names.
|
||||
var cfg = config.Get(key);
|
||||
var visitor = new Visitor { NameOverrides = (cfg.NameOverrides?.ToDictionary() ?? [])! };
|
||||
foreach (var (_, node) in syntax.Files.Where(x => x.Key.StartsWith("sources/")))
|
||||
{
|
||||
visitor.Visit(node);
|
||||
}
|
||||
|
||||
var rewriter = new Rewriter();
|
||||
var cfg = config.Get(key);
|
||||
var translator = new NameUtils.NameTransformer(cfg.LongAcronymThreshold ?? 3);
|
||||
|
||||
// If we have a trimmer baseline set, that means the user wants to trim the names as well as prettify them.
|
||||
if (cfg.TrimmerBaseline is not null)
|
||||
{
|
||||
// Get all the trimmers that are above this baseline. We also sort by the version. Why? Because someone
|
||||
// couldn't be bothered to introduce a weight property. It is also unclear what effect this has on 2.17/2.18
|
||||
// but to be honest those trimmers aren't used and are only included for posterity and understanding of the
|
||||
// old logic.
|
||||
var trimmers = trimmerProviders
|
||||
.SelectMany(x => x.Get(key))
|
||||
.OrderBy(x => x.Version)
|
||||
.ToArray();
|
||||
|
||||
// Create a type name dictionary to trim the type names.
|
||||
var typeNames = visitor.Types.ToDictionary(
|
||||
x => x.Key,
|
||||
x => (x.Key, (List<string>?)null)
|
||||
);
|
||||
|
||||
// If we don't have a prefix hint and don't have more than one type, we can't determine a prefix so don't
|
||||
// trim.
|
||||
if (typeNames.Count > 1 || cfg.GlobalPrefixHint is not null)
|
||||
{
|
||||
Trim(null, cfg.GlobalPrefixHint, key, typeNames, cfg.PrefixOverrides, trimmers);
|
||||
Trim(
|
||||
null,
|
||||
cfg.GlobalPrefixHint,
|
||||
key,
|
||||
typeNames,
|
||||
cfg.PrefixOverrides,
|
||||
trimmers,
|
||||
visitor.NameOverrides,
|
||||
visitor.NonDeterminant
|
||||
);
|
||||
}
|
||||
|
||||
// Now rename everything within that type.
|
||||
foreach (var (typeName, (newTypeName, _)) in typeNames)
|
||||
{
|
||||
var (_, (consts, functions)) = visitor.Types.First(x => x.Key == typeName);
|
||||
|
||||
// Rename the "constants" i.e. all the consts/static readonlys in this type. These are treated
|
||||
// individually because everything that isn't a constant or a function is only prettified instead of prettified & trimmed.
|
||||
var constNames = consts?.ToDictionary(
|
||||
x => x,
|
||||
x => (Primary: x, (List<string>?)null)
|
||||
);
|
||||
|
||||
// Trim the constants if we have any.
|
||||
if (constNames is not null)
|
||||
{
|
||||
Trim(
|
||||
|
@ -95,7 +127,9 @@ public class PrettifyNames(
|
|||
key,
|
||||
constNames,
|
||||
cfg.PrefixOverrides,
|
||||
trimmers
|
||||
trimmers,
|
||||
cfg.NameOverrides!,
|
||||
visitor.NonDeterminant
|
||||
);
|
||||
}
|
||||
else
|
||||
|
@ -103,15 +137,22 @@ public class PrettifyNames(
|
|||
constNames = new Dictionary<string, (string Primary, List<string>?)>();
|
||||
}
|
||||
|
||||
// Rename the functions. More often that not functions have different nomenclature to constants, so we
|
||||
// treat them separately.
|
||||
var functionNames = functions
|
||||
?.DistinctBy(x => x.Name)
|
||||
.ToDictionary(x => x.Name, x => (Primary: x.Name, (List<string>?)null));
|
||||
var functionSyntax = functions is null
|
||||
? null
|
||||
: functionNames?.Keys.ToDictionary(
|
||||
x => x,
|
||||
x => functions.Where(y => y.Name == x).Select(y => y.Syntax)
|
||||
);
|
||||
|
||||
// Collect the syntax as this is used for conflict resolution in the Trim function.
|
||||
var functionSyntax =
|
||||
functions is null || functionNames is null
|
||||
? null
|
||||
: functionNames.Keys.ToDictionary(
|
||||
x => x,
|
||||
x => functions.Where(y => y.Name == x).Select(y => y.Syntax)
|
||||
);
|
||||
|
||||
// Now trim if we have any functions.
|
||||
if (functionNames is not null)
|
||||
{
|
||||
Trim(
|
||||
|
@ -121,10 +162,13 @@ public class PrettifyNames(
|
|||
functionNames,
|
||||
cfg.PrefixOverrides,
|
||||
trimmers,
|
||||
cfg.NameOverrides!,
|
||||
visitor.NonDeterminant,
|
||||
functionSyntax
|
||||
);
|
||||
}
|
||||
|
||||
// Add back anything else that isn't a trimming candidate (but should still have a pretty name)
|
||||
var prettifiedOnly = visitor.PrettifyOnlyTypes.TryGetValue(typeName, out var val)
|
||||
? val.Select(x => new KeyValuePair<string, (string Primary, List<string>?)>(
|
||||
x,
|
||||
|
@ -132,6 +176,7 @@ public class PrettifyNames(
|
|||
))
|
||||
: Enumerable.Empty<KeyValuePair<string, (string Primary, List<string>?)>>();
|
||||
|
||||
// Add it to the rewriter's list of names to... rewrite...
|
||||
rewriter.Types[typeName] = (
|
||||
newTypeName.Prettify(translator),
|
||||
// TODO deprecate secondaries if they're within the baseline?
|
||||
|
@ -145,8 +190,9 @@ public class PrettifyNames(
|
|||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
else // (there's no trimming baseline)
|
||||
{
|
||||
// Prettify only if the user has not indicated they want to trim.
|
||||
foreach (var (name, (nonFunctions, functions)) in visitor.Types)
|
||||
{
|
||||
rewriter.Types[name] = (
|
||||
|
@ -157,16 +203,20 @@ public class PrettifyNames(
|
|||
}
|
||||
}
|
||||
|
||||
foreach (var (name, (newName, nonFunctions, functions)) in rewriter.Types)
|
||||
if (logger.IsEnabled(LogLevel.Debug))
|
||||
{
|
||||
logger.LogDebug("{} = {}", name, newName);
|
||||
foreach (var (old, @new) in nonFunctions ?? new())
|
||||
foreach (var (name, (newName, nonFunctions, functions)) in rewriter.Types)
|
||||
{
|
||||
logger.LogDebug("{}.{} = {}.{}", name, old, newName, @new);
|
||||
}
|
||||
foreach (var (old, @new) in functions ?? new())
|
||||
{
|
||||
logger.LogDebug("{}.{} = {}.{}", name, old, newName, @new);
|
||||
logger.LogDebug("{} = {}", name, newName);
|
||||
foreach (var (old, @new) in nonFunctions ?? new())
|
||||
{
|
||||
logger.LogDebug("{}.{} = {}.{}", name, old, newName, @new);
|
||||
}
|
||||
|
||||
foreach (var (old, @new) in functions ?? new())
|
||||
{
|
||||
logger.LogDebug("{}.{} = {}.{}", name, old, newName, @new);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -198,9 +248,60 @@ public class PrettifyNames(
|
|||
Dictionary<string, (string Primary, List<string>? Secondary)> names,
|
||||
Dictionary<string, string>? prefixOverrides,
|
||||
IEnumerable<INameTrimmer> trimmers,
|
||||
Dictionary<string, string>? nameOverrides,
|
||||
HashSet<string> nonDeterminant,
|
||||
Dictionary<string, IEnumerable<MethodDeclarationSyntax>>? functionSyntax = null
|
||||
)
|
||||
{
|
||||
// Ensure the trimmers don't see names that have been manually overridden, as we don't want them to influence
|
||||
// automatic prefix determination for example
|
||||
var namesToTrim = names;
|
||||
foreach (
|
||||
var (nativeName, overriddenName) in nameOverrides
|
||||
?? Enumerable.Empty<KeyValuePair<string, string>>()
|
||||
)
|
||||
{
|
||||
var nameToAdd = nativeName;
|
||||
if (nativeName.Contains('.'))
|
||||
{
|
||||
// We're processing a type dictionary, so don't add a member thing.
|
||||
if (container is null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check whether the override is for this type.
|
||||
var span = container.AsSpan();
|
||||
if (span[..span.IndexOf('.')] == "*" || span[..span.IndexOf('.')] == container)
|
||||
{
|
||||
nameToAdd = span[(span.IndexOf('.') + 1)..].ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!namesToTrim.TryGetValue(nameToAdd, out var v))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// If we haven't created the differentiated dictionary yet, then do so now. We do want to keep the original
|
||||
// dictionary so we can actually apply the renames; if we have created two different branching dictionaries
|
||||
// they are recombined following trimming.
|
||||
if (namesToTrim == names)
|
||||
{
|
||||
namesToTrim = namesToTrim.ToDictionary();
|
||||
}
|
||||
|
||||
// Don't let the trimmers see the overridden native name.
|
||||
namesToTrim.Remove(nameToAdd);
|
||||
|
||||
// Apply the name override to the dictionary we actually use.
|
||||
names[nameToAdd] = (overriddenName, [..v.Secondary, nameToAdd]);
|
||||
}
|
||||
|
||||
// Run each trimmer
|
||||
string? identifiedPrefix = null;
|
||||
foreach (var trimmer in trimmers)
|
||||
|
@ -211,10 +312,20 @@ public class PrettifyNames(
|
|||
key,
|
||||
names,
|
||||
prefixOverrides,
|
||||
nonDeterminant,
|
||||
ref identifiedPrefix
|
||||
);
|
||||
}
|
||||
|
||||
// Apply changes.
|
||||
if (namesToTrim != names)
|
||||
{
|
||||
foreach (var (evalName, result) in namesToTrim)
|
||||
{
|
||||
names[evalName] = result;
|
||||
}
|
||||
}
|
||||
|
||||
// Prefer shorter names
|
||||
foreach (var (trimmingName, (primary, secondary)) in names)
|
||||
{
|
||||
|
@ -469,6 +580,8 @@ public class PrettifyNames(
|
|||
> Types = new();
|
||||
|
||||
public Dictionary<string, List<string>> PrettifyOnlyTypes = new();
|
||||
public required Dictionary<string, string> NameOverrides { get; init; }
|
||||
public HashSet<string> NonDeterminant { get; } = [];
|
||||
private (
|
||||
ClassDeclarationSyntax Class,
|
||||
List<string> NonFunctions,
|
||||
|
@ -481,28 +594,41 @@ public class PrettifyNames(
|
|||
public override void VisitClassDeclaration(ClassDeclarationSyntax node)
|
||||
{
|
||||
if (
|
||||
_classInProgress is not null
|
||||
|| _enumInProgress is not null
|
||||
|| node.Ancestors().OfType<BaseTypeDeclarationSyntax>().Any()
|
||||
_classInProgress is not null // nesting is ignored for now
|
||||
|| _enumInProgress is not null // class nested in an enum, wtf?
|
||||
|| node.Ancestors().OfType<BaseTypeDeclarationSyntax>().Any() // again... nesting is ignored.
|
||||
)
|
||||
{
|
||||
// ignoring nesting for now
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
node.AttributeLists.Any(x =>
|
||||
x.Attributes.Any(y => y.IsAttribute("Silk.NET.Core.Transformed"))
|
||||
)
|
||||
)
|
||||
{
|
||||
NonDeterminant.Add(node.Identifier.ToString());
|
||||
}
|
||||
|
||||
_classInProgress = (
|
||||
node,
|
||||
new List<string>(),
|
||||
new List<(string, MethodDeclarationSyntax)>()
|
||||
);
|
||||
|
||||
// Recurse into the members.
|
||||
base.VisitClassDeclaration(node);
|
||||
var id = _classInProgress.Value.Class.Identifier.ToString();
|
||||
var id = node.Identifier.ToString();
|
||||
|
||||
// Tolerate partial classes.
|
||||
if (!Types.TryGetValue(id, out var inner))
|
||||
{
|
||||
inner = (new List<string>(), new List<(string, MethodDeclarationSyntax)>());
|
||||
Types.Add(id, inner);
|
||||
}
|
||||
|
||||
// Merge with the other partials.
|
||||
(inner.NonFunctions ??= new List<string>()).AddRange(
|
||||
_classInProgress.Value.NonFunctions
|
||||
);
|
||||
|
@ -514,11 +640,13 @@ public class PrettifyNames(
|
|||
|
||||
public override void VisitFieldDeclaration(FieldDeclarationSyntax node)
|
||||
{
|
||||
// Can't have a field within a field or an enum. This is basically a "wtf" check.
|
||||
if (_visitingField is not null || _enumInProgress is not null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// If it's not a constant then we only prettify.
|
||||
if (
|
||||
!node.Modifiers.Any(SyntaxKind.ConstKeyword)
|
||||
&& (
|
||||
|
@ -584,6 +712,15 @@ public class PrettifyNames(
|
|||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
node.AttributeLists.Any(x =>
|
||||
x.Attributes.Any(y => y.IsAttribute("Silk.NET.Core.Transformed"))
|
||||
)
|
||||
)
|
||||
{
|
||||
NonDeterminant.Add(node.Identifier.ToString());
|
||||
}
|
||||
|
||||
Types[node.Identifier.ToString()] = (null, null);
|
||||
base.VisitStructDeclaration(node);
|
||||
}
|
||||
|
@ -599,6 +736,15 @@ public class PrettifyNames(
|
|||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
node.AttributeLists.Any(x =>
|
||||
x.Attributes.Any(y => y.IsAttribute("Silk.NET.Core.Transformed"))
|
||||
)
|
||||
)
|
||||
{
|
||||
NonDeterminant.Add(node.Identifier.ToString());
|
||||
}
|
||||
|
||||
_enumInProgress = (node, new List<string>());
|
||||
base.VisitEnumDeclaration(node);
|
||||
var id = _enumInProgress.Value.Enum.Identifier.ToString();
|
||||
|
|
|
@ -25,6 +25,7 @@ public interface INameTrimmer
|
|||
/// <param name="jobKey">The job key.</param>
|
||||
/// <param name="names">The names within the container.</param>
|
||||
/// <param name="prefixOverrides">The prefix overrides.</param>
|
||||
/// <param name="nonDeterminant">Names that should not be treated as determinant of the identified prefix.</param>
|
||||
/// <param name="identifiedPrefix">The prefix identified that this trimmer is trimming from the functions.</param>
|
||||
void Trim(
|
||||
string? container,
|
||||
|
@ -32,6 +33,7 @@ public interface INameTrimmer
|
|||
string? jobKey,
|
||||
Dictionary<string, (string Primary, List<string>? Secondary)>? names,
|
||||
Dictionary<string, string>? prefixOverrides,
|
||||
HashSet<string>? nonDeterminant,
|
||||
ref string? identifiedPrefix
|
||||
);
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ public class NameTrimmer : INameTrimmer
|
|||
string? jobKey,
|
||||
Dictionary<string, (string Primary, List<string>? Secondary)>? names,
|
||||
Dictionary<string, string>? prefixOverrides,
|
||||
HashSet<string>? nonDeterminant,
|
||||
ref string? identifiedPrefix
|
||||
)
|
||||
{
|
||||
|
@ -53,6 +54,7 @@ public class NameTrimmer : INameTrimmer
|
|||
hint,
|
||||
names,
|
||||
prefixOverrides,
|
||||
nonDeterminant,
|
||||
i == 0,
|
||||
naive = i == 2
|
||||
);
|
||||
|
@ -109,7 +111,7 @@ public class NameTrimmer : INameTrimmer
|
|||
{
|
||||
continue;
|
||||
}
|
||||
var sec = secondary ?? new List<string>();
|
||||
var sec = secondary ?? [];
|
||||
sec.Add(oldPrimary);
|
||||
// this was trimmingName originally. given that we're using trimming name to determine a prefix but then
|
||||
// using that prefix on the old primary, this could cause intended behaviour in some cases. there's probably
|
||||
|
@ -128,6 +130,7 @@ public class NameTrimmer : INameTrimmer
|
|||
/// <param name="hint">The global prefix hint if applicable.</param>
|
||||
/// <param name="names">The names to get a prefix for.</param>
|
||||
/// <param name="prefixOverrides">Prefix overrides.</param>
|
||||
/// <param name="nonDeterminant">List of names that should not be used for prefix determination.</param>
|
||||
/// <param name="getTrimmingName">
|
||||
/// Whether to use <see cref="GetTrimmingName"/> or to use the native name as-is.
|
||||
/// </param>
|
||||
|
@ -147,6 +150,7 @@ public class NameTrimmer : INameTrimmer
|
|||
string? hint,
|
||||
Dictionary<string, (string Primary, List<string>? Secondary)>? names,
|
||||
Dictionary<string, string>? prefixOverrides,
|
||||
HashSet<string>? nonDeterminant,
|
||||
bool getTrimmingName,
|
||||
bool naive
|
||||
)
|
||||
|
@ -185,13 +189,19 @@ public class NameTrimmer : INameTrimmer
|
|||
? @override
|
||||
: names.Count == 1 && !string.IsNullOrWhiteSpace(containerTrimmingName)
|
||||
? NameUtils.FindCommonPrefix(
|
||||
new List<string> { names.Keys.First(), containerTrimmingName },
|
||||
[
|
||||
names.Keys.First(x => !(nonDeterminant?.Contains(x) ?? false)),
|
||||
containerTrimmingName
|
||||
],
|
||||
true,
|
||||
false,
|
||||
naive
|
||||
)
|
||||
: NameUtils.FindCommonPrefix(
|
||||
localNames.Keys.ToList(),
|
||||
localNames
|
||||
.Where(x => !(nonDeterminant?.Contains(x.Value.Key) ?? false))
|
||||
.Select(x => x.Key)
|
||||
.ToList(),
|
||||
// If naive mode is on and we're trimming type names, allow full matches (method class is
|
||||
// probably the prefix)
|
||||
naive && container is null,
|
||||
|
@ -201,8 +211,9 @@ public class NameTrimmer : INameTrimmer
|
|||
|
||||
// If any of the children's trimming name is shorter than the prefix length,
|
||||
if (
|
||||
localNames.Keys.Any(x => x.Length <= prefix.Length)
|
||||
&& !string.IsNullOrWhiteSpace(containerTrimmingName)
|
||||
localNames.Keys.Any(x =>
|
||||
x.Length <= prefix.Length && !(nonDeterminant?.Contains(x) ?? false)
|
||||
) && !string.IsNullOrWhiteSpace(containerTrimmingName)
|
||||
)
|
||||
{
|
||||
// Do a second pass, but put the container name in the loop to see if it makes a difference
|
||||
|
|
|
@ -46,7 +46,7 @@ public static partial class NameUtils
|
|||
/// </param>
|
||||
/// <returns>String that is common between all provided names</returns>
|
||||
public static string FindCommonPrefix(
|
||||
List<string> names,
|
||||
IReadOnlyList<string> names,
|
||||
bool allowFullMatch,
|
||||
bool allowLeadingDigits,
|
||||
bool naive = false
|
||||
|
@ -82,7 +82,7 @@ public static partial class NameUtils
|
|||
/// </param>
|
||||
/// <returns>String that is common between all provided names</returns>
|
||||
public static string FindCommonPrefix(
|
||||
List<string> names,
|
||||
IReadOnlyList<string> names,
|
||||
bool allowFullMatch,
|
||||
int maxLen,
|
||||
bool naive = false
|
||||
|
|
|
@ -30,7 +30,4 @@
|
|||
<EmbeddedResource Include="Clang\VisualStudioVarPrint.bat" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Update="NUnit" Version="4.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -10,13 +10,31 @@ public class Ptr2DTests
|
|||
public unsafe void NullIsNull()
|
||||
{
|
||||
Ptr2D<nint> ptr = nullptr;
|
||||
Assert.True(((delegate*<ref Ptr<nint>, bool>)(delegate*<ref readonly int, bool>)&Unsafe.IsNullRef<int>)(
|
||||
ref ((delegate*<in Ptr<nint>, ref Ptr<nint>>)(delegate*<ref readonly int, ref int>)&Unsafe.AsRef<int>)(
|
||||
in ptr.Handle)));
|
||||
Assert.True(((delegate*<ref Ptr<nint>, bool>)(delegate*<ref readonly int, bool>)&Unsafe.IsNullRef<int>)(
|
||||
ref ((delegate*<in Ptr<nint>, ref Ptr<nint>>)(delegate*<ref readonly int, ref int>)&Unsafe.AsRef<int>)(
|
||||
in ptr[0])));
|
||||
Assert.True((nint**)ptr is null);
|
||||
Assert.True((void**)ptr is null);
|
||||
Assert.That(
|
||||
(
|
||||
(delegate* <ref Ptr<nint>, bool>)
|
||||
(delegate* <ref readonly int, bool>)&Unsafe.IsNullRef<int>
|
||||
)(
|
||||
ref (
|
||||
(delegate* <in Ptr<nint>, ref Ptr<nint>>)
|
||||
(delegate* <ref readonly int, ref int>)&Unsafe.AsRef<int>
|
||||
)(in ptr.Handle)
|
||||
),
|
||||
Is.True
|
||||
);
|
||||
Assert.That(
|
||||
(
|
||||
(delegate* <ref Ptr<nint>, bool>)
|
||||
(delegate* <ref readonly int, bool>)&Unsafe.IsNullRef<int>
|
||||
)(
|
||||
ref (
|
||||
(delegate* <in Ptr<nint>, ref Ptr<nint>>)
|
||||
(delegate* <ref readonly int, ref int>)&Unsafe.AsRef<int>
|
||||
)(in ptr[0])
|
||||
),
|
||||
Is.True
|
||||
);
|
||||
Assert.That((nint**)ptr is null, Is.True);
|
||||
Assert.That((void**)ptr is null, Is.True);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,10 +10,13 @@ public class PtrTests
|
|||
public unsafe void NullIsNull()
|
||||
{
|
||||
Ptr<nint> ptr = nullptr;
|
||||
Assert.True(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr.Handle)));
|
||||
Assert.True(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr[0])));
|
||||
Assert.True(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr.GetPinnableReference())));
|
||||
Assert.True((nint*) ptr is null);
|
||||
Assert.True((void*) ptr is null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr.Handle)), Is.True);
|
||||
Assert.That(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr[0])), Is.True);
|
||||
Assert.That(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr.GetPinnableReference())), Is.True);
|
||||
Assert.That((nint*)ptr is null, Is.True);
|
||||
Assert.That((void*)ptr is null, Is.True);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,10 @@ public class Ref2DTests
|
|||
Assert.That((string)thingPtr.Ref, Is.EqualTo(STR_1));
|
||||
Assert.That((string)thingPtr[0], Is.EqualTo(STR_1));
|
||||
Assert.That(thingPtr[0][0], Is.EqualTo(STR_1[0]));
|
||||
Assert.That(Encoding.UTF8.GetString(thingPtr[0].AsSpan(Encoding.UTF8.GetByteCount(STR_1))), Is.EqualTo(STR_1));
|
||||
Assert.That(
|
||||
Encoding.UTF8.GetString(thingPtr[0].AsSpan(Encoding.UTF8.GetByteCount(STR_1))),
|
||||
Is.EqualTo(STR_1)
|
||||
);
|
||||
Assert.That(thingPtr.ReadToStringArray(length: 1)?[0], Is.EqualTo(STR_1));
|
||||
}
|
||||
|
||||
|
@ -40,8 +43,12 @@ public class Ref2DTests
|
|||
Assert.That(thingPtr[0][0], Is.EqualTo(STR_1[0]));
|
||||
Assert.That(
|
||||
Encoding.UTF32.GetString(
|
||||
MemoryMarshal.Cast<uint, byte>(thingPtr[0].AsSpan(Encoding.UTF32.GetByteCount(STR_1) / 4))),
|
||||
Is.EqualTo(STR_1));
|
||||
MemoryMarshal.Cast<uint, byte>(
|
||||
thingPtr[0].AsSpan(Encoding.UTF32.GetByteCount(STR_1) / 4)
|
||||
)
|
||||
),
|
||||
Is.EqualTo(STR_1)
|
||||
);
|
||||
Assert.That(thingPtr.ReadToStringArray(length: 1)?[0], Is.EqualTo(STR_1));
|
||||
}
|
||||
|
||||
|
@ -54,8 +61,10 @@ public class Ref2DTests
|
|||
Assert.That((string)thingPtr.Ref, Is.EqualTo(STR_1));
|
||||
Assert.That((string)thingPtr[0], Is.EqualTo(STR_1));
|
||||
Assert.That(thingPtr[0][0], Is.EqualTo(STR_1[0]));
|
||||
Assert.That(Encoding.UTF8.GetString(thingPtr[0].AsSpan(Encoding.UTF8.GetByteCount(STR_1))),
|
||||
Is.EqualTo(STR_1));
|
||||
Assert.That(
|
||||
Encoding.UTF8.GetString(thingPtr[0].AsSpan(Encoding.UTF8.GetByteCount(STR_1))),
|
||||
Is.EqualTo(STR_1)
|
||||
);
|
||||
Assert.That(thingPtr.ReadToStringArray(length: 1)?[0], Is.EqualTo(STR_1));
|
||||
}
|
||||
}
|
||||
|
@ -85,8 +94,12 @@ public class Ref2DTests
|
|||
Assert.That(thingPtr[0][0], Is.EqualTo(STR_1[0]));
|
||||
Assert.That(
|
||||
Encoding.UTF32.GetString(
|
||||
MemoryMarshal.Cast<uint, byte>(thingPtr[0].AsSpan(Encoding.UTF32.GetByteCount(STR_1) / 4))),
|
||||
Is.EqualTo(STR_1));
|
||||
MemoryMarshal.Cast<uint, byte>(
|
||||
thingPtr[0].AsSpan(Encoding.UTF32.GetByteCount(STR_1) / 4)
|
||||
)
|
||||
),
|
||||
Is.EqualTo(STR_1)
|
||||
);
|
||||
Assert.That(thingPtr.ReadToStringArray(length: 1)?[0], Is.EqualTo(STR_1));
|
||||
}
|
||||
}
|
||||
|
@ -98,15 +111,18 @@ public class Ref2DTests
|
|||
Assert.That((string)thingPtr.Ref, Is.EqualTo(STR_1));
|
||||
Assert.That((string)thingPtr[0], Is.EqualTo(STR_1));
|
||||
Assert.That(thingPtr[0][0], Is.EqualTo(STR_1[0]));
|
||||
Assert.That(Encoding.UTF8.GetString(thingPtr[0].AsSpan(Encoding.UTF8.GetByteCount(STR_1))),
|
||||
Is.EqualTo(STR_1));
|
||||
Assert.That(
|
||||
Encoding.UTF8.GetString(thingPtr[0].AsSpan(Encoding.UTF8.GetByteCount(STR_1))),
|
||||
Is.EqualTo(STR_1)
|
||||
);
|
||||
Assert.That(thingPtr.ReadToStringArray(length: 1)?[0], Is.EqualTo(STR_1));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public unsafe void SingleStringPtrUtf16FromJaggedArray()
|
||||
{
|
||||
Ref2D<char> thingPtr = new[] {
|
||||
Ref2D<char> thingPtr = new[]
|
||||
{
|
||||
MemoryMarshal.Cast<byte, char>(Encoding.Unicode.GetBytes(STR_1 + "\0")).ToArray()
|
||||
};
|
||||
Assert.That((string)thingPtr.Ref, Is.EqualTo(STR_1));
|
||||
|
@ -119,15 +135,21 @@ public class Ref2DTests
|
|||
[Test]
|
||||
public unsafe void SingleStringPtrUtf32FromJaggedArray()
|
||||
{
|
||||
Ref2D<uint> thingPtr =
|
||||
new[] { MemoryMarshal.Cast<byte, uint>(Encoding.UTF32.GetBytes(STR_1 + "\0")).ToArray() };
|
||||
Ref2D<uint> thingPtr = new[]
|
||||
{
|
||||
MemoryMarshal.Cast<byte, uint>(Encoding.UTF32.GetBytes(STR_1 + "\0")).ToArray()
|
||||
};
|
||||
Assert.That((string)thingPtr.Ref, Is.EqualTo(STR_1));
|
||||
Assert.That((string)thingPtr[0], Is.EqualTo(STR_1));
|
||||
Assert.That(thingPtr[0][0], Is.EqualTo(STR_1[0]));
|
||||
Assert.That(
|
||||
Encoding.UTF32.GetString(
|
||||
MemoryMarshal.Cast<uint, byte>(thingPtr[0].AsSpan(Encoding.UTF32.GetByteCount(STR_1) / 4))),
|
||||
Is.EqualTo(STR_1));
|
||||
MemoryMarshal.Cast<uint, byte>(
|
||||
thingPtr[0].AsSpan(Encoding.UTF32.GetByteCount(STR_1) / 4)
|
||||
)
|
||||
),
|
||||
Is.EqualTo(STR_1)
|
||||
);
|
||||
Assert.That(thingPtr.ReadToStringArray(length: 1)?[0], Is.EqualTo(STR_1));
|
||||
}
|
||||
|
||||
|
@ -140,8 +162,10 @@ public class Ref2DTests
|
|||
Assert.That((string)thingPtr.Ref, Is.EqualTo(STR_1));
|
||||
Assert.That((string)thingPtr[0], Is.EqualTo(STR_1));
|
||||
Assert.That(thingPtr[0][0], Is.EqualTo(STR_1[0]));
|
||||
Assert.That(Encoding.UTF8.GetString(thingPtr[0].AsSpan(Encoding.UTF8.GetByteCount(STR_1))),
|
||||
Is.EqualTo(STR_1));
|
||||
Assert.That(
|
||||
Encoding.UTF8.GetString(thingPtr[0].AsSpan(Encoding.UTF8.GetByteCount(STR_1))),
|
||||
Is.EqualTo(STR_1)
|
||||
);
|
||||
Assert.That(thingPtr.ReadToStringArray(length: 1)?[0], Is.EqualTo(STR_1));
|
||||
}
|
||||
}
|
||||
|
@ -171,8 +195,12 @@ public class Ref2DTests
|
|||
Assert.That(thingPtr[0][0], Is.EqualTo(STR_1[0]));
|
||||
Assert.That(
|
||||
Encoding.UTF32.GetString(
|
||||
MemoryMarshal.Cast<uint, byte>(thingPtr[0].AsSpan(Encoding.UTF32.GetByteCount(STR_1) / 4))),
|
||||
Is.EqualTo(STR_1));
|
||||
MemoryMarshal.Cast<uint, byte>(
|
||||
thingPtr[0].AsSpan(Encoding.UTF32.GetByteCount(STR_1) / 4)
|
||||
)
|
||||
),
|
||||
Is.EqualTo(STR_1)
|
||||
);
|
||||
Assert.That(thingPtr.ReadToStringArray(length: 1)?[0], Is.EqualTo(STR_1));
|
||||
}
|
||||
}
|
||||
|
@ -181,16 +209,43 @@ public class Ref2DTests
|
|||
public unsafe void NullIsNull()
|
||||
{
|
||||
Ref2D<nint> ptr = nullptr;
|
||||
Assert.True(((delegate*<ref Ref<nint>, bool>)(delegate*<ref readonly int, bool>)&Unsafe.IsNullRef<int>)(
|
||||
ref ((delegate*<in Ref<nint>, ref Ref<nint>>)(delegate*<ref readonly int, ref int>)&Unsafe.AsRef<int>)(
|
||||
in ptr.Ref)));
|
||||
Assert.True(((delegate*<ref Ref<nint>, bool>)(delegate*<ref readonly int, bool>)&Unsafe.IsNullRef<int>)(
|
||||
ref ((delegate*<in Ref<nint>, ref Ref<nint>>)(delegate*<ref readonly int, ref int>)&Unsafe.AsRef<int>)(
|
||||
in ptr[0])));
|
||||
Assert.True(((delegate*<ref nint*, bool>)(delegate*<ref readonly int, bool>)&Unsafe.IsNullRef<int>)(
|
||||
ref ((delegate*<in nint*, ref nint*>)(delegate*<ref readonly int, ref int>)&Unsafe.AsRef<int>)(
|
||||
in ptr.GetPinnableReference())));
|
||||
Assert.True((nint**) ptr is null);
|
||||
Assert.True((void**) ptr is null);
|
||||
Assert.That(
|
||||
(
|
||||
(delegate* <ref Ref<nint>, bool>)
|
||||
(delegate* <ref readonly int, bool>)&Unsafe.IsNullRef<int>
|
||||
)(
|
||||
ref (
|
||||
(delegate* <in Ref<nint>, ref Ref<nint>>)
|
||||
(delegate* <ref readonly int, ref int>)&Unsafe.AsRef<int>
|
||||
)(in ptr.Ref)
|
||||
),
|
||||
Is.True
|
||||
);
|
||||
Assert.That(
|
||||
(
|
||||
(delegate* <ref Ref<nint>, bool>)
|
||||
(delegate* <ref readonly int, bool>)&Unsafe.IsNullRef<int>
|
||||
)(
|
||||
ref (
|
||||
(delegate* <in Ref<nint>, ref Ref<nint>>)
|
||||
(delegate* <ref readonly int, ref int>)&Unsafe.AsRef<int>
|
||||
)(in ptr[0])
|
||||
),
|
||||
Is.True
|
||||
);
|
||||
Assert.That(
|
||||
(
|
||||
(delegate* <ref nint*, bool>)
|
||||
(delegate* <ref readonly int, bool>)&Unsafe.IsNullRef<int>
|
||||
)(
|
||||
ref (
|
||||
(delegate* <in nint*, ref nint*>)
|
||||
(delegate* <ref readonly int, ref int>)&Unsafe.AsRef<int>
|
||||
)(in ptr.GetPinnableReference())
|
||||
),
|
||||
Is.True
|
||||
);
|
||||
Assert.That((nint**)ptr is null, Is.True);
|
||||
Assert.That((void**)ptr is null, Is.True);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -82,10 +82,10 @@ public class RefTests
|
|||
public unsafe void NullIsNull()
|
||||
{
|
||||
Ref<nint> ptr = nullptr;
|
||||
Assert.True(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr.Handle)));
|
||||
Assert.True(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr[0])));
|
||||
Assert.True(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr.GetPinnableReference())));
|
||||
Assert.True((nint*) ptr is null);
|
||||
Assert.True((void*) ptr is null);
|
||||
Assert.That(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr.Handle)), Is.True);
|
||||
Assert.That(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr[0])), Is.True);
|
||||
Assert.That(Unsafe.IsNullRef(ref Unsafe.AsRef(in ptr.GetPinnableReference())), Is.True);
|
||||
Assert.That((nint*) ptr is null, Is.True);
|
||||
Assert.That((void*) ptr is null, Is.True);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,10 +11,13 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
|
||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
|
||||
<PackageReference Include="NUnit.Analyzers" Version="4.1.0" />
|
||||
<PackageReference Include="NUnit.Analyzers" Version="4.1.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.2" />
|
||||
<PackageReference Update="NUnit" Version="4.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -0,0 +1,137 @@
|
|||
[opencl] cl_amd_device_attribute_query (extension) =
|
||||
[opencl] cl_APPLE_ContextLoggingFunctions (extension) =
|
||||
[opencl] cl_APPLE_SetMemObjectDestructor (extension) =
|
||||
[opencl] cl_arm_controlled_kernel_termination (extension) =
|
||||
[opencl] cl_arm_get_core_id (extension) =
|
||||
[opencl] cl_arm_import_memory (extension) =
|
||||
[opencl] cl_arm_job_slot_selection (extension) =
|
||||
[opencl] cl_arm_printf (extension) =
|
||||
[opencl] cl_arm_protected_memory_allocation (extension) =
|
||||
[opencl] cl_arm_scheduling_controls (extension) =
|
||||
[opencl] cl_arm_shared_virtual_memory (extension) =
|
||||
[opencl] cl_ext_cxx_for_opencl (extension) =
|
||||
[opencl] cl_ext_device_fission (extension) =
|
||||
[opencl] cl_ext_float_atomics (extension) =
|
||||
[opencl] cl_ext_image_from_buffer (extension) =
|
||||
[opencl] cl_ext_image_raw10_raw12 (extension) =
|
||||
[opencl] cl_ext_image_requirements_info (extension) =
|
||||
[opencl] cl_ext_migrate_memobject (extension) =
|
||||
[opencl] cl_img_cached_allocations (extension) =
|
||||
[opencl] cl_img_cancel_command (extension) =
|
||||
[opencl] cl_img_generate_mipmap (extension) =
|
||||
[opencl] cl_img_mem_properties (extension) =
|
||||
[opencl] cl_img_use_gralloc_ptr (extension) =
|
||||
[opencl] cl_img_yuv_image (extension) =
|
||||
[opencl] cl_intel_accelerator (extension) =
|
||||
[opencl] cl_intel_advanced_motion_estimation (extension) =
|
||||
[opencl] cl_intel_command_queue_families (extension) =
|
||||
[opencl] cl_intel_create_buffer_with_properties (extension) =
|
||||
[opencl] cl_intel_create_mem_object_properties (extension) =
|
||||
[opencl] cl_intel_device_attribute_query (extension) =
|
||||
[opencl] cl_intel_device_partition_by_names (extension) =
|
||||
[opencl] cl_intel_device_side_avc_motion_estimation (extension) =
|
||||
[opencl] cl_intel_driver_diagnostics (extension) =
|
||||
[opencl] cl_intel_dx9_media_sharing (extension) =
|
||||
[opencl] cl_intel_egl_image_yuv (extension) =
|
||||
[opencl] cl_intel_exec_by_local_thread (extension) =
|
||||
[opencl] cl_intel_mem_alloc_buffer_location (extension) =
|
||||
[opencl] cl_intel_mem_channel_property (extension) =
|
||||
[opencl] cl_intel_mem_force_host_memory (extension) =
|
||||
[opencl] cl_intel_motion_estimation (extension) =
|
||||
[opencl] cl_intel_packed_yuv (extension) =
|
||||
[opencl] cl_intel_planar_yuv (extension) =
|
||||
[opencl] cl_intel_program_scope_host_pipe (extension) =
|
||||
[opencl] cl_intel_queue_no_sync_operations (extension) =
|
||||
[opencl] cl_intel_required_subgroup_size (extension) =
|
||||
[opencl] cl_intel_sharing_format_query (extension) =
|
||||
[opencl] cl_intel_sharing_format_query_d3d10 (extension) =
|
||||
[opencl] cl_intel_sharing_format_query_d3d11 (extension) =
|
||||
[opencl] cl_intel_sharing_format_query_dx9 (extension) =
|
||||
[opencl] cl_intel_sharing_format_query_gl (extension) =
|
||||
[opencl] cl_intel_sharing_format_query_va_api (extension) =
|
||||
[opencl] cl_intel_simultaneous_sharing (extension) =
|
||||
[opencl] cl_intel_unified_shared_memory (extension) =
|
||||
[opencl] cl_intel_va_api_media_sharing (extension) =
|
||||
[opencl] cl_khr_3d_image_writes (extension) =
|
||||
[opencl] cl_khr_async_work_group_copy_fence (extension) =
|
||||
[opencl] cl_khr_byte_addressable_store (extension) =
|
||||
[opencl] cl_khr_command_buffer (extension) = CL_VERSION_1_2
|
||||
[opencl] cl_khr_command_buffer_multi_device (extension) = cl_khr_command_buffer
|
||||
[opencl] cl_khr_command_buffer_mutable_dispatch (extension) = cl_khr_command_buffer
|
||||
[opencl] cl_khr_create_command_queue (extension) =
|
||||
[opencl] cl_khr_d3d10_sharing (extension) =
|
||||
[opencl] cl_khr_d3d11_sharing (extension) =
|
||||
[opencl] cl_khr_depth_images (extension) =
|
||||
[opencl] cl_khr_device_enqueue_local_arg_types (extension) =
|
||||
[opencl] cl_khr_device_uuid (extension) =
|
||||
[opencl] cl_khr_dx9_media_sharing (extension) =
|
||||
[opencl] cl_khr_egl_event (extension) =
|
||||
[opencl] cl_khr_egl_image (extension) =
|
||||
[opencl] cl_khr_expect_assume (extension) =
|
||||
[opencl] cl_khr_extended_async_copies (extension) =
|
||||
[opencl] cl_khr_extended_bit_ops (extension) =
|
||||
[opencl] cl_khr_extended_versioning (extension) =
|
||||
[opencl] cl_khr_external_memory (extension) = CL_VERSION_3_0
|
||||
[opencl] cl_khr_external_memory_dma_buf (extension) = cl_khr_external_memory, CL_VERSION_3_0
|
||||
[opencl] cl_khr_external_memory_dx (extension) = cl_khr_external_memory, CL_VERSION_3_0
|
||||
[opencl] cl_khr_external_memory_opaque_fd (extension) = cl_khr_external_memory, CL_VERSION_3_0
|
||||
[opencl] cl_khr_external_memory_win32 (extension) = cl_khr_external_memory, CL_VERSION_3_0
|
||||
[opencl] cl_khr_external_semaphore (extension) = cl_khr_semaphore, CL_VERSION_1_2
|
||||
[opencl] cl_khr_external_semaphore_dx_fence (extension) = cl_khr_external_semaphore, cl_khr_semaphore, CL_VERSION_1_2
|
||||
[opencl] cl_khr_external_semaphore_opaque_fd (extension) = cl_khr_external_semaphore, cl_khr_semaphore, CL_VERSION_1_2
|
||||
[opencl] cl_khr_external_semaphore_sync_fd (extension) = cl_khr_external_semaphore, cl_khr_semaphore, CL_VERSION_1_2
|
||||
[opencl] cl_khr_external_semaphore_win32 (extension) = cl_khr_external_semaphore, cl_khr_semaphore, CL_VERSION_1_2
|
||||
[opencl] cl_khr_fp16 (extension) =
|
||||
[opencl] cl_khr_fp64 (extension) =
|
||||
[opencl] cl_khr_gl_depth_images (extension) = cl_khr_gl_sharing
|
||||
[opencl] cl_khr_gl_event (extension) = cl_khr_gl_sharing
|
||||
[opencl] cl_khr_gl_msaa_sharing (extension) = cl_khr_gl_depth_images, cl_khr_gl_sharing
|
||||
[opencl] cl_khr_gl_sharing (extension) =
|
||||
[opencl] cl_khr_global_int32_base_atomics (extension) =
|
||||
[opencl] cl_khr_global_int32_extended_atomics (extension) =
|
||||
[opencl] cl_khr_icd (extension) =
|
||||
[opencl] cl_khr_il_program (extension) =
|
||||
[opencl] cl_khr_image2d_from_buffer (extension) =
|
||||
[opencl] cl_khr_initialize_memory (extension) =
|
||||
[opencl] cl_khr_int64_base_atomics (extension) =
|
||||
[opencl] cl_khr_int64_extended_atomics (extension) =
|
||||
[opencl] cl_khr_integer_dot_product (extension) =
|
||||
[opencl] cl_khr_local_int32_base_atomics (extension) =
|
||||
[opencl] cl_khr_local_int32_extended_atomics (extension) =
|
||||
[opencl] cl_khr_mipmap_image (extension) =
|
||||
[opencl] cl_khr_mipmap_image_writes (extension) = cl_khr_mipmap_image
|
||||
[opencl] cl_khr_pci_bus_info (extension) =
|
||||
[opencl] cl_khr_priority_hints (extension) =
|
||||
[opencl] cl_khr_select_fprounding_mode (extension) =
|
||||
[opencl] cl_khr_semaphore (extension) = CL_VERSION_1_2
|
||||
[opencl] cl_khr_spir (extension) =
|
||||
[opencl] cl_khr_srgb_image_writes (extension) =
|
||||
[opencl] cl_khr_subgroup_ballot (extension) =
|
||||
[opencl] cl_khr_subgroup_clustered_reduce (extension) =
|
||||
[opencl] cl_khr_subgroup_extended_types (extension) =
|
||||
[opencl] cl_khr_subgroup_named_barrier (extension) =
|
||||
[opencl] cl_khr_subgroup_non_uniform_arithmetic (extension) =
|
||||
[opencl] cl_khr_subgroup_non_uniform_vote (extension) =
|
||||
[opencl] cl_khr_subgroup_rotate (extension) =
|
||||
[opencl] cl_khr_subgroup_shuffle (extension) =
|
||||
[opencl] cl_khr_subgroup_shuffle_relative (extension) =
|
||||
[opencl] cl_khr_subgroups (extension) =
|
||||
[opencl] cl_khr_suggested_local_work_size (extension) =
|
||||
[opencl] cl_khr_terminate_context (extension) =
|
||||
[opencl] cl_khr_throttle_hints (extension) =
|
||||
[opencl] cl_khr_work_group_uniform_arithmetic (extension) =
|
||||
[opencl] cl_loader_info (extension) =
|
||||
[opencl] cl_loader_layers (extension) =
|
||||
[opencl] cl_nv_device_attribute_query (extension) =
|
||||
[opencl] cl_pocl_content_size (extension) =
|
||||
[opencl] cl_qcom_android_native_buffer_host_ptr (extension) =
|
||||
[opencl] cl_qcom_ext_host_ptr (extension) =
|
||||
[opencl] cl_qcom_ext_host_ptr_iocoherent (extension) =
|
||||
[opencl] cl_qcom_ion_host_ptr (extension) =
|
||||
[opencl] CL_VERSION_1_0 =
|
||||
[opencl] CL_VERSION_1_1 =
|
||||
[opencl] CL_VERSION_1_2 =
|
||||
[opencl] CL_VERSION_2_0 =
|
||||
[opencl] CL_VERSION_2_1 =
|
||||
[opencl] CL_VERSION_2_2 =
|
||||
[opencl] CL_VERSION_3_0 =
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,73 @@
|
|||
[glx] GLX_3DFX_multisample (extension) =
|
||||
[glx] GLX_AMD_gpu_association (extension) =
|
||||
[glx] GLX_ARB_context_flush_control (extension) =
|
||||
[glx] GLX_ARB_create_context (extension) =
|
||||
[glx] GLX_ARB_create_context_no_error (extension) =
|
||||
[glx] GLX_ARB_create_context_profile (extension) =
|
||||
[glx] GLX_ARB_create_context_robustness (extension) =
|
||||
[glx] GLX_ARB_fbconfig_float (extension) =
|
||||
[glx] GLX_ARB_framebuffer_sRGB (extension) =
|
||||
[glx] GLX_ARB_get_proc_address (extension) =
|
||||
[glx] GLX_ARB_multisample (extension) =
|
||||
[glx] GLX_ARB_robustness_application_isolation (extension) =
|
||||
[glx] GLX_ARB_robustness_share_group_isolation (extension) =
|
||||
[glx] GLX_ARB_vertex_buffer_object (extension) =
|
||||
[glx] GLX_EXT_buffer_age (extension) =
|
||||
[glx] GLX_EXT_context_priority (extension) =
|
||||
[glx] GLX_EXT_create_context_es_profile (extension) =
|
||||
[glx] GLX_EXT_create_context_es2_profile (extension) =
|
||||
[glx] GLX_EXT_fbconfig_packed_float (extension) =
|
||||
[glx] GLX_EXT_framebuffer_sRGB (extension) =
|
||||
[glx] GLX_EXT_get_drawable_type (extension) =
|
||||
[glx] GLX_EXT_import_context (extension) =
|
||||
[glx] GLX_EXT_libglvnd (extension) =
|
||||
[glx] GLX_EXT_no_config_context (extension) =
|
||||
[glx] GLX_EXT_stereo_tree (extension) =
|
||||
[glx] GLX_EXT_swap_control (extension) =
|
||||
[glx] GLX_EXT_swap_control_tear (extension) =
|
||||
[glx] GLX_EXT_texture_from_pixmap (extension) =
|
||||
[glx] GLX_EXT_visual_info (extension) =
|
||||
[glx] GLX_EXT_visual_rating (extension) =
|
||||
[glx] GLX_INTEL_swap_event (extension) =
|
||||
[glx] GLX_MESA_agp_offset (extension) =
|
||||
[glx] GLX_MESA_copy_sub_buffer (extension) =
|
||||
[glx] GLX_MESA_pixmap_colormap (extension) =
|
||||
[glx] GLX_MESA_query_renderer (extension) =
|
||||
[glx] GLX_MESA_release_buffers (extension) =
|
||||
[glx] GLX_MESA_set_3dfx_mode (extension) =
|
||||
[glx] GLX_MESA_swap_control (extension) =
|
||||
[glx] GLX_NV_copy_buffer (extension) =
|
||||
[glx] GLX_NV_copy_image (extension) =
|
||||
[glx] GLX_NV_delay_before_swap (extension) =
|
||||
[glx] GLX_NV_float_buffer (extension) =
|
||||
[glx] GLX_NV_multigpu_context (extension) =
|
||||
[glx] GLX_NV_multisample_coverage (extension) =
|
||||
[glx] GLX_NV_present_video (extension) =
|
||||
[glx] GLX_NV_robustness_video_memory_purge (extension) =
|
||||
[glx] GLX_NV_swap_group (extension) =
|
||||
[glx] GLX_NV_video_capture (extension) =
|
||||
[glx] GLX_NV_video_out (extension) =
|
||||
[glx] GLX_OML_swap_method (extension) =
|
||||
[glx] GLX_OML_sync_control (extension) =
|
||||
[glx] GLX_SGI_cushion (extension) =
|
||||
[glx] GLX_SGI_make_current_read (extension) =
|
||||
[glx] GLX_SGI_swap_control (extension) =
|
||||
[glx] GLX_SGI_video_sync (extension) =
|
||||
[glx] GLX_SGIS_blended_overlay (extension) =
|
||||
[glx] GLX_SGIS_multisample (extension) =
|
||||
[glx] GLX_SGIS_shared_multisample (extension) =
|
||||
[glx] GLX_SGIX_dmbuffer (extension) =
|
||||
[glx] GLX_SGIX_fbconfig (extension) =
|
||||
[glx] GLX_SGIX_hyperpipe (extension) =
|
||||
[glx] GLX_SGIX_pbuffer (extension) =
|
||||
[glx] GLX_SGIX_swap_barrier (extension) =
|
||||
[glx] GLX_SGIX_swap_group (extension) =
|
||||
[glx] GLX_SGIX_video_resize (extension) =
|
||||
[glx] GLX_SGIX_video_source (extension) =
|
||||
[glx] GLX_SGIX_visual_select_group (extension) =
|
||||
[glx] GLX_SUN_get_transparent_index (extension) =
|
||||
[glx] GLX_VERSION_1_0 =
|
||||
[glx] GLX_VERSION_1_1 =
|
||||
[glx] GLX_VERSION_1_2 =
|
||||
[glx] GLX_VERSION_1_3 =
|
||||
[glx] GLX_VERSION_1_4 =
|
|
@ -0,0 +1,446 @@
|
|||
[vulkan] VK_AMD_buffer_marker (extension) =
|
||||
[vulkan] VK_AMD_device_coherent_memory (extension) = VK_AMD_device_coherent_memory+VK_KHR_get_physical_device_properties2, VK_AMD_device_coherent_memory+VK_VERSION_1_1
|
||||
[vulkan] VK_AMD_display_native_hdr (extension) = VK_KHR_get_surface_capabilities2+VK_KHR_swapchain+VK_KHR_get_physical_device_properties2, VK_KHR_get_surface_capabilities2+VK_KHR_swapchain+VK_VERSION_1_1
|
||||
[vulkan] VK_AMD_draw_indirect_count (extension) =
|
||||
[vulkan] VK_AMD_gcn_shader (extension) =
|
||||
[vulkan] VK_AMD_gpu_shader_half_float (extension) =
|
||||
[vulkan] VK_AMD_gpu_shader_int16 (extension) =
|
||||
[vulkan] VK_AMD_memory_overallocation_behavior (extension) =
|
||||
[vulkan] VK_AMD_mixed_attachment_samples (extension) =
|
||||
[vulkan] VK_AMD_negative_viewport_height (extension) =
|
||||
[vulkan] VK_AMD_pipeline_compiler_control (extension) =
|
||||
[vulkan] VK_AMD_rasterization_order (extension) =
|
||||
[vulkan] VK_AMD_shader_ballot (extension) =
|
||||
[vulkan] VK_AMD_shader_core_properties (extension) = VK_AMD_shader_core_properties+VK_KHR_get_physical_device_properties2, VK_AMD_shader_core_properties+VK_VERSION_1_1
|
||||
[vulkan] VK_AMD_shader_core_properties2 (extension) = VK_AMD_shader_core_properties
|
||||
[vulkan] VK_AMD_shader_early_and_late_fragment_tests (extension) = VK_AMD_shader_early_and_late_fragment_tests+VK_KHR_get_physical_device_properties2, VK_AMD_shader_early_and_late_fragment_tests+VK_VERSION_1_1
|
||||
[vulkan] VK_AMD_shader_explicit_vertex_parameter (extension) =
|
||||
[vulkan] VK_AMD_shader_fragment_mask (extension) =
|
||||
[vulkan] VK_AMD_shader_image_load_store_lod (extension) =
|
||||
[vulkan] VK_AMD_shader_info (extension) =
|
||||
[vulkan] VK_AMD_shader_trinary_minmax (extension) =
|
||||
[vulkan] VK_AMD_texture_gather_bias_lod (extension) = VK_AMD_texture_gather_bias_lod+VK_KHR_get_physical_device_properties2, VK_AMD_texture_gather_bias_lod+VK_VERSION_1_1
|
||||
[vulkan] VK_AMDX_shader_enqueue (extension) = VK_KHR_pipeline_library+VK_KHR_spirv_1_4+VK_KHR_synchronization2+VK_KHR_get_physical_device_properties2, VK_KHR_pipeline_library+VK_KHR_spirv_1_4+VK_KHR_synchronization2+VK_VERSION_1_1, VK_KHR_pipeline_library+VK_KHR_spirv_1_4+VK_VERSION_1_3
|
||||
[vulkan] VK_ANDROID_external_format_resolve (extension) = VK_ANDROID_external_memory_android_hardware_buffer
|
||||
[vulkan] VK_ANDROID_external_memory_android_hardware_buffer (extension) = VK_EXT_queue_family_foreign+VK_KHR_sampler_ycbcr_conversion+VK_KHR_external_memory+VK_KHR_dedicated_allocation, VK_EXT_queue_family_foreign+VK_VERSION_1_1
|
||||
[vulkan] VK_ARM_rasterization_order_attachment_access (extension) = VK_ARM_rasterization_order_attachment_access+VK_KHR_get_physical_device_properties2, VK_ARM_rasterization_order_attachment_access+VK_VERSION_1_1
|
||||
[vulkan] VK_ARM_render_pass_striped (extension) = VK_KHR_synchronization2+VK_KHR_get_physical_device_properties2, VK_KHR_synchronization2+VK_VERSION_1_1, VK_VERSION_1_3
|
||||
[vulkan] VK_ARM_scheduling_controls (extension) = VK_ARM_shader_core_builtins
|
||||
[vulkan] VK_ARM_shader_core_builtins (extension) = VK_ARM_shader_core_builtins+VK_KHR_get_physical_device_properties2, VK_ARM_shader_core_builtins+VK_VERSION_1_1
|
||||
[vulkan] VK_ARM_shader_core_properties (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_4444_formats (extension) = VK_EXT_4444_formats+VK_KHR_get_physical_device_properties2, VK_EXT_4444_formats+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_4444_formats (extension) = VK_EXT_4444_formats+VK_KHR_get_physical_device_properties2, VK_EXT_4444_formats+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_acquire_drm_display (extension) = VK_EXT_direct_mode_display
|
||||
[vulkan] VK_EXT_acquire_xlib_display (extension) = VK_EXT_direct_mode_display
|
||||
[vulkansc] VK_EXT_application_parameters (extension) =
|
||||
[vulkan] VK_EXT_astc_decode_mode (extension) = VK_EXT_astc_decode_mode+VK_KHR_get_physical_device_properties2, VK_EXT_astc_decode_mode+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_astc_decode_mode (extension) = VK_EXT_astc_decode_mode+VK_KHR_get_physical_device_properties2, VK_EXT_astc_decode_mode+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_attachment_feedback_loop_dynamic_state (extension) = VK_EXT_attachment_feedback_loop_layout+VK_KHR_get_physical_device_properties2, VK_EXT_attachment_feedback_loop_layout+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_attachment_feedback_loop_layout (extension) = VK_EXT_attachment_feedback_loop_layout+VK_KHR_get_physical_device_properties2, VK_EXT_attachment_feedback_loop_layout+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_blend_operation_advanced (extension) = VK_EXT_blend_operation_advanced+VK_KHR_get_physical_device_properties2, VK_EXT_blend_operation_advanced+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_blend_operation_advanced (extension) = VK_EXT_blend_operation_advanced+VK_KHR_get_physical_device_properties2, VK_EXT_blend_operation_advanced+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_border_color_swizzle (extension) = VK_EXT_custom_border_color
|
||||
[vulkan] VK_EXT_buffer_device_address (extension) = VK_EXT_buffer_device_address+VK_KHR_get_physical_device_properties2, VK_EXT_buffer_device_address+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_calibrated_timestamps (extension) = VK_EXT_calibrated_timestamps+VK_KHR_get_physical_device_properties2, VK_EXT_calibrated_timestamps+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_calibrated_timestamps (extension) = VK_EXT_calibrated_timestamps+VK_KHR_get_physical_device_properties2, VK_EXT_calibrated_timestamps+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_color_write_enable (extension) = VK_EXT_color_write_enable+VK_KHR_get_physical_device_properties2, VK_EXT_color_write_enable+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_color_write_enable (extension) = VK_EXT_color_write_enable+VK_KHR_get_physical_device_properties2, VK_EXT_color_write_enable+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_conditional_rendering (extension) = VK_EXT_conditional_rendering+VK_KHR_get_physical_device_properties2, VK_EXT_conditional_rendering+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_conservative_rasterization (extension) = VK_EXT_conservative_rasterization+VK_KHR_get_physical_device_properties2, VK_EXT_conservative_rasterization+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_conservative_rasterization (extension) = VK_EXT_conservative_rasterization+VK_KHR_get_physical_device_properties2, VK_EXT_conservative_rasterization+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_custom_border_color (extension) = VK_EXT_custom_border_color+VK_KHR_get_physical_device_properties2, VK_EXT_custom_border_color+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_custom_border_color (extension) = VK_EXT_custom_border_color+VK_KHR_get_physical_device_properties2, VK_EXT_custom_border_color+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_debug_marker (extension) = VK_EXT_debug_report
|
||||
[vulkan] VK_EXT_debug_report (extension) =
|
||||
[vulkan] VK_EXT_debug_utils (extension) =
|
||||
[vulkansc] VK_EXT_debug_utils (extension) =
|
||||
[vulkan] VK_EXT_depth_bias_control (extension) = VK_EXT_depth_bias_control+VK_KHR_get_physical_device_properties2, VK_EXT_depth_bias_control+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_depth_clamp_zero_one (extension) = VK_EXT_depth_clamp_zero_one+VK_KHR_get_physical_device_properties2, VK_EXT_depth_clamp_zero_one+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_depth_clip_control (extension) = VK_EXT_depth_clip_control+VK_KHR_get_physical_device_properties2, VK_EXT_depth_clip_control+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_depth_clip_enable (extension) = VK_EXT_depth_clip_enable+VK_KHR_get_physical_device_properties2, VK_EXT_depth_clip_enable+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_depth_clip_enable (extension) = VK_EXT_depth_clip_enable+VK_KHR_get_physical_device_properties2, VK_EXT_depth_clip_enable+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_depth_range_unrestricted (extension) =
|
||||
[vulkansc] VK_EXT_depth_range_unrestricted (extension) =
|
||||
[vulkan] VK_EXT_descriptor_buffer (extension) = VK_KHR_synchronization2+VK_KHR_buffer_device_address+VK_EXT_descriptor_indexing+VK_KHR_get_physical_device_properties2, VK_KHR_synchronization2+VK_KHR_buffer_device_address+VK_EXT_descriptor_indexing+VK_VERSION_1_1, VK_KHR_synchronization2+VK_VERSION_1_2, VK_VERSION_1_3
|
||||
[vulkan] VK_EXT_descriptor_indexing (extension) = VK_KHR_get_physical_device_properties2+VK_KHR_maintenance3, VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_device_address_binding_report (extension) = VK_EXT_debug_utils+VK_KHR_get_physical_device_properties2, VK_EXT_debug_utils+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_device_fault (extension) = VK_EXT_device_fault+VK_KHR_get_physical_device_properties2, VK_EXT_device_fault+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_device_memory_report (extension) = VK_EXT_device_memory_report+VK_KHR_get_physical_device_properties2, VK_EXT_device_memory_report+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_direct_mode_display (extension) = VK_KHR_display
|
||||
[vulkansc] VK_EXT_direct_mode_display (extension) = VK_KHR_display
|
||||
[vulkan] VK_EXT_directfb_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_EXT_discard_rectangles (extension) = VK_EXT_discard_rectangles+VK_KHR_get_physical_device_properties2, VK_EXT_discard_rectangles+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_discard_rectangles (extension) = VK_EXT_discard_rectangles+VK_KHR_get_physical_device_properties2, VK_EXT_discard_rectangles+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_display_control (extension) = VK_EXT_display_surface_counter, VK_KHR_swapchain
|
||||
[vulkansc] VK_EXT_display_control (extension) = VK_EXT_display_surface_counter, VK_KHR_swapchain
|
||||
[vulkan] VK_EXT_display_surface_counter (extension) = VK_KHR_display
|
||||
[vulkansc] VK_EXT_display_surface_counter (extension) = VK_KHR_display
|
||||
[vulkan] VK_EXT_dynamic_rendering_unused_attachments (extension) = VK_KHR_dynamic_rendering+VK_KHR_get_physical_device_properties2, VK_KHR_dynamic_rendering+VK_VERSION_1_1, VK_VERSION_1_3
|
||||
[vulkan] VK_EXT_extended_dynamic_state (extension) = VK_EXT_extended_dynamic_state+VK_KHR_get_physical_device_properties2, VK_EXT_extended_dynamic_state+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_extended_dynamic_state (extension) = VK_EXT_extended_dynamic_state+VK_KHR_get_physical_device_properties2, VK_EXT_extended_dynamic_state+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_extended_dynamic_state2 (extension) = VK_EXT_extended_dynamic_state2+VK_KHR_get_physical_device_properties2, VK_EXT_extended_dynamic_state2+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_extended_dynamic_state2 (extension) = VK_EXT_extended_dynamic_state2+VK_KHR_get_physical_device_properties2, VK_EXT_extended_dynamic_state2+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_extended_dynamic_state3 (extension) = VK_EXT_extended_dynamic_state3+VK_KHR_get_physical_device_properties2, VK_EXT_extended_dynamic_state3+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_external_memory_acquire_unmodified (extension) = VK_EXT_external_memory_acquire_unmodified+VK_KHR_external_memory, VK_EXT_external_memory_acquire_unmodified+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_external_memory_dma_buf (extension) = VK_KHR_external_memory_fd
|
||||
[vulkansc] VK_EXT_external_memory_dma_buf (extension) = VK_KHR_external_memory_fd
|
||||
[vulkan] VK_EXT_external_memory_host (extension) = VK_EXT_external_memory_host+VK_KHR_external_memory, VK_EXT_external_memory_host+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_external_memory_host (extension) = VK_EXT_external_memory_host+VK_KHR_external_memory, VK_EXT_external_memory_host+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_filter_cubic (extension) =
|
||||
[vulkansc] VK_EXT_filter_cubic (extension) =
|
||||
[vulkan] VK_EXT_fragment_density_map (extension) = VK_EXT_fragment_density_map+VK_KHR_get_physical_device_properties2, VK_EXT_fragment_density_map+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_fragment_density_map2 (extension) = VK_EXT_fragment_density_map
|
||||
[vulkan] VK_EXT_fragment_shader_interlock (extension) = VK_EXT_fragment_shader_interlock+VK_KHR_get_physical_device_properties2, VK_EXT_fragment_shader_interlock+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_fragment_shader_interlock (extension) = VK_EXT_fragment_shader_interlock+VK_KHR_get_physical_device_properties2, VK_EXT_fragment_shader_interlock+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_frame_boundary (extension) =
|
||||
[vulkan] VK_EXT_full_screen_exclusive (extension) = VK_KHR_surface+VK_KHR_get_surface_capabilities2+VK_KHR_swapchain+VK_KHR_get_physical_device_properties2, VK_KHR_surface+VK_KHR_get_surface_capabilities2+VK_KHR_swapchain+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_global_priority (extension) =
|
||||
[vulkansc] VK_EXT_global_priority (extension) =
|
||||
[vulkan] VK_EXT_global_priority_query (extension) = VK_EXT_global_priority+VK_KHR_get_physical_device_properties2, VK_EXT_global_priority+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_graphics_pipeline_library (extension) = VK_KHR_pipeline_library+VK_KHR_get_physical_device_properties2, VK_KHR_pipeline_library+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_hdr_metadata (extension) = VK_KHR_swapchain
|
||||
[vulkansc] VK_EXT_hdr_metadata (extension) = VK_KHR_swapchain
|
||||
[vulkan] VK_EXT_headless_surface (extension) = VK_KHR_surface
|
||||
[vulkansc] VK_EXT_headless_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_EXT_host_image_copy (extension) = VK_KHR_copy_commands2+VK_KHR_format_feature_flags2+VK_KHR_get_physical_device_properties2, VK_KHR_copy_commands2+VK_KHR_format_feature_flags2+VK_VERSION_1_1, VK_VERSION_1_3
|
||||
[vulkan] VK_EXT_host_query_reset (extension) = VK_EXT_host_query_reset+VK_KHR_get_physical_device_properties2, VK_EXT_host_query_reset+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_image_2d_view_of_3d (extension) = VK_KHR_maintenance1+VK_KHR_get_physical_device_properties2, VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_image_compression_control (extension) = VK_EXT_image_compression_control+VK_KHR_get_physical_device_properties2, VK_EXT_image_compression_control+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_image_compression_control_swapchain (extension) = VK_EXT_image_compression_control
|
||||
[vulkan] VK_EXT_image_drm_format_modifier (extension) = VK_KHR_image_format_list+VK_KHR_bind_memory2+VK_KHR_get_physical_device_properties2+VK_KHR_sampler_ycbcr_conversion, VK_KHR_image_format_list+VK_VERSION_1_1, VK_VERSION_1_2
|
||||
[vulkansc] VK_EXT_image_drm_format_modifier (extension) = VK_KHR_image_format_list+VK_KHR_bind_memory2+VK_KHR_get_physical_device_properties2+VK_KHR_sampler_ycbcr_conversion, VK_KHR_image_format_list+VK_VERSION_1_1, VK_VERSION_1_2
|
||||
[vulkan] VK_EXT_image_robustness (extension) = VK_EXT_image_robustness+VK_KHR_get_physical_device_properties2, VK_EXT_image_robustness+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_image_robustness (extension) = VK_EXT_image_robustness+VK_KHR_get_physical_device_properties2, VK_EXT_image_robustness+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_image_sliced_view_of_3d (extension) = VK_KHR_maintenance1+VK_KHR_get_physical_device_properties2, VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_image_view_min_lod (extension) = VK_EXT_image_view_min_lod+VK_KHR_get_physical_device_properties2, VK_EXT_image_view_min_lod+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_index_type_uint8 (extension) = VK_EXT_index_type_uint8+VK_KHR_get_physical_device_properties2, VK_EXT_index_type_uint8+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_index_type_uint8 (extension) = VK_EXT_index_type_uint8+VK_KHR_get_physical_device_properties2, VK_EXT_index_type_uint8+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_inline_uniform_block (extension) = VK_KHR_get_physical_device_properties2+VK_KHR_maintenance1, VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_layer_settings (extension) =
|
||||
[vulkan] VK_EXT_legacy_dithering (extension) = VK_EXT_legacy_dithering+VK_KHR_get_physical_device_properties2, VK_EXT_legacy_dithering+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_line_rasterization (extension) = VK_EXT_line_rasterization+VK_KHR_get_physical_device_properties2, VK_EXT_line_rasterization+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_line_rasterization (extension) = VK_EXT_line_rasterization+VK_KHR_get_physical_device_properties2, VK_EXT_line_rasterization+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_load_store_op_none (extension) =
|
||||
[vulkan] VK_EXT_map_memory_placed (extension) = VK_KHR_map_memory2
|
||||
[vulkan] VK_EXT_memory_budget (extension) = VK_EXT_memory_budget+VK_KHR_get_physical_device_properties2, VK_EXT_memory_budget+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_memory_budget (extension) = VK_EXT_memory_budget+VK_KHR_get_physical_device_properties2, VK_EXT_memory_budget+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_memory_priority (extension) = VK_EXT_memory_priority+VK_KHR_get_physical_device_properties2, VK_EXT_memory_priority+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_mesh_shader (extension) = VK_KHR_spirv_1_4
|
||||
[vulkan] VK_EXT_metal_objects (extension) =
|
||||
[vulkan] VK_EXT_metal_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_EXT_multi_draw (extension) = VK_EXT_multi_draw+VK_KHR_get_physical_device_properties2, VK_EXT_multi_draw+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_multisampled_render_to_single_sampled (extension) = VK_KHR_create_renderpass2+VK_KHR_depth_stencil_resolve, VK_VERSION_1_2
|
||||
[vulkan] VK_EXT_mutable_descriptor_type (extension) = VK_KHR_maintenance3
|
||||
[vulkan] VK_EXT_nested_command_buffer (extension) = VK_EXT_nested_command_buffer+VK_KHR_get_physical_device_properties2, VK_EXT_nested_command_buffer+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_non_seamless_cube_map (extension) = VK_EXT_non_seamless_cube_map+VK_KHR_get_physical_device_properties2, VK_EXT_non_seamless_cube_map+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_opacity_micromap (extension) = VK_KHR_acceleration_structure+VK_KHR_synchronization2, VK_KHR_acceleration_structure+VK_VERSION_1_3
|
||||
[vulkan] VK_EXT_pageable_device_local_memory (extension) = VK_EXT_memory_priority
|
||||
[vulkan] VK_EXT_pci_bus_info (extension) = VK_EXT_pci_bus_info+VK_KHR_get_physical_device_properties2, VK_EXT_pci_bus_info+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_pci_bus_info (extension) = VK_EXT_pci_bus_info+VK_KHR_get_physical_device_properties2, VK_EXT_pci_bus_info+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_physical_device_drm (extension) = VK_EXT_physical_device_drm+VK_KHR_get_physical_device_properties2, VK_EXT_physical_device_drm+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_pipeline_creation_cache_control (extension) = VK_EXT_pipeline_creation_cache_control+VK_KHR_get_physical_device_properties2, VK_EXT_pipeline_creation_cache_control+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_pipeline_creation_feedback (extension) =
|
||||
[vulkan] VK_EXT_pipeline_library_group_handles (extension) = VK_KHR_pipeline_library, VK_KHR_ray_tracing_pipeline
|
||||
[vulkan] VK_EXT_pipeline_properties (extension) = VK_EXT_pipeline_properties+VK_KHR_get_physical_device_properties2, VK_EXT_pipeline_properties+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_pipeline_protected_access (extension) = VK_EXT_pipeline_protected_access+VK_KHR_get_physical_device_properties2, VK_EXT_pipeline_protected_access+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_pipeline_robustness (extension) = VK_EXT_pipeline_robustness+VK_KHR_get_physical_device_properties2, VK_EXT_pipeline_robustness+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_post_depth_coverage (extension) =
|
||||
[vulkansc] VK_EXT_post_depth_coverage (extension) =
|
||||
[vulkan] VK_EXT_primitive_topology_list_restart (extension) = VK_EXT_primitive_topology_list_restart+VK_KHR_get_physical_device_properties2, VK_EXT_primitive_topology_list_restart+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_primitives_generated_query (extension) = VK_EXT_transform_feedback
|
||||
[vulkan] VK_EXT_private_data (extension) = VK_EXT_private_data+VK_KHR_get_physical_device_properties2, VK_EXT_private_data+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_provoking_vertex (extension) = VK_EXT_provoking_vertex+VK_KHR_get_physical_device_properties2, VK_EXT_provoking_vertex+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_queue_family_foreign (extension) = VK_EXT_queue_family_foreign+VK_KHR_external_memory, VK_EXT_queue_family_foreign+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_queue_family_foreign (extension) = VK_EXT_queue_family_foreign+VK_KHR_external_memory, VK_EXT_queue_family_foreign+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_rasterization_order_attachment_access (extension) = VK_EXT_rasterization_order_attachment_access+VK_KHR_get_physical_device_properties2, VK_EXT_rasterization_order_attachment_access+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_rgba10x6_formats (extension) = VK_EXT_rgba10x6_formats+VK_KHR_sampler_ycbcr_conversion, VK_EXT_rgba10x6_formats+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_robustness2 (extension) = VK_EXT_robustness2+VK_KHR_get_physical_device_properties2, VK_EXT_robustness2+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_robustness2 (extension) = VK_EXT_robustness2+VK_KHR_get_physical_device_properties2, VK_EXT_robustness2+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_sample_locations (extension) = VK_EXT_sample_locations+VK_KHR_get_physical_device_properties2, VK_EXT_sample_locations+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_sample_locations (extension) = VK_EXT_sample_locations+VK_KHR_get_physical_device_properties2, VK_EXT_sample_locations+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_sampler_filter_minmax (extension) = VK_EXT_sampler_filter_minmax+VK_KHR_get_physical_device_properties2, VK_EXT_sampler_filter_minmax+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_scalar_block_layout (extension) = VK_EXT_scalar_block_layout+VK_KHR_get_physical_device_properties2, VK_EXT_scalar_block_layout+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_separate_stencil_usage (extension) =
|
||||
[vulkan] VK_EXT_shader_atomic_float (extension) = VK_EXT_shader_atomic_float+VK_KHR_get_physical_device_properties2, VK_EXT_shader_atomic_float+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_shader_atomic_float (extension) = VK_EXT_shader_atomic_float+VK_KHR_get_physical_device_properties2, VK_EXT_shader_atomic_float+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_shader_atomic_float2 (extension) = VK_EXT_shader_atomic_float
|
||||
[vulkan] VK_EXT_shader_demote_to_helper_invocation (extension) = VK_EXT_shader_demote_to_helper_invocation+VK_KHR_get_physical_device_properties2, VK_EXT_shader_demote_to_helper_invocation+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_shader_demote_to_helper_invocation (extension) = VK_EXT_shader_demote_to_helper_invocation+VK_KHR_get_physical_device_properties2, VK_EXT_shader_demote_to_helper_invocation+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_shader_image_atomic_int64 (extension) = VK_EXT_shader_image_atomic_int64+VK_KHR_get_physical_device_properties2, VK_EXT_shader_image_atomic_int64+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_shader_image_atomic_int64 (extension) = VK_EXT_shader_image_atomic_int64+VK_KHR_get_physical_device_properties2, VK_EXT_shader_image_atomic_int64+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_shader_module_identifier (extension) = VK_EXT_pipeline_creation_cache_control+VK_KHR_get_physical_device_properties2, VK_EXT_pipeline_creation_cache_control+VK_VERSION_1_1, VK_VERSION_1_3
|
||||
[vulkan] VK_EXT_shader_object (extension) = VK_KHR_dynamic_rendering+VK_KHR_get_physical_device_properties2, VK_KHR_dynamic_rendering+VK_VERSION_1_1, VK_VERSION_1_3
|
||||
[vulkan] VK_EXT_shader_stencil_export (extension) =
|
||||
[vulkansc] VK_EXT_shader_stencil_export (extension) =
|
||||
[vulkan] VK_EXT_shader_subgroup_ballot (extension) =
|
||||
[vulkan] VK_EXT_shader_subgroup_vote (extension) =
|
||||
[vulkan] VK_EXT_shader_tile_image (extension) = VK_VERSION_1_3
|
||||
[vulkan] VK_EXT_shader_viewport_index_layer (extension) =
|
||||
[vulkan] VK_EXT_subgroup_size_control (extension) = VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_subgroup_size_control (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_subpass_merge_feedback (extension) = VK_EXT_subpass_merge_feedback+VK_KHR_get_physical_device_properties2, VK_EXT_subpass_merge_feedback+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_surface_maintenance1 (extension) = VK_KHR_get_surface_capabilities2, VK_KHR_surface
|
||||
[vulkan] VK_EXT_swapchain_colorspace (extension) = VK_KHR_surface
|
||||
[vulkansc] VK_EXT_swapchain_colorspace (extension) = VK_KHR_surface
|
||||
[vulkan] VK_EXT_swapchain_maintenance1 (extension) = VK_KHR_swapchain+VK_EXT_surface_maintenance1+VK_KHR_get_physical_device_properties2, VK_KHR_swapchain+VK_EXT_surface_maintenance1+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_texel_buffer_alignment (extension) = VK_EXT_texel_buffer_alignment+VK_KHR_get_physical_device_properties2, VK_EXT_texel_buffer_alignment+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_texel_buffer_alignment (extension) = VK_EXT_texel_buffer_alignment+VK_KHR_get_physical_device_properties2, VK_EXT_texel_buffer_alignment+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_texture_compression_astc_hdr (extension) = VK_EXT_texture_compression_astc_hdr+VK_KHR_get_physical_device_properties2, VK_EXT_texture_compression_astc_hdr+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_texture_compression_astc_hdr (extension) = VK_EXT_texture_compression_astc_hdr+VK_KHR_get_physical_device_properties2, VK_EXT_texture_compression_astc_hdr+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_tooling_info (extension) =
|
||||
[vulkan] VK_EXT_transform_feedback (extension) = VK_EXT_transform_feedback+VK_KHR_get_physical_device_properties2, VK_EXT_transform_feedback+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_validation_cache (extension) =
|
||||
[vulkan] VK_EXT_validation_features (extension) =
|
||||
[vulkansc] VK_EXT_validation_features (extension) =
|
||||
[vulkan] VK_EXT_validation_flags (extension) =
|
||||
[vulkan] VK_EXT_vertex_attribute_divisor (extension) = VK_EXT_vertex_attribute_divisor+VK_KHR_get_physical_device_properties2, VK_EXT_vertex_attribute_divisor+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_vertex_attribute_divisor (extension) = VK_EXT_vertex_attribute_divisor+VK_KHR_get_physical_device_properties2, VK_EXT_vertex_attribute_divisor+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_vertex_input_dynamic_state (extension) = VK_EXT_vertex_input_dynamic_state+VK_KHR_get_physical_device_properties2, VK_EXT_vertex_input_dynamic_state+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_vertex_input_dynamic_state (extension) = VK_EXT_vertex_input_dynamic_state+VK_KHR_get_physical_device_properties2, VK_EXT_vertex_input_dynamic_state+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_ycbcr_2plane_444_formats (extension) = VK_EXT_ycbcr_2plane_444_formats+VK_KHR_sampler_ycbcr_conversion, VK_EXT_ycbcr_2plane_444_formats+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_ycbcr_2plane_444_formats (extension) = VK_EXT_ycbcr_2plane_444_formats+VK_KHR_sampler_ycbcr_conversion, VK_EXT_ycbcr_2plane_444_formats+VK_VERSION_1_1
|
||||
[vulkan] VK_EXT_ycbcr_image_arrays (extension) = VK_EXT_ycbcr_image_arrays+VK_KHR_sampler_ycbcr_conversion, VK_EXT_ycbcr_image_arrays+VK_VERSION_1_1
|
||||
[vulkansc] VK_EXT_ycbcr_image_arrays (extension) = VK_EXT_ycbcr_image_arrays+VK_KHR_sampler_ycbcr_conversion, VK_EXT_ycbcr_image_arrays+VK_VERSION_1_1
|
||||
[vulkan] VK_FUCHSIA_buffer_collection (extension) = VK_FUCHSIA_external_memory+VK_KHR_sampler_ycbcr_conversion, VK_FUCHSIA_external_memory+VK_VERSION_1_1
|
||||
[vulkan] VK_FUCHSIA_external_memory (extension) = VK_KHR_external_memory_capabilities+VK_KHR_external_memory, VK_VERSION_1_1
|
||||
[vulkan] VK_FUCHSIA_external_semaphore (extension) = VK_KHR_external_semaphore, VK_KHR_external_semaphore_capabilities
|
||||
[vulkan] VK_FUCHSIA_imagepipe_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_GGP_frame_token (extension) = VK_GGP_stream_descriptor_surface, VK_KHR_swapchain
|
||||
[vulkan] VK_GGP_stream_descriptor_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_GOOGLE_decorate_string (extension) =
|
||||
[vulkan] VK_GOOGLE_display_timing (extension) = VK_KHR_swapchain
|
||||
[vulkan] VK_GOOGLE_hlsl_functionality1 (extension) =
|
||||
[vulkan] VK_GOOGLE_surfaceless_query (extension) = VK_KHR_surface
|
||||
[vulkan] VK_GOOGLE_user_type (extension) =
|
||||
[vulkan] VK_HUAWEI_cluster_culling_shader (extension) = VK_HUAWEI_cluster_culling_shader+VK_KHR_get_physical_device_properties2, VK_HUAWEI_cluster_culling_shader+VK_VERSION_1_1
|
||||
[vulkan] VK_HUAWEI_invocation_mask (extension) = VK_KHR_ray_tracing_pipeline+VK_KHR_synchronization2, VK_KHR_ray_tracing_pipeline+VK_VERSION_1_3
|
||||
[vulkan] VK_HUAWEI_subpass_shading (extension) = VK_KHR_synchronization2+VK_KHR_create_renderpass2, VK_KHR_synchronization2+VK_VERSION_1_2, VK_VERSION_1_3
|
||||
[vulkan] VK_IMG_filter_cubic (extension) =
|
||||
[vulkan] VK_IMG_format_pvrtc (extension) =
|
||||
[vulkan] VK_IMG_relaxed_line_rasterization (extension) = VK_IMG_relaxed_line_rasterization+VK_KHR_get_physical_device_properties2, VK_IMG_relaxed_line_rasterization+VK_VERSION_1_1
|
||||
[vulkan] VK_INTEL_performance_query (extension) =
|
||||
[vulkan] VK_INTEL_shader_integer_functions2 (extension) = VK_INTEL_shader_integer_functions2+VK_KHR_get_physical_device_properties2, VK_INTEL_shader_integer_functions2+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_16bit_storage (extension) = VK_KHR_get_physical_device_properties2+VK_KHR_storage_buffer_storage_class, VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_8bit_storage (extension) = VK_KHR_get_physical_device_properties2+VK_KHR_storage_buffer_storage_class, VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_acceleration_structure (extension) = VK_KHR_deferred_host_operations+VK_VERSION_1_1+VK_EXT_descriptor_indexing+VK_KHR_buffer_device_address, VK_KHR_deferred_host_operations+VK_VERSION_1_2
|
||||
[vulkan] VK_KHR_android_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_KHR_bind_memory2 (extension) =
|
||||
[vulkan] VK_KHR_buffer_device_address (extension) = VK_KHR_get_physical_device_properties2+VK_KHR_device_group, VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_calibrated_timestamps (extension) = VK_KHR_calibrated_timestamps+VK_KHR_get_physical_device_properties2, VK_KHR_calibrated_timestamps+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_cooperative_matrix (extension) = VK_KHR_cooperative_matrix+VK_KHR_get_physical_device_properties2, VK_KHR_cooperative_matrix+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_copy_commands2 (extension) = VK_KHR_copy_commands2+VK_KHR_get_physical_device_properties2, VK_KHR_copy_commands2+VK_VERSION_1_1
|
||||
[vulkansc] VK_KHR_copy_commands2 (extension) = VK_KHR_copy_commands2+VK_KHR_get_physical_device_properties2, VK_KHR_copy_commands2+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_create_renderpass2 (extension) = VK_KHR_multiview+VK_KHR_maintenance2, VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_dedicated_allocation (extension) = VK_KHR_dedicated_allocation+VK_KHR_get_memory_requirements2, VK_KHR_dedicated_allocation+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_deferred_host_operations (extension) =
|
||||
[vulkan] VK_KHR_depth_stencil_resolve (extension) = VK_KHR_depth_stencil_resolve+VK_KHR_create_renderpass2, VK_KHR_depth_stencil_resolve+VK_VERSION_1_2
|
||||
[vulkan] VK_KHR_descriptor_update_template (extension) =
|
||||
[vulkan] VK_KHR_device_group (extension) = VK_KHR_device_group_creation
|
||||
[vulkan] VK_KHR_device_group_creation (extension) =
|
||||
[vulkan] VK_KHR_display (extension) = VK_KHR_surface
|
||||
[vulkansc] VK_KHR_display (extension) = VK_KHR_surface
|
||||
[vulkan] VK_KHR_display_swapchain (extension) = VK_KHR_display, VK_KHR_swapchain
|
||||
[vulkansc] VK_KHR_display_swapchain (extension) = VK_KHR_display, VK_KHR_swapchain
|
||||
[vulkan] VK_KHR_draw_indirect_count (extension) =
|
||||
[vulkan] VK_KHR_driver_properties (extension) = VK_KHR_driver_properties+VK_KHR_get_physical_device_properties2, VK_KHR_driver_properties+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_dynamic_rendering (extension) = VK_KHR_depth_stencil_resolve+VK_KHR_get_physical_device_properties2, VK_KHR_depth_stencil_resolve+VK_VERSION_1_1, VK_VERSION_1_2
|
||||
[vulkan] VK_KHR_dynamic_rendering_local_read (extension) = VK_KHR_dynamic_rendering_local_read+VK_KHR_dynamic_rendering, VK_KHR_dynamic_rendering_local_read+VK_VERSION_1_3
|
||||
[vulkan] VK_KHR_external_fence (extension) = VK_KHR_external_fence_capabilities
|
||||
[vulkan] VK_KHR_external_fence_capabilities (extension) = VK_KHR_external_fence_capabilities+VK_KHR_get_physical_device_properties2, VK_KHR_external_fence_capabilities+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_external_fence_fd (extension) = VK_KHR_external_fence_fd+VK_KHR_external_fence, VK_KHR_external_fence_fd+VK_VERSION_1_1
|
||||
[vulkansc] VK_KHR_external_fence_fd (extension) = VK_KHR_external_fence_fd+VK_KHR_external_fence, VK_KHR_external_fence_fd+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_external_fence_win32 (extension) = VK_KHR_external_fence
|
||||
[vulkan] VK_KHR_external_memory (extension) = VK_KHR_external_memory+VK_KHR_external_memory_capabilities, VK_KHR_external_memory+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_external_memory_capabilities (extension) = VK_KHR_external_memory_capabilities+VK_KHR_get_physical_device_properties2, VK_KHR_external_memory_capabilities+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_external_memory_fd (extension) = VK_KHR_external_memory_fd+VK_KHR_external_memory, VK_KHR_external_memory_fd+VK_VERSION_1_1
|
||||
[vulkansc] VK_KHR_external_memory_fd (extension) = VK_KHR_external_memory_fd+VK_KHR_external_memory, VK_KHR_external_memory_fd+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_external_memory_win32 (extension) = VK_KHR_external_memory_win32+VK_KHR_external_memory, VK_KHR_external_memory_win32+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_external_semaphore (extension) = VK_KHR_external_semaphore_capabilities
|
||||
[vulkan] VK_KHR_external_semaphore_capabilities (extension) = VK_KHR_external_semaphore_capabilities+VK_KHR_get_physical_device_properties2, VK_KHR_external_semaphore_capabilities+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_external_semaphore_fd (extension) = VK_KHR_external_semaphore_fd+VK_KHR_external_semaphore, VK_KHR_external_semaphore_fd+VK_VERSION_1_1
|
||||
[vulkansc] VK_KHR_external_semaphore_fd (extension) = VK_KHR_external_semaphore_fd+VK_KHR_external_semaphore, VK_KHR_external_semaphore_fd+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_external_semaphore_win32 (extension) = VK_KHR_external_semaphore
|
||||
[vulkan] VK_KHR_format_feature_flags2 (extension) = VK_KHR_format_feature_flags2+VK_KHR_get_physical_device_properties2, VK_KHR_format_feature_flags2+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_fragment_shader_barycentric (extension) = VK_KHR_fragment_shader_barycentric+VK_KHR_get_physical_device_properties2, VK_KHR_fragment_shader_barycentric+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_fragment_shading_rate (extension) = VK_KHR_create_renderpass2+VK_KHR_get_physical_device_properties2, VK_KHR_create_renderpass2+VK_VERSION_1_1, VK_VERSION_1_2
|
||||
[vulkansc] VK_KHR_fragment_shading_rate (extension) = VK_KHR_create_renderpass2+VK_KHR_get_physical_device_properties2, VK_KHR_create_renderpass2+VK_VERSION_1_1, VK_VERSION_1_2
|
||||
[vulkan] VK_KHR_get_display_properties2 (extension) = VK_KHR_display
|
||||
[vulkansc] VK_KHR_get_display_properties2 (extension) = VK_KHR_display
|
||||
[vulkan] VK_KHR_get_memory_requirements2 (extension) =
|
||||
[vulkan] VK_KHR_get_physical_device_properties2 (extension) =
|
||||
[vulkan] VK_KHR_get_surface_capabilities2 (extension) = VK_KHR_surface
|
||||
[vulkansc] VK_KHR_get_surface_capabilities2 (extension) = VK_KHR_surface
|
||||
[vulkan] VK_KHR_global_priority (extension) = VK_KHR_global_priority+VK_KHR_get_physical_device_properties2, VK_KHR_global_priority+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_image_format_list (extension) =
|
||||
[vulkan] VK_KHR_imageless_framebuffer (extension) = VK_KHR_image_format_list+VK_KHR_get_physical_device_properties2+VK_KHR_maintenance2, VK_KHR_image_format_list+VK_VERSION_1_1, VK_VERSION_1_2
|
||||
[vulkan] VK_KHR_incremental_present (extension) = VK_KHR_swapchain
|
||||
[vulkansc] VK_KHR_incremental_present (extension) = VK_KHR_swapchain
|
||||
[vulkan] VK_KHR_index_type_uint8 (extension) = VK_KHR_index_type_uint8+VK_KHR_get_physical_device_properties2, VK_KHR_index_type_uint8+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_line_rasterization (extension) = VK_KHR_line_rasterization+VK_KHR_get_physical_device_properties2, VK_KHR_line_rasterization+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_load_store_op_none (extension) =
|
||||
[vulkan] VK_KHR_maintenance1 (extension) =
|
||||
[vulkan] VK_KHR_maintenance2 (extension) =
|
||||
[vulkan] VK_KHR_maintenance3 (extension) = VK_KHR_maintenance3+VK_KHR_get_physical_device_properties2, VK_KHR_maintenance3+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_maintenance4 (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_maintenance5 (extension) = VK_VERSION_1_1+VK_KHR_dynamic_rendering, VK_VERSION_1_3
|
||||
[vulkan] VK_KHR_maintenance6 (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_map_memory2 (extension) =
|
||||
[vulkan] VK_KHR_multiview (extension) = VK_KHR_multiview+VK_KHR_get_physical_device_properties2, VK_KHR_multiview+VK_VERSION_1_1
|
||||
[vulkansc] VK_KHR_object_refresh (extension) =
|
||||
[vulkan] VK_KHR_performance_query (extension) = VK_KHR_performance_query+VK_KHR_get_physical_device_properties2, VK_KHR_performance_query+VK_VERSION_1_1
|
||||
[vulkansc] VK_KHR_performance_query (extension) = VK_KHR_performance_query+VK_KHR_get_physical_device_properties2, VK_KHR_performance_query+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_pipeline_executable_properties (extension) = VK_KHR_pipeline_executable_properties+VK_KHR_get_physical_device_properties2, VK_KHR_pipeline_executable_properties+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_pipeline_library (extension) =
|
||||
[vulkan] VK_KHR_portability_enumeration (extension) =
|
||||
[vulkan] VK_KHR_portability_subset (extension) = VK_KHR_portability_subset+VK_KHR_get_physical_device_properties2, VK_KHR_portability_subset+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_present_id (extension) = VK_KHR_swapchain+VK_KHR_get_physical_device_properties2, VK_KHR_swapchain+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_present_wait (extension) = VK_KHR_present_id, VK_KHR_swapchain
|
||||
[vulkan] VK_KHR_push_descriptor (extension) = VK_KHR_push_descriptor+VK_KHR_get_physical_device_properties2, VK_KHR_push_descriptor+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_ray_query (extension) = VK_KHR_acceleration_structure, VK_KHR_spirv_1_4
|
||||
[vulkan] VK_KHR_ray_tracing_maintenance1 (extension) = VK_KHR_acceleration_structure
|
||||
[vulkan] VK_KHR_ray_tracing_pipeline (extension) = VK_KHR_acceleration_structure, VK_KHR_spirv_1_4
|
||||
[vulkan] VK_KHR_ray_tracing_position_fetch (extension) = VK_KHR_acceleration_structure
|
||||
[vulkan] VK_KHR_relaxed_block_layout (extension) =
|
||||
[vulkan] VK_KHR_sampler_mirror_clamp_to_edge (extension) =
|
||||
[vulkan] VK_KHR_sampler_ycbcr_conversion (extension) = VK_KHR_maintenance1+VK_KHR_bind_memory2+VK_KHR_get_memory_requirements2+VK_KHR_get_physical_device_properties2, VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_separate_depth_stencil_layouts (extension) = VK_KHR_create_renderpass2+VK_KHR_get_physical_device_properties2, VK_KHR_create_renderpass2+VK_VERSION_1_1, VK_VERSION_1_2
|
||||
[vulkan] VK_KHR_shader_atomic_int64 (extension) = VK_KHR_shader_atomic_int64+VK_KHR_get_physical_device_properties2, VK_KHR_shader_atomic_int64+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shader_clock (extension) = VK_KHR_shader_clock+VK_KHR_get_physical_device_properties2, VK_KHR_shader_clock+VK_VERSION_1_1
|
||||
[vulkansc] VK_KHR_shader_clock (extension) = VK_KHR_shader_clock+VK_KHR_get_physical_device_properties2, VK_KHR_shader_clock+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shader_draw_parameters (extension) =
|
||||
[vulkan] VK_KHR_shader_expect_assume (extension) = VK_KHR_shader_expect_assume+VK_KHR_get_physical_device_properties2, VK_KHR_shader_expect_assume+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shader_float_controls (extension) = VK_KHR_shader_float_controls+VK_KHR_get_physical_device_properties2, VK_KHR_shader_float_controls+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shader_float_controls2 (extension) = VK_KHR_shader_float_controls, VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shader_float16_int8 (extension) = VK_KHR_shader_float16_int8+VK_KHR_get_physical_device_properties2, VK_KHR_shader_float16_int8+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shader_integer_dot_product (extension) = VK_KHR_shader_integer_dot_product+VK_KHR_get_physical_device_properties2, VK_KHR_shader_integer_dot_product+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shader_maximal_reconvergence (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shader_non_semantic_info (extension) =
|
||||
[vulkan] VK_KHR_shader_quad_control (extension) = VK_KHR_shader_maximal_reconvergence, VK_KHR_vulkan_memory_model, VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shader_subgroup_extended_types (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shader_subgroup_rotate (extension) =
|
||||
[vulkan] VK_KHR_shader_subgroup_uniform_control_flow (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shader_terminate_invocation (extension) = VK_KHR_shader_terminate_invocation+VK_KHR_get_physical_device_properties2, VK_KHR_shader_terminate_invocation+VK_VERSION_1_1
|
||||
[vulkansc] VK_KHR_shader_terminate_invocation (extension) = VK_KHR_shader_terminate_invocation+VK_KHR_get_physical_device_properties2, VK_KHR_shader_terminate_invocation+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_shared_presentable_image (extension) = VK_KHR_swapchain+VK_KHR_get_surface_capabilities2+VK_KHR_get_physical_device_properties2, VK_KHR_swapchain+VK_KHR_get_surface_capabilities2+VK_VERSION_1_1
|
||||
[vulkansc] VK_KHR_shared_presentable_image (extension) = VK_KHR_swapchain+VK_KHR_get_surface_capabilities2+VK_KHR_get_physical_device_properties2, VK_KHR_swapchain+VK_KHR_get_surface_capabilities2+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_spirv_1_4 (extension) = VK_KHR_shader_float_controls, VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_storage_buffer_storage_class (extension) =
|
||||
[vulkan] VK_KHR_surface (extension) =
|
||||
[vulkansc] VK_KHR_surface (extension) =
|
||||
[vulkan] VK_KHR_surface_protected_capabilities (extension) = VK_KHR_get_surface_capabilities2, VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_swapchain (extension) = VK_KHR_surface
|
||||
[vulkansc] VK_KHR_swapchain (extension) = VK_KHR_surface
|
||||
[vulkan] VK_KHR_swapchain_mutable_format (extension) = VK_KHR_swapchain+VK_KHR_maintenance2+VK_KHR_image_format_list, VK_KHR_swapchain+VK_KHR_maintenance2+VK_VERSION_1_2, VK_KHR_swapchain+VK_VERSION_1_1+VK_KHR_image_format_list, VK_KHR_swapchain+VK_VERSION_1_1+VK_VERSION_1_2
|
||||
[vulkansc] VK_KHR_swapchain_mutable_format (extension) = VK_KHR_swapchain+VK_KHR_maintenance2+VK_KHR_image_format_list, VK_KHR_swapchain+VK_KHR_maintenance2+VK_VERSION_1_2, VK_KHR_swapchain+VK_VERSION_1_1+VK_KHR_image_format_list, VK_KHR_swapchain+VK_VERSION_1_1+VK_VERSION_1_2
|
||||
[vulkan] VK_KHR_synchronization2 (extension) = VK_KHR_synchronization2+VK_KHR_get_physical_device_properties2, VK_KHR_synchronization2+VK_VERSION_1_1
|
||||
[vulkansc] VK_KHR_synchronization2 (extension) = VK_KHR_synchronization2+VK_KHR_get_physical_device_properties2, VK_KHR_synchronization2+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_timeline_semaphore (extension) = VK_KHR_timeline_semaphore+VK_KHR_get_physical_device_properties2, VK_KHR_timeline_semaphore+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_uniform_buffer_standard_layout (extension) = VK_KHR_uniform_buffer_standard_layout+VK_KHR_get_physical_device_properties2, VK_KHR_uniform_buffer_standard_layout+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_variable_pointers (extension) = VK_KHR_get_physical_device_properties2+VK_KHR_storage_buffer_storage_class, VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_vertex_attribute_divisor (extension) = VK_KHR_vertex_attribute_divisor+VK_KHR_get_physical_device_properties2, VK_KHR_vertex_attribute_divisor+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_video_decode_av1 (extension) = VK_KHR_video_decode_queue
|
||||
[vulkan] VK_KHR_video_decode_h264 (extension) = VK_KHR_video_decode_queue
|
||||
[vulkan] VK_KHR_video_decode_h265 (extension) = VK_KHR_video_decode_queue
|
||||
[vulkan] VK_KHR_video_decode_queue (extension) = VK_KHR_video_queue+VK_KHR_synchronization2, VK_KHR_video_queue+VK_VERSION_1_3
|
||||
[vulkan] VK_KHR_video_encode_h264 (extension) = VK_KHR_video_encode_queue
|
||||
[vulkan] VK_KHR_video_encode_h265 (extension) = VK_KHR_video_encode_queue
|
||||
[vulkan] VK_KHR_video_encode_queue (extension) = VK_KHR_video_queue+VK_KHR_synchronization2, VK_KHR_video_queue+VK_VERSION_1_3
|
||||
[vulkan] VK_KHR_video_maintenance1 (extension) = VK_KHR_video_queue
|
||||
[vulkan] VK_KHR_video_queue (extension) = VK_VERSION_1_1+VK_KHR_synchronization2, VK_VERSION_1_3
|
||||
[vulkan] VK_KHR_vulkan_memory_model (extension) = VK_KHR_vulkan_memory_model+VK_KHR_get_physical_device_properties2, VK_KHR_vulkan_memory_model+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_wayland_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_KHR_win32_keyed_mutex (extension) = VK_KHR_external_memory_win32
|
||||
[vulkan] VK_KHR_win32_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_KHR_workgroup_memory_explicit_layout (extension) = VK_KHR_workgroup_memory_explicit_layout+VK_KHR_get_physical_device_properties2, VK_KHR_workgroup_memory_explicit_layout+VK_VERSION_1_1
|
||||
[vulkan] VK_KHR_xcb_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_KHR_xlib_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_KHR_zero_initialize_workgroup_memory (extension) = VK_KHR_zero_initialize_workgroup_memory+VK_KHR_get_physical_device_properties2, VK_KHR_zero_initialize_workgroup_memory+VK_VERSION_1_1
|
||||
[vulkan] VK_LUNARG_direct_driver_loading (extension) =
|
||||
[vulkan] VK_MSFT_layered_driver (extension) = VK_MSFT_layered_driver+VK_KHR_get_physical_device_properties2, VK_MSFT_layered_driver+VK_VERSION_1_1
|
||||
[vulkan] VK_MVK_ios_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_MVK_macos_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_NN_vi_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_NV_acquire_winrt_display (extension) = VK_EXT_direct_mode_display
|
||||
[vulkan] VK_NV_clip_space_w_scaling (extension) =
|
||||
[vulkan] VK_NV_compute_shader_derivatives (extension) = VK_NV_compute_shader_derivatives+VK_KHR_get_physical_device_properties2, VK_NV_compute_shader_derivatives+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_cooperative_matrix (extension) = VK_NV_cooperative_matrix+VK_KHR_get_physical_device_properties2, VK_NV_cooperative_matrix+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_copy_memory_indirect (extension) = VK_KHR_buffer_device_address+VK_KHR_get_physical_device_properties2, VK_KHR_buffer_device_address+VK_VERSION_1_1, VK_VERSION_1_2
|
||||
[vulkan] VK_NV_corner_sampled_image (extension) = VK_NV_corner_sampled_image+VK_KHR_get_physical_device_properties2, VK_NV_corner_sampled_image+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_coverage_reduction_mode (extension) = VK_NV_framebuffer_mixed_samples+VK_KHR_get_physical_device_properties2, VK_NV_framebuffer_mixed_samples+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_cuda_kernel_launch (extension) =
|
||||
[vulkan] VK_NV_dedicated_allocation (extension) =
|
||||
[vulkan] VK_NV_dedicated_allocation_image_aliasing (extension) = VK_KHR_dedicated_allocation+VK_KHR_get_physical_device_properties2, VK_VERSION_1_1
|
||||
[vulkan] VK_NV_descriptor_pool_overallocation (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_NV_device_diagnostic_checkpoints (extension) = VK_NV_device_diagnostic_checkpoints+VK_KHR_get_physical_device_properties2, VK_NV_device_diagnostic_checkpoints+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_device_diagnostics_config (extension) = VK_NV_device_diagnostics_config+VK_KHR_get_physical_device_properties2, VK_NV_device_diagnostics_config+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_device_generated_commands (extension) = VK_VERSION_1_1+VK_KHR_buffer_device_address, VK_VERSION_1_2
|
||||
[vulkan] VK_NV_device_generated_commands_compute (extension) = VK_NV_device_generated_commands
|
||||
[vulkan] VK_NV_displacement_micromap (extension) = VK_EXT_opacity_micromap
|
||||
[vulkan] VK_NV_extended_sparse_address_space (extension) =
|
||||
[vulkan] VK_NV_external_memory (extension) = VK_NV_external_memory_capabilities
|
||||
[vulkan] VK_NV_external_memory_capabilities (extension) =
|
||||
[vulkan] VK_NV_external_memory_rdma (extension) = VK_NV_external_memory_rdma+VK_KHR_external_memory, VK_NV_external_memory_rdma+VK_VERSION_1_1
|
||||
[vulkansc] VK_NV_external_memory_sci_buf (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_NV_external_memory_win32 (extension) = VK_NV_external_memory
|
||||
[vulkansc] VK_NV_external_sci_sync (extension) = VK_VERSION_1_1
|
||||
[vulkansc] VK_NV_external_sci_sync2 (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_NV_fill_rectangle (extension) =
|
||||
[vulkan] VK_NV_fragment_coverage_to_color (extension) =
|
||||
[vulkan] VK_NV_fragment_shader_barycentric (extension) = VK_NV_fragment_shader_barycentric+VK_KHR_get_physical_device_properties2, VK_NV_fragment_shader_barycentric+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_fragment_shading_rate_enums (extension) = VK_KHR_fragment_shading_rate
|
||||
[vulkan] VK_NV_framebuffer_mixed_samples (extension) =
|
||||
[vulkan] VK_NV_geometry_shader_passthrough (extension) =
|
||||
[vulkan] VK_NV_glsl_shader (extension) =
|
||||
[vulkan] VK_NV_inherited_viewport_scissor (extension) = VK_NV_inherited_viewport_scissor+VK_KHR_get_physical_device_properties2, VK_NV_inherited_viewport_scissor+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_linear_color_attachment (extension) = VK_NV_linear_color_attachment+VK_KHR_get_physical_device_properties2, VK_NV_linear_color_attachment+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_low_latency (extension) =
|
||||
[vulkan] VK_NV_low_latency2 (extension) = VK_NV_low_latency2+VK_KHR_timeline_semaphore, VK_NV_low_latency2+VK_VERSION_1_2
|
||||
[vulkan] VK_NV_memory_decompression (extension) = VK_KHR_buffer_device_address+VK_KHR_get_physical_device_properties2, VK_KHR_buffer_device_address+VK_VERSION_1_1, VK_VERSION_1_2
|
||||
[vulkan] VK_NV_mesh_shader (extension) = VK_NV_mesh_shader+VK_KHR_get_physical_device_properties2, VK_NV_mesh_shader+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_optical_flow (extension) = VK_KHR_format_feature_flags2+VK_KHR_synchronization2+VK_KHR_get_physical_device_properties2, VK_KHR_format_feature_flags2+VK_KHR_synchronization2+VK_VERSION_1_1, VK_VERSION_1_3
|
||||
[vulkan] VK_NV_per_stage_descriptor_set (extension) = VK_KHR_maintenance6
|
||||
[vulkan] VK_NV_present_barrier (extension) = VK_KHR_surface+VK_KHR_get_surface_capabilities2+VK_KHR_swapchain+VK_KHR_get_physical_device_properties2, VK_KHR_surface+VK_KHR_get_surface_capabilities2+VK_KHR_swapchain+VK_VERSION_1_1
|
||||
[vulkansc] VK_NV_private_vendor_info (extension) =
|
||||
[vulkan] VK_NV_raw_access_chains (extension) =
|
||||
[vulkan] VK_NV_ray_tracing (extension) = VK_KHR_get_physical_device_properties2+VK_KHR_get_memory_requirements2, VK_VERSION_1_1
|
||||
[vulkan] VK_NV_ray_tracing_invocation_reorder (extension) = VK_KHR_ray_tracing_pipeline
|
||||
[vulkan] VK_NV_ray_tracing_motion_blur (extension) = VK_KHR_ray_tracing_pipeline
|
||||
[vulkan] VK_NV_ray_tracing_validation (extension) =
|
||||
[vulkan] VK_NV_representative_fragment_test (extension) = VK_NV_representative_fragment_test+VK_KHR_get_physical_device_properties2, VK_NV_representative_fragment_test+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_sample_mask_override_coverage (extension) =
|
||||
[vulkan] VK_NV_scissor_exclusive (extension) = VK_NV_scissor_exclusive+VK_KHR_get_physical_device_properties2, VK_NV_scissor_exclusive+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_shader_atomic_float16_vector (extension) =
|
||||
[vulkan] VK_NV_shader_image_footprint (extension) = VK_NV_shader_image_footprint+VK_KHR_get_physical_device_properties2, VK_NV_shader_image_footprint+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_shader_sm_builtins (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_NV_shader_subgroup_partitioned (extension) = VK_VERSION_1_1
|
||||
[vulkan] VK_NV_shading_rate_image (extension) = VK_NV_shading_rate_image+VK_KHR_get_physical_device_properties2, VK_NV_shading_rate_image+VK_VERSION_1_1
|
||||
[vulkan] VK_NV_viewport_array2 (extension) =
|
||||
[vulkan] VK_NV_viewport_swizzle (extension) =
|
||||
[vulkan] VK_NV_win32_keyed_mutex (extension) = VK_NV_external_memory_win32
|
||||
[vulkan] VK_NVX_binary_import (extension) =
|
||||
[vulkan] VK_NVX_image_view_handle (extension) =
|
||||
[vulkan] VK_NVX_multiview_per_view_attributes (extension) = VK_NVX_multiview_per_view_attributes+VK_KHR_multiview, VK_NVX_multiview_per_view_attributes+VK_VERSION_1_1
|
||||
[vulkan] VK_QCOM_filter_cubic_clamp (extension) = VK_EXT_filter_cubic+VK_EXT_sampler_filter_minmax, VK_EXT_filter_cubic+VK_VERSION_1_2
|
||||
[vulkan] VK_QCOM_filter_cubic_weights (extension) = VK_EXT_filter_cubic
|
||||
[vulkan] VK_QCOM_fragment_density_map_offset (extension) = VK_EXT_fragment_density_map+VK_KHR_get_physical_device_properties2, VK_EXT_fragment_density_map+VK_VERSION_1_1
|
||||
[vulkan] VK_QCOM_image_processing (extension) = VK_QCOM_image_processing+VK_KHR_format_feature_flags2, VK_QCOM_image_processing+VK_VERSION_1_3
|
||||
[vulkan] VK_QCOM_image_processing2 (extension) = VK_QCOM_image_processing
|
||||
[vulkan] VK_QCOM_multiview_per_view_render_areas (extension) =
|
||||
[vulkan] VK_QCOM_multiview_per_view_viewports (extension) = VK_QCOM_multiview_per_view_viewports+VK_KHR_get_physical_device_properties2, VK_QCOM_multiview_per_view_viewports+VK_VERSION_1_1
|
||||
[vulkan] VK_QCOM_render_pass_shader_resolve (extension) =
|
||||
[vulkan] VK_QCOM_render_pass_store_ops (extension) =
|
||||
[vulkan] VK_QCOM_render_pass_transform (extension) =
|
||||
[vulkan] VK_QCOM_rotated_copy_commands (extension) = VK_QCOM_rotated_copy_commands+VK_KHR_copy_commands2, VK_QCOM_rotated_copy_commands+VK_VERSION_1_3
|
||||
[vulkan] VK_QCOM_tile_properties (extension) = VK_QCOM_tile_properties+VK_KHR_get_physical_device_properties2, VK_QCOM_tile_properties+VK_VERSION_1_1
|
||||
[vulkan] VK_QCOM_ycbcr_degamma (extension) =
|
||||
[vulkan] VK_QNX_external_memory_screen_buffer (extension) = VK_EXT_queue_family_foreign+VK_KHR_sampler_ycbcr_conversion+VK_KHR_external_memory+VK_KHR_dedicated_allocation, VK_EXT_queue_family_foreign+VK_VERSION_1_1
|
||||
[vulkansc] VK_QNX_external_memory_screen_buffer (extension) = VK_EXT_queue_family_foreign+VK_KHR_sampler_ycbcr_conversion+VK_KHR_external_memory+VK_KHR_dedicated_allocation, VK_EXT_queue_family_foreign+VK_VERSION_1_1
|
||||
[vulkan] VK_QNX_screen_surface (extension) = VK_KHR_surface
|
||||
[vulkan] VK_SEC_amigo_profiling (extension) = VK_SEC_amigo_profiling+VK_KHR_get_physical_device_properties2, VK_SEC_amigo_profiling+VK_VERSION_1_1
|
||||
[vulkan] VK_VALVE_descriptor_set_host_mapping (extension) = VK_VALVE_descriptor_set_host_mapping+VK_KHR_get_physical_device_properties2, VK_VALVE_descriptor_set_host_mapping+VK_VERSION_1_1
|
||||
[vulkan] VK_VALVE_mutable_descriptor_type (extension) = VK_KHR_maintenance3
|
||||
[vulkan] VK_VERSION_1_0 =
|
||||
[vulkan] VK_VERSION_1_1 =
|
||||
[vulkan] VK_VERSION_1_2 =
|
||||
[vulkan] VK_VERSION_1_3 =
|
||||
[vulkansc] VKSC_VERSION_1_0 = VK_VERSION_1_0, VK_VERSION_1_1, VK_VERSION_1_2, VK_VERSION_1_3
|
|
@ -0,0 +1,58 @@
|
|||
[wgl] WGL_3DFX_multisample (extension) =
|
||||
[wgl] WGL_3DL_stereo_control (extension) =
|
||||
[wgl] WGL_AMD_gpu_association (extension) =
|
||||
[wgl] WGL_ARB_buffer_region (extension) =
|
||||
[wgl] WGL_ARB_context_flush_control (extension) =
|
||||
[wgl] WGL_ARB_create_context (extension) =
|
||||
[wgl] WGL_ARB_create_context_no_error (extension) =
|
||||
[wgl] WGL_ARB_create_context_profile (extension) =
|
||||
[wgl] WGL_ARB_create_context_robustness (extension) =
|
||||
[wgl] WGL_ARB_extensions_string (extension) =
|
||||
[wgl] WGL_ARB_framebuffer_sRGB (extension) =
|
||||
[wgl] WGL_ARB_make_current_read (extension) =
|
||||
[wgl] WGL_ARB_multisample (extension) =
|
||||
[wgl] WGL_ARB_pbuffer (extension) =
|
||||
[wgl] WGL_ARB_pixel_format (extension) =
|
||||
[wgl] WGL_ARB_pixel_format_float (extension) =
|
||||
[wgl] WGL_ARB_render_texture (extension) =
|
||||
[wgl] WGL_ARB_robustness_application_isolation (extension) =
|
||||
[wgl] WGL_ARB_robustness_share_group_isolation (extension) =
|
||||
[wgl] WGL_ATI_pixel_format_float (extension) =
|
||||
[wgl] WGL_ATI_render_texture_rectangle (extension) =
|
||||
[wgl] WGL_EXT_colorspace (extension) =
|
||||
[wgl] WGL_EXT_create_context_es_profile (extension) =
|
||||
[wgl] WGL_EXT_create_context_es2_profile (extension) =
|
||||
[wgl] WGL_EXT_depth_float (extension) =
|
||||
[wgl] WGL_EXT_display_color_table (extension) =
|
||||
[wgl] WGL_EXT_extensions_string (extension) =
|
||||
[wgl] WGL_EXT_framebuffer_sRGB (extension) =
|
||||
[wgl] WGL_EXT_make_current_read (extension) =
|
||||
[wgl] WGL_EXT_multisample (extension) =
|
||||
[wgl] WGL_EXT_pbuffer (extension) =
|
||||
[wgl] WGL_EXT_pixel_format (extension) =
|
||||
[wgl] WGL_EXT_pixel_format_packed_float (extension) =
|
||||
[wgl] WGL_EXT_swap_control (extension) =
|
||||
[wgl] WGL_EXT_swap_control_tear (extension) =
|
||||
[wgl] WGL_I3D_digital_video_control (extension) =
|
||||
[wgl] WGL_I3D_gamma (extension) =
|
||||
[wgl] WGL_I3D_genlock (extension) =
|
||||
[wgl] WGL_I3D_image_buffer (extension) =
|
||||
[wgl] WGL_I3D_swap_frame_lock (extension) =
|
||||
[wgl] WGL_I3D_swap_frame_usage (extension) =
|
||||
[wgl] WGL_NV_copy_image (extension) =
|
||||
[wgl] WGL_NV_delay_before_swap (extension) =
|
||||
[wgl] WGL_NV_DX_interop (extension) =
|
||||
[wgl] WGL_NV_DX_interop2 (extension) =
|
||||
[wgl] WGL_NV_float_buffer (extension) =
|
||||
[wgl] WGL_NV_gpu_affinity (extension) =
|
||||
[wgl] WGL_NV_multigpu_context (extension) =
|
||||
[wgl] WGL_NV_multisample_coverage (extension) =
|
||||
[wgl] WGL_NV_present_video (extension) =
|
||||
[wgl] WGL_NV_render_depth_texture (extension) =
|
||||
[wgl] WGL_NV_render_texture_rectangle (extension) =
|
||||
[wgl] WGL_NV_swap_group (extension) =
|
||||
[wgl] WGL_NV_vertex_array_range (extension) =
|
||||
[wgl] WGL_NV_video_capture (extension) =
|
||||
[wgl] WGL_NV_video_output (extension) =
|
||||
[wgl] WGL_OML_sync_control (extension) =
|
||||
[wgl] WGL_VERSION_1_0 =
|
|
@ -0,0 +1,97 @@
|
|||
NOTE: This file lists differences/regressions between 3.0's enum grouping system baselined against 2.21's. If this file is non-empty and verified, it means the regressions have been justified. Justified differences are usually as a result of a discrepancy between the regression baseline JSON and the baseline XML.
|
||||
|
||||
Removed Group: cl_intel_device_side_avc_motion_estimation_??
|
||||
|
||||
Added Group: cl_arm_device_svm_capabilities_flags
|
||||
Added: CL_DEVICE_SVM_ATOMICS_ARM
|
||||
Added: CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM
|
||||
Added: CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM
|
||||
Added: CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM
|
||||
|
||||
Added Group: cl_arm_svm_alloc_flags
|
||||
Added: CL_MEM_SVM_ATOMICS_ARM
|
||||
Added: CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM
|
||||
|
||||
Existing Group: cl_command_queue_properties
|
||||
Added: CL_QUEUE_RESERVED_QCOM
|
||||
|
||||
Added Group: cl_device_command_buffer_capabilities_khr
|
||||
Added: CL_COMMAND_BUFFER_CAPABILITY_DEVICE_SIDE_ENQUEUE_KHR
|
||||
Added: CL_COMMAND_BUFFER_CAPABILITY_KERNEL_PRINTF_KHR
|
||||
Added: CL_COMMAND_BUFFER_CAPABILITY_MULTIPLE_QUEUE_KHR
|
||||
Added: CL_COMMAND_BUFFER_CAPABILITY_OUT_OF_ORDER_KHR
|
||||
Added: CL_COMMAND_BUFFER_CAPABILITY_SIMULTANEOUS_USE_KHR
|
||||
|
||||
Existing Group: cl_device_partition_property_ext
|
||||
Added: CL_AFFINITY_DOMAIN_L1_CACHE_EXT
|
||||
Added: CL_AFFINITY_DOMAIN_L2_CACHE_EXT
|
||||
Added: CL_AFFINITY_DOMAIN_L3_CACHE_EXT
|
||||
Added: CL_AFFINITY_DOMAIN_L4_CACHE_EXT
|
||||
Added: CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT
|
||||
Added: CL_AFFINITY_DOMAIN_NUMA_EXT
|
||||
|
||||
Added Group: cl_intel_device_side_avc_motion_estimation_intra
|
||||
Added: CL_AVC_ME_INTRA_16x16_INTEL
|
||||
Added: CL_AVC_ME_INTRA_4x4_INTEL
|
||||
Added: CL_AVC_ME_INTRA_8x8_INTEL
|
||||
|
||||
Added Group: cl_intel_driver_diagnostics
|
||||
Added: CL_CONTEXT_DIAGNOSTICS_LEVEL_ALL_INTEL
|
||||
Added: CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL
|
||||
Added: CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL
|
||||
Added: CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL
|
||||
|
||||
Existing Group: cl_mem_flags
|
||||
Added: CL_MEM_RESERVED0_ARM
|
||||
Added: CL_MEM_RESERVED0_QCOM
|
||||
Added: CL_MEM_RESERVED1_ARM
|
||||
Added: CL_MEM_RESERVED1_QCOM
|
||||
Added: CL_MEM_RESERVED2_ARM
|
||||
Added: CL_MEM_RESERVED2_QCOM
|
||||
Added: CL_MEM_RESERVED21_INTEL
|
||||
Added: CL_MEM_RESERVED22_INTEL
|
||||
Added: CL_MEM_RESERVED3_ARM
|
||||
Added: CL_MEM_RESERVED3_QCOM
|
||||
|
||||
Existing Group: cl_mem_migration_flags
|
||||
Added: CL_MIGRATE_MEM_OBJECT_HOST_EXT
|
||||
|
||||
Added Group: cl_platform_command_buffer_capabilities_khr
|
||||
Added: CL_COMMAND_BUFFER_PLATFORM_AUTOMATIC_REMAP_KHR
|
||||
Added: CL_COMMAND_BUFFER_PLATFORM_REMAP_QUEUES_KHR
|
||||
Added: CL_COMMAND_BUFFER_PLATFORM_UNIVERSAL_SYNC_KHR
|
||||
|
||||
Added Group: cl_queue_properties_khr
|
||||
|
||||
Added Group: cl_semaphore_type_khr
|
||||
Added: CL_SEMAPHORE_TYPE_BINARY_KHR
|
||||
|
||||
Existing Group: cl_svm_mem_flags
|
||||
Added: CL_MEM_ALLOC_HOST_PTR
|
||||
Added: CL_MEM_COPY_HOST_PTR
|
||||
Added: CL_MEM_HOST_NO_ACCESS
|
||||
Added: CL_MEM_HOST_READ_ONLY
|
||||
Added: CL_MEM_HOST_WRITE_ONLY
|
||||
Added: CL_MEM_KERNEL_READ_AND_WRITE
|
||||
Added: CL_MEM_READ_ONLY
|
||||
Added: CL_MEM_READ_WRITE
|
||||
Added: CL_MEM_SVM_ATOMICS
|
||||
Added: CL_MEM_SVM_FINE_GRAIN_BUFFER
|
||||
Added: CL_MEM_USE_HOST_PTR
|
||||
Added: CL_MEM_WRITE_ONLY
|
||||
|
||||
Added Group: cl_unified_shared_memory_capabilities_intel
|
||||
Added: CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL
|
||||
Added: CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL
|
||||
Added: CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL
|
||||
Added: CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL
|
||||
|
||||
Existing Group: ErrorCodes
|
||||
Added: CL_ERROR_RESERVED0_IMG
|
||||
Added: CL_ERROR_RESERVED1_IMG
|
||||
Added: CL_ERROR_RESERVED2_IMG
|
||||
Added: CL_ERROR_RESERVED3_IMG
|
||||
Added: CL_PIPE_EMPTY_INTEL
|
||||
Added: CL_PIPE_FULL_INTEL
|
||||
|
||||
Unchanged: allocation_type, cl_accelerator_info_intel, cl_accelerator_type_intel, cl_addressing_mode, cl_affinity_domain_ext, cl_bool, cl_buffer_create_type, cl_build_status, cl_channel_order, cl_channel_type, cl_command_buffer_flags_khr, cl_command_buffer_info_khr, cl_command_buffer_properties_khr, cl_command_buffer_state_khr, cl_command_buffer_structure_type_khr, cl_command_queue_capabilities_intel, cl_command_queue_info, cl_command_termination_reason_arm, cl_command_type, cl_context_info, cl_context_memory_initialize_khr, cl_context_properties, cl_d3d10_device_set_khr, cl_d3d10_device_source_khr, cl_d3d11_device_set_khr, cl_d3d11_device_source_khr, cl_device_affinity_domain, cl_device_atomic_capabilities, cl_device_command_buffer_capabilities_khr, cl_device_controlled_termination_capabilities_arm, cl_device_device_enqueue_capabilities, cl_device_exec_capabilities, cl_device_feature_capabilities_intel, cl_device_fp_atomic_capabilities_ext, cl_device_fp_config, cl_device_info, cl_device_integer_dot_product_capabilities_khr, cl_device_local_mem_type, cl_device_mem_cache_type, cl_device_partition_property, cl_device_scheduling_controls_capabilities_arm, cl_device_svm_capabilities, cl_device_svm_capabilities_arm, cl_device_terminate_capability_khr, cl_device_type, cl_device_unified_shared_memory_capabilities_intel, cl_dx9_device_set_intel, cl_dx9_device_source_intel, cl_egl_image_properties_khr, cl_event_info, cl_external_memory_handle_type_khr, cl_external_semaphore_handle_type_khr, cl_filter_mode, cl_gl_context_info, cl_gl_object_type, cl_gl_texture_info, cl_icdl_info, cl_image_info, cl_image_pitch_info_qcom, cl_image_requirements_info_ext, cl_import_properties_arm, cl_intel_advanced_motion_estimation_cl_motion_detect_desc_intel, cl_intel_advanced_motion_estimation_cl_motion_detect_desc_intel_2, cl_intel_advanced_motion_estimation_device_me_version, cl_intel_advanced_motion_estimation_flags, cl_intel_advanced_motion_estimation_intra_search_prediction_modes_buffer_chroma_block, cl_intel_advanced_motion_estimation_intra_search_prediction_modes_buffer_luma_block, cl_intel_advanced_motion_estimation_search_cost_penalty, cl_intel_advanced_motion_estimation_search_cost_precision, cl_intel_advanced_motion_estimation_skip_block_type, cl_intel_device_side_avc_motion_estimation_adjust, cl_intel_device_side_avc_motion_estimation_border, cl_intel_device_side_avc_motion_estimation_cost_precision, cl_intel_device_side_avc_motion_estimation_frame_dir, cl_intel_device_side_avc_motion_estimation_intra_luma, cl_intel_device_side_avc_motion_estimation_intra_neighbor, cl_intel_device_side_avc_motion_estimation_luma_predictor, cl_intel_device_side_avc_motion_estimation_major, cl_intel_device_side_avc_motion_estimation_major_dir, cl_intel_device_side_avc_motion_estimation_minor, cl_intel_device_side_avc_motion_estimation_partition, cl_intel_device_side_avc_motion_estimation_scan_dir, cl_intel_device_side_avc_motion_estimation_skip, cl_intel_device_side_avc_motion_estimation_skip_block_based, cl_intel_device_side_avc_motion_estimation_skip_dir, cl_intel_device_side_avc_motion_estimation_slice, cl_intel_device_side_avc_motion_estimation_subpixel, cl_intel_device_side_avc_motion_estimation_version, cl_intel_device_side_avc_motion_estimation_weight, cl_intel_device_side_avc_motion_estimation_window, cl_kernel_arg_access_qualifier, cl_kernel_arg_address_qualifier, cl_kernel_arg_info, cl_kernel_arg_type_qualifier, cl_kernel_exec_info, cl_kernel_exec_info_arm, cl_kernel_info, cl_kernel_sub_group_info, cl_kernel_work_group_info, cl_khronos_vendor_id, cl_layer_info, cl_map_flags, cl_media_adapter_set_khr, cl_media_adapter_type_khr, cl_mem_alloc_flags_img, cl_mem_alloc_flags_intel, cl_mem_alloc_info_intel, cl_mem_info, cl_mem_migration_flags_ext, cl_mem_object_type, cl_mem_properties, cl_mem_properties_intel, cl_mipmap_filter_mode_img, cl_motion_estimation_desc_intel_mb_block_type, cl_motion_estimation_desc_intel_sad_adjust_mode, cl_motion_estimation_desc_intel_search_path_type, cl_motion_estimation_desc_intel_subpixel_mode, cl_mutable_command_info_khr, cl_mutable_dispatch_asserts_khr, cl_mutable_dispatch_fields_khr, cl_ndrange_kernel_command_properties_khr, cl_pipe_info, cl_platform_command_buffer_capabilities_khr, cl_platform_info, cl_profiling_info, cl_program_binary_type, cl_program_build_info, cl_program_info, cl_queue_priority_khr, cl_queue_properties, cl_queue_throttle_khr, cl_sampler_info, cl_sampler_properties, cl_semaphore_info_khr, cl_semaphore_properties_khr, cl_semaphore_reimport_properties_khr, cl_semaphore_type, cl_svm_mem_flags_arm, cl_unified_shared_memory_type_intel, cl_va_api_device_set_intel, cl_va_api_device_source_intel, clCommandExecutionStatus, host_cache_policy
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,294 @@
|
|||
__GLX_NUMBER_EVENTS = GLXEventCodes
|
||||
GLX_3DFX_FULLSCREEN_MODE_MESA = GLXMesa3DFXMode
|
||||
GLX_3DFX_WINDOW_MODE_MESA = GLXMesa3DFXMode
|
||||
GLX_ACCUM_ALPHA_SIZE = GLXAttribute, GLXEnum
|
||||
GLX_ACCUM_BLUE_SIZE = GLXAttribute, GLXEnum
|
||||
GLX_ACCUM_BUFFER_BIT = GLXPbufferClobberMask
|
||||
GLX_ACCUM_BUFFER_BIT_SGIX = GLXPbufferClobberMask
|
||||
GLX_ACCUM_GREEN_SIZE = GLXAttribute, GLXEnum
|
||||
GLX_ACCUM_RED_SIZE = GLXAttribute, GLXEnum
|
||||
GLX_ALPHA_SIZE = GLXAttribute, GLXEnum
|
||||
GLX_AUX_BUFFERS = GLXAttribute, GLXEnum
|
||||
GLX_AUX_BUFFERS_BIT = GLXPbufferClobberMask
|
||||
GLX_AUX_BUFFERS_BIT_SGIX = GLXPbufferClobberMask
|
||||
GLX_AUX0_EXT = GLXEnum
|
||||
GLX_AUX1_EXT = GLXEnum
|
||||
GLX_AUX2_EXT = GLXEnum
|
||||
GLX_AUX3_EXT = GLXEnum
|
||||
GLX_AUX4_EXT = GLXEnum
|
||||
GLX_AUX5_EXT = GLXEnum
|
||||
GLX_AUX6_EXT = GLXEnum
|
||||
GLX_AUX7_EXT = GLXEnum
|
||||
GLX_AUX8_EXT = GLXEnum
|
||||
GLX_AUX9_EXT = GLXEnum
|
||||
GLX_BACK_BUFFER_AGE_EXT = GLXEnum
|
||||
GLX_BACK_EXT = GLXEnum
|
||||
GLX_BACK_LEFT_BUFFER_BIT = GLXPbufferClobberMask
|
||||
GLX_BACK_LEFT_BUFFER_BIT_SGIX = GLXPbufferClobberMask
|
||||
GLX_BACK_LEFT_EXT = GLXEnum
|
||||
GLX_BACK_RIGHT_BUFFER_BIT = GLXPbufferClobberMask
|
||||
GLX_BACK_RIGHT_BUFFER_BIT_SGIX = GLXPbufferClobberMask
|
||||
GLX_BACK_RIGHT_EXT = GLXEnum
|
||||
GLX_BAD_ATTRIBUTE = GLXErrorCode
|
||||
GLX_BAD_CONTEXT = GLXErrorCode
|
||||
GLX_BAD_ENUM = GLXErrorCode
|
||||
GLX_BAD_HYPERPIPE_CONFIG_SGIX = GLXErrorCode
|
||||
GLX_BAD_HYPERPIPE_SGIX = GLXErrorCode
|
||||
GLX_BAD_SCREEN = GLXErrorCode
|
||||
GLX_BAD_VALUE = GLXErrorCode
|
||||
GLX_BAD_VISUAL = GLXErrorCode
|
||||
GLX_BIND_TO_MIPMAP_TEXTURE_EXT = GLXEnum
|
||||
GLX_BIND_TO_TEXTURE_RGB_EXT = GLXEnum
|
||||
GLX_BIND_TO_TEXTURE_RGBA_EXT = GLXEnum
|
||||
GLX_BIND_TO_TEXTURE_TARGETS_EXT = GLXEnum
|
||||
GLX_BLENDED_RGBA_SGIS = GLXEnum
|
||||
GLX_BLUE_SIZE = GLXAttribute, GLXEnum
|
||||
GLX_BUFFER_CLOBBER_MASK_SGIX = GLXEventMask
|
||||
GLX_BUFFER_SIZE = GLXAttribute, GLXEnum
|
||||
GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK = GLXEventMask
|
||||
GLX_BufferSwapComplete = GLXEventCodes
|
||||
GLX_COLOR_INDEX_BIT = GLXRenderTypeMask
|
||||
GLX_COLOR_INDEX_BIT_SGIX = GLXRenderTypeMask
|
||||
GLX_COLOR_INDEX_TYPE = GLXEnum
|
||||
GLX_COLOR_INDEX_TYPE_SGIX = GLXEnum
|
||||
GLX_COLOR_SAMPLES_NV = GLXEnum
|
||||
GLX_CONFIG_CAVEAT = GLXAttribute, GLXEnum
|
||||
GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB = GLXEnum
|
||||
GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = GLXContextProfileMask
|
||||
GLX_CONTEXT_CORE_PROFILE_BIT_ARB = GLXContextProfileMask
|
||||
GLX_CONTEXT_DEBUG_BIT_ARB = GLXContextFlags
|
||||
GLX_CONTEXT_ES_PROFILE_BIT_EXT = GLXContextProfileMask
|
||||
GLX_CONTEXT_ES2_PROFILE_BIT_EXT = GLXContextProfileMask
|
||||
GLX_CONTEXT_FLAGS_ARB = GLXEnum
|
||||
GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB = GLXContextFlags
|
||||
GLX_CONTEXT_MAJOR_VERSION_ARB = GLXEnum
|
||||
GLX_CONTEXT_MINOR_VERSION_ARB = GLXEnum
|
||||
GLX_CONTEXT_MULTIGPU_ATTRIB_AFR_NV = GLXEnum
|
||||
GLX_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV = GLXEnum
|
||||
GLX_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV = GLXEnum
|
||||
GLX_CONTEXT_MULTIGPU_ATTRIB_NV = GLXEnum
|
||||
GLX_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV = GLXEnum
|
||||
GLX_CONTEXT_OPENGL_NO_ERROR_ARB = GLXEnum
|
||||
GLX_CONTEXT_PRIORITY_HIGH_EXT = GLXEnum
|
||||
GLX_CONTEXT_PRIORITY_LEVEL_EXT = GLXEnum
|
||||
GLX_CONTEXT_PRIORITY_LOW_EXT = GLXEnum
|
||||
GLX_CONTEXT_PRIORITY_MEDIUM_EXT = GLXEnum
|
||||
GLX_CONTEXT_PROFILE_MASK_ARB = GLXEnum
|
||||
GLX_CONTEXT_RELEASE_BEHAVIOR_ARB = GLXEnum
|
||||
GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB = GLXEnum
|
||||
GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB = GLXEnum
|
||||
GLX_CONTEXT_RESET_ISOLATION_BIT_ARB = GLXContextFlags
|
||||
GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB = GLEnum
|
||||
GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB = GLXContextFlags
|
||||
GLX_COPY_COMPLETE_INTEL = GLXEnum
|
||||
GLX_COVERAGE_SAMPLES_NV = GLXEnum
|
||||
GLX_DAMAGED = GLXEnum
|
||||
GLX_DAMAGED_SGIX = GLXEnum
|
||||
GLX_DEPTH_BUFFER_BIT = GLXPbufferClobberMask
|
||||
GLX_DEPTH_BUFFER_BIT_SGIX = GLXPbufferClobberMask
|
||||
GLX_DEPTH_SIZE = GLXAttribute, GLXEnum
|
||||
GLX_DEVICE_ID_NV = GLXEnum
|
||||
GLX_DIGITAL_MEDIA_PBUFFER_SGIX = GLXEnum
|
||||
GLX_DIRECT_COLOR = GLXEnum
|
||||
GLX_DIRECT_COLOR_EXT = GLXEnum
|
||||
GLX_DONT_CARE = GLXEnum
|
||||
GLX_DOUBLEBUFFER = GLXAttribute, GLXEnum
|
||||
GLX_DRAWABLE_TYPE = GLXEnum
|
||||
GLX_DRAWABLE_TYPE_SGIX = GLXEnum
|
||||
GLX_EVENT_MASK = GLXEnum
|
||||
GLX_EVENT_MASK_SGIX = GLXEnum
|
||||
GLX_EXCHANGE_COMPLETE_INTEL = GLXEnum
|
||||
GLX_EXTENSION_NAME = GLXStrings
|
||||
GLX_EXTENSIONS = GLXStringName
|
||||
GLX_FBCONFIG_ID = GLXEnum
|
||||
GLX_FBCONFIG_ID_SGIX = GLXEnum
|
||||
GLX_FLIP_COMPLETE_INTEL = GLXEnum
|
||||
GLX_FLOAT_COMPONENTS_NV = GLXEnum
|
||||
GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB = GLXEnum
|
||||
GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT = GLXEnum
|
||||
GLX_FRONT_EXT = GLXEnum
|
||||
GLX_FRONT_LEFT_BUFFER_BIT = GLXPbufferClobberMask
|
||||
GLX_FRONT_LEFT_BUFFER_BIT_SGIX = GLXPbufferClobberMask
|
||||
GLX_FRONT_LEFT_EXT = GLXEnum
|
||||
GLX_FRONT_RIGHT_BUFFER_BIT = GLXPbufferClobberMask
|
||||
GLX_FRONT_RIGHT_BUFFER_BIT_SGIX = GLXPbufferClobberMask
|
||||
GLX_FRONT_RIGHT_EXT = GLXEnum
|
||||
GLX_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV = GLXEnum
|
||||
GLX_GPU_CLOCK_AMD = GLXEnum
|
||||
GLX_GPU_FASTEST_TARGET_GPUS_AMD = GLXEnum
|
||||
GLX_GPU_NUM_PIPES_AMD = GLXEnum
|
||||
GLX_GPU_NUM_RB_AMD = GLXEnum
|
||||
GLX_GPU_NUM_SIMD_AMD = GLXEnum
|
||||
GLX_GPU_NUM_SPI_AMD = GLXEnum
|
||||
GLX_GPU_OPENGL_VERSION_STRING_AMD = GLXEnum
|
||||
GLX_GPU_RAM_AMD = GLXEnum
|
||||
GLX_GPU_RENDERER_STRING_AMD = GLXEnum
|
||||
GLX_GPU_VENDOR_AMD = GLXEnum
|
||||
GLX_GRAY_SCALE = GLXEnum
|
||||
GLX_GRAY_SCALE_EXT = GLXEnum
|
||||
GLX_GREEN_SIZE = GLXAttribute, GLXEnum
|
||||
GLX_HEIGHT = GLXEnum
|
||||
GLX_HEIGHT_SGIX = GLXEnum
|
||||
GLX_HYPERPIPE_DISPLAY_PIPE_SGIX = GLXHyperpipeTypeMask
|
||||
GLX_HYPERPIPE_ID_SGIX = GLXEnum
|
||||
GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX = GLXHyperpipeMiscSGIX
|
||||
GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX = GLXHyperpipeAttribSGIX
|
||||
GLX_HYPERPIPE_RENDER_PIPE_SGIX = GLXHyperpipeTypeMask
|
||||
GLX_HYPERPIPE_STEREO_SGIX = GLXHyperpipeAttribSGIX
|
||||
GLX_LARGEST_PBUFFER = GLXEnum
|
||||
GLX_LARGEST_PBUFFER_SGIX = GLXEnum
|
||||
GLX_LATE_SWAPS_TEAR_EXT = GLXEnum
|
||||
GLX_LEVEL = GLXAttribute, GLXEnum
|
||||
GLX_LOSE_CONTEXT_ON_RESET_ARB = GLEnum
|
||||
GLX_MAX_PBUFFER_HEIGHT = GLXEnum
|
||||
GLX_MAX_PBUFFER_HEIGHT_SGIX = GLXEnum
|
||||
GLX_MAX_PBUFFER_PIXELS = GLXEnum
|
||||
GLX_MAX_PBUFFER_PIXELS_SGIX = GLXEnum
|
||||
GLX_MAX_PBUFFER_WIDTH = GLXEnum
|
||||
GLX_MAX_PBUFFER_WIDTH_SGIX = GLXEnum
|
||||
GLX_MAX_SWAP_INTERVAL_EXT = GLXEnum
|
||||
GLX_MIPMAP_TEXTURE_EXT = GLXEnum
|
||||
GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS = GLXEnum
|
||||
GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS = GLXEnum
|
||||
GLX_NO_EXTENSION = GLXErrorCode
|
||||
GLX_NO_RESET_NOTIFICATION_ARB = GLEnum
|
||||
GLX_NON_CONFORMANT_CONFIG = GLXEnum
|
||||
GLX_NON_CONFORMANT_VISUAL_EXT = GLXEnum
|
||||
GLX_NONE = GLXEnum
|
||||
GLX_NONE_EXT = GLXEnum
|
||||
GLX_NUM_VIDEO_CAPTURE_SLOTS_NV = GLXEnum
|
||||
GLX_NUM_VIDEO_SLOTS_NV = GLXEnum
|
||||
GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX = GLXEnum
|
||||
GLX_OPTIMAL_PBUFFER_WIDTH_SGIX = GLXEnum
|
||||
GLX_PBUFFER = GLXEnum
|
||||
GLX_PBUFFER_BIT = GLXDrawableTypeMask
|
||||
GLX_PBUFFER_BIT_SGIX = GLXDrawableTypeMask
|
||||
GLX_PBUFFER_CLOBBER_MASK = GLXEventMask
|
||||
GLX_PBUFFER_HEIGHT = GLXEnum
|
||||
GLX_PBUFFER_SGIX = GLXEnum
|
||||
GLX_PBUFFER_WIDTH = GLXEnum
|
||||
GLX_PbufferClobber = GLXEventCodes
|
||||
GLX_PIPE_RECT_LIMITS_SGIX = GLXHyperpipeAttribSGIX
|
||||
GLX_PIPE_RECT_SGIX = GLXHyperpipeAttribSGIX
|
||||
GLX_PIXMAP_BIT = GLXDrawableTypeMask
|
||||
GLX_PIXMAP_BIT_SGIX = GLXDrawableTypeMask
|
||||
GLX_PRESERVED_CONTENTS = GLXEnum
|
||||
GLX_PRESERVED_CONTENTS_SGIX = GLXEnum
|
||||
GLX_PSEUDO_COLOR = GLXEnum
|
||||
GLX_PSEUDO_COLOR_EXT = GLXEnum
|
||||
GLX_RED_SIZE = GLXAttribute, GLXEnum
|
||||
GLX_RENDER_TYPE = GLXEnum
|
||||
GLX_RENDER_TYPE_SGIX = GLXEnum
|
||||
GLX_RENDERER_ACCELERATED_MESA = GLXEnum
|
||||
GLX_RENDERER_DEVICE_ID_MESA = GLXEnum
|
||||
GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA = GLXEnum
|
||||
GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA = GLXEnum
|
||||
GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA = GLXEnum
|
||||
GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA = GLXEnum
|
||||
GLX_RENDERER_PREFERRED_PROFILE_MESA = GLXEnum
|
||||
GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA = GLXEnum
|
||||
GLX_RENDERER_VENDOR_ID_MESA = GLXEnum
|
||||
GLX_RENDERER_VERSION_MESA = GLXEnum
|
||||
GLX_RENDERER_VIDEO_MEMORY_MESA = GLXEnum
|
||||
GLX_RGBA = GLXAttribute, GLXEnum
|
||||
GLX_RGBA_BIT = GLXRenderTypeMask
|
||||
GLX_RGBA_BIT_SGIX = GLXRenderTypeMask
|
||||
GLX_RGBA_FLOAT_BIT_ARB = GLXRenderTypeMask
|
||||
GLX_RGBA_FLOAT_TYPE_ARB = GLXEnum
|
||||
GLX_RGBA_TYPE = GLXEnum
|
||||
GLX_RGBA_TYPE_SGIX = GLXEnum
|
||||
GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT = GLXRenderTypeMask
|
||||
GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT = GLXEnum
|
||||
GLX_SAMPLE_BUFFERS = GLXEnum
|
||||
GLX_SAMPLE_BUFFERS_3DFX = GLXEnum
|
||||
GLX_SAMPLE_BUFFERS_ARB = GLXEnum
|
||||
GLX_SAMPLE_BUFFERS_BIT_SGIX = GLXPbufferClobberMask
|
||||
GLX_SAMPLE_BUFFERS_SGIS = GLXEnum
|
||||
GLX_SAMPLES = GLXEnum
|
||||
GLX_SAMPLES_3DFX = GLXEnum
|
||||
GLX_SAMPLES_ARB = GLXEnum
|
||||
GLX_SAMPLES_SGIS = GLXEnum
|
||||
GLX_SAVED = GLXEnum
|
||||
GLX_SAVED_SGIX = GLXEnum
|
||||
GLX_SCREEN = GLXEnum
|
||||
GLX_SCREEN_EXT = GLXEnum
|
||||
GLX_SHARE_CONTEXT_EXT = GLXEnum
|
||||
GLX_SLOW_CONFIG = GLXEnum
|
||||
GLX_SLOW_VISUAL_EXT = GLXEnum
|
||||
GLX_STATIC_COLOR = GLXEnum
|
||||
GLX_STATIC_COLOR_EXT = GLXEnum
|
||||
GLX_STATIC_GRAY = GLXEnum
|
||||
GLX_STATIC_GRAY_EXT = GLXEnum
|
||||
GLX_STENCIL_BUFFER_BIT = GLXPbufferClobberMask
|
||||
GLX_STENCIL_BUFFER_BIT_SGIX = GLXPbufferClobberMask
|
||||
GLX_STENCIL_SIZE = GLXAttribute, GLXEnum
|
||||
GLX_STEREO = GLXAttribute, GLXEnum
|
||||
GLX_STEREO_NOTIFY_EXT = GLX_GenericEventCode
|
||||
GLX_STEREO_NOTIFY_MASK_EXT = GLXEventMask
|
||||
GLX_STEREO_TREE_EXT = GLXEnum
|
||||
GLX_SWAP_COPY_OML = GLXEnum
|
||||
GLX_SWAP_EXCHANGE_OML = GLXEnum
|
||||
GLX_SWAP_INTERVAL_EXT = GLXEnum
|
||||
GLX_SWAP_METHOD_OML = GLXEnum
|
||||
GLX_SWAP_UNDEFINED_OML = GLXEnum
|
||||
GLX_SYNC_FRAME_SGIX = GLXSyncType
|
||||
GLX_SYNC_SWAP_SGIX = GLXSyncType
|
||||
GLX_TEXTURE_1D_BIT_EXT = GLXBindToTextureTargetMask
|
||||
GLX_TEXTURE_1D_EXT = GLXEnum
|
||||
GLX_TEXTURE_2D_BIT_EXT = GLXBindToTextureTargetMask
|
||||
GLX_TEXTURE_2D_EXT = GLXEnum
|
||||
GLX_TEXTURE_FORMAT_EXT = GLXEnum
|
||||
GLX_TEXTURE_FORMAT_NONE_EXT = GLXEnum
|
||||
GLX_TEXTURE_FORMAT_RGB_EXT = GLXEnum
|
||||
GLX_TEXTURE_FORMAT_RGBA_EXT = GLXEnum
|
||||
GLX_TEXTURE_RECTANGLE_BIT_EXT = GLXBindToTextureTargetMask
|
||||
GLX_TEXTURE_RECTANGLE_EXT = GLXEnum
|
||||
GLX_TEXTURE_TARGET_EXT = GLXEnum
|
||||
GLX_TRANSPARENT_ALPHA_VALUE = GLXAttribute, GLXEnum
|
||||
GLX_TRANSPARENT_ALPHA_VALUE_EXT = GLXAttribute, GLXEnum
|
||||
GLX_TRANSPARENT_BLUE_VALUE = GLXAttribute, GLXEnum
|
||||
GLX_TRANSPARENT_BLUE_VALUE_EXT = GLXAttribute, GLXEnum
|
||||
GLX_TRANSPARENT_GREEN_VALUE = GLXAttribute, GLXEnum
|
||||
GLX_TRANSPARENT_GREEN_VALUE_EXT = GLXAttribute, GLXEnum
|
||||
GLX_TRANSPARENT_INDEX = GLXEnum
|
||||
GLX_TRANSPARENT_INDEX_EXT = GLXEnum
|
||||
GLX_TRANSPARENT_INDEX_VALUE = GLXAttribute, GLXEnum
|
||||
GLX_TRANSPARENT_INDEX_VALUE_EXT = GLXAttribute, GLXEnum
|
||||
GLX_TRANSPARENT_RED_VALUE = GLXAttribute, GLXEnum
|
||||
GLX_TRANSPARENT_RED_VALUE_EXT = GLXAttribute, GLXEnum
|
||||
GLX_TRANSPARENT_RGB = GLXEnum
|
||||
GLX_TRANSPARENT_RGB_EXT = GLXEnum
|
||||
GLX_TRANSPARENT_TYPE = GLXAttribute, GLXEnum
|
||||
GLX_TRANSPARENT_TYPE_EXT = GLXAttribute, GLXEnum
|
||||
GLX_TRUE_COLOR = GLXEnum
|
||||
GLX_TRUE_COLOR_EXT = GLXEnum
|
||||
GLX_UNIQUE_ID_NV = GLXEnum
|
||||
GLX_USE_GL = GLXAttribute, GLXEnum
|
||||
GLX_VENDOR = GLXStringName
|
||||
GLX_VENDOR_NAMES_EXT = GLXEnum
|
||||
GLX_VERSION = GLXStringName
|
||||
GLX_VIDEO_OUT_ALPHA_NV = GLXEnum
|
||||
GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV = GLXEnum
|
||||
GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV = GLXEnum
|
||||
GLX_VIDEO_OUT_COLOR_NV = GLXEnum
|
||||
GLX_VIDEO_OUT_DEPTH_NV = GLXEnum
|
||||
GLX_VIDEO_OUT_FIELD_1_NV = GLXEnum
|
||||
GLX_VIDEO_OUT_FIELD_2_NV = GLXEnum
|
||||
GLX_VIDEO_OUT_FRAME_NV = GLXEnum
|
||||
GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV = GLXEnum
|
||||
GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV = GLXEnum
|
||||
GLX_VISUAL_CAVEAT_EXT = GLXAttribute, GLXEnum
|
||||
GLX_VISUAL_ID = GLXEnum
|
||||
GLX_VISUAL_ID_EXT = GLXEnum
|
||||
GLX_VISUAL_SELECT_GROUP_SGIX = GLXEnum
|
||||
GLX_WIDTH = GLXEnum
|
||||
GLX_WIDTH_SGIX = GLXEnum
|
||||
GLX_WINDOW = GLXEnum
|
||||
GLX_WINDOW_BIT = GLXDrawableTypeMask
|
||||
GLX_WINDOW_BIT_SGIX = GLXDrawableTypeMask
|
||||
GLX_WINDOW_SGIX = GLXEnum
|
||||
GLX_X_RENDERABLE = GLXEnum
|
||||
GLX_X_RENDERABLE_SGIX = GLXEnum
|
||||
GLX_X_VISUAL_TYPE = GLXAttribute, GLXEnum
|
||||
GLX_X_VISUAL_TYPE_EXT = GLXAttribute, GLXEnum
|
||||
GLX_Y_INVERTED_EXT = GLXEnum
|
|
@ -0,0 +1,298 @@
|
|||
ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV = WGLEnum
|
||||
ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB = WGLEnum
|
||||
ERROR_INVALID_PIXEL_TYPE_ARB = WGLEnum
|
||||
ERROR_INVALID_PIXEL_TYPE_EXT = WGLEnum
|
||||
ERROR_INVALID_PROFILE_ARB = WGLEnum
|
||||
ERROR_INVALID_VERSION_ARB = WGLEnum
|
||||
ERROR_MISSING_AFFINITY_MASK_NV = WGLEnum
|
||||
WGL_ACCELERATION_ARB = WGLEnum
|
||||
WGL_ACCELERATION_EXT = WGLEnum
|
||||
WGL_ACCESS_READ_ONLY_NV = WGLDXInteropMaskNV
|
||||
WGL_ACCESS_READ_WRITE_NV = WGLDXInteropMaskNV
|
||||
WGL_ACCESS_WRITE_DISCARD_NV = WGLDXInteropMaskNV
|
||||
WGL_ACCUM_ALPHA_BITS_ARB = WGLEnum
|
||||
WGL_ACCUM_ALPHA_BITS_EXT = WGLEnum
|
||||
WGL_ACCUM_BITS_ARB = WGLEnum
|
||||
WGL_ACCUM_BITS_EXT = WGLEnum
|
||||
WGL_ACCUM_BLUE_BITS_ARB = WGLEnum
|
||||
WGL_ACCUM_BLUE_BITS_EXT = WGLEnum
|
||||
WGL_ACCUM_GREEN_BITS_ARB = WGLEnum
|
||||
WGL_ACCUM_GREEN_BITS_EXT = WGLEnum
|
||||
WGL_ACCUM_RED_BITS_ARB = WGLEnum
|
||||
WGL_ACCUM_RED_BITS_EXT = WGLEnum
|
||||
WGL_ALPHA_BITS_ARB = WGLEnum
|
||||
WGL_ALPHA_BITS_EXT = WGLEnum
|
||||
WGL_ALPHA_SHIFT_ARB = WGLEnum
|
||||
WGL_ALPHA_SHIFT_EXT = WGLEnum
|
||||
WGL_AUX_BUFFERS_ARB = WGLEnum
|
||||
WGL_AUX_BUFFERS_EXT = WGLEnum
|
||||
WGL_AUX0_ARB = WGLEnum
|
||||
WGL_AUX1_ARB = WGLEnum
|
||||
WGL_AUX2_ARB = WGLEnum
|
||||
WGL_AUX3_ARB = WGLEnum
|
||||
WGL_AUX4_ARB = WGLEnum
|
||||
WGL_AUX5_ARB = WGLEnum
|
||||
WGL_AUX6_ARB = WGLEnum
|
||||
WGL_AUX7_ARB = WGLEnum
|
||||
WGL_AUX8_ARB = WGLEnum
|
||||
WGL_AUX9_ARB = WGLEnum
|
||||
WGL_BACK_COLOR_BUFFER_BIT_ARB = WGLColorBufferMask
|
||||
WGL_BACK_LEFT_ARB = WGLEnum
|
||||
WGL_BACK_RIGHT_ARB = WGLEnum
|
||||
WGL_BIND_TO_TEXTURE_DEPTH_NV = WGLEnum
|
||||
WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV = WGLEnum
|
||||
WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV = WGLEnum
|
||||
WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV = WGLEnum
|
||||
WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV = WGLEnum
|
||||
WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV = WGLEnum
|
||||
WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV = WGLEnum
|
||||
WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV = WGLEnum
|
||||
WGL_BIND_TO_TEXTURE_RGB_ARB = WGLEnum
|
||||
WGL_BIND_TO_TEXTURE_RGBA_ARB = WGLEnum
|
||||
WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV = WGLEnum
|
||||
WGL_BIND_TO_VIDEO_RGB_NV = WGLEnum
|
||||
WGL_BIND_TO_VIDEO_RGBA_NV = WGLEnum
|
||||
WGL_BLUE_BITS_ARB = WGLEnum
|
||||
WGL_BLUE_BITS_EXT = WGLEnum
|
||||
WGL_BLUE_SHIFT_ARB = WGLEnum
|
||||
WGL_BLUE_SHIFT_EXT = WGLEnum
|
||||
WGL_COLOR_BITS_ARB = WGLEnum
|
||||
WGL_COLOR_BITS_EXT = WGLEnum
|
||||
WGL_COLOR_SAMPLES_NV = WGLEnum
|
||||
WGL_COLORSPACE_EXT = EGLEnum
|
||||
WGL_COLORSPACE_LINEAR_EXT = EGLEnum
|
||||
WGL_COLORSPACE_SRGB_EXT = EGLEnum
|
||||
WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = WGLContextProfileMask
|
||||
WGL_CONTEXT_CORE_PROFILE_BIT_ARB = WGLContextProfileMask
|
||||
WGL_CONTEXT_DEBUG_BIT_ARB = WGLContextFlagsMask
|
||||
WGL_CONTEXT_ES_PROFILE_BIT_EXT = WGLContextProfileMask
|
||||
WGL_CONTEXT_ES2_PROFILE_BIT_EXT = WGLContextProfileMask
|
||||
WGL_CONTEXT_FLAGS_ARB = WGLEnum
|
||||
WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB = WGLContextFlagsMask
|
||||
WGL_CONTEXT_LAYER_PLANE_ARB = WGLEnum
|
||||
WGL_CONTEXT_MAJOR_VERSION_ARB = WGLEnum
|
||||
WGL_CONTEXT_MINOR_VERSION_ARB = WGLEnum
|
||||
WGL_CONTEXT_MULTIGPU_ATTRIB_AFR_NV = WGLEnum
|
||||
WGL_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV = WGLEnum
|
||||
WGL_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV = WGLEnum
|
||||
WGL_CONTEXT_MULTIGPU_ATTRIB_NV = WGLEnum
|
||||
WGL_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV = WGLEnum
|
||||
WGL_CONTEXT_OPENGL_NO_ERROR_ARB = WGLEnum
|
||||
WGL_CONTEXT_PROFILE_MASK_ARB = GLEnum
|
||||
WGL_CONTEXT_RELEASE_BEHAVIOR_ARB = WGLEnum
|
||||
WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB = WGLEnum
|
||||
WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB = WGLEnum
|
||||
WGL_CONTEXT_RESET_ISOLATION_BIT_ARB = WGLContextFlagsMask
|
||||
WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB = GLEnum
|
||||
WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB = WGLContextFlagsMask
|
||||
WGL_COVERAGE_SAMPLES_NV = WGLEnum
|
||||
WGL_CUBE_MAP_FACE_ARB = WGLEnum
|
||||
WGL_DEPTH_BITS_ARB = WGLEnum
|
||||
WGL_DEPTH_BITS_EXT = WGLEnum
|
||||
WGL_DEPTH_BUFFER_BIT_ARB = WGLColorBufferMask
|
||||
WGL_DEPTH_COMPONENT_NV = WGLEnum
|
||||
WGL_DEPTH_FLOAT_EXT = WGLEnum
|
||||
WGL_DEPTH_TEXTURE_FORMAT_NV = WGLEnum
|
||||
WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D = WGLEnum
|
||||
WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D = WGLEnum
|
||||
WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D = WGLEnum
|
||||
WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D = WGLEnum
|
||||
WGL_DOUBLE_BUFFER_ARB = WGLEnum
|
||||
WGL_DOUBLE_BUFFER_EXT = WGLEnum
|
||||
WGL_DRAW_TO_BITMAP_ARB = WGLEnum
|
||||
WGL_DRAW_TO_BITMAP_EXT = WGLEnum
|
||||
WGL_DRAW_TO_PBUFFER_ARB = WGLEnum
|
||||
WGL_DRAW_TO_PBUFFER_EXT = WGLEnum
|
||||
WGL_DRAW_TO_WINDOW_ARB = WGLEnum
|
||||
WGL_DRAW_TO_WINDOW_EXT = WGLEnum
|
||||
WGL_FLOAT_COMPONENTS_NV = WGLEnum
|
||||
WGL_FONT_LINES = WGLEnum
|
||||
WGL_FONT_POLYGONS = WGLEnum
|
||||
WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB = WGLEnum
|
||||
WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT = WGLEnum
|
||||
WGL_FRONT_COLOR_BUFFER_BIT_ARB = WGLColorBufferMask
|
||||
WGL_FRONT_LEFT_ARB = WGLEnum
|
||||
WGL_FRONT_RIGHT_ARB = WGLEnum
|
||||
WGL_FULL_ACCELERATION_ARB = WGLEnum
|
||||
WGL_FULL_ACCELERATION_EXT = WGLEnum
|
||||
WGL_GAMMA_EXCLUDE_DESKTOP_I3D = WGLEnum
|
||||
WGL_GAMMA_TABLE_SIZE_I3D = WGLEnum
|
||||
WGL_GENERIC_ACCELERATION_ARB = WGLEnum
|
||||
WGL_GENERIC_ACCELERATION_EXT = WGLEnum
|
||||
WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D = WGLEnum
|
||||
WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D = WGLEnum
|
||||
WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D = WGLEnum
|
||||
WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D = WGLEnum
|
||||
WGL_GENLOCK_SOURCE_EDGE_RISING_I3D = WGLEnum
|
||||
WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D = WGLEnum
|
||||
WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D = WGLEnum
|
||||
WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D = WGLEnum
|
||||
WGL_GENLOCK_SOURCE_MULTIVIEW_I3D = WGLEnum
|
||||
WGL_GPU_CLOCK_AMD = WGLEnum
|
||||
WGL_GPU_FASTEST_TARGET_GPUS_AMD = WGLEnum
|
||||
WGL_GPU_NUM_PIPES_AMD = WGLEnum
|
||||
WGL_GPU_NUM_RB_AMD = WGLEnum
|
||||
WGL_GPU_NUM_SIMD_AMD = WGLEnum
|
||||
WGL_GPU_NUM_SPI_AMD = WGLEnum
|
||||
WGL_GPU_OPENGL_VERSION_STRING_AMD = WGLEnum
|
||||
WGL_GPU_RAM_AMD = WGLEnum
|
||||
WGL_GPU_RENDERER_STRING_AMD = WGLEnum
|
||||
WGL_GPU_VENDOR_AMD = WGLEnum
|
||||
WGL_GREEN_BITS_ARB = WGLEnum
|
||||
WGL_GREEN_BITS_EXT = WGLEnum
|
||||
WGL_GREEN_SHIFT_ARB = WGLEnum
|
||||
WGL_GREEN_SHIFT_EXT = WGLEnum
|
||||
WGL_IMAGE_BUFFER_LOCK_I3D = WGLImageBufferMaskI3D
|
||||
WGL_IMAGE_BUFFER_MIN_ACCESS_I3D = WGLImageBufferMaskI3D
|
||||
WGL_LOSE_CONTEXT_ON_RESET_ARB = GLEnum
|
||||
WGL_MAX_PBUFFER_HEIGHT_ARB = WGLEnum
|
||||
WGL_MAX_PBUFFER_HEIGHT_EXT = WGLEnum
|
||||
WGL_MAX_PBUFFER_PIXELS_ARB = WGLEnum
|
||||
WGL_MAX_PBUFFER_PIXELS_EXT = WGLEnum
|
||||
WGL_MAX_PBUFFER_WIDTH_ARB = WGLEnum
|
||||
WGL_MAX_PBUFFER_WIDTH_EXT = WGLEnum
|
||||
WGL_MIPMAP_LEVEL_ARB = WGLEnum
|
||||
WGL_MIPMAP_TEXTURE_ARB = WGLEnum
|
||||
WGL_NEED_PALETTE_ARB = WGLEnum
|
||||
WGL_NEED_PALETTE_EXT = WGLEnum
|
||||
WGL_NEED_SYSTEM_PALETTE_ARB = WGLEnum
|
||||
WGL_NEED_SYSTEM_PALETTE_EXT = WGLEnum
|
||||
WGL_NO_ACCELERATION_ARB = WGLEnum
|
||||
WGL_NO_ACCELERATION_EXT = WGLEnum
|
||||
WGL_NO_RESET_NOTIFICATION_ARB = GLEnum
|
||||
WGL_NO_TEXTURE_ARB = WGLEnum
|
||||
WGL_NUM_VIDEO_CAPTURE_SLOTS_NV = WGLEnum
|
||||
WGL_NUM_VIDEO_SLOTS_NV = WGLEnum
|
||||
WGL_NUMBER_OVERLAYS_ARB = WGLEnum
|
||||
WGL_NUMBER_OVERLAYS_EXT = WGLEnum
|
||||
WGL_NUMBER_PIXEL_FORMATS_ARB = WGLEnum
|
||||
WGL_NUMBER_PIXEL_FORMATS_EXT = WGLEnum
|
||||
WGL_NUMBER_UNDERLAYS_ARB = WGLEnum
|
||||
WGL_NUMBER_UNDERLAYS_EXT = WGLEnum
|
||||
WGL_OPTIMAL_PBUFFER_HEIGHT_EXT = WGLEnum
|
||||
WGL_OPTIMAL_PBUFFER_WIDTH_EXT = WGLEnum
|
||||
WGL_PBUFFER_HEIGHT_ARB = WGLEnum
|
||||
WGL_PBUFFER_HEIGHT_EXT = WGLEnum
|
||||
WGL_PBUFFER_LARGEST_ARB = WGLEnum
|
||||
WGL_PBUFFER_LARGEST_EXT = WGLEnum
|
||||
WGL_PBUFFER_LOST_ARB = WGLEnum
|
||||
WGL_PBUFFER_WIDTH_ARB = WGLEnum
|
||||
WGL_PBUFFER_WIDTH_EXT = WGLEnum
|
||||
WGL_PIXEL_TYPE_ARB = WGLEnum
|
||||
WGL_PIXEL_TYPE_EXT = WGLEnum
|
||||
WGL_RED_BITS_ARB = WGLEnum
|
||||
WGL_RED_BITS_EXT = WGLEnum
|
||||
WGL_RED_SHIFT_ARB = WGLEnum
|
||||
WGL_RED_SHIFT_EXT = WGLEnum
|
||||
WGL_SAMPLE_BUFFERS_3DFX = WGLEnum
|
||||
WGL_SAMPLE_BUFFERS_ARB = WGLEnum
|
||||
WGL_SAMPLE_BUFFERS_EXT = WGLEnum
|
||||
WGL_SAMPLES_3DFX = WGLEnum
|
||||
WGL_SAMPLES_ARB = WGLEnum
|
||||
WGL_SAMPLES_EXT = WGLEnum
|
||||
WGL_SHARE_ACCUM_ARB = WGLEnum
|
||||
WGL_SHARE_ACCUM_EXT = WGLEnum
|
||||
WGL_SHARE_DEPTH_ARB = WGLEnum
|
||||
WGL_SHARE_DEPTH_EXT = WGLEnum
|
||||
WGL_SHARE_STENCIL_ARB = WGLEnum
|
||||
WGL_SHARE_STENCIL_EXT = WGLEnum
|
||||
WGL_STENCIL_BITS_ARB = WGLEnum
|
||||
WGL_STENCIL_BITS_EXT = WGLEnum
|
||||
WGL_STENCIL_BUFFER_BIT_ARB = WGLColorBufferMask
|
||||
WGL_STEREO_ARB = WGLEnum
|
||||
WGL_STEREO_EMITTER_DISABLE_3DL = WGLEnum
|
||||
WGL_STEREO_EMITTER_ENABLE_3DL = WGLEnum
|
||||
WGL_STEREO_EXT = WGLEnum
|
||||
WGL_STEREO_POLARITY_INVERT_3DL = WGLEnum
|
||||
WGL_STEREO_POLARITY_NORMAL_3DL = WGLEnum
|
||||
WGL_SUPPORT_GDI_ARB = WGLEnum
|
||||
WGL_SUPPORT_GDI_EXT = WGLEnum
|
||||
WGL_SUPPORT_OPENGL_ARB = WGLEnum
|
||||
WGL_SUPPORT_OPENGL_EXT = WGLEnum
|
||||
WGL_SWAP_COPY_ARB = WGLEnum
|
||||
WGL_SWAP_COPY_EXT = WGLEnum
|
||||
WGL_SWAP_EXCHANGE_ARB = WGLEnum
|
||||
WGL_SWAP_EXCHANGE_EXT = WGLEnum
|
||||
WGL_SWAP_LAYER_BUFFERS_ARB = WGLEnum
|
||||
WGL_SWAP_LAYER_BUFFERS_EXT = WGLEnum
|
||||
WGL_SWAP_MAIN_PLANE = WGLLayerPlaneMask
|
||||
WGL_SWAP_METHOD_ARB = WGLEnum
|
||||
WGL_SWAP_METHOD_EXT = WGLEnum
|
||||
WGL_SWAP_OVERLAY1 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY10 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY11 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY12 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY13 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY14 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY15 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY2 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY3 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY4 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY5 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY6 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY7 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY8 = WGLLayerPlaneMask
|
||||
WGL_SWAP_OVERLAY9 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDEFINED_ARB = WGLEnum
|
||||
WGL_SWAP_UNDEFINED_EXT = WGLEnum
|
||||
WGL_SWAP_UNDERLAY1 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY10 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY11 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY12 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY13 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY14 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY15 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY2 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY3 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY4 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY5 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY6 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY7 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY8 = WGLLayerPlaneMask
|
||||
WGL_SWAP_UNDERLAY9 = WGLLayerPlaneMask
|
||||
WGL_TEXTURE_1D_ARB = WGLEnum
|
||||
WGL_TEXTURE_2D_ARB = WGLEnum
|
||||
WGL_TEXTURE_CUBE_MAP_ARB = WGLEnum
|
||||
WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = WGLEnum
|
||||
WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = WGLEnum
|
||||
WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = WGLEnum
|
||||
WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = WGLEnum
|
||||
WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = WGLEnum
|
||||
WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = WGLEnum
|
||||
WGL_TEXTURE_DEPTH_COMPONENT_NV = WGLEnum
|
||||
WGL_TEXTURE_FLOAT_R_NV = WGLEnum
|
||||
WGL_TEXTURE_FLOAT_RG_NV = WGLEnum
|
||||
WGL_TEXTURE_FLOAT_RGB_NV = WGLEnum
|
||||
WGL_TEXTURE_FLOAT_RGBA_NV = WGLEnum
|
||||
WGL_TEXTURE_FORMAT_ARB = WGLEnum
|
||||
WGL_TEXTURE_RECTANGLE_ATI = WGLEnum
|
||||
WGL_TEXTURE_RECTANGLE_NV = WGLEnum
|
||||
WGL_TEXTURE_RGB_ARB = WGLEnum
|
||||
WGL_TEXTURE_RGBA_ARB = WGLEnum
|
||||
WGL_TEXTURE_TARGET_ARB = WGLEnum
|
||||
WGL_TRANSPARENT_ALPHA_VALUE_ARB = WGLEnum
|
||||
WGL_TRANSPARENT_ARB = WGLEnum
|
||||
WGL_TRANSPARENT_BLUE_VALUE_ARB = WGLEnum
|
||||
WGL_TRANSPARENT_EXT = WGLEnum
|
||||
WGL_TRANSPARENT_GREEN_VALUE_ARB = WGLEnum
|
||||
WGL_TRANSPARENT_INDEX_VALUE_ARB = WGLEnum
|
||||
WGL_TRANSPARENT_RED_VALUE_ARB = WGLEnum
|
||||
WGL_TRANSPARENT_VALUE_EXT = WGLEnum
|
||||
WGL_TYPE_COLORINDEX_ARB = WGLEnum
|
||||
WGL_TYPE_COLORINDEX_EXT = WGLEnum
|
||||
WGL_TYPE_RGBA_ARB = WGLEnum
|
||||
WGL_TYPE_RGBA_EXT = WGLEnum
|
||||
WGL_TYPE_RGBA_FLOAT_ARB = WGLEnum
|
||||
WGL_TYPE_RGBA_FLOAT_ATI = WGLEnum
|
||||
WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT = WGLEnum
|
||||
WGL_UNIQUE_ID_NV = WGLEnum
|
||||
WGL_VIDEO_OUT_ALPHA_NV = WGLEnum
|
||||
WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV = WGLEnum
|
||||
WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV = WGLEnum
|
||||
WGL_VIDEO_OUT_COLOR_NV = WGLEnum
|
||||
WGL_VIDEO_OUT_DEPTH_NV = WGLEnum
|
||||
WGL_VIDEO_OUT_FIELD_1 = WGLEnum
|
||||
WGL_VIDEO_OUT_FIELD_2 = WGLEnum
|
||||
WGL_VIDEO_OUT_FRAME = WGLEnum
|
||||
WGL_VIDEO_OUT_STACKED_FIELDS_1_2 = WGLEnum
|
||||
WGL_VIDEO_OUT_STACKED_FIELDS_2_1 = WGLEnum
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,311 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Newtonsoft.Json;
|
||||
using NUnit.Framework;
|
||||
using Silk.NET.BuildTools.Common;
|
||||
using Silk.NET.SilkTouch.Mods;
|
||||
using VerifyNUnit;
|
||||
using VerifyTests;
|
||||
|
||||
namespace Silk.NET.SilkTouch.UnitTests.Khronos;
|
||||
|
||||
[TestFixture]
|
||||
public class MixKhronosDataTests
|
||||
{
|
||||
struct Options : IOptionsSnapshot<MixKhronosData.Configuration>
|
||||
{
|
||||
public required MixKhronosData.Configuration Value { get; init; }
|
||||
|
||||
public MixKhronosData.Configuration Get(string? name) => Value;
|
||||
}
|
||||
|
||||
[ModuleInitializer]
|
||||
public static void Initialize() => VerifyDiffPlex.Initialize();
|
||||
|
||||
public static string TestFile(string name, [CallerFilePath] string? fPath = null) =>
|
||||
Path.Combine(
|
||||
Path.GetDirectoryName(fPath)
|
||||
?? throw new InvalidOperationException("Expected to get directory name of test."),
|
||||
$"test{name}"
|
||||
);
|
||||
|
||||
public static IEnumerable<string> TestFiles(
|
||||
Regex regex,
|
||||
[CallerFilePath] string? fPath = null
|
||||
) =>
|
||||
Directory
|
||||
.GetFiles(
|
||||
Path.GetDirectoryName(fPath)
|
||||
?? throw new InvalidOperationException("Expected to get directory name of test")
|
||||
)
|
||||
.Where(x => regex.IsMatch(x));
|
||||
|
||||
private static IAsyncEnumerable<object[]> TestCases()
|
||||
{
|
||||
IEnumerable<string> files = ["gl.xml", "wgl.xml", "glx.xml", "cl.xml", "vk.xml"];
|
||||
return files
|
||||
.ToAsyncEnumerable()
|
||||
.SelectAwait(async x =>
|
||||
{
|
||||
var mod = new MixKhronosData(
|
||||
new NullLogger<MixKhronosData>(),
|
||||
new Options
|
||||
{
|
||||
Value = new MixKhronosData.Configuration { SpecPath = TestFile(x) }
|
||||
}
|
||||
);
|
||||
await mod.BeforeJobAsync(
|
||||
"",
|
||||
new SilkTouchConfiguration { ClangSharpResponseFiles = [], Solution = "" }
|
||||
);
|
||||
return (object[])[x, mod.Jobs[""]];
|
||||
});
|
||||
}
|
||||
|
||||
private static IAsyncEnumerable<object[]> EnumTestCases() =>
|
||||
TestCases().Where(x => x[0] is "gl.xml" or "wgl.xml" or "glx.xml" or "cl.xml");
|
||||
|
||||
private static IAsyncEnumerable<object[]> RegressionTestCases() =>
|
||||
TestCases()
|
||||
.SelectAwait(async s =>
|
||||
s[0] is "gl.xml" or "cl.xml"
|
||||
? (object[])
|
||||
|
||||
[
|
||||
s[0],
|
||||
s[1],
|
||||
await Task.WhenAll(
|
||||
TestFiles(
|
||||
new Regex(
|
||||
$@"regression\.2\.21\.{((string)s[0])[..^4]}.*\.json\.gz"
|
||||
)
|
||||
)
|
||||
.Select(ReadProfile)
|
||||
)
|
||||
]
|
||||
: null
|
||||
)
|
||||
.OfType<object[]>();
|
||||
|
||||
private static async Task<Profile> ReadProfile(string fPath)
|
||||
{
|
||||
await using var fs = File.OpenRead(fPath);
|
||||
await using var gz = new GZipStream(fs, CompressionMode.Decompress);
|
||||
using var sr = new StreamReader(gz);
|
||||
return JsonConvert.DeserializeObject<Profile>(await sr.ReadToEndAsync())
|
||||
?? throw new InvalidDataException("Deserialization returned null");
|
||||
}
|
||||
|
||||
[Test, TestCaseSource(nameof(EnumTestCases))]
|
||||
public Task EnumsToGroups(string file, object data) =>
|
||||
Verifier
|
||||
.Verify(
|
||||
string.Join(
|
||||
'\n',
|
||||
((MixKhronosData.JobData)data)
|
||||
.EnumsToGroups.OrderBy(x => x.Key)
|
||||
.Select(x => $"{x.Key} = {string.Join(", ", x.Value.Order())}")
|
||||
)
|
||||
)
|
||||
.UseFileName($"{nameof(MixKhronosDataTests)}.{nameof(EnumsToGroups)}.{file}");
|
||||
|
||||
[Test, TestCaseSource(nameof(TestCases))]
|
||||
public Task ApiSets(string file, object data) =>
|
||||
Verifier
|
||||
.Verify(
|
||||
string.Join(
|
||||
'\n',
|
||||
((MixKhronosData.JobData)data)
|
||||
.ApiSets.OrderBy(x => x.Key)
|
||||
.Select(x =>
|
||||
string.Join(
|
||||
'\n',
|
||||
x.Value.Dependencies.Select(y =>
|
||||
$"[{y.Key}] {(x.Value.IsExtension ? $"{x.Key} (extension)" : x.Key)} = "
|
||||
+ string.Join(", ", y.Value.Order())
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
.UseFileName($"{nameof(MixKhronosDataTests)}.{nameof(ApiSets)}.{file}");
|
||||
|
||||
[Test, TestCaseSource(nameof(RegressionTestCases))]
|
||||
public Task EnumGroupRegression(string file, object data, Profile[] profiles)
|
||||
{
|
||||
var baselineGroups = new Dictionary<string, HashSet<string>>();
|
||||
foreach (
|
||||
var x in profiles
|
||||
.SelectMany(x => x.Projects.Values)
|
||||
.SelectMany(x => x.Enums)
|
||||
.Where(x =>
|
||||
!string.IsNullOrWhiteSpace(x.NativeName) && x.NativeName is not "CLenum"
|
||||
)
|
||||
)
|
||||
{
|
||||
var key = (
|
||||
x.NativeName is "GLenum"
|
||||
? "GLEnum"
|
||||
: x.NativeName.StartsWith("ErrorCodes")
|
||||
? "ErrorCodes"
|
||||
: x.NativeName
|
||||
).Replace('.', '_').Trim();
|
||||
key = key[(key.LastIndexOf(' ') + 1)..];
|
||||
if (!baselineGroups.TryGetValue(key, out var constituents))
|
||||
{
|
||||
constituents = baselineGroups[key] = [];
|
||||
}
|
||||
|
||||
foreach (var token in x.Tokens.Where(y => !string.IsNullOrWhiteSpace(y.NativeName)))
|
||||
{
|
||||
constituents.Add(token.NativeName);
|
||||
}
|
||||
}
|
||||
var newGroups = ((MixKhronosData.JobData)data).Groups.ToDictionary(
|
||||
x => x.Key,
|
||||
_ => new HashSet<string>()
|
||||
);
|
||||
foreach (var (enumName, groupNames) in ((MixKhronosData.JobData)data).EnumsToGroups)
|
||||
{
|
||||
foreach (var groupName in groupNames)
|
||||
{
|
||||
if (newGroups.TryGetValue(groupName, out var constituents))
|
||||
{
|
||||
constituents.Add(enumName);
|
||||
}
|
||||
else
|
||||
{
|
||||
newGroups[groupName] = [enumName];
|
||||
}
|
||||
}
|
||||
}
|
||||
var verifyFile = new StringBuilder();
|
||||
verifyFile.AppendLine(
|
||||
"NOTE: This file lists differences/regressions between 3.0's enum grouping system "
|
||||
+ "baselined against 2.21's. If this file is non-empty and verified, it means the regressions have "
|
||||
+ "been justified. Justified differences are usually as a result of a discrepancy between the "
|
||||
+ "regression baseline JSON and the baseline XML.\n"
|
||||
);
|
||||
foreach (
|
||||
var (groupName, _) in baselineGroups
|
||||
.Where(x => !newGroups.ContainsKey(x.Key))
|
||||
.OrderBy(x => x.Key)
|
||||
)
|
||||
{
|
||||
verifyFile.AppendLine($"Removed Group: {groupName}");
|
||||
}
|
||||
|
||||
var unchanged = new List<string>();
|
||||
foreach (var (groupName, constituents) in newGroups.OrderBy(x => x.Key))
|
||||
{
|
||||
var hasOutputHeader = !baselineGroups.TryGetValue(
|
||||
groupName,
|
||||
out var baselineConstituents
|
||||
);
|
||||
if (hasOutputHeader)
|
||||
{
|
||||
verifyFile.AppendLine($"\nAdded Group: {groupName}");
|
||||
}
|
||||
|
||||
foreach (var constituent in baselineConstituents?.Order() ?? Enumerable.Empty<string>())
|
||||
{
|
||||
if (!constituents.Contains(constituent))
|
||||
{
|
||||
if (!hasOutputHeader)
|
||||
{
|
||||
verifyFile.AppendLine($"\nExisting Group: {groupName}");
|
||||
hasOutputHeader = true;
|
||||
}
|
||||
|
||||
verifyFile.AppendLine($" Removed: {constituent}");
|
||||
}
|
||||
}
|
||||
|
||||
foreach (
|
||||
var constituent in constituents
|
||||
.Where(x => !(baselineConstituents?.Contains(x) ?? false))
|
||||
.Order()
|
||||
)
|
||||
{
|
||||
if (!hasOutputHeader)
|
||||
{
|
||||
verifyFile.AppendLine($"\nExisting Group: {groupName}");
|
||||
hasOutputHeader = true;
|
||||
}
|
||||
|
||||
verifyFile.AppendLine($" Added: {constituent}");
|
||||
}
|
||||
|
||||
if (!hasOutputHeader)
|
||||
{
|
||||
unchanged.Add(groupName);
|
||||
}
|
||||
}
|
||||
|
||||
verifyFile.AppendLine($"\nUnchanged: {string.Join(", ", unchanged)}");
|
||||
return Verifier
|
||||
.Verify(verifyFile.ToString())
|
||||
.UseFileName($"{nameof(MixKhronosDataTests)}.{nameof(EnumGroupRegression)}.{file}");
|
||||
}
|
||||
|
||||
[Test, TestCaseSource(nameof(TestCases))]
|
||||
public Task SupportedApiProfiles(string file, object data) =>
|
||||
Verifier
|
||||
.Verify(
|
||||
string.Join(
|
||||
'\n',
|
||||
((MixKhronosData.JobData)data)
|
||||
.SupportedApiProfiles?.OrderBy(x => x.Key)
|
||||
.Select(x =>
|
||||
$"{x.Key}\n{new string('-', x.Key.Length)}\n{string.Join('\n', x.Value.Select(x => x.ToString()).Order())}\n"
|
||||
) ?? []
|
||||
)
|
||||
)
|
||||
.UseFileName($"{nameof(MixKhronosDataTests)}.{nameof(SupportedApiProfiles)}.{file}");
|
||||
|
||||
[Test]
|
||||
public void DependsStringParsing1() =>
|
||||
Assert.That(
|
||||
MixKhronosData
|
||||
.ParseDependencyOptions(
|
||||
"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_depth_stencil_resolve),VK_VERSION_1_2"
|
||||
)
|
||||
.Options,
|
||||
Is.EquivalentTo(
|
||||
(IEnumerable<string>)
|
||||
|
||||
[
|
||||
"VK_KHR_depth_stencil_resolve+VK_KHR_get_physical_device_properties2",
|
||||
"VK_KHR_depth_stencil_resolve+VK_VERSION_1_1",
|
||||
"VK_VERSION_1_2"
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
[Test]
|
||||
public void DependsStringParsing2() =>
|
||||
Assert.That(
|
||||
MixKhronosData
|
||||
.ParseDependencyOptions(
|
||||
"((VK_KHR_sampler_ycbcr_conversion+VK_KHR_external_memory+VK_KHR_dedicated_allocation),VK_VERSION_1_1)+VK_EXT_queue_family_foreign"
|
||||
)
|
||||
.Options,
|
||||
Is.EquivalentTo(
|
||||
(IEnumerable<string>)
|
||||
|
||||
[
|
||||
"VK_EXT_queue_family_foreign+VK_KHR_sampler_ycbcr_conversion+VK_KHR_external_memory+VK_KHR_dedicated_allocation",
|
||||
"VK_EXT_queue_family_foreign+VK_VERSION_1_1"
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -11,7 +11,8 @@ public class NameTests : NameTrimmer
|
|||
[Test]
|
||||
public void SimpleGlfwTestDetermination()
|
||||
{
|
||||
var test = new Dictionary<string, (string, List<string>?)> {
|
||||
var test = new Dictionary<string, (string, List<string>?)>
|
||||
{
|
||||
{ "GLFWallocator", ("GLFWallocator", null) },
|
||||
{ "GLFWgammaramp", ("GLFWgammaramp", null) },
|
||||
{ "GLFWgamepadstate", ("GLFWgamepadstate", null) },
|
||||
|
@ -22,10 +23,14 @@ public class NameTests : NameTrimmer
|
|||
{ "GLFWmonitor", ("GLFWmonitor", null) },
|
||||
{ "GLFWwindow", ("GLFWwindow", null) }
|
||||
};
|
||||
Assert.That(GetPrefix(null, null, test, null, false, true)?.Prefix, Is.EqualTo("GLFW"));
|
||||
Assert.That(
|
||||
GetPrefix(null, null, test, null, null, false, true)?.Prefix,
|
||||
Is.EqualTo("GLFW")
|
||||
);
|
||||
string? identifiedPrefix = null;
|
||||
Trim(null, null, "GLFW", test, null, ref identifiedPrefix);
|
||||
var expected = new Dictionary<string, string> {
|
||||
Trim(null, null, "GLFW", test, null, null, ref identifiedPrefix);
|
||||
var expected = new Dictionary<string, string>
|
||||
{
|
||||
{ "GLFWallocator", "Allocator" },
|
||||
{ "GLFWgammaramp", "Gammaramp" },
|
||||
{ "GLFWgamepadstate", "Gamepadstate" },
|
||||
|
@ -38,7 +43,10 @@ public class NameTests : NameTrimmer
|
|||
};
|
||||
foreach (var (key, (trimmed, _)) in test)
|
||||
{
|
||||
Assert.That(trimmed.Prettify(new NameUtils.NameTransformer(4)), Is.EqualTo(expected[key]));
|
||||
Assert.That(
|
||||
trimmed.Prettify(new NameUtils.NameTransformer(4)),
|
||||
Is.EqualTo(expected[key])
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,10 +3,21 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<NoWarn>8012;$(NoWarn)</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\sources\SilkTouch\Silk.NET.SilkTouch.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Update="NUnit" Version="4.1.0" />
|
||||
<PackageReference Include="Silk.NET.BuildTools" Version="2.20.0" />
|
||||
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
|
||||
<PackageReference Include="Verify.DiffPlex" Version="2.3.0" />
|
||||
<PackageReference Include="Verify.NUnit" Version="23.6.0" />
|
||||
<None Include="**/*.received.*" />
|
||||
<None Include="**/*.verified.*" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
Загрузка…
Ссылка в новой задаче