/// <summary> /// Sets the region of a buffer at a given slot. /// </summary> /// <param name="index">Buffer slot</param> /// <param name="address">Region virtual address</param> /// <param name="size">Region size in bytes</param> public void SetBounds(int index, ulong address, ulong size, BufferUsageFlags flags = BufferUsageFlags.None) { Buffers[index] = new BufferBounds(address, size, flags); }
public BufferDescriptor SetFlag(BufferUsageFlags flag) { Flags |= flag; return(this); }
/// <summary> /// Sets a storage buffer on the graphics pipeline. /// Storage buffers can be read and written to on shaders. /// </summary> /// <param name="stage">Index of the shader stage</param> /// <param name="index">Index of the storage buffer</param> /// <param name="gpuVa">Start GPU virtual address of the buffer</param> /// <param name="size">Size in bytes of the storage buffer</param> public void SetGraphicsStorageBuffer(int stage, int index, ulong gpuVa, ulong size, BufferUsageFlags flags) { size += gpuVa & ((ulong)_context.Capabilities.StorageBufferOffsetAlignment - 1); gpuVa = BitUtils.AlignDown(gpuVa, _context.Capabilities.StorageBufferOffsetAlignment); ulong address = TranslateAndCreateBuffer(gpuVa, size); if (_gpStorageBuffers[stage].Buffers[index].Address != address || _gpStorageBuffers[stage].Buffers[index].Size != size) { _gpStorageBuffersDirty = true; } _gpStorageBuffers[stage].SetBounds(index, address, size, flags); }
Buffer CreateBuffer(DeviceSize size, BufferUsageFlags flags) { var bufferCreateInfo = new BufferCreateInfo(size, flags, SharingMode.Exclusive, null); return(device.CreateBuffer(bufferCreateInfo)); }
public InputBindingFloat(BufferUsageFlags bufferUsageFlags, List <float> data, int index) : base(bufferUsageFlags, index) { BufferWithMemory = VContext.Instance.BufferManager.CreateBuffer(bufferUsageFlags, data.Count() * sizeof(float), data.ToArray()); }
public InputBindingV3(BufferUsageFlags bufferUsageFlags, List <Vector3> data, int index) : base(bufferUsageFlags, index) { BufferWithMemory = VContext.Instance.BufferManager.CreateBuffer(bufferUsageFlags, data.Count() * Vector3.SizeInBytes, data.ToArray()); }
protected UniformBuffer(GraphicsDevice device, ulong size, BufferUsageFlags flags, BufferMemoryUsageHint usageHint, uint location) : base(device, size, flags, usageHint) { this.location = location; }
public VulkanBuffer CreateBuffer(ulong size, BufferUsageFlags usage, MemoryPropertyFlags properties) { this.CreateBuffer(size, usage, properties, out var buffer, out var _, out DeviceSize _); return(new VulkanBuffer(this, buffer, size)); }
public VulkanBuffer CreateBuffer <T>(int count, BufferUsageFlags usage, MemoryPropertyFlags properties) { return(this.CreateBuffer((uint)(Marshal.SizeOf <T>() * count), usage, properties)); }
/// <summary> /// Creates a new buffer region. /// </summary> /// <param name="address">Region address</param> /// <param name="size">Region size</param> /// <param name="flags">Buffer usage flags</param> public BufferBounds(ulong address, ulong size, BufferUsageFlags flags = BufferUsageFlags.None) { Address = address; Size = size; Flags = flags; }