mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-25 02:43:29 +00:00 
			
		
		
		
	 12a519bae2
			
		
	
	
		12a519bae2
		
	
	
	
	
		
			
			Credit and thanks to @bruzvg for multiple build fixes, update of 3rd-party items and MinGW support. Co-authored-by: bruvzg <7645683+bruvzg@users.noreply.github.com>
		
			
				
	
	
		
			192 lines
		
	
	
	
		
			6.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			192 lines
		
	
	
	
		
			6.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //*********************************************************
 | |
| //
 | |
| // Copyright (c) Microsoft Corporation.
 | |
| // Licensed under the MIT License (MIT).
 | |
| //
 | |
| //*********************************************************
 | |
| 
 | |
| #ifndef __D3DX12_BARRIERS_H__
 | |
| #define __D3DX12_BARRIERS_H__
 | |
| 
 | |
| #if defined( __cplusplus )
 | |
| 
 | |
| #include "d3d12.h"
 | |
| 
 | |
| //------------------------------------------------------------------------------------------------
 | |
| struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER
 | |
| {
 | |
|     CD3DX12_RESOURCE_BARRIER() = default;
 | |
|     explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) noexcept :
 | |
|         D3D12_RESOURCE_BARRIER(o)
 | |
|     {}
 | |
|     static inline CD3DX12_RESOURCE_BARRIER Transition(
 | |
|         _In_ 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) noexcept
 | |
|     {
 | |
|         CD3DX12_RESOURCE_BARRIER result = {};
 | |
|         D3D12_RESOURCE_BARRIER &barrier = result;
 | |
|         result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
 | |
|         result.Flags = flags;
 | |
|         barrier.Transition.pResource = pResource;
 | |
|         barrier.Transition.StateBefore = stateBefore;
 | |
|         barrier.Transition.StateAfter = stateAfter;
 | |
|         barrier.Transition.Subresource = subresource;
 | |
|         return result;
 | |
|     }
 | |
|     static inline CD3DX12_RESOURCE_BARRIER Aliasing(
 | |
|         _In_opt_ ID3D12Resource* pResourceBefore,
 | |
|         _In_opt_ ID3D12Resource* pResourceAfter) noexcept
 | |
|     {
 | |
|         CD3DX12_RESOURCE_BARRIER result = {};
 | |
|         D3D12_RESOURCE_BARRIER &barrier = result;
 | |
|         result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING;
 | |
|         barrier.Aliasing.pResourceBefore = pResourceBefore;
 | |
|         barrier.Aliasing.pResourceAfter = pResourceAfter;
 | |
|         return result;
 | |
|     }
 | |
|     static inline CD3DX12_RESOURCE_BARRIER UAV(
 | |
|         _In_opt_ ID3D12Resource* pResource) noexcept
 | |
|     {
 | |
|         CD3DX12_RESOURCE_BARRIER result = {};
 | |
|         D3D12_RESOURCE_BARRIER &barrier = result;
 | |
|         result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;
 | |
|         barrier.UAV.pResource = pResource;
 | |
|         return result;
 | |
|     }
 | |
| };
 | |
| 
 | |
| #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
 | |
| 
 | |
| //================================================================================================
 | |
| // D3DX12 Enhanced Barrier Helpers
 | |
| //================================================================================================
 | |
| 
 | |
| class CD3DX12_BARRIER_SUBRESOURCE_RANGE : public D3D12_BARRIER_SUBRESOURCE_RANGE
 | |
| {
 | |
| public:
 | |
|     CD3DX12_BARRIER_SUBRESOURCE_RANGE() = default;
 | |
|     CD3DX12_BARRIER_SUBRESOURCE_RANGE(const D3D12_BARRIER_SUBRESOURCE_RANGE &o) noexcept :
 | |
|         D3D12_BARRIER_SUBRESOURCE_RANGE(o)
 | |
|     {}
 | |
|     explicit CD3DX12_BARRIER_SUBRESOURCE_RANGE(UINT Subresource) noexcept :
 | |
|         D3D12_BARRIER_SUBRESOURCE_RANGE{ Subresource, 0, 0, 0, 0, 0 }
 | |
|     {}
 | |
|     CD3DX12_BARRIER_SUBRESOURCE_RANGE(
 | |
|         UINT firstMipLevel,
 | |
|         UINT numMips,
 | |
|         UINT firstArraySlice,
 | |
|         UINT numArraySlices,
 | |
|         UINT firstPlane = 0,
 | |
|         UINT numPlanes = 1) noexcept :
 | |
|         D3D12_BARRIER_SUBRESOURCE_RANGE
 | |
|         {
 | |
|             firstMipLevel,
 | |
|             numMips,
 | |
|             firstArraySlice,
 | |
|             numArraySlices,
 | |
|             firstPlane,
 | |
|             numPlanes
 | |
|         }
 | |
|     {}
 | |
| };
 | |
| 
 | |
| class CD3DX12_GLOBAL_BARRIER : public D3D12_GLOBAL_BARRIER
 | |
