private ResourceBarrier( D3D12_RESOURCE_BARRIER_FLAGS flags, GpuResource?resource ) { Unsafe.SkipInit(out Barrier); Barrier.Type = D3D12_RESOURCE_BARRIER_TYPE.D3D12_RESOURCE_BARRIER_TYPE_UAV; Barrier.Flags = flags; Barrier.Anonymous.UAV.pResource = resource is null ? null : resource.GetResourcePointer(); }
private ResourceBarrier( D3D12_RESOURCE_BARRIER_FLAGS flags, GpuResource?srcResource, GpuResource?destResource ) { Unsafe.SkipInit(out Barrier); Barrier.Type = D3D12_RESOURCE_BARRIER_TYPE.D3D12_RESOURCE_BARRIER_TYPE_ALIASING; Barrier.Flags = flags; Barrier.Anonymous.Aliasing.pResourceBefore = srcResource is null ? null : srcResource.GetResourcePointer(); Barrier.Anonymous.Aliasing.pResourceAfter = destResource is null ? null : destResource.GetResourcePointer(); }
private ResourceBarrier( D3D12_RESOURCE_BARRIER_FLAGS flags, GpuResource resource, ResourceState before, ResourceState after, uint subresource ) { Unsafe.SkipInit(out Barrier); Barrier.Type = D3D12_RESOURCE_BARRIER_TYPE.D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; Barrier.Flags = flags; Barrier.Anonymous.Transition.pResource = resource.GetResourcePointer(); Barrier.Anonymous.Transition.StateBefore = (D3D12_RESOURCE_STATES)before; Barrier.Anonymous.Transition.StateAfter = (D3D12_RESOURCE_STATES)after; Barrier.Anonymous.Transition.Subresource = subresource; }
public static D3D12_RESOURCE_BARRIER InitTransition(ID3D12Resource *pResource, D3D12_RESOURCE_STATES stateBefore, D3D12_RESOURCE_STATES stateAfter, uint subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES, D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) { D3D12_RESOURCE_BARRIER result = default; result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; result.Flags = flags; result.Anonymous.Transition.pResource = pResource; result.Anonymous.Transition.StateBefore = stateBefore; result.Anonymous.Transition.StateAfter = stateAfter; result.Anonymous.Transition.Subresource = subresource; return(result); }