daily update on 20230829 by nitload youmu
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using StgSharp.Math;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
@@ -14,21 +15,21 @@ namespace StgSharp
|
||||
|
||||
#region load
|
||||
|
||||
[DllImport(dllName: "StgSharpGraphic.dll", EntryPoint = "load",
|
||||
[DllImport(dllName: "StgSharpGraphic", EntryPoint = "load",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static extern ref M128 load_internal(float x,float y, float z, float w);
|
||||
internal static extern ref Vector4 load_internal(float x,float y, float z, float w);
|
||||
|
||||
[DllImport(dllName: "StgSharpGraphic.dll", EntryPoint = "load",
|
||||
[DllImport(dllName: "StgSharpGraphic", EntryPoint = "load",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static unsafe extern M128* loadptr_internal(float x, float y, float z, float w);
|
||||
internal static unsafe extern Vector4* loadptr_internal(float x, float y, float z, float w);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll",EntryPoint = "load_matmap",
|
||||
[DllImport("StgSharpGraphic",EntryPoint = "load_matmap",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr load_mat(IntPtr c0, IntPtr c1, IntPtr c2, IntPtr c3);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "load_cpy",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "load_cpy",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr load_cpy_internal(IntPtr ptr);
|
||||
|
||||
@@ -37,11 +38,11 @@ namespace StgSharp
|
||||
|
||||
#region add sub
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "addps",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "addps",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr addps_internal(IntPtr ptr1, IntPtr ptr2);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "subps",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "subps",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr subps_internal(IntPtr ptr1, IntPtr ptr2);
|
||||
|
||||
@@ -49,63 +50,67 @@ namespace StgSharp
|
||||
|
||||
#region mulps
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "mulps",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "mulps",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr mulps_internal(IntPtr ptr1, IntPtr ptr2);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "mulps_const",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "mulps_const",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static extern IntPtr mulps_const_internal(IntPtr ptr, float value);
|
||||
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "mulps_sum",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "mulps_sum",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern float mulps_sum_internal(IntPtr ptr1, IntPtr ptr2);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "mulps_sum",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "mulps_sum",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern unsafe float mulps_sum_internal(M128* ptr1, M128* ptr2);
|
||||
internal static extern unsafe float mulps_sum_internal(Vector4* ptr1, Vector4* ptr2);
|
||||
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "mulps_sum",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern unsafe float mulps_sum_internal(Vec4d* ptr1, Vec4d* ptr2);
|
||||
|
||||
#endregion
|
||||
|
||||
#region div
|
||||
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "mulps",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "mulps",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr divps_internal(IntPtr ptr1, IntPtr ptr2);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "divps_const",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "divps_const",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr divps_const_internal(IntPtr ptr, float value);
|
||||
|
||||
#endregion
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "sqrtss_const",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "sqrtss_const",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern float sqrtss_const_internal(float a);
|
||||
|
||||
|
||||
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "set_m128ptr_default",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "set_Vector4ptr_default",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern IntPtr set_m128ptr_default_internal();
|
||||
internal static extern IntPtr set_Vector4ptr_default_internal();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#region deinit m128
|
||||
#region deinit Vector4
|
||||
|
||||
[DllImport(
|
||||
"msvcrt.dll",
|
||||
EntryPoint = "_aligned_free",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static extern unsafe void deinit_internal(M128* ptr);
|
||||
internal static extern unsafe void deinit_internal(Vector4* ptr);
|
||||
|
||||
[DllImport(
|
||||
"msvcrt.dll",
|
||||
@@ -130,23 +135,23 @@ namespace StgSharp
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
internal static extern unsafe void deinit_internal(Mat4* ptr);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "deinitM128",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "deinitVector4",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern void deinitM128_internal(ref M128 vec);
|
||||
internal static extern void deinitVector4_internal(ref Vector4 vec);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "deinitM128",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "deinitVector4",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern unsafe void deinitM128_internal(M128* vec);
|
||||
internal static extern unsafe void deinitVector4_internal(Vector4* vec);
|
||||
|
||||
#endregion
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "deinit_matmapPtr_sse",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "deinit_matmapPtr_sse",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern void deinitMatmapPtr_sse_internal(ref M128matMap mapPtr);
|
||||
internal static extern void deinitMatmapPtr_sse_internal(ref Vector4Map mapPtr);
|
||||
|
||||
[DllImport("StgSharpGraphic.dll", EntryPoint = "deinit_matmap_sse",
|
||||
[DllImport("StgSharpGraphic", EntryPoint = "deinit_matmap_sse",
|
||||
CallingConvention = CallingConvention.Cdecl)]
|
||||
internal static extern void deinitMatmap_sse_internal(ref M128matMap mapPtr);
|
||||
internal static extern void deinitMatmap_sse_internal(ref Vector4Map mapPtr);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,63 +1,63 @@
|
||||
using StgSharp;
|
||||
using StgSharp.Control;
|
||||
using StgSharp.Logic;
|
||||
using System.Data;
|
||||
using System.Numerics;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
public unsafe class M128Map
|
||||
public unsafe class Vector4Map
|
||||
{
|
||||
public readonly long mapID;
|
||||
internal long mapPtr;
|
||||
internal readonly StgSharp.LinkedListNode<long> _unusedM128Header;
|
||||
internal readonly StgSharp.LinkedListNode<long> _unusedVector4Header;
|
||||
private const int mapSize = 30 * 30;
|
||||
|
||||
internal StgSharp.LinkedList<long> m128Map =
|
||||
internal StgSharp.LinkedList<long> vector4Map =
|
||||
new StgSharp.LinkedList<long>();
|
||||
|
||||
public bool isFull
|
||||
{
|
||||
get
|
||||
{
|
||||
return _unusedM128Header == m128Map._hook;
|
||||
return _unusedVector4Header == vector4Map._hook;
|
||||
}
|
||||
}
|
||||
|
||||
public M128Map()
|
||||
public Vector4Map()
|
||||
{
|
||||
mapPtr = (long)(Marshal.AllocHGlobal(sizeof(M128)*mapSize)+15);
|
||||
mapPtr = (long)(Marshal.AllocHGlobal(sizeof(Vector4)*mapSize)+15);
|
||||
|
||||
long firstM128ptr = (mapPtr / 16 + 1) * 16;
|
||||
long firstVector4ptr = (mapPtr / 16 + 1) * 16;
|
||||
|
||||
m128Map.Add(0);
|
||||
_unusedM128Header = m128Map._hook._next;
|
||||
vector4Map.Add(0);
|
||||
_unusedVector4Header = vector4Map._hook._next;
|
||||
|
||||
for (int i = 0; i < 4*30*30*4; i+=16)
|
||||
{
|
||||
m128Map.Add(firstM128ptr+i);
|
||||
vector4Map.Add(firstVector4ptr+i);
|
||||
}
|
||||
|
||||
mapID = Calc.RandomSeed();
|
||||
}
|
||||
|
||||
internal long RegistManagedM128Ptr()
|
||||
internal long RegistManagedVector4Ptr()
|
||||
{
|
||||
LinkedListNode<long> m128 = _unusedM128Header._next;
|
||||
LinkedListNode<long> m128Previous = _unusedM128Header._previous;
|
||||
LinkedListNode<long> Vector4 = _unusedVector4Header._next;
|
||||
LinkedListNode<long> Vector4Previous = _unusedVector4Header._previous;
|
||||
|
||||
m128._next._previous = _unusedM128Header.Next;
|
||||
m128Previous._next = m128;
|
||||
m128._previous = m128Previous;
|
||||
_unusedM128Header._next = m128._next;
|
||||
m128._next = _unusedM128Header;
|
||||
_unusedM128Header._previous = m128;
|
||||
Vector4._next._previous = _unusedVector4Header.Next;
|
||||
Vector4Previous._next = Vector4;
|
||||
Vector4._previous = Vector4Previous;
|
||||
_unusedVector4Header._next = Vector4._next;
|
||||
Vector4._next = _unusedVector4Header;
|
||||
_unusedVector4Header._previous = Vector4;
|
||||
|
||||
return m128._value;
|
||||
return Vector4._value;
|
||||
|
||||
}
|
||||
|
||||
internal void RecycleManagedM128Ptr()
|
||||
internal void RecycleManagedVector4Ptr()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -9,10 +9,10 @@ namespace StgSharp.Math
|
||||
|
||||
public static unsafe partial class SSE
|
||||
{
|
||||
public static int M128Size = 16;
|
||||
public static int Vector4Size = 16;
|
||||
|
||||
internal static IntPtr defaultM128Ptr =
|
||||
internalIO.set_m128ptr_default_internal();
|
||||
internal static IntPtr defaultVector4Ptr =
|
||||
internalIO.set_Vector4ptr_default_internal();
|
||||
|
||||
|
||||
internal static IntPtr defaultM256Ptr;
|
||||
|
||||
@@ -5,63 +5,4 @@ using System.Text;
|
||||
|
||||
namespace StgSharp.Math
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct M128matMap
|
||||
{
|
||||
internal IntPtr colum0Ptr;
|
||||
internal IntPtr colum1Ptr;
|
||||
internal IntPtr colum2Ptr;
|
||||
internal IntPtr colum3Ptr;
|
||||
|
||||
internal M128matMap(
|
||||
IntPtr c0ptr,
|
||||
IntPtr c1ptr,
|
||||
IntPtr c2ptr,
|
||||
IntPtr c3ptr
|
||||
)
|
||||
{
|
||||
colum0Ptr = c0ptr;
|
||||
colum1Ptr = c1ptr;
|
||||
colum2Ptr = c2ptr;
|
||||
colum3Ptr = c3ptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[StructLayout(LayoutKind.Explicit, Size = 16, Pack = 16)]
|
||||
internal struct M128
|
||||
{
|
||||
[FieldOffset(0)] internal float single_0;
|
||||
[FieldOffset(4)] internal float single_1;
|
||||
[FieldOffset(8)] internal float single_2;
|
||||
[FieldOffset(12)] internal float single_3;
|
||||
|
||||
[FieldOffset(0)] internal int int32_0;
|
||||
[FieldOffset(4)] internal int int32_1;
|
||||
[FieldOffset(8)] internal int int32_2;
|
||||
[FieldOffset(12)] internal int int32_3;
|
||||
|
||||
[FieldOffset(0)] internal long int64_0;
|
||||
[FieldOffset(8)] internal long int64_1;
|
||||
|
||||
[FieldOffset(0)] internal IntPtr ptr_0;
|
||||
[FieldOffset(8)] internal IntPtr ptr_1;
|
||||
|
||||
[FieldOffset(0)] internal long double_0;
|
||||
[FieldOffset(8)] internal long double_1;
|
||||
|
||||
internal M128(float x,float y,float z,float w)
|
||||
{
|
||||
single_0 = x;
|
||||
single_1 = y;
|
||||
single_2 = z;
|
||||
single_3 = w;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{single_0}\t{single_1}\t{single_2}\t{single_3}";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user