internal void copy_buffer_to_image(Buffer src, Image image, ulong buffer_offset, VkOffset3D offset, VkExtent3D extent, uint row_length, uint slice_height, VkImageSubresourceLayers subresource) { VkBufferImageCopy region = new() { bufferOffset = buffer_offset, bufferRowLength = row_length, bufferImageHeight = slice_height, imageSubresource = subresource, imageOffset = offset, imageExtent = extent, }; vkCmdCopyBufferToImage(handle, src.handle, image.handle, image.get_layout(VkImageLayout.TransferSrcOptimal), 1, ®ion); }
private void copy_image(Image dst, Image src, VkOffset3D dst_offset, VkOffset3D src_offset, VkExtent3D extent, VkImageSubresourceLayers dst_subresource, VkImageSubresourceLayers src_subresource) { VkImageCopy region = new() { dstOffset = dst_offset, srcOffset = src_offset, extent = extent, srcSubresource = src_subresource, dstSubresource = dst_subresource, }; vkCmdCopyImage(handle, src.handle, src.get_layout(VkImageLayout.TransferSrcOptimal), dst.handle, dst.get_layout(VkImageLayout.TransferDstOptimal), 1, ®ion); }
public ref VirtualTexturePage AddPage(VkOffset3D offset, VkExtent3D extent, ulong size, uint mipLevel, uint layer) { VirtualTexturePage newPage = new VirtualTexturePage { offset = offset, extent = extent, size = size, mipLevel = mipLevel, layer = layer, index = (uint)pages.Count, imageMemoryBind = new VkSparseImageMemoryBind() { offset = offset, extent = extent, } }; pages.Add(newPage); return(ref pages.Back()); }