Esempio n. 1
0
        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, &region);
        }
Esempio n. 2
0
        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, &region);
        }
Esempio n. 3
0
        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());
        }