using Silk.NET.Vulkan; using System.Runtime.CompilerServices; namespace Ryujinx.Graphics.Vulkan { public static class Helpers { extension(Vk api) { /// /// C# implementation of the RENDERDOC_DEVICEPOINTER_FROM_VKINSTANCE macro from the RenderDoc API header, since we cannot use macros from C#. /// /// The dispatch table pointer, which sits as the first pointer-sized object in the memory pointed to by the 's pointer. [MethodImpl(MethodImplOptions.AggressiveInlining)] public unsafe void* GetRenderDocDevicePointer() => api.CurrentInstance is not null ? api.CurrentInstance.Value.GetRenderDocDevicePointer() : null; } extension(Instance instance) { /// /// C# implementation of the RENDERDOC_DEVICEPOINTER_FROM_VKINSTANCE macro from the RenderDoc API header, since we cannot use macros from C#. /// /// The dispatch table pointer, which sits as the first pointer-sized object in the memory pointed to by the 's pointer. [MethodImpl(MethodImplOptions.AggressiveInlining)] public unsafe void* GetRenderDocDevicePointer() => (*((void**)(instance.Handle))); } } }