Vixen
dd8b0a81
csharp
public enum ResourceSharing

Whether a resource belongs to one queue family at a time, or to several at once.

Read the guide page for this →

Remarks

Only ever a question on a device with more than one queue family, and only ever asked by a frame that puts work on more than one of them — QueueScheduling.Async, in this engine. Everywhere else both values describe the same resource.

⚠ Neither value is free, and the trade is not the obvious one. Exclusive is the faster resource and the slower frame: the driver may compress it, and every queue that wants it has to be handed it, which is two barriers and an edge that stops the two queues overlapping. Concurrent is the slower resource and the faster frame: several families may use it at once with no handover at all, and some hardware answers by turning off the colour compression it would otherwise have applied.

So the rule this engine follows is to ask for Concurrent exactly where Exclusive would serialise two queues that only wanted to read — and nowhere else. See docs/guide/rendering/async-compute.md.

Fields and properties (2)

  • Exclusive

    One queue family owns it, and moving it takes a release and an acquire. The default.

  • Concurrent

    Every queue family the device has may use it, with no ownership transfer at all.

Used by (5)

  • BufferDescriptionVixen.Graphics
  • GraphResourceVixen.Graphics.RenderGraph
  • RenderGraphVixen.Graphics.RenderGraph
  • TextureDescriptionVixen.Graphics
  • VulkanDeviceVixen.Graphics.Vulkan