public VkSparseImageOpaqueMemoryBindInfo(VkImage image, ReadOnlySpan <VkSparseMemoryBind> binds) { this.image = image; this.bindCount = (uint)binds.Length; fixed(VkSparseMemoryBind *pBinds = binds) this.pBinds = pBinds; }
public static ReadOnlySpan <VkImage> vkGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain) { uint swapchainImageCount = 0; vkGetSwapchainImagesKHR(device, swapchain, &swapchainImageCount, null).CheckResult(); ReadOnlySpan <VkImage> swapchainImages = new VkImage[swapchainImageCount]; fixed(VkImage *swapchainImagesPtr = swapchainImages) { vkGetSwapchainImagesKHR(device, swapchain, &swapchainImageCount, swapchainImagesPtr).CheckResult(); } return(swapchainImages); }
public static Span <T> vkMapMemory <T>(VkDevice device, VkImage image, VkDeviceMemory memory, ulong offset = 0, ulong size = WholeSize, VkMemoryMapFlags flags = VkMemoryMapFlags.None) where T : unmanaged { void *pData; vkMapMemory(device, memory, offset, size, flags, &pData).CheckResult(); if (size == WholeSize) { vkGetImageMemoryRequirements(device, image, out var memoryRequirements); return(new Span <T>(pData, (int)memoryRequirements.size)); } return(new Span <T>(pData, (int)size)); }
public static ReadOnlySpan <VkSparseImageMemoryRequirements> vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image) { uint sparseMemoryRequirementCount = 0; vkGetImageSparseMemoryRequirements(device, image, &sparseMemoryRequirementCount, null); ReadOnlySpan <VkSparseImageMemoryRequirements> sparseMemoryRequirements = new VkSparseImageMemoryRequirements[sparseMemoryRequirementCount]; fixed(VkSparseImageMemoryRequirements *sparseMemoryRequirementsPtr = sparseMemoryRequirements) { vkGetImageSparseMemoryRequirements(device, image, &sparseMemoryRequirementCount, sparseMemoryRequirementsPtr); } return(sparseMemoryRequirements); }
public VkSparseImageOpaqueMemoryBindInfo(VkImage image, ref VkSparseMemoryBind binds) { this.image = image; this.bindCount = 1; this.pBinds = (VkSparseMemoryBind *)Unsafe.AsPointer(ref binds); }
public static void BindImageMemory(VkImage image, VkDeviceMemory memory, ulong offset) { VulkanUtil.CheckResult(vkBindImageMemory(device, image, memory, offset)); }