@@ -211,10 +211,13 @@ void D3D12MeshletInstancing::LoadPipeline()
211
211
depthOptimizedClearValue.DepthStencil .Depth = 1 .0f ;
212
212
depthOptimizedClearValue.DepthStencil .Stencil = 0 ;
213
213
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
+
214
217
ThrowIfFailed (m_device->CreateCommittedResource (
215
- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_DEFAULT) ,
218
+ &depthStencilHeapProps ,
216
219
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 ,
218
221
D3D12_RESOURCE_STATE_DEPTH_WRITE,
219
222
&depthOptimizedClearValue,
220
223
IID_PPV_ARGS (&m_depthStencil)
@@ -229,10 +232,13 @@ void D3D12MeshletInstancing::LoadPipeline()
229
232
{
230
233
const UINT64 constantBufferSize = sizeof (SceneConstantBuffer) * FrameCount;
231
234
235
+ const CD3DX12_HEAP_PROPERTIES constantBufferHeapProps (D3D12_HEAP_TYPE_UPLOAD);
236
+ const CD3DX12_RESOURCE_DESC constantBufferDesc = CD3DX12_RESOURCE_DESC::Buffer (constantBufferSize);
237
+
232
238
ThrowIfFailed (m_device->CreateCommittedResource (
233
- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_UPLOAD) ,
239
+ &constantBufferHeapProps ,
234
240
D3D12_HEAP_FLAG_NONE,
235
- &CD3DX12_RESOURCE_DESC::Buffer (constantBufferSize) ,
241
+ &constantBufferDesc ,
236
242
D3D12_RESOURCE_STATE_GENERIC_READ,
237
243
nullptr ,
238
244
IID_PPV_ARGS (&m_constantBuffer)));
@@ -432,9 +438,11 @@ void D3D12MeshletInstancing::PopulateCommandList()
432
438
// Only upload instance data if we've had a change
433
439
if (m_updateInstances)
434
440
{
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);
436
443
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);
438
446
439
447
m_updateInstances = false ;
440
448
}
@@ -445,7 +453,8 @@ void D3D12MeshletInstancing::PopulateCommandList()
445
453
m_commandList->RSSetScissorRects (1 , &m_scissorRect);
446
454
447
455
// 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);
449
458
450
459
CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle (m_rtvHeap->GetCPUDescriptorHandleForHeapStart (), m_frameIndex, m_rtvDescriptorSize);
451
460
CD3DX12_CPU_DESCRIPTOR_HANDLE dsvHandle (m_dsvHeap->GetCPUDescriptorHandleForHeapStart ());
@@ -494,7 +503,8 @@ void D3D12MeshletInstancing::PopulateCommandList()
494
503
}
495
504
496
505
// 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);
498
508
499
509
ThrowIfFailed (m_commandList->Close ());
500
510
}
@@ -555,21 +565,26 @@ void D3D12MeshletInstancing::RegenerateInstances()
555
565
{
556
566
WaitForGpu ();
557
567
568
+ const CD3DX12_HEAP_PROPERTIES instanceBufferDefaultHeapProps (D3D12_HEAP_TYPE_DEFAULT);
569
+ const CD3DX12_RESOURCE_DESC instanceBufferDesc = CD3DX12_RESOURCE_DESC::Buffer (instanceBufferSize);
570
+
558
571
// Create/re-create the instance buffer
559
572
ThrowIfFailed (m_device->CreateCommittedResource (
560
- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_DEFAULT) ,
573
+ &instanceBufferDefaultHeapProps ,
561
574
D3D12_HEAP_FLAG_NONE,
562
- &CD3DX12_RESOURCE_DESC::Buffer (instanceBufferSize) ,
575
+ &instanceBufferDesc ,
563
576
D3D12_RESOURCE_STATE_GENERIC_READ,
564
577
nullptr ,
565
578
IID_PPV_ARGS (&m_instanceBuffer)
566
579
));
567
580
581
+ const CD3DX12_HEAP_PROPERTIES instanceBufferUploadHeapProps (D3D12_HEAP_TYPE_UPLOAD);
582
+
568
583
// Create/re-create the instance buffer
569
584
ThrowIfFailed (m_device->CreateCommittedResource (
570
- &CD3DX12_HEAP_PROPERTIES (D3D12_HEAP_TYPE_UPLOAD) ,
585
+ &instanceBufferUploadHeapProps ,
571
586
D3D12_HEAP_FLAG_NONE,
572
- &CD3DX12_RESOURCE_DESC::Buffer (instanceBufferSize) ,
587
+ &instanceBufferDesc ,
573
588
D3D12_RESOURCE_STATE_GENERIC_READ,
574
589
nullptr ,
575
590
IID_PPV_ARGS (&m_instanceUpload)
0 commit comments