#pragma once #include "Betriebssystem.h" #include "ReferenceCounter.h" //! DirectX12 Datentypen struct ID3D12CommandAllocator; struct ID3D12CommandQueue; struct ID3D12Fence; struct ID3D12Device; struct ID3D12GraphicsCommandList; namespace Framework { class DX12Command; class DX12CommandQueue : public virtual ReferenceCounter { protected: ID3D12CommandAllocator* allocator; ID3D12GraphicsCommandList* commandList; ID3D12CommandQueue* queue; ID3D12Fence* fence; ID3D12Device* device; HANDLE event; unsigned __int64 fenceValue; DX12CommandQueue( int typ, ID3D12Device* device ); public: virtual ~DX12CommandQueue(); unsigned __int64 addSignalFromGPU(); void whaitForGPUSignal(); void whaitForGPUSignal( unsigned __int64 value ); void flush(); ID3D12CommandAllocator* getAllocator() const; ID3D12GraphicsCommandList* getCommandList() const; ID3D12CommandQueue* getQueue() const; void execute(); }; class DX12DirectCommandQueue : public DX12CommandQueue { public: DX12DirectCommandQueue( ID3D12Device* device ); }; class DX12CopyCommandQueue : public DX12CommandQueue { public: DX12CopyCommandQueue( ID3D12Device* device ); }; class DX12ComputeCommandQueue : public DX12CommandQueue { public: DX12ComputeCommandQueue( ID3D12Device* device ); }; };