| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- using System;
- using Avalonia;
- using Ryujinx.Ava.Ui.Vulkan.Surfaces;
- using Silk.NET.Vulkan;
- namespace Ryujinx.Ava.Ui.Vulkan
- {
- internal class VulkanSurfaceRenderingSession : IDisposable
- {
- private readonly VulkanDevice _device;
- private readonly VulkanSurfaceRenderTarget _renderTarget;
- public VulkanSurfaceRenderingSession(VulkanDisplay display, VulkanDevice device,
- VulkanSurfaceRenderTarget renderTarget, float scaling)
- {
- Display = display;
- _device = device;
- _renderTarget = renderTarget;
- Scaling = scaling;
- Begin();
- }
- public VulkanDisplay Display { get; }
- public PixelSize Size => _renderTarget.Size;
- public Vk Api => _device.Api;
- public float Scaling { get; }
- private void Begin()
- {
- if (!Display.EnsureSwapchainAvailable())
- {
- _renderTarget.RecreateImage();
- }
- }
- public void Dispose()
- {
- _renderTarget.EndDraw();
- }
- }
- }
|