public ReturnSet <bool> Initialize(Logger logger) { try { var instanceCreationResult = VulkanInstance.Create(); if (instanceCreationResult.IsError) { throw instanceCreationResult.Error; } _instance = instanceCreationResult.Value; logger.AddMessage("Instance created successfully"); var surfaceCreationResult = VulkanSurface.Create(_instance, _form); if (surfaceCreationResult.IsError) { throw surfaceCreationResult.Error; } _surface = surfaceCreationResult.Value; logger.AddMessage("Surface created successfully"); return(new ReturnSet <bool>(true)); } catch (Exception ex) { return(new ReturnSet <bool>(ex)); } }
public VulkanSurfaceRenderTarget(VulkanPlatformInterface platformInterface, VulkanSurface surface) { _platformInterface = platformInterface; var device = VulkanInitialization.CreateDevice(platformInterface.Api, platformInterface.PhysicalDevice.InternalHandle, platformInterface.PhysicalDevice.QueueFamilyIndex, VulkanInitialization.GetSupportedExtensions(platformInterface.Api, platformInterface.PhysicalDevice.InternalHandle), platformInterface.PhysicalDevice.QueueCount); Device = new VulkanDevice(device, platformInterface.PhysicalDevice, platformInterface.Api); Display = VulkanDisplay.CreateDisplay( platformInterface.Instance, Device, platformInterface.PhysicalDevice, surface); Surface = surface; // Skia seems to only create surfaces from images with unorm format IsRgba = Display.SurfaceFormat.Format >= Format.R8G8B8A8Unorm && Display.SurfaceFormat.Format <= Format.R8G8B8A8Srgb; _format = IsRgba ? Format.R8G8B8A8Unorm : Format.B8G8R8A8Unorm; }