/// <inheritdoc /> public override D3D12GraphicsBuffer CreateBuffer(GraphicsBufferKind kind, GraphicsResourceCpuAccess cpuAccess, ulong size, ulong alignment = 0, GraphicsMemoryAllocationFlags allocationFlags = GraphicsMemoryAllocationFlags.None) { var index = GetBlockCollectionIndex(cpuAccess, 0); var resourceDesc = D3D12_RESOURCE_DESC.Buffer(size, D3D12_RESOURCE_FLAG_NONE, alignment); var resourceAllocationInfo = Device.D3D12Device->GetResourceAllocationInfo(visibleMask: 0, numResourceDescs: 1, &resourceDesc); ref readonly var blockCollection = ref _blockCollections[index];
/// <inheritdoc /> public override VulkanGraphicsBuffer CreateBuffer(GraphicsBufferKind kind, GraphicsResourceCpuAccess cpuAccess, ulong size, ulong alignment = 0, GraphicsMemoryAllocationFlags allocationFlags = GraphicsMemoryAllocationFlags.None) { var vulkanDevice = Device.VulkanDevice; var bufferCreateInfo = new VkBufferCreateInfo { sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, size = size, usage = GetVulkanBufferUsageKind(kind, cpuAccess) }; VkBuffer vulkanBuffer; ThrowExternalExceptionIfNotSuccess(nameof(vkCreateBuffer), vkCreateBuffer(vulkanDevice, &bufferCreateInfo, pAllocator: null, (ulong *)&vulkanBuffer)); VkMemoryRequirements memoryRequirements; vkGetBufferMemoryRequirements(vulkanDevice, vulkanBuffer, &memoryRequirements); var index = GetBlockCollectionIndex(cpuAccess, memoryRequirements.memoryTypeBits); ref readonly var blockCollection = ref _blockCollections[index];