@@ -243,10 +243,13 @@ void D3D12DynamicLOD::LoadPipeline()
243243 depthOptimizedClearValue.DepthStencil .Depth = 1 .0f ;
244244 depthOptimizedClearValue.DepthStencil .Stencil = 0 ;
245245
246+ const CD3DX12_HEAP_PROPERTIES depthStencilHeapProps (D3D12_HEAP_TYPE_DEFAULT);
247+ const CD3DX12_RESOURCE_DESC depthStencilTextureDesc = CD3DX12_RESOURCE_DESC::Tex2D (DXGI_FORMAT_D32_FLOAT, m_width, m_height, 1 , 0 , 1 , 0 , D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL);
248+
246249 ThrowIfFailed (m_device->CreateCommittedResource (
247- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_DEFAULT) ,
250+ &depthStencilHeapProps ,
248251 D3D12_HEAP_FLAG_NONE,
249- &CD3DX12_RESOURCE_DESC::Tex2D (DXGI_FORMAT_D32_FLOAT, m_width, m_height, 1 , 0 , 1 , 0 , D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL) ,
252+ &depthStencilTextureDesc ,
250253 D3D12_RESOURCE_STATE_DEPTH_WRITE,
251254 &depthOptimizedClearValue,
252255 IID_PPV_ARGS (&m_depthStencil)
@@ -259,10 +262,13 @@ void D3D12DynamicLOD::LoadPipeline()
259262 {
260263 const UINT64 constantBufferSize = sizeof (Constants) * FrameCount;
261264
265+ const CD3DX12_HEAP_PROPERTIES constantBufferHeapProps (D3D12_HEAP_TYPE_UPLOAD);
266+ const CD3DX12_RESOURCE_DESC constantBufferDesc = CD3DX12_RESOURCE_DESC::Buffer (constantBufferSize);
267+
262268 ThrowIfFailed (m_device->CreateCommittedResource (
263- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_UPLOAD) ,
269+ &constantBufferHeapProps ,
264270 D3D12_HEAP_FLAG_NONE,
265- &CD3DX12_RESOURCE_DESC::Buffer (constantBufferSize) ,
271+ &constantBufferDesc ,
266272 D3D12_RESOURCE_STATE_GENERIC_READ,
267273 nullptr ,
268274 IID_PPV_ARGS (&m_constantBuffer)
@@ -561,9 +567,11 @@ void D3D12DynamicLOD::PopulateCommandList()
561567 // Only upload instance data if we've had a change
562568 if (m_updateInstances)
563569 {
564- m_commandList->ResourceBarrier (1 , &CD3DX12_RESOURCE_BARRIER::Transition (m_instanceBuffer.Get (), D3D12_RESOURCE_STATE_GENERIC_READ, D3D12_RESOURCE_STATE_COPY_DEST));
570+ const auto toCopyBarrier = CD3DX12_RESOURCE_BARRIER::Transition (m_instanceBuffer.Get (), D3D12_RESOURCE_STATE_GENERIC_READ, D3D12_RESOURCE_STATE_COPY_DEST);
571+ m_commandList->ResourceBarrier (1 , &toCopyBarrier);
565572 m_commandList->CopyResource (m_instanceBuffer.Get (), m_instanceUpload.Get ());
566- m_commandList->ResourceBarrier (1 , &CD3DX12_RESOURCE_BARRIER::Transition (m_instanceBuffer.Get (), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_GENERIC_READ));
573+ const auto toGenericBarrier = CD3DX12_RESOURCE_BARRIER::Transition (m_instanceBuffer.Get (), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_GENERIC_READ);
574+ m_commandList->ResourceBarrier (1 , &toGenericBarrier);
567575
568576 m_updateInstances = false ;
569577 }
@@ -578,7 +586,8 @@ void D3D12DynamicLOD::PopulateCommandList()
578586 m_commandList->RSSetScissorRects (1 , &m_scissorRect);
579587
580588 // Indicate that the back buffer will be used as a render target.
581- m_commandList->ResourceBarrier (1 , &CD3DX12_RESOURCE_BARRIER::Transition (m_renderTargets[m_frameIndex].Get (), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET));
589+ const auto toRenderTargetBarrier = CD3DX12_RESOURCE_BARRIER::Transition (m_renderTargets[m_frameIndex].Get (), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET);
590+ m_commandList->ResourceBarrier (1 , &toRenderTargetBarrier);
582591
583592 CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle (m_rtvHeap->GetCPUDescriptorHandleForHeapStart (), m_frameIndex, m_rtvDescriptorSize);
584593 CD3DX12_CPU_DESCRIPTOR_HANDLE dsvHandle (m_dsvHeap->GetCPUDescriptorHandleForHeapStart ());
@@ -608,7 +617,8 @@ void D3D12DynamicLOD::PopulateCommandList()
608617 }
609618
610619 // Indicate that the back buffer will now be used to present.
611- m_commandList->ResourceBarrier (1 , &CD3DX12_RESOURCE_BARRIER::Transition (m_renderTargets[m_frameIndex].Get (), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT));
620+ const auto toPresentBarrier = CD3DX12_RESOURCE_BARRIER::Transition (m_renderTargets[m_frameIndex].Get (), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT);
621+ m_commandList->ResourceBarrier (1 , &toPresentBarrier);
612622
613623 ThrowIfFailed (m_commandList->Close ());
614624}
@@ -669,21 +679,26 @@ void D3D12DynamicLOD::RegenerateInstances()
669679 {
670680 WaitForGpu ();
671681
682+ const CD3DX12_HEAP_PROPERTIES instanceBufferDefaultHeapProps (D3D12_HEAP_TYPE_DEFAULT);
683+ const CD3DX12_RESOURCE_DESC instanceBufferDesc = CD3DX12_RESOURCE_DESC::Buffer (instanceBufferSize);
684+
672685 // Create/re-create the instance buffer
673686 ThrowIfFailed (m_device->CreateCommittedResource (
674- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_DEFAULT) ,
687+ &instanceBufferDefaultHeapProps ,
675688 D3D12_HEAP_FLAG_NONE,
676- &CD3DX12_RESOURCE_DESC::Buffer (instanceBufferSize) ,
689+ &instanceBufferDesc ,
677690 D3D12_RESOURCE_STATE_GENERIC_READ,
678691 nullptr ,
679692 IID_PPV_ARGS (&m_instanceBuffer)
680693 ));
681694
695+ const CD3DX12_HEAP_PROPERTIES instanceBufferUploadHeapProps (D3D12_HEAP_TYPE_UPLOAD);
696+
682697 // Create/re-create the instance buffer
683698 ThrowIfFailed (m_device->CreateCommittedResource (
684- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_UPLOAD) ,
699+ &instanceBufferUploadHeapProps ,
685700 D3D12_HEAP_FLAG_NONE,
686- &CD3DX12_RESOURCE_DESC::Buffer (instanceBufferSize) ,
701+ &instanceBufferDesc ,
687702 D3D12_RESOURCE_STATE_GENERIC_READ,
688703 nullptr ,
689704 IID_PPV_ARGS (&m_instanceUpload)
0 commit comments