Skip to content

Commit bca8a33

Browse files
committed
Merge latest from master
2 parents b17448f + 1f1c045 commit bca8a33

File tree

16 files changed

+179
-82
lines changed

16 files changed

+179
-82
lines changed

Samples/Desktop/D3D12MeshShaders/src/DynamicLOD/D3D12DynamicLOD.cpp

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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)

Samples/Desktop/D3D12MeshShaders/src/DynamicLOD/Model.cpp

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -452,26 +452,31 @@ HRESULT Model::UploadGpuResources(ID3D12Device* device, ID3D12CommandQueue* cmdQ
452452
for (uint32_t j = 0; j < m.Vertices.size(); ++j)
453453
{
454454
cmdList->CopyResource(m.VertexResources[j].Get(), vertexUploads[j].Get());
455-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.VertexResources[j].Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
455+
const auto barrier = CD3DX12_RESOURCE_BARRIER::Transition(m.VertexResources[j].Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
456+
cmdList->ResourceBarrier(1, &barrier);
456457
}
457458

459+
D3D12_RESOURCE_BARRIER postCopyBarriers[6];
460+
458461
cmdList->CopyResource(m.IndexResource.Get(), indexUpload.Get());
459-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.IndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
462+
postCopyBarriers[0] = CD3DX12_RESOURCE_BARRIER::Transition(m.IndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
460463

461464
cmdList->CopyResource(m.MeshletResource.Get(), meshletUpload.Get());
462-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.MeshletResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
465+
postCopyBarriers[1] = CD3DX12_RESOURCE_BARRIER::Transition(m.MeshletResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
463466

464467
cmdList->CopyResource(m.CullDataResource.Get(), cullDataUpload.Get());
465-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.CullDataResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
468+
postCopyBarriers[2] = CD3DX12_RESOURCE_BARRIER::Transition(m.CullDataResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
466469

467470
cmdList->CopyResource(m.UniqueVertexIndexResource.Get(), uniqueVertexIndexUpload.Get());
468-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.UniqueVertexIndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
471+
postCopyBarriers[3] = CD3DX12_RESOURCE_BARRIER::Transition(m.UniqueVertexIndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
469472

470473
cmdList->CopyResource(m.PrimitiveIndexResource.Get(), primitiveIndexUpload.Get());
471-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.PrimitiveIndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
474+
postCopyBarriers[4] = CD3DX12_RESOURCE_BARRIER::Transition(m.PrimitiveIndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
472475

473476
cmdList->CopyResource(m.MeshInfoResource.Get(), meshInfoUpload.Get());
474-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.MeshInfoResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER));
477+
postCopyBarriers[5] = CD3DX12_RESOURCE_BARRIER::Transition(m.MeshInfoResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER);
478+
479+
cmdList->ResourceBarrier(ARRAYSIZE(postCopyBarriers), postCopyBarriers);
475480

476481
ThrowIfFailed(cmdList->Close());
477482

Samples/Desktop/D3D12MeshShaders/src/MeshletCull/CullDataVisualizer.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,14 @@ void CullDataVisualizer::CreateDeviceResources(ID3D12Device2* device, DXGI_FORMA
114114
ThrowIfFailed(device->CreatePipelineState(&streamDesc, IID_PPV_ARGS(&m_boundingSpherePso)));
115115
}
116116

117+
const CD3DX12_HEAP_PROPERTIES constantBufferHeapProps(D3D12_HEAP_TYPE_UPLOAD);
118+
const CD3DX12_RESOURCE_DESC constantBufferDesc = CD3DX12_RESOURCE_DESC::Buffer(sizeof(Constants) * 2);
119+
117120
// Create shared constant buffer
118121
ThrowIfFailed(device->CreateCommittedResource(
119-
&CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
122+
&constantBufferHeapProps,
120123
D3D12_HEAP_FLAG_NONE,
121-
&CD3DX12_RESOURCE_DESC::Buffer(sizeof(Constants) * 2),
124+
&constantBufferDesc,
122125
D3D12_RESOURCE_STATE_GENERIC_READ,
123126
nullptr,
124127
IID_PPV_ARGS(&m_constantResource)

Samples/Desktop/D3D12MeshShaders/src/MeshletCull/D3D12MeshletCull.cpp

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,13 @@ void D3D12MeshletCull::LoadPipeline()
311311
depthOptimizedClearValue.DepthStencil.Depth = 1.0f;
312312
depthOptimizedClearValue.DepthStencil.Stencil = 0;
313313

314+
const CD3DX12_HEAP_PROPERTIES depthStencilHeapProps(D3D12_HEAP_TYPE_DEFAULT);
315+
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);
316+
314317
ThrowIfFailed(m_device->CreateCommittedResource(
315-
&CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT),
318+
&depthStencilHeapProps,
316319
D3D12_HEAP_FLAG_NONE,
317-
&CD3DX12_RESOURCE_DESC::Tex2D(DXGI_FORMAT_D32_FLOAT, m_width, m_height, 1, 0, 1, 0, D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL),
320+
&depthStencilTextureDesc,
318321
D3D12_RESOURCE_STATE_DEPTH_WRITE,
319322
&depthOptimizedClearValue,
320323
IID_PPV_ARGS(&m_depthStencil)
@@ -329,10 +332,13 @@ void D3D12MeshletCull::LoadPipeline()
329332
{
330333
const UINT64 constantBufferSize = sizeof(Constants) * FrameCount;
331334

335+
const CD3DX12_HEAP_PROPERTIES constantBufferHeapProps(D3D12_HEAP_TYPE_UPLOAD);
336+
const CD3DX12_RESOURCE_DESC constantBufferDesc = CD3DX12_RESOURCE_DESC::Buffer(constantBufferSize);
337+
332338
ThrowIfFailed(m_device->CreateCommittedResource(
333-
&CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
339+
&constantBufferHeapProps,
334340
D3D12_HEAP_FLAG_NONE,
335-
&CD3DX12_RESOURCE_DESC::Buffer(constantBufferSize),
341+
&constantBufferDesc,
336342
D3D12_RESOURCE_STATE_GENERIC_READ,
337343
nullptr,
338344
IID_PPV_ARGS(&m_constantBuffer)));
@@ -426,12 +432,15 @@ void D3D12MeshletCull::LoadAssets()
426432
// For per-frame uploads consider using the D3D12_COMMAND_LIST_TYPE_COPY command queue.
427433
obj.Model.LoadFromFile(c_modelFilenames[def.ModelIndex]);
428434
obj.Model.UploadGpuResources(m_device.Get(), m_commandQueue.Get(), m_commandAllocators[m_frameIndex].Get(), m_commandList.Get());
429-
435+
436+
const CD3DX12_HEAP_PROPERTIES instanceBufferHeapProps(D3D12_HEAP_TYPE_UPLOAD);
437+
const CD3DX12_RESOURCE_DESC instanceBufferDesc = CD3DX12_RESOURCE_DESC::Buffer(sizeof(Instance) * 2);
438+
430439
// Create the per-object instance data buffer
431440
ThrowIfFailed(m_device->CreateCommittedResource(
432-
&CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
441+
&instanceBufferHeapProps,
433442
D3D12_HEAP_FLAG_NONE,
434-
&CD3DX12_RESOURCE_DESC::Buffer(sizeof(Instance) * 2),
443+
&instanceBufferDesc,
435444
D3D12_RESOURCE_STATE_GENERIC_READ,
436445
nullptr,
437446
IID_PPV_ARGS(&obj.InstanceResource)
@@ -657,7 +666,8 @@ void D3D12MeshletCull::PopulateCommandList()
657666
m_commandList->RSSetScissorRects(1, &m_scissorRect);
658667

659668
// Indicate that the back buffer will be used as a render target.
660-
m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET));
669+
const auto toRenderTargetBarrier = CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET);
670+
m_commandList->ResourceBarrier(1, &toRenderTargetBarrier);
661671

662672
CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart(), m_frameIndex, m_rtvDescriptorSize);
663673
CD3DX12_CPU_DESCRIPTOR_HANDLE dsvHandle(m_dsvHeap->GetCPUDescriptorHandleForHeapStart());
@@ -712,7 +722,8 @@ void D3D12MeshletCull::PopulateCommandList()
712722
}
713723

714724
// Indicate that the back buffer will now be used to present.
715-
m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT));
725+
const auto toPresentBarrier = CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT);
726+
m_commandList->ResourceBarrier(1, &toPresentBarrier);
716727

717728
ThrowIfFailed(m_commandList->Close());
718729
}

Samples/Desktop/D3D12MeshShaders/src/MeshletCull/FrustumVisualizer.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,14 @@ void FrustumVisualizer::CreateDeviceResources(ID3D12Device2* device, DXGI_FORMAT
7272
// Create the MS PSO
7373
ThrowIfFailed(device->CreatePipelineState(&streamDesc, IID_PPV_ARGS(&m_pso)));
7474

75+
const CD3DX12_HEAP_PROPERTIES constantBufferHeapProps(D3D12_HEAP_TYPE_UPLOAD);
76+
const CD3DX12_RESOURCE_DESC constantBufferDesc = CD3DX12_RESOURCE_DESC::Buffer(sizeof(Constants) * 2);
77+
7578
// Create the constant buffer
7679
ThrowIfFailed(device->CreateCommittedResource(
77-
&CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
80+
&constantBufferHeapProps,
7881
D3D12_HEAP_FLAG_NONE,
79-
&CD3DX12_RESOURCE_DESC::Buffer(sizeof(Constants) * 2),
82+
&constantBufferDesc,
8083
D3D12_RESOURCE_STATE_GENERIC_READ,
8184
nullptr,
8285
IID_PPV_ARGS(&m_constantResource)

Samples/Desktop/D3D12MeshShaders/src/MeshletCull/Model.cpp

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -452,26 +452,31 @@ HRESULT Model::UploadGpuResources(ID3D12Device* device, ID3D12CommandQueue* cmdQ
452452
for (uint32_t j = 0; j < m.Vertices.size(); ++j)
453453
{
454454
cmdList->CopyResource(m.VertexResources[j].Get(), vertexUploads[j].Get());
455-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.VertexResources[j].Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
455+
const auto barrier = CD3DX12_RESOURCE_BARRIER::Transition(m.VertexResources[j].Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
456+
cmdList->ResourceBarrier(1, &barrier);
456457
}
457458

459+
D3D12_RESOURCE_BARRIER postCopyBarriers[6];
460+
458461
cmdList->CopyResource(m.IndexResource.Get(), indexUpload.Get());
459-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.IndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
462+
postCopyBarriers[0] = CD3DX12_RESOURCE_BARRIER::Transition(m.IndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
460463

461464
cmdList->CopyResource(m.MeshletResource.Get(), meshletUpload.Get());
462-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.MeshletResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
465+
postCopyBarriers[1] = CD3DX12_RESOURCE_BARRIER::Transition(m.MeshletResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
463466

464467
cmdList->CopyResource(m.CullDataResource.Get(), cullDataUpload.Get());
465-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.CullDataResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
468+
postCopyBarriers[2] = CD3DX12_RESOURCE_BARRIER::Transition(m.CullDataResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
466469

467470
cmdList->CopyResource(m.UniqueVertexIndexResource.Get(), uniqueVertexIndexUpload.Get());
468-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.UniqueVertexIndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
471+
postCopyBarriers[3] = CD3DX12_RESOURCE_BARRIER::Transition(m.UniqueVertexIndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
469472

470473
cmdList->CopyResource(m.PrimitiveIndexResource.Get(), primitiveIndexUpload.Get());
471-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.PrimitiveIndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE));
474+
postCopyBarriers[4] = CD3DX12_RESOURCE_BARRIER::Transition(m.PrimitiveIndexResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
472475

473476
cmdList->CopyResource(m.MeshInfoResource.Get(), meshInfoUpload.Get());
474-
cmdList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m.MeshInfoResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER));
477+
postCopyBarriers[5] = CD3DX12_RESOURCE_BARRIER::Transition(m.MeshInfoResource.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER);
478+
479+
cmdList->ResourceBarrier(ARRAYSIZE(postCopyBarriers), postCopyBarriers);
475480

476481
ThrowIfFailed(cmdList->Close());
477482

0 commit comments

Comments
 (0)