Path: blob/master/thirdparty/directx_headers/include/directx/d3dx12_barriers.h
9912 views
//*********************************************************1//2// Copyright (c) Microsoft Corporation.3// Licensed under the MIT License (MIT).4//5//*********************************************************67#ifndef __D3DX12_BARRIERS_H__8#define __D3DX12_BARRIERS_H__910#if defined( __cplusplus )1112#include "d3d12.h"1314//------------------------------------------------------------------------------------------------15struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER16{17CD3DX12_RESOURCE_BARRIER() = default;18explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) noexcept :19D3D12_RESOURCE_BARRIER(o)20{}21static inline CD3DX12_RESOURCE_BARRIER Transition(22_In_ ID3D12Resource* pResource,23D3D12_RESOURCE_STATES stateBefore,24D3D12_RESOURCE_STATES stateAfter,25UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES,26D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) noexcept27{28CD3DX12_RESOURCE_BARRIER result = {};29D3D12_RESOURCE_BARRIER &barrier = result;30result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;31result.Flags = flags;32barrier.Transition.pResource = pResource;33barrier.Transition.StateBefore = stateBefore;34barrier.Transition.StateAfter = stateAfter;35barrier.Transition.Subresource = subresource;36return result;37}38static inline CD3DX12_RESOURCE_BARRIER Aliasing(39_In_opt_ ID3D12Resource* pResourceBefore,40_In_opt_ ID3D12Resource* pResourceAfter) noexcept41{42CD3DX12_RESOURCE_BARRIER result = {};43D3D12_RESOURCE_BARRIER &barrier = result;44result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING;45barrier.Aliasing.pResourceBefore = pResourceBefore;46barrier.Aliasing.pResourceAfter = pResourceAfter;47return result;48}49static inline CD3DX12_RESOURCE_BARRIER UAV(50_In_opt_ ID3D12Resource* pResource) noexcept51{52CD3DX12_RESOURCE_BARRIER result = {};53D3D12_RESOURCE_BARRIER &barrier = result;54result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;55barrier.UAV.pResource = pResource;56return result;57}58};5960#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)6162//================================================================================================63// D3DX12 Enhanced Barrier Helpers64//================================================================================================6566class CD3DX12_BARRIER_SUBRESOURCE_RANGE : public D3D12_BARRIER_SUBRESOURCE_RANGE67{68public:69CD3DX12_BARRIER_SUBRESOURCE_RANGE() = default;70CD3DX12_BARRIER_SUBRESOURCE_RANGE(const D3D12_BARRIER_SUBRESOURCE_RANGE &o) noexcept :71D3D12_BARRIER_SUBRESOURCE_RANGE(o)72{}73explicit CD3DX12_BARRIER_SUBRESOURCE_RANGE(UINT Subresource) noexcept :74D3D12_BARRIER_SUBRESOURCE_RANGE{ Subresource, 0, 0, 0, 0, 0 }75{}76CD3DX12_BARRIER_SUBRESOURCE_RANGE(77UINT firstMipLevel,78UINT numMips,79UINT firstArraySlice,80UINT numArraySlices,81UINT firstPlane = 0,82UINT numPlanes = 1) noexcept :83D3D12_BARRIER_SUBRESOURCE_RANGE84{85firstMipLevel,86numMips,87firstArraySlice,88numArraySlices,89firstPlane,90numPlanes91}92{}93};9495class CD3DX12_GLOBAL_BARRIER : public D3D12_GLOBAL_BARRIER96{97public:98CD3DX12_GLOBAL_BARRIER() = default;99CD3DX12_GLOBAL_BARRIER(const D3D12_GLOBAL_BARRIER &o) noexcept : D3D12_GLOBAL_BARRIER(o){}100CD3DX12_GLOBAL_BARRIER(101D3D12_BARRIER_SYNC syncBefore,102D3D12_BARRIER_SYNC syncAfter,103D3D12_BARRIER_ACCESS accessBefore,104D3D12_BARRIER_ACCESS accessAfter) noexcept : D3D12_GLOBAL_BARRIER {105syncBefore,106syncAfter,107accessBefore,108accessAfter109}110{}111};112113class CD3DX12_BUFFER_BARRIER : public D3D12_BUFFER_BARRIER114{115public:116CD3DX12_BUFFER_BARRIER() = default;117CD3DX12_BUFFER_BARRIER(const D3D12_BUFFER_BARRIER &o) noexcept : D3D12_BUFFER_BARRIER(o){}118CD3DX12_BUFFER_BARRIER(119D3D12_BARRIER_SYNC syncBefore,120D3D12_BARRIER_SYNC syncAfter,121D3D12_BARRIER_ACCESS accessBefore,122D3D12_BARRIER_ACCESS accessAfter,123ID3D12Resource *pRes) noexcept : D3D12_BUFFER_BARRIER {124syncBefore,125syncAfter,126accessBefore,127accessAfter,128pRes,1290, ULLONG_MAX130}131{}132};133134class CD3DX12_TEXTURE_BARRIER : public D3D12_TEXTURE_BARRIER135{136public:137CD3DX12_TEXTURE_BARRIER() = default;138CD3DX12_TEXTURE_BARRIER(const D3D12_TEXTURE_BARRIER &o) noexcept : D3D12_TEXTURE_BARRIER(o){}139CD3DX12_TEXTURE_BARRIER(140D3D12_BARRIER_SYNC syncBefore,141D3D12_BARRIER_SYNC syncAfter,142D3D12_BARRIER_ACCESS accessBefore,143D3D12_BARRIER_ACCESS accessAfter,144D3D12_BARRIER_LAYOUT layoutBefore,145D3D12_BARRIER_LAYOUT layoutAfter,146ID3D12Resource *pRes,147const D3D12_BARRIER_SUBRESOURCE_RANGE &subresources,148D3D12_TEXTURE_BARRIER_FLAGS flag = D3D12_TEXTURE_BARRIER_FLAG_NONE) noexcept : D3D12_TEXTURE_BARRIER {149syncBefore,150syncAfter,151accessBefore,152accessAfter,153layoutBefore,154layoutAfter,155pRes,156subresources,157flag158}159{}160};161162class CD3DX12_BARRIER_GROUP : public D3D12_BARRIER_GROUP163{164public:165CD3DX12_BARRIER_GROUP() = default;166CD3DX12_BARRIER_GROUP(const D3D12_BARRIER_GROUP &o) noexcept : D3D12_BARRIER_GROUP(o){}167CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_BUFFER_BARRIER *pBarriers) noexcept168{169Type = D3D12_BARRIER_TYPE_BUFFER;170NumBarriers = numBarriers;171pBufferBarriers = pBarriers;172}173CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_TEXTURE_BARRIER *pBarriers) noexcept174{175Type = D3D12_BARRIER_TYPE_TEXTURE;176NumBarriers = numBarriers;177pTextureBarriers = pBarriers;178}179CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_GLOBAL_BARRIER *pBarriers) noexcept180{181Type = D3D12_BARRIER_TYPE_GLOBAL;182NumBarriers = numBarriers;183pGlobalBarriers = pBarriers;184}185};186#endif // D3D12_SDK_VERSION >= 608187188189#endif // defined( __cplusplus )190191#endif // __D3DX12_BARRIERS_H__192193194