internal D3D12GraphicsContext(D3D12GraphicsDevice device, int index) : base(device, index) { _fence = new D3D12GraphicsFence(device); _waitForExecuteCompletionFence = new D3D12GraphicsFence(device); _d3d12CommandAllocator = new ValueLazy <Pointer <ID3D12CommandAllocator> >(CreateD3D12CommandAllocator); _d3d12GraphicsCommandList = new ValueLazy <Pointer <ID3D12GraphicsCommandList> >(CreateD3D12GraphicsCommandList); _d3d12RenderTargetView = new ValueLazy <D3D12_CPU_DESCRIPTOR_HANDLE>(CreateD3D12RenderTargetDescriptor); _d3d12RenderTargetResource = new ValueLazy <Pointer <ID3D12Resource> >(CreateD3D12RenderTargetResource); _ = _state.Transition(to: Initialized); }
internal D3D12GraphicsDevice(D3D12GraphicsAdapter adapter, IGraphicsSurface surface, int contextCount) : base(adapter, surface) { _idleFence = new D3D12GraphicsFence(this); _d3d12CommandQueue = new ValueLazy <Pointer <ID3D12CommandQueue> >(CreateD3D12CommandQueue); _d3d12Device = new ValueLazy <Pointer <ID3D12Device> >(CreateD3D12Device); _d3d12Options = new ValueLazy <D3D12_FEATURE_DATA_D3D12_OPTIONS>(GetD3D12Options); _d3d12RenderTargetDescriptorHeap = new ValueLazy <Pointer <ID3D12DescriptorHeap> >(CreateD3D12RenderTargetDescriptorHeap); _dxgiSwapChain = new ValueLazy <Pointer <IDXGISwapChain3> >(CreateDxgiSwapChain); _memoryAllocator = new ValueLazy <D3D12GraphicsMemoryAllocator>(CreateMemoryAllocator); _cbvSrvUavDescriptorHandleIncrementSize = new ValueLazy <uint>(GetCbvSrvUavDescriptorHandleIncrementSize); _contexts = CreateContexts(this, contextCount); _ = _state.Transition(to: Initialized); WaitForIdleGraphicsFence.Reset(); surface.SizeChanged += OnGraphicsSurfaceSizeChanged;