public ResourceBarrier CreateUav(ResourceBarrierOptions options) { if (Desc.Type == ResourceType.Buffer) { return(ResourceBarrier.UnorderedAccess(Desc.Buffer, options)); } else { return(ResourceBarrier.UnorderedAccess(Desc.Texture, options)); } }
public ResourceBarrier CreateTransition(ResourceState state, ResourceBarrierOptions options) { ResourceBarrier barrier; if (Desc.Type == ResourceType.Buffer) { barrier = ResourceBarrier.Transition(Desc.Buffer, CurrentTrackedState, state, options); } else { barrier = ResourceBarrier.Transition(Desc.Texture, CurrentTrackedState, state, uint.MaxValue, options); } CurrentTrackedState = state; return(barrier); }
/// <summary> /// Creates a new <see cref="ResourceBarrier"/> representing a UAV read/writer barrier /// </summary> /// <param name="options">The <see cref="ResourceBarrierOptions"/> for the barrier</param> /// <returns>A new <see cref="ResourceBarrier"/> representing a UAV read/writer barrier</returns> public static ResourceBarrier UnorderedAccess(ResourceBarrierOptions options = ResourceBarrierOptions.Full) => UnorderedAcccess(null, options);
internal static ResourceBarrier UnorderedAcccess(GpuResource?resource, ResourceBarrierOptions options) => new ResourceBarrier((D3D12_RESOURCE_BARRIER_FLAGS)options, resource);
internal static ResourceBarrier Transition(GpuResource resource, ResourceState before, ResourceState after, uint subresource, ResourceBarrierOptions options) => new ResourceBarrier((D3D12_RESOURCE_BARRIER_FLAGS)options, resource, before, after, subresource);