forked from Mirror/Ryujinx
33 lines
1.1 KiB
C#
33 lines
1.1 KiB
C#
|
using System;
|
||
|
using Silk.NET.Vulkan;
|
||
|
|
||
|
namespace Ryujinx.Ava.Ui.Vulkan
|
||
|
{
|
||
|
internal class VulkanSemaphorePair : IDisposable
|
||
|
{
|
||
|
private readonly VulkanDevice _device;
|
||
|
|
||
|
public unsafe VulkanSemaphorePair(VulkanDevice device)
|
||
|
{
|
||
|
_device = device;
|
||
|
|
||
|
var semaphoreCreateInfo = new SemaphoreCreateInfo { SType = StructureType.SemaphoreCreateInfo };
|
||
|
|
||
|
_device.Api.CreateSemaphore(_device.InternalHandle, semaphoreCreateInfo, null, out var semaphore).ThrowOnError();
|
||
|
ImageAvailableSemaphore = semaphore;
|
||
|
|
||
|
_device.Api.CreateSemaphore(_device.InternalHandle, semaphoreCreateInfo, null, out semaphore).ThrowOnError();
|
||
|
RenderFinishedSemaphore = semaphore;
|
||
|
}
|
||
|
|
||
|
internal Semaphore ImageAvailableSemaphore { get; }
|
||
|
internal Semaphore RenderFinishedSemaphore { get; }
|
||
|
|
||
|
public unsafe void Dispose()
|
||
|
{
|
||
|
_device.Api.DestroySemaphore(_device.InternalHandle, ImageAvailableSemaphore, null);
|
||
|
_device.Api.DestroySemaphore(_device.InternalHandle, RenderFinishedSemaphore, null);
|
||
|
}
|
||
|
}
|
||
|
}
|