/// <summary> /// /// </summary> public static unsafe SharpVk.NVidia.ExternalImageFormatProperties GetExternalImageFormatProperties(this SharpVk.PhysicalDevice extendedHandle, SharpVk.Format format, SharpVk.ImageType type, SharpVk.ImageTiling tiling, SharpVk.ImageUsageFlags usage, SharpVk.ImageCreateFlags?flags = default(SharpVk.ImageCreateFlags?), SharpVk.NVidia.ExternalMemoryHandleTypeFlags?externalHandleType = default(SharpVk.NVidia.ExternalMemoryHandleTypeFlags?)) { try { SharpVk.NVidia.ExternalImageFormatProperties result = default(SharpVk.NVidia.ExternalImageFormatProperties); CommandCache commandCache = default(CommandCache); SharpVk.ImageCreateFlags marshalledFlags = default(SharpVk.ImageCreateFlags); SharpVk.NVidia.ExternalMemoryHandleTypeFlags marshalledExternalHandleType = default(SharpVk.NVidia.ExternalMemoryHandleTypeFlags); SharpVk.NVidia.ExternalImageFormatProperties marshalledExternalImageFormatProperties = default(SharpVk.NVidia.ExternalImageFormatProperties); commandCache = extendedHandle.commandCache; if (flags != null) { marshalledFlags = flags.Value; } else { marshalledFlags = default(SharpVk.ImageCreateFlags); } if (externalHandleType != null) { marshalledExternalHandleType = externalHandleType.Value; } else { marshalledExternalHandleType = default(SharpVk.NVidia.ExternalMemoryHandleTypeFlags); } SharpVk.Interop.NVidia.VkPhysicalDeviceGetExternalImageFormatPropertiesDelegate commandDelegate = commandCache.GetCommandDelegate <SharpVk.Interop.NVidia.VkPhysicalDeviceGetExternalImageFormatPropertiesDelegate>("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", "instance"); Result methodResult = commandDelegate(extendedHandle.handle, format, type, tiling, usage, marshalledFlags, marshalledExternalHandleType, &marshalledExternalImageFormatProperties); if (SharpVkException.IsError(methodResult)) { throw SharpVkException.Create(methodResult); } result = marshalledExternalImageFormatProperties; return(result); } finally { Interop.HeapUtil.FreeAll(); } }
/// <summary> /// Retrieve Win32 handle to a device memory object. /// </summary> /// <param name="extendedHandle"> /// The DeviceMemory handle to extend. /// </param> public static unsafe IntPtr GetWin32Handle(this SharpVk.DeviceMemory extendedHandle, SharpVk.NVidia.ExternalMemoryHandleTypeFlags handleType) { try { IntPtr result = default(IntPtr); CommandCache commandCache = default(CommandCache); IntPtr marshalledHandle = default(IntPtr); commandCache = extendedHandle.commandCache; SharpVk.Interop.NVidia.VkDeviceMemoryGetWin32HandleDelegate commandDelegate = commandCache.GetCommandDelegate <SharpVk.Interop.NVidia.VkDeviceMemoryGetWin32HandleDelegate>("vkGetMemoryWin32HandleNV", "instance"); Result methodResult = commandDelegate(extendedHandle.parent.handle, extendedHandle.handle, handleType, &marshalledHandle); if (SharpVkException.IsError(methodResult)) { throw SharpVkException.Create(methodResult); } result = marshalledHandle; return(result); } finally { Interop.HeapUtil.FreeAll(); } }
/// <summary> /// /// </summary> public ExternalImageFormatProperties(SharpVk.ImageFormatProperties imageFormatProperties, SharpVk.NVidia.ExternalMemoryFeatureFlags externalMemoryFeatures, SharpVk.NVidia.ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes, SharpVk.NVidia.ExternalMemoryHandleTypeFlags compatibleHandleTypes) { this.ImageFormatProperties = imageFormatProperties; this.ExternalMemoryFeatures = externalMemoryFeatures; this.ExportFromImportedHandleTypes = exportFromImportedHandleTypes; this.CompatibleHandleTypes = compatibleHandleTypes; }