/// <inheritdoc/> protected internal override void OnDestroyed() { Ready = false; GraphicsDevice.RegisterBufferMemoryUsage(-SizeInBytes); if (NativeBufferView != VkBufferView.Null) { GraphicsDevice.Collect(NativeBufferView); NativeBufferView = VkBufferView.Null; } if (NativeBuffer != VkBuffer.Null) { GraphicsDevice.Collect(NativeBuffer); NativeBuffer = VkBuffer.Null; } if (NativeMemory != VkDeviceMemory.Null) { if (NativeMemoryOffset.HasValue) { VulkanMemoryPool.Free(this, NativeMemoryOffset.Value); } else { GraphicsDevice.Collect(NativeMemory); } NativeMemory = VkDeviceMemory.Null; } base.OnDestroyed(); }
public unsafe void DestroyNow() { GraphicsDevice.RegisterBufferMemoryUsage(-SizeInBytes); if (NativeBufferView != VkBufferView.Null) { vkDestroyBufferView(GraphicsDevice.NativeDevice, NativeBufferView, null); NativeBufferView = VkBufferView.Null; } if (NativeBuffer != VkBuffer.Null) { vkDestroyBuffer(GraphicsDevice.NativeDevice, NativeBuffer, null); NativeBuffer = VkBuffer.Null; } if (NativeMemory != VkDeviceMemory.Null) { if (NativeMemoryOffset.HasValue) { VulkanMemoryPool.Free(this, NativeMemoryOffset.Value); } else { vkFreeMemory(GraphicsDevice.NativeDevice, NativeMemory, null); } NativeMemory = VkDeviceMemory.Null; } base.OnDestroyed(); }
/// <summary> /// Initializes the views. /// </summary> private void InitializeViews() { var viewFormat = ViewFormat; if ((ViewFlags & BufferFlags.RawBuffer) != 0) { viewFormat = PixelFormat.R32_Typeless; } if ((ViewFlags & (BufferFlags.ShaderResource | BufferFlags.UnorderedAccess)) != 0) { NativeBufferView = GetShaderResourceView(viewFormat); } }
/// <inheritdoc/> protected internal override void OnDestroyed() { GraphicsDevice.RegisterBufferMemoryUsage(-SizeInBytes); if (NativeBufferView != VkBufferView.Null) { GraphicsDevice.Collect(NativeBufferView); NativeBufferView = VkBufferView.Null; } if (NativeBuffer != VkBuffer.Null) { GraphicsDevice.Collect(NativeBuffer); NativeBuffer = VkBuffer.Null; } if (NativeMemory != VkDeviceMemory.Null) { GraphicsDevice.Collect(NativeMemory); NativeMemory = VkDeviceMemory.Null; } base.OnDestroyed(); }
public static extern void DestroyBufferView( VkDevice device, VkBufferView bufferView, IntPtr pAllocator );
public static extern VkResult CreateBufferView( VkDevice device, ref VkBufferViewCreateInfo pCreateInfo, IntPtr pAllocator, out VkBufferView pView );