| {
 | |
| public:
 | |
|     CD3DX12_GLOBAL_BARRIER() = default;
 | |
|     CD3DX12_GLOBAL_BARRIER(const D3D12_GLOBAL_BARRIER &o) noexcept : D3D12_GLOBAL_BARRIER(o){}
 | |
|     CD3DX12_GLOBAL_BARRIER(
 | |
|         D3D12_BARRIER_SYNC syncBefore,
 | |
|         D3D12_BARRIER_SYNC syncAfter,
 | |
|         D3D12_BARRIER_ACCESS accessBefore,
 | |
|         D3D12_BARRIER_ACCESS accessAfter) noexcept : D3D12_GLOBAL_BARRIER {
 | |
|             syncBefore,
 | |
|             syncAfter,
 | |
|             accessBefore,
 | |
|             accessAfter
 | |
|         }
 | |
|     {}
 | |
| };
 | |
| 
 | |
| class CD3DX12_BUFFER_BARRIER : public D3D12_BUFFER_BARRIER
 | |
| {
 | |
| public:
 | |
|     CD3DX12_BUFFER_BARRIER() = default;
 | |
|     CD3DX12_BUFFER_BARRIER(const D3D12_BUFFER_BARRIER &o) noexcept : D3D12_BUFFER_BARRIER(o){}
 | |
|     CD3DX12_BUFFER_BARRIER(
 | |
|         D3D12_BARRIER_SYNC syncBefore,
 | |
|         D3D12_BARRIER_SYNC syncAfter,
 | |
|         D3D12_BARRIER_ACCESS accessBefore,
 | |
|         D3D12_BARRIER_ACCESS accessAfter,
 | |
|         ID3D12Resource *pRes) noexcept : D3D12_BUFFER_BARRIER {
 | |
|             syncBefore,
 | |
|             syncAfter,
 | |
|             accessBefore,
 | |
|             accessAfter,
 | |
|             pRes,
 | |
|             0, ULLONG_MAX
 | |
|         }
 | |
|     {}
 | |
| };
 | |
| 
 | |
| class CD3DX12_TEXTURE_BARRIER : public D3D12_TEXTURE_BARRIER
 | |
| {
 | |
| public:
 | |
|     CD3DX12_TEXTURE_BARRIER() = default;
 | |
|     CD3DX12_TEXTURE_BARRIER(const D3D12_TEXTURE_BARRIER &o) noexcept : D3D12_TEXTURE_BARRIER(o){}
 | |
|     CD3DX12_TEXTURE_BARRIER(
 | |
|         D3D12_BARRIER_SYNC syncBefore,
 | |
|         D3D12_BARRIER_SYNC syncAfter,
 | |
|         D3D12_BARRIER_ACCESS accessBefore,
 | |
|         D3D12_BARRIER_ACCESS accessAfter,
 | |
|         D3D12_BARRIER_LAYOUT layoutBefore,
 | |
|         D3D12_BARRIER_LAYOUT layoutAfter,
 | |
|         ID3D12Resource *pRes,
 | |
|         const D3D12_BARRIER_SUBRESOURCE_RANGE &subresources,
 | |
|         D3D12_TEXTURE_BARRIER_FLAGS flag = D3D12_TEXTURE_BARRIER_FLAG_NONE) noexcept : D3D12_TEXTURE_BARRIER {
 | |
|             syncBefore,
 | |
|             syncAfter,
 | |
|             accessBefore,
 | |
|             accessAfter,
 | |
|             layoutBefore,
 | |
|             layoutAfter,
 | |
|             pRes,
 | |
|             subresources,
 | |
|             flag
 | |
|         }
 | |
|     {}
 | |
| };
 | |
| 
 | |
| class CD3DX12_BARRIER_GROUP : public D3D12_BARRIER_GROUP
 | |
| {
 | |
| public:
 | |
|     CD3DX12_BARRIER_GROUP() = default;
 | |
|     CD3DX12_BARRIER_GROUP(const D3D12_BARRIER_GROUP &o) noexcept : D3D12_BARRIER_GROUP(o){}
 | |
|     CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_BUFFER_BARRIER *pBarriers) noexcept
 | |
|     {
 | |
|         Type = D3D12_BARRIER_TYPE_BUFFER;
 | |
|         NumBarriers = numBarriers;
 | |
|         pBufferBarriers = pBarriers;
 | |
|     }
 | |
|     CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_TEXTURE_BARRIER *pBarriers) noexcept
 | |
|     {
 | |
|         Type = D3D12_BARRIER_TYPE_TEXTURE;
 | |
|         NumBarriers = numBarriers;
 | |
|         pTextureBarriers = pBarriers;
 | |
|     }
 | |
|     CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_GLOBAL_BARRIER *pBarriers) noexcept
 | |
|     {
 | |
|         Type = D3D12_BARRIER_TYPE_GLOBAL;
 | |
|         NumBarriers = numBarriers;
 | |
|         pGlobalBarriers = pBarriers;
 | |
|     }
 | |
| };
 | |
| #endif // D3D12_SDK_VERSION >= 608
 | |
| 
 | |
| 
 | |
| #endif // defined( __cplusplus )
 | |
| 
 | |
| #endif // __D3DX12_BARRIERS_H__
 |