Skip to content

Commit f106838

Browse files
HurricanKaiPerksey
andauthored
New Interop (#262)
* Use Ultz.Bcl.Half, preliminary Silk.NET.Core work (basically final now) * Move the entire codebase to the new core * Move the entire codebase to partial methods * Fix partial keyword not being in the right place in method declarations * Return Type Marshalling * Parameter Handling * Handle Parameters * Rewrite Native API Generator to be extensible * Bool Return Marshaller * Delegate Return Marshaller * Bool Parameter Marshaller * Delegate Parameter Marshaller * Rework API Generator + Bool Marshaller * Move Bool Marshaller to it's own File * Move MarshalContext to new file * Move PinMiddleware to new file * Move SyntaxReceiver to new file * Move Middleware to new file * Move MarshalBuilder to new file * Cleanup Files * Use ITypeSymbol over string * Delegate Marshalling * Get Attribute Data from MarshalContext * Update bindings, fix cache hit bug * Allow PinObjectAttribute on return values * Allow Native Integers when Marshalling bools * Simplify Variable declaration * Handle PinObjectAttribute * Fix MarshalContext throwing on return types * Use Silk.NET.Core NativeApiAttribute version * Span Marshaller * Fix Pinning & introduce ParameterInitMiddleware * Fix typing issues in Bool Marshaller * Fix a SpanMarshaller typing issue * Fix Variables being declared in too low of a scope * Add Silk.NET.Core MarshalUtils * Do not handle reference types in ParameterInitMiddleware * String Marshaller * Add SilkTouch codeowner * Fix out string not having count attributes (part 1?) * Remove Debug things * Cast string size * Fix an issue where an out string was being fixed * Add SilkTouch to bindings.props * Refactorings * Remove extra Generator reference from OpenGL * Always use SymbolDisplayFormat.FullyQualifiedFormat * partial unsafe -> unsafe partial * partial override -> override partial * Fully Qualify Parameters and Return Type * Revert Debug line * NativeAPIGenerator -> NativeApiGenerator * Allow processing of methods without NativeApiAttribute * Allow processing of classes convertible to Silk.NET.Core.Native.NativeApiContainer * Fix everything that was broken, hello SilkTouch <3 * Add CoreGetSlotCount * Remove unused usings * Fix issues that would appear occasionally * Change how CoreGetSlotCount works * Remove more Debug things * Rework Loading backend to use a ConcurrentDictionary instead of an Array * PinObjectMarshaller before DelegateMarshaller * MarshalUtils -> SilkMarshal * Apply suggestions from code review * middlewares -> middleware * Silk.NET.Core.Native.AllocBStr -> Silk.NET.Core.Native.SilkMarshal.AllocBStr * Handle MarshalAs on bool return values Co-authored-by: Dylan Perks <dmp9biz@gmail.com> Co-authored-by: Dylan Perks <dylanperks23@gmail.com>
1 parent d4c4152 commit f106838

File tree

1,815 files changed

+26372
-23263
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,815 files changed

+26372
-23263
lines changed

CODEOWNERS

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Everything
2-
* @Perksey
2+
* @Perksey
33

44
# Maths
5-
/src/Maths/ @HurricanKai
5+
/src/Maths/ @HurricanKai
6+
7+
# SilkTouch
8+
/src/Core/Silk.NET.SilkTouch @HurricanKai

Silk.NET.sln

+15-15
Original file line numberDiff line numberDiff line change
@@ -260,8 +260,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions",
260260
EndProject
261261
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Silk.NET.Input.Extensions", "src\Input\Extensions\Silk.NET.Input.Extensions\Silk.NET.Input.Extensions.csproj", "{8DCB2EB4-D0DE-4EF9-ACB3-332055D594CB}"
262262
EndProject
263-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Silk.NET.Windowing.Extensions.Veldrid", "src\Windowing\Extensions\Silk.NET.Windowing.Extensions.Veldrid\Silk.NET.Windowing.Extensions.Veldrid.csproj", "{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}"
264-
EndProject
265263
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FramebufferResized", "src\Lab\FramebufferResized\FramebufferResized.csproj", "{7AF3C6CA-64FE-43F3-BD7B-C57C83AFAB79}"
266264
EndProject
267265
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "OpenXR", "OpenXR", "{ABD1AF6D-D9D1-4157-A1FF-AC98A054DA92}"
@@ -296,6 +294,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tutorial 3.5 - Lighting Map
296294
EndProject
297295
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Silk.NET.Windowing", "src\Windowing\Silk.NET.Windowing\Silk.NET.Windowing.csproj", "{00D8F04F-2063-4F4E-B793-0F9DCF2BCFA9}"
298296
EndProject
297+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Silk.NET.SilkTouch", "src\Core\Silk.NET.SilkTouch\Silk.NET.SilkTouch.csproj", "{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}"
298+
EndProject
299299
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Silk.NET.SDL", "src\Windowing\Silk.NET.SDL\Silk.NET.SDL.csproj", "{F16EDD0F-5ABE-4B25-98EE-8397E55B5CBA}"
300300
EndProject
301301
Global
@@ -1631,18 +1631,6 @@ Global
16311631
{8DCB2EB4-D0DE-4EF9-ACB3-332055D594CB}.Release|x64.Build.0 = Release|Any CPU
16321632
{8DCB2EB4-D0DE-4EF9-ACB3-332055D594CB}.Release|x86.ActiveCfg = Release|Any CPU
16331633
{8DCB2EB4-D0DE-4EF9-ACB3-332055D594CB}.Release|x86.Build.0 = Release|Any CPU
1634-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
1635-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Debug|Any CPU.Build.0 = Debug|Any CPU
1636-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Debug|x64.ActiveCfg = Debug|Any CPU
1637-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Debug|x64.Build.0 = Debug|Any CPU
1638-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Debug|x86.ActiveCfg = Debug|Any CPU
1639-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Debug|x86.Build.0 = Debug|Any CPU
1640-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Release|Any CPU.ActiveCfg = Release|Any CPU
1641-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Release|Any CPU.Build.0 = Release|Any CPU
1642-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Release|x64.ActiveCfg = Release|Any CPU
1643-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Release|x64.Build.0 = Release|Any CPU
1644-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Release|x86.ActiveCfg = Release|Any CPU
1645-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E}.Release|x86.Build.0 = Release|Any CPU
16461634
{7AF3C6CA-64FE-43F3-BD7B-C57C83AFAB79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
16471635
{7AF3C6CA-64FE-43F3-BD7B-C57C83AFAB79}.Debug|Any CPU.Build.0 = Debug|Any CPU
16481636
{7AF3C6CA-64FE-43F3-BD7B-C57C83AFAB79}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -1811,6 +1799,18 @@ Global
18111799
{00D8F04F-2063-4F4E-B793-0F9DCF2BCFA9}.Release|x64.Build.0 = Release|Any CPU
18121800
{00D8F04F-2063-4F4E-B793-0F9DCF2BCFA9}.Release|x86.ActiveCfg = Release|Any CPU
18131801
{00D8F04F-2063-4F4E-B793-0F9DCF2BCFA9}.Release|x86.Build.0 = Release|Any CPU
1802+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
1803+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
1804+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Debug|x64.ActiveCfg = Debug|Any CPU
1805+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Debug|x64.Build.0 = Debug|Any CPU
1806+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Debug|x86.ActiveCfg = Debug|Any CPU
1807+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Debug|x86.Build.0 = Debug|Any CPU
1808+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
1809+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Release|Any CPU.Build.0 = Release|Any CPU
1810+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Release|x64.ActiveCfg = Release|Any CPU
1811+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Release|x64.Build.0 = Release|Any CPU
1812+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Release|x86.ActiveCfg = Release|Any CPU
1813+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C}.Release|x86.Build.0 = Release|Any CPU
18141814
{F16EDD0F-5ABE-4B25-98EE-8397E55B5CBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
18151815
{F16EDD0F-5ABE-4B25-98EE-8397E55B5CBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
18161816
{F16EDD0F-5ABE-4B25-98EE-8397E55B5CBA}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -1941,7 +1941,6 @@ Global
19411941
{77AA84B4-6D0A-4FCB-8268-18B2812D7955} = {E1F91563-7277-4E9B-A3B7-8D5FD9802A4A}
19421942
{8D84B804-168F-4EAA-BC09-F55A35A29887} = {FA9D1C95-5585-4DEC-B226-1447A486C376}
19431943
{8DCB2EB4-D0DE-4EF9-ACB3-332055D594CB} = {8D84B804-168F-4EAA-BC09-F55A35A29887}
1944-
{F5D5B4B4-58B7-48D9-881B-DD6A4001793E} = {3501BAD6-406A-49BC-BE0E-5A49A3AAAE6A}
19451944
{7AF3C6CA-64FE-43F3-BD7B-C57C83AFAB79} = {DFA0E841-33E5-4533-AF00-964E21A141B8}
19461945
{B6017708-8E8C-4230-95AD-2D06237D68D4} = {ABD1AF6D-D9D1-4157-A1FF-AC98A054DA92}
19471946
{90471225-AC23-424E-B62E-F6EC4C6ECAC0} = {ABD1AF6D-D9D1-4157-A1FF-AC98A054DA92}
@@ -1957,6 +1956,7 @@ Global
19571956
{5C119A02-AD0F-4222-9379-DB2DBAC59868} = {E1F91563-7277-4E9B-A3B7-8D5FD9802A4A}
19581957
{93CC7D39-530B-4E22-8D15-3A97FFA523F6} = {E1F91563-7277-4E9B-A3B7-8D5FD9802A4A}
19591958
{00D8F04F-2063-4F4E-B793-0F9DCF2BCFA9} = {23324041-2076-477C-A4BF-B385B8066C6C}
1959+
{6B703607-0D63-4A25-BB6A-EC1FBBD77A8C} = {0651C5EF-50AA-4598-8D9C-8F210ADD8490}
19601960
{F16EDD0F-5ABE-4B25-98EE-8397E55B5CBA} = {23324041-2076-477C-A4BF-B385B8066C6C}
19611961
EndGlobalSection
19621962
EndGlobalSection

build/cache/cl.json.gz

-67 Bytes
Binary file not shown.

build/cache/gl.json.gz

0 Bytes
Binary file not shown.

build/cache/glcore.json.gz

-14 Bytes
Binary file not shown.

build/cache/gles2.json.gz

0 Bytes
Binary file not shown.

build/cache/openxr.json.gz

44 Bytes
Binary file not shown.

build/cache/vulkan.json.gz

-170 Bytes
Binary file not shown.

build/csharp_typemap.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
"GLsizeiptrARB": "UIntPtr",
2222
"GLintptrARB": "IntPtr",
2323
"GLhandleARB": "uint",
24-
"GLhalfARB": "Silk.NET.Core.Math.Half",
25-
"GLhalfNV": "Silk.NET.Core.Math.Half",
24+
"GLhalfARB": "System.Half",
25+
"GLhalfNV": "System.Half",
2626
"GLcharARB": "char",
2727
"GLint64EXT": "long",
2828
"GLuint64EXT": "ulong",

build/props/bindings.props

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<Project>
22
<ItemGroup>
33
<ProjectReference Include="$(MSBuildThisFileDirectory)..\..\src\Core\Silk.NET.Core\Silk.NET.Core.csproj" />
4+
<ProjectReference Include="$(MSBuildThisFileDirectory)..\..\src\Core\Silk.NET.SilkTouch\Silk.NET.SilkTouch.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
45
</ItemGroup>
56

67
<Import Project="common.props" />

generator.json

+43-62
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,6 @@
2929
},
3030
"namespace": "Silk.NET.OpenGL",
3131
"extensionsNamespace": "Silk.NET.OpenGL.Extensions",
32-
"legacyNameContainer": {
33-
"Linux": "libGL.so.1",
34-
"Windows": "opengl32.dll",
35-
"MacOS": "/System/Library/Frameworks/OpenGL.framework/OpenGL",
36-
"Android": "libGL.so.1",
37-
"IOS": "/System/Library/Frameworks/OpenGL.framework/OpenGL",
38-
"ClassName": "GLCoreLibraryNameContainer"
39-
},
4032
"typeMaps": [
4133
{
4234
"$include.glTypeMap": "build/gl_typemap.json"
@@ -75,14 +67,6 @@
7567
},
7668
"namespace": "Silk.NET.OpenGL.Legacy",
7769
"extensionsNamespace": "Silk.NET.OpenGL.Legacy.Extensions",
78-
"legacyNameContainer": {
79-
"Linux": "libGL.so.1",
80-
"Windows": "opengl32.dll",
81-
"MacOS": "/System/Library/Frameworks/OpenGL.framework/OpenGL",
82-
"Android": "libGL.so.1",
83-
"IOS": "/System/Library/Frameworks/OpenGL.framework/OpenGL",
84-
"ClassName": "OpenGLLibraryNameContainer"
85-
},
8670
"typeMaps": [
8771
{
8872
"$include.glTypeMap": "build/gl_typemap.json"
@@ -121,14 +105,6 @@
121105
},
122106
"namespace": "Silk.NET.OpenGLES",
123107
"extensionsNamespace": "Silk.NET.OpenGLES.Extensions",
124-
"legacyNameContainer": {
125-
"Linux": "libGLESv2.so",
126-
"Windows": "libGLESv2.dll",
127-
"MacOS": "/System/Library/Frameworks/OpenGLES.framework/OpenGLES",
128-
"Android": "libGLESv2.so",
129-
"IOS": "/System/Library/Frameworks/OpenGLES.framework/OpenGLES",
130-
"ClassName": "OpenGLESLibraryNameContainer"
131-
},
132108
"typeMaps": [
133109
{
134110
"$include.glTypeMap": "build/gl_typemap.json"
@@ -167,13 +143,14 @@
167143
},
168144
"namespace": "Silk.NET.OpenCL",
169145
"extensionsNamespace": "Silk.NET.OpenCL.Extensions",
170-
"legacyNameContainer": {
171-
"Linux": "libOpenCL.so",
172-
"Windows": "opencl.dll",
173-
"MacOS": "/System/Library/Frameworks/OpenCL.framework/OpenCL",
174-
"Android": "libOpenCL.so",
175-
"IOS": "/System/Library/Frameworks/OpenCL.framework/OpenCL",
176-
"ClassName": "OpenCLLibraryNameContainer"
146+
"nameContainer": {
147+
"linux-x64": "libOpenCL.so",
148+
"win-x64": "opencl.dll",
149+
"win-x86": "opencl.dll",
150+
"osx-x64": "/System/Library/Frameworks/OpenCL.framework/OpenCL",
151+
"android": "libOpenCL.so",
152+
"iOS": "/System/Library/Frameworks/OpenCL.framework/OpenCL",
153+
"className": "OpenCLLibraryNameContainer"
177154
},
178155
"typeMaps": [
179156
{
@@ -324,13 +301,14 @@
324301
},
325302
"namespace": "Silk.NET.Vulkan",
326303
"extensionsNamespace": "Silk.NET.Vulkan.Extensions",
327-
"legacyNameContainer": {
328-
"Linux": "libvulkan.so.1",
329-
"Windows": "vulkan-1.dll",
330-
"MacOS": "libMoltenVK.dylib",
331-
"Android": "libvulkan.so.1",
332-
"IOS": "__Internal",
333-
"ClassName": "VulkanLibraryNameContainer"
304+
"nameContainer": {
305+
"linux-x64": "libvulkan.so.1",
306+
"win-x64": "vulkan-1.dll",
307+
"win-x86": "vulkan-1.dll",
308+
"osx-x64": "libMoltenVK.dylib",
309+
"android": "libvulkan.so.1",
310+
"iOS": "__Internal",
311+
"className": "VulkanLibraryNameContainer"
334312
},
335313
"typeMaps": [
336314
{
@@ -437,13 +415,14 @@
437415
},
438416
"namespace": "Silk.NET.Assimp",
439417
"extensionsNamespace": "Silk.NET.Assimp.Extensions",
440-
"legacyNameContainer": {
441-
"Linux": "libassimp.so.5",
442-
"Windows": "Assimp32.dll",
443-
"MacOS": "libassimp.5.dylib",
444-
"Android": "libassimp.so.5",
445-
"IOS": "__Internal",
446-
"ClassName": "AssimpLibraryNameContainer"
418+
"nameContainer": {
419+
"linux-x64": "libassimp.so.5",
420+
"win-x64": "Assimp64.dll",
421+
"win-x86": "Assimp32.dll",
422+
"osx-x64": "libassimp.5.dylib",
423+
"android": "libassimp.so.5",
424+
"iOS": "__Internal",
425+
"className": "AssimpLibraryNameContainer"
447426
},
448427
"typeMaps": [
449428
{
@@ -490,24 +469,25 @@
490469
},
491470
"namespace": "Silk.NET.OpenXR",
492471
"extensionsNamespace": "Silk.NET.OpenXR.Extensions",
493-
"legacyNameContainer": {
494-
"Linux": "libopenxr_loader.so.1",
495-
"Windows": "openxr_loader.dll",
496-
"MacOS": "null",
497-
"Android": "libopenxr_loader.so.1",
498-
"IOS": "__Internal",
499-
"ClassName": "OpenXRLibraryNameContainer"
472+
"nameContainer": {
473+
"linux-x64": "libopenxr_loader.so.1",
474+
"win-x64": "openxr_loader.dll",
475+
"win-x86": "openxr_loader.dll",
476+
"osx-x64": "null",
477+
"android": "libopenxr_loader.so.1",
478+
"iOS": "__Internal",
479+
"className": "OpenXRLibraryNameContainer"
500480
},
501481
"typeMaps": [
502482
{
503483
"char": "byte",
504484
"XR_DEFINE_ATOM": "uint64_t",
505485
"LUID": "ulong",
506486
"D3D_FEATURE_LEVEL": "uint",
507-
"VkInstance": "Silk.NET.GLFW.VkHandle",
508-
"VkPhysicalDevice": "Silk.NET.GLFW.VkHandle",
487+
"VkInstance": "Silk.NET.Core.Native.VkHandle",
488+
"VkPhysicalDevice": "Silk.NET.Core.Native.VkHandle",
509489
"VkImage": "ulong",
510-
"VkDevice": "Silk.NET.GLFW.VkHandle",
490+
"VkDevice": "Silk.NET.Core.Native.VkHandle",
511491
"PFN_xrVoidFunction": "FuncPtr",
512492
"PFN_xrDebugUtilsMessengerCallbackEXT": "FuncPtr",
513493
"PFNEGLGETPROCADDRESSPROC": "FuncPtr",
@@ -600,13 +580,14 @@
600580
},
601581
"namespace": "Silk.NET.SDL",
602582
"extensionsNamespace": "Silk.NET.SDL.Extensions",
603-
"legacyNameContainer": {
604-
"Linux": "libSDL2-2.0.so.0",
605-
"Windows": "SDL2.dll",
606-
"MacOS": "libSDL2-2.0.0.dylib",
607-
"Android": "libSDL2-2.0.so.0",
608-
"IOS": "__Internal",
609-
"ClassName": "SDLLibraryNameContainer"
583+
"nameContainer": {
584+
"linux-x64": "libSDL2-2.0.so.0",
585+
"win-x64": "SDL2.dll",
586+
"win-x86": "SDL2.dll",
587+
"osx-x64": "libSDL2-2.0.0.dylib",
588+
"android": "libSDL2-2.0.so.0",
589+
"iOS": "__Internal",
590+
"className": "SDLLibraryNameContainer"
610591
},
611592
"typeMaps": [
612593
{

src/Assimp/Silk.NET.Assimp/Assimp.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System;
2+
using Silk.NET.Core.Contexts;
23
using Silk.NET.Core.Loader;
34
using Silk.NET.Core.Native;
4-
using Ultz.SuperInvoke;
55

66
#pragma warning disable 1591
77

@@ -11,7 +11,7 @@ public partial class Assimp
1111
{
1212
public static Assimp GetApi()
1313
{
14-
return LibraryActivator.CreateInstance<Assimp>(new AssimpLibraryNameContainer().GetLibraryName());
14+
return new Assimp(new DefaultNativeContext(new AssimpLibraryNameContainer().GetLibraryName()));
1515
}
1616

1717
public override bool IsExtensionPresent(string extension) => IsExtensionSupported(extension) == 1;

0 commit comments

Comments
 (0)