MTLCompileOptions.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using static Veldrid.MetalBindings.ObjectiveCRuntime;
  4. namespace Veldrid.MetalBindings
  5. {
  6. [StructLayout(LayoutKind.Sequential)]
  7. public struct MTLCompileOptions
  8. {
  9. public readonly IntPtr NativePtr;
  10. public static implicit operator IntPtr(MTLCompileOptions mco) => mco.NativePtr;
  11. public static MTLCompileOptions New()
  12. {
  13. return s_class.AllocInit<MTLCompileOptions>();
  14. }
  15. public Bool8 fastMathEnabled
  16. {
  17. get => bool8_objc_msgSend(NativePtr, sel_fastMathEnabled);
  18. set => objc_msgSend(NativePtr, sel_setFastMathEnabled, value);
  19. }
  20. public MTLLanguageVersion languageVersion
  21. {
  22. get => (MTLLanguageVersion)uint_objc_msgSend(NativePtr, sel_languageVersion);
  23. set => objc_msgSend(NativePtr, sel_setLanguageVersion, (uint)value);
  24. }
  25. private static readonly ObjCClass s_class = new ObjCClass(nameof(MTLCompileOptions));
  26. private static readonly Selector sel_fastMathEnabled = "fastMathEnabled";
  27. private static readonly Selector sel_setFastMathEnabled = "setFastMathEnabled:";
  28. private static readonly Selector sel_languageVersion = "languageVersion";
  29. private static readonly Selector sel_setLanguageVersion = "setLanguageVersion:";
  30. }
  31. }