private static ulong GetAlignmentForBufferUsage(PlatformRenderContext ctx, SharpVulkan.BufferUsageFlags usage) { ulong alignment = 1; if ((usage & SharpVulkan.BufferUsageFlags.UniformBuffer) != 0) { alignment = GraphicsUtility.CombineAlignment(alignment, ctx.PhysicalDeviceLimits.MinUniformBufferOffsetAlignment); } return(alignment); }
public BackingBuffer(PlatformRenderContext context, SharpVulkan.BufferUsageFlags usage, SharpVulkan.MemoryPropertyFlags memoryPropertyFlags, ulong size) { this.context = context; this.usage = usage; this.memoryPropertyFlags = memoryPropertyFlags; sliceSize = size; sliceAlignment = GetAlignmentForBufferUsage(context, usage); sliceCount = 1; CreateBuffer(); sliceOffset = sliceQueue.Dequeue().Offset; }