/// <summary> /// Retrieve properties of an image format applied to sparse images. /// </summary> public SparseImageFormatProperties[] GetSparseImageFormatProperties(Format format, ImageType type, SampleCountFlags samples, ImageUsageFlags usage, ImageTiling tiling) { unsafe { try { SparseImageFormatProperties[] result = default(SparseImageFormatProperties[]); uint propertyCount; SparseImageFormatProperties *marshalledProperties = null; Interop.Commands.vkGetPhysicalDeviceSparseImageFormatProperties(this.handle, format, type, samples, usage, tiling, &propertyCount, null); marshalledProperties = (SparseImageFormatProperties *)Interop.HeapUtil.Allocate <SparseImageFormatProperties>((uint)propertyCount); Interop.Commands.vkGetPhysicalDeviceSparseImageFormatProperties(this.handle, format, type, samples, usage, tiling, &propertyCount, marshalledProperties); result = new SparseImageFormatProperties[(uint)propertyCount]; for (int index = 0; index < (uint)propertyCount; index++) { result[index] = marshalledProperties[index]; } return(result); } finally { Interop.HeapUtil.FreeLog(); } } }
/// <summary> /// /// </summary> public SparseImageMemoryRequirements(SparseImageFormatProperties formatProperties, uint imageMipTailFirstLod, DeviceSize imageMipTailSize, DeviceSize imageMipTailOffset, DeviceSize imageMipTailStride) { this.FormatProperties = formatProperties; this.ImageMipTailFirstLod = imageMipTailFirstLod; this.ImageMipTailSize = imageMipTailSize; this.ImageMipTailOffset = imageMipTailOffset; this.ImageMipTailStride = imageMipTailStride; }