public static VkResult vkQueueBindSparse(VkQueue queue, ReadOnlySpan <VkBindSparseInfo> bindInfo, VkFence fence) { fixed(VkBindSparseInfo *bindInfoPtr = bindInfo) { return(vkQueueBindSparse(queue, (uint)bindInfo.Length, bindInfoPtr, fence)); } }
public static VkResult vkQueueSubmit(VkQueue queue, ReadOnlySpan <VkSubmitInfo> submits, VkFence fence) { fixed(VkSubmitInfo *submitsPtr = submits) { return(vkQueueSubmit(queue, (uint)submits.Length, submitsPtr, fence)); } }
public Graphics(Settings settings) { #if DEBUG //settings.Validation = true; #else settings.Validation = false; #endif Settings = settings; enabledFeatures.samplerAnisotropy = true; enabledFeatures.depthClamp = true; enabledFeatures.shaderStorageImageExtendedFormats = true; Device.Create(settings, enabledFeatures, EnabledExtensions); // Get a graphics queue from the Device GraphicsQueue = new VkQueue(Device.QFGraphics, 0); WorkQueue = new VkQueue(Device.QFGraphics, 0); ComputeQueue = new VkQueue(Device.QFCompute, 0); TransferQueue = new VkQueue(Device.QFTransfer, 0); DepthFormat = Device.GetSupportedDepthFormat(); primaryCmdPool = new CommandBufferPool(Device.QFGraphics, VkCommandPoolCreateFlags.ResetCommandBuffer); DescriptorPoolManager = new DescriptorPoolManager(); acquireSemaphore = new VkSemaphore(VkSemaphoreCreateFlags.None); }
public unsafe void QueuePresent(VkQueue queue, uint imageIndex, VkSemaphore waitSemaphore = default) { var sc = swapchain; var presentInfo = new VkPresentInfoKHR { sType = VkStructureType.PresentInfoKHR, pNext = null, swapchainCount = 1, pSwapchains = &sc, pImageIndices = &imageIndex }; // Check if a wait semaphore has been specified to wait for before presenting the image if (waitSemaphore != VkSampler.Null) { presentInfo.pWaitSemaphores = (VkSemaphore *)Unsafe.AsPointer(ref waitSemaphore); presentInfo.waitSemaphoreCount = 1; } VulkanUtil.CheckResult(vkQueuePresentKHR(queue, &presentInfo)); }
public static VkResult vkQueuePresentKHR(VkQueue queue, VkSemaphore waitSemaphore, VkSwapchainKHR swapchain, uint imageIndex) { var presentInfo = new VkPresentInfoKHR { sType = VkStructureType.PresentInfoKHR, pNext = null }; if (waitSemaphore != VkSemaphore.Null) { presentInfo.waitSemaphoreCount = 1u; presentInfo.pWaitSemaphores = &waitSemaphore; } if (swapchain != VkSwapchainKHR.Null) { presentInfo.swapchainCount = 1u; presentInfo.pSwapchains = &swapchain; presentInfo.pImageIndices = &imageIndex; } return(vkQueuePresentKHR(queue, &presentInfo)); }
public static VkResult vkQueueSubmit(VkQueue queue, VkSubmitInfo submit, VkFence fence) { return(vkQueueSubmit(queue, 1, &submit, fence)); }
public static VkResult vkQueueBindSparse(VkQueue queue, VkBindSparseInfo bindInfo, VkFence fence) { return(vkQueueBindSparse(queue, 1, &bindInfo, fence)); }