@@ -211,10 +211,13 @@ void D3D12MeshletInstancing::LoadPipeline()
211211 depthOptimizedClearValue.DepthStencil .Depth = 1 .0f ;
212212 depthOptimizedClearValue.DepthStencil .Stencil = 0 ;
213213
214+ const CD3DX12_HEAP_PROPERTIES depthStencilHeapProps (D3D12_HEAP_TYPE_DEFAULT);
215+ 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);
216+
214217 ThrowIfFailed (m_device->CreateCommittedResource (
215- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_DEFAULT) ,
218+ &depthStencilHeapProps ,
216219 D3D12_HEAP_FLAG_NONE,
217- &CD3DX12_RESOURCE_DESC::Tex2D (DXGI_FORMAT_D32_FLOAT, m_width, m_height, 1 , 0 , 1 , 0 , D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL) ,
220+ &depthStencilTextureDesc ,
218221 D3D12_RESOURCE_STATE_DEPTH_WRITE,
219222 &depthOptimizedClearValue,
220223 IID_PPV_ARGS (&m_depthStencil)
@@ -229,10 +232,13 @@ void D3D12MeshletInstancing::LoadPipeline()
229232 {
230233 const UINT64 constantBufferSize = sizeof (SceneConstantBuffer) * FrameCount;
231234
235+ const CD3DX12_HEAP_PROPERTIES constantBufferHeapProps (D3D12_HEAP_TYPE_UPLOAD);
236+ const CD3DX12_RESOURCE_DESC constantBufferDesc = CD3DX12_RESOURCE_DESC::Buffer (constantBufferSize);
237+
232238 ThrowIfFailed (m_device->CreateCommittedResource (
233- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_UPLOAD) ,
239+ &constantBufferHeapProps ,
234240 D3D12_HEAP_FLAG_NONE,
235- &CD3DX12_RESOURCE_DESC::Buffer (constantBufferSize) ,
241+ &constantBufferDesc ,
236242 D3D12_RESOURCE_STATE_GENERIC_READ,
237243 nullptr ,
238244 IID_PPV_ARGS (&m_constantBuffer)));
@@ -432,9 +438,11 @@ void D3D12MeshletInstancing::PopulateCommandList()
432438 // Only upload instance data if we've had a change
433439 if (m_updateInstances)
434440 {
435- m_commandList->ResourceBarrier (1 , &CD3DX12_RESOURCE_BARRIER::Transition (m_instanceBuffer.Get (), D3D12_RESOURCE_STATE_GENERIC_READ, D3D12_RESOURCE_STATE_COPY_DEST));
441+ const auto toCopyBarrier = CD3DX12_RESOURCE_BARRIER::Transition (m_instanceBuffer.Get (), D3D12_RESOURCE_STATE_GENERIC_READ, D3D12_RESOURCE_STATE_COPY_DEST);
442+ m_commandList->ResourceBarrier (1 , &toCopyBarrier);
436443 m_commandList->CopyResource (m_instanceBuffer.Get (), m_instanceUpload.Get ());
437- m_commandList->ResourceBarrier (1 , &CD3DX12_RESOURCE_BARRIER::Transition (m_instanceBuffer.Get (), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_GENERIC_READ));
444+ const auto toGenericBarrier = CD3DX12_RESOURCE_BARRIER::Transition (m_instanceBuffer.Get (), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_GENERIC_READ);
445+ m_commandList->ResourceBarrier (1 , &toGenericBarrier);
438446
439447 m_updateInstances = false ;
440448 }
@@ -445,7 +453,8 @@ void D3D12MeshletInstancing::PopulateCommandList()
445453 m_commandList->RSSetScissorRects (1 , &m_scissorRect);
446454
447455 // Indicate that the back buffer will be used as a render target.
448- m_commandList->ResourceBarrier (1 , &CD3DX12_RESOURCE_BARRIER::Transition (m_renderTargets[m_frameIndex].Get (), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET));
456+ const auto toRenderTargetBarrier = CD3DX12_RESOURCE_BARRIER::Transition (m_renderTargets[m_frameIndex].Get (), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET);
457+ m_commandList->ResourceBarrier (1 , &toRenderTargetBarrier);
449458
450459 CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle (m_rtvHeap->GetCPUDescriptorHandleForHeapStart (), m_frameIndex, m_rtvDescriptorSize);
451460 CD3DX12_CPU_DESCRIPTOR_HANDLE dsvHandle (m_dsvHeap->GetCPUDescriptorHandleForHeapStart ());
@@ -494,7 +503,8 @@ void D3D12MeshletInstancing::PopulateCommandList()
494503 }
495504
496505 // Indicate that the back buffer will now be used to present.
497- m_commandList->ResourceBarrier (1 , &CD3DX12_RESOURCE_BARRIER::Transition (m_renderTargets[m_frameIndex].Get (), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT));
506+ const auto toPresentBarrier = CD3DX12_RESOURCE_BARRIER::Transition (m_renderTargets[m_frameIndex].Get (), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT);
507+ m_commandList->ResourceBarrier (1 , &toPresentBarrier);
498508
499509 ThrowIfFailed (m_commandList->Close ());
500510}
@@ -555,21 +565,26 @@ void D3D12MeshletInstancing::RegenerateInstances()
555565 {
556566 WaitForGpu ();
557567
568+ const CD3DX12_HEAP_PROPERTIES instanceBufferDefaultHeapProps (D3D12_HEAP_TYPE_DEFAULT);
569+ const CD3DX12_RESOURCE_DESC instanceBufferDesc = CD3DX12_RESOURCE_DESC::Buffer (instanceBufferSize);
570+
558571 // Create/re-create the instance buffer
559572 ThrowIfFailed (m_device->CreateCommittedResource (
560- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_DEFAULT) ,
573+ &instanceBufferDefaultHeapProps ,
561574 D3D12_HEAP_FLAG_NONE,
562- &CD3DX12_RESOURCE_DESC::Buffer (instanceBufferSize) ,
575+ &instanceBufferDesc ,
563576 D3D12_RESOURCE_STATE_GENERIC_READ,
564577 nullptr ,
565578 IID_PPV_ARGS (&m_instanceBuffer)
566579 ));
567580
581+ const CD3DX12_HEAP_PROPERTIES instanceBufferUploadHeapProps (D3D12_HEAP_TYPE_UPLOAD);
582+
568583 // Create/re-create the instance buffer
569584 ThrowIfFailed (m_device->CreateCommittedResource (
570- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_UPLOAD) ,
585+ &instanceBufferUploadHeapProps ,
571586 D3D12_HEAP_FLAG_NONE,
572- &CD3DX12_RESOURCE_DESC::Buffer (instanceBufferSize) ,
587+ &instanceBufferDesc ,
573588 D3D12_RESOURCE_STATE_GENERIC_READ,
574589 nullptr ,
575590 IID_PPV_ARGS (&m_instanceUpload)
0 commit comments