2024-12-26 22:42:39 -06:00
|
|
|
|
using SharpMetal;
|
|
|
|
|
using SharpMetal.ObjectiveCCore;
|
|
|
|
|
using SharpMetal.QuartzCore;
|
|
|
|
|
using System.Runtime.Versioning;
|
|
|
|
|
// ReSharper disable InconsistentNaming
|
|
|
|
|
|
|
|
|
|
namespace Ryujinx.Graphics.Metal.SharpMetalExtensions
|
|
|
|
|
{
|
2024-12-26 23:58:55 -06:00
|
|
|
|
[SupportedOSPlatform("macOS")]
|
2024-12-26 22:42:39 -06:00
|
|
|
|
public static class CAMetalLayerExtensions
|
|
|
|
|
{
|
|
|
|
|
private static readonly Selector sel_displaySyncEnabled = "displaySyncEnabled";
|
|
|
|
|
private static readonly Selector sel_setDisplaySyncEnabled = "setDisplaySyncEnabled:";
|
|
|
|
|
|
2024-12-26 23:58:55 -06:00
|
|
|
|
private static readonly Selector sel_developerHUDProperties = "developerHUDProperties";
|
|
|
|
|
private static readonly Selector sel_setDeveloperHUDProperties = "setDeveloperHUDProperties:";
|
|
|
|
|
|
2024-12-26 22:42:39 -06:00
|
|
|
|
public static bool IsDisplaySyncEnabled(this CAMetalLayer metalLayer)
|
|
|
|
|
=> ObjectiveCRuntime.bool_objc_msgSend(metalLayer.NativePtr, sel_displaySyncEnabled);
|
|
|
|
|
|
|
|
|
|
public static void SetDisplaySyncEnabled(this CAMetalLayer metalLayer, bool enabled)
|
|
|
|
|
=> ObjectiveCRuntime.objc_msgSend(metalLayer.NativePtr, sel_setDisplaySyncEnabled, enabled);
|
2024-12-26 23:58:55 -06:00
|
|
|
|
|
|
|
|
|
public static nint GetDeveloperHudProperties(this CAMetalLayer metalLayer)
|
|
|
|
|
=> ObjectiveCRuntime.IntPtr_objc_msgSend(metalLayer.NativePtr, sel_developerHUDProperties);
|
|
|
|
|
|
|
|
|
|
public static void SetDeveloperHudProperties(this CAMetalLayer metalLayer, nint dictionaryPointer)
|
2024-12-27 00:00:29 -06:00
|
|
|
|
=> ObjectiveCRuntime.objc_msgSend(metalLayer.NativePtr, sel_setDeveloperHUDProperties, dictionaryPointer);
|
2024-12-26 22:42:39 -06:00
|
|
|
|
}
|
|
|
|
|
}
